# 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//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/` или история лабы).