Files
openspec-lab/README.md
T

2.7 KiB
Raw Blame History

OpenSpec Lab — spec-driven для инфраструктуры

Песочница OpenSpec (Fission-AI, CLI 1.12.0) для практики spec-driven development на задачах настройки инфраструктуры Hermes и homelab.

Зачем

OpenSpec даёт формальный цикл «согласовали ЧТО → делаем КАК → проверяем → архивируем»:

  1. proposal.md — зачем менять
  2. specs/<cap>/spec.md — дельта требований (ADDED/MODIFIED/REMOVED) с GIVEN/WHEN/THEN
  3. design.md — как именно (файлы, команды, rollback, риски)
  4. tasks.md — чеклист применения

После openspec archive дельта вливается в openspec/specs/ (источник истины), а change уходит в openspec/changes/archive/ с датой.

Команды

# Новый 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-профиль) подключены через:

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).

git remote -v   # origin → https://estorozhenko:<TOKEN>@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-туннель)