Files

2.9 KiB
Raw Permalink Blame History

PRD — OpenSpec Lab

Цель (обновлено 2026-09-11)

Внедрить spec-driven подход (OpenSpec) для задач настройки инфраструктуры Hermes/homelab. Лаба выполнила свою роль: цикл «спека → реализация → проверка → архив» отработан и разнесён по проектам — каждый проект имеет собственный openspec/ + скиллы per-project. Лаба закрыта как рабочий каталог, остаётся как история/песочница.

Пользователи

  • Владелец homelab / Hermes-агент (автономная работа по задачам).

Функциональные требования

  • FR1: Цикл propose → apply → archive работает через CLI openspec в каждом проекте.
  • FR2: Hermes-скиллы openspec-* подключены per-project (skills.external_dirs → 7 каталогов .hermes/skills/).
  • FR3: Каждый проект имеет config.yaml с контекстом СВОЕЙ системы (пути, сервисы, правила).
  • FR4: Изменения фиксируются как change-артефакты (proposal/specs/design/tasks) в openspec/ проекта.
  • FR5: Архив сливает delta в main specs проекта (openspec/specs/<capability>/spec.md).

Нефункциональные требования

  • NFR1: Всё в /opt/hermes (единый каталог; .hermes — симлинк на /opt/hermes/.hermes).
  • NFR2: Изменения системы — только инфраструктурные (systemd, docker), с rollback-инструкцией в design.md.
  • NFR3: Лаба не используется для новых changes (закрыта).
  • NFR4: Токены/PAT хранятся в obsidian-vault, не в git.

Границы (что НЕ делаем)

  • Не переписываем Hermes/его плагины под OpenSpec.
  • Не создаём «общей кучи» изменений — каждая спека живёт в своём проекте.
  • Не создаём новых облачных зависимостей (локальный экстрактор — приоритет).

Критерии готовности

  • G1: ✅ Полный цикл отработан на реальных задачах (архивированы, delta в main specs).
  • G2: ✅ OpenSpec разнесён по 7 проектам (4 — перенесены и запушены 2026-09-11; vesti/dedinit/gotosocial — были).
  • G3: ✅ Лаба задекларирована закрытой (README/STATUS/WALKTHROUGH обновлены, запушены).
  • G4: ⏳ Tavily/local-extractor (инструменты Hermes) — решить размещение (/opt/hermes/openspec/ или история лабы).