# OpenSpec Lab — spec-driven для инфраструктуры Песочница OpenSpec (Fission-AI, CLI 1.12.0) для практики spec-driven development на задачах настройки инфраструктуры Hermes и homelab. ## Зачем OpenSpec даёт формальный цикл «согласовали ЧТО → делаем КАК → проверяем → архивируем»: 1. `proposal.md` — зачем менять 2. `specs//spec.md` — дельта требований (ADDED/MODIFIED/REMOVED) с GIVEN/WHEN/THEN 3. `design.md` — как именно (файлы, команды, rollback, риски) 4. `tasks.md` — чеклист применения После `openspec archive` дельта вливается в `openspec/specs/` (источник истины), а change уходит в `openspec/changes/archive/` с датой. ## Команды ```bash # Новый change openspec new change "short-name" # Статус / валидация openspec status --change short-name openspec validate short-name # Завершение openspec archive short-name --yes ``` ## Hermes-скиллы `openspec init --tools hermes` сгенерировал скиллы в `.hermes/skills/openspec-*`. В `~/.hermes/config.yaml` (Hermes-профиль) подключены через: ```yaml skills: external_dirs: - /opt/hermes/openspec-lab/.hermes/skills ``` ## Реальные changes | Change | Статус | Что | |---|---|---| | `add-vpn-tunnel-proxy` | заархивирован | Спека постоянного SOCKS5-туннеля до VPS01 | | `tavily-proxy-setup` | заархивирован | Tavily extract через локальный прокси (гео-обход), e2e работает | | `local-extractor` | открыт (4/4 артефакта, тесты сетевые отложены) | Локальная экстракция trafilatura, Tavily-совместимый интерфейс | ## Git / gitverse Источник истины — gitverse.ru (зеркало gitea на bigbox). ```bash git remote -v # origin → https://estorozhenko:@gitverse.ru/estorozhenko/openspec-lab.git # Создать репозиторий на gitverse (UI/API), затем: git push -u origin main ``` Токен (PAT) хранится в obsidian: `homelab/gitverse.ru.md` и `homelab/gitea.nixg.ru/Токен для gitverse.ru.md`. ## Стек (окружение bigbox) - OpenSpec CLI: `npm install -g @fission-ai/openspec` (node 22) - Hermes-профиль: `/opt/hermes/.hermes` - Прокси-скрипты: `/opt/hermes/.hermes/scripts/` - Tavily-прокси: systemd `tavily-proxy.service` (порт 8971, через SOCKS5-туннель)