Andrey Epifancev 7db024ccf5 chore(openspec): archive dsh-openspec (#42)
Co-Authored-By: DeepSeek Harness <noreply@deepseek.com>
2026-10-24 20:00:24 +04:00

4.7 KiB
Raw Blame History

Proposal: OpenSpec в DSH

Issue: #42 (роадмап порта — #48). Источники:

  • dsh/PORT.md, разделы 1 (таблица слоёв: «Gitea, OpenSpec — CLI + skills, 1:1»), 3 (deferred), 8 (next phases);
  • спайк 24.10.2026 в temp-проекте: openspec init --tools agents + полный цикл CLI без Claude Code;
  • ответы владельца 24.10.2026: скиллы — в проект, слэш-команда не нужна.

Why

В Claude Code архитектурная задача идёт через OpenSpec: openspec/changes/<id>/ — proposal, дельта спеки, design, tasks; openspec validate и openspec archive держат спеки в правде. В DSH этот слой сейчас отсутствует: CLI работает, но скиллов нет, и агент либо правит спеку руками, либо не заводит change вовсе. dsh/PORT.md при этом обещает «CLI + skills 1:1» — обещание не выполнено.

Роль dev уже требует спеки в openspec/changes/<id>/ для архитектурных задач. Пока скиллов нет, это требование в DSH-сессии выполняется только «на память модели»: формат proposal/дельты и порядок команд ничем не закреплены.

What Changes

  • Скиллы OpenSpec в проекте. openspec init --tools agents создаёт .agents/skills/openspec-{propose,apply-change,archive-change,explore,sync-specs,update-change}/SKILL.md — ровно тот формат, который DSH читает как проектные скиллы. В репозиторий обвязки эти шесть скиллов добавляются (dogfooding: обвязка сама ведёт спеки через OpenSpec). Скиллы остаются генератором openspec: openspec update обновляет их под версию CLI проекта.
  • Глобальной копии нет. В ~/.dsh/skills скиллы OpenSpec не ставятся: копия стареет относительно CLI проекта, а в проектах с собственным .agents/skills появляются два скилла с одним именем.
  • dsh/install.sh: --check сообщает версию CLI openspec и наличие agents-скиллов в репозитории обвязки; новая опция --openspec добавляет agents-адаптер в текущий проект (openspec init --tools agents), только если openspec/ уже существует, — идемпотентно, .claude/ не трогает.
  • dsh/PORT.md и dsh/README.md: раздел про OpenSpec, путь .agents/skills, цикл проверки, снятие пункта из «Next phases».
  • dsh/tests/openspec.test.mjs: проверки без DSH runtime — наличие и frontmatter скиллов в репозитории, поведение --check и --openspec с подставным бинарём openspec в PATH.
  • Слэш-команд нет. В Claude Code есть /opsx:*; в DSH вход — скиллы, которые модель вызывает по фразе «openspec propose» / «openspec archive». /role и bootstrap не меняются.

Capabilities

New Capabilities

  • dsh-openspec: как DSH-адаптер обвязки ставит и проверяет скиллы OpenSpec, чем отличается от Claude Code и что обязано работать без Claude Code.

Modified Capabilities

Impact

  • Claude Code не меняется: .claude/skills/openspec-* и .claude/commands/opsx/* остаются как есть; roles/, hooks/, global/, корневой install.sh не трогаются.
  • В репозитории появляется .agents/skills/ (6 каталогов + .openspec-target). Дублирование с .claude/skills/ — цена поддержки двух клиентов одним генератором; расхождение версий ловится openspec update.
  • dsh/install.sh --openspec получает право вызывать внешний CLI; в тестах он подменяется, в живом прогоне требуется установленный openspec ≥ 1.13.
  • Роль dev не меняется: строка про openspec/changes/<id>/ уже есть; в DSH она начинает работать, потому что скиллы появились в проекте.