DSH: OpenSpec integration #42

Closed
opened 2026-10-24 15:42:17 +03:00 by aep · 1 comment
Owner

Цель

Архитектурная задача в DSH должна идти через OpenSpec так же, как в Claude Code: change → proposal/specs/design → validate → archive.

Сейчас

  • openspec 1.13.1 работает; openspec validate --all — 2 specs passed.
  • В DSH нет OpenSpec skills/команд; CLI вызывается только вручную через bash.
  • dsh/PORT.md обещает «CLI + skills 1:1», но это ещё не сделано.

Scope

  • Spike openspec init --tools agents в temp-проекте: что создаёт для AGENTS.md/.agents/skills.
  • Если skills рабочие — установить в ~/.dsh/skills; если нет — свой skill + команда /openspec над CLI.
  • Проверить: propose → validate → archive без Claude Code.
  • Обновить dsh/install.sh, README/PORT.

Acceptance

  • В temp-проекте DSH создаёт change, spec валиден, archive проходит.
  • skill role и bootstrap не ломаются.

Зависимости

После #41 (SDD) или параллельно; не блокирует SDD.

## Цель Архитектурная задача в DSH должна идти через OpenSpec так же, как в Claude Code: change → proposal/specs/design → validate → archive. ## Сейчас - `openspec` 1.13.1 работает; `openspec validate --all` — 2 specs passed. - В DSH нет OpenSpec skills/команд; CLI вызывается только вручную через bash. - `dsh/PORT.md` обещает «CLI + skills 1:1», но это ещё не сделано. ## Scope - Spike `openspec init --tools agents` в temp-проекте: что создаёт для `AGENTS.md`/`.agents/skills`. - Если skills рабочие — установить в `~/.dsh/skills`; если нет — свой skill + команда `/openspec` над CLI. - Проверить: propose → validate → archive без Claude Code. - Обновить `dsh/install.sh`, README/PORT. ## Acceptance - В temp-проекте DSH создаёт change, spec валиден, archive проходит. - `skill role` и bootstrap не ломаются. ## Зависимости После #41 (SDD) или параллельно; не блокирует SDD.
aep added this to the DSH port milestone 2026-10-24 15:42:17 +03:00
Author
Owner

Закрыто. PR #60 (мержнут, 46e4c3d), архив change — PR #61 (de58eff), спека — openspec/specs/dsh-openspec/.

Что сделано

  • .agents/skills/openspec-* — шесть скиллов, которые пишет openspec init --tools agents. DSH читает этот каталог нативно: проверено сабагентом с cwd в проекте (все шесть имён в каталоге скиллов). Глобальной копии в ~/.dsh/skills нет — решение владельца R-1.
  • dsh/install.sh --check: версия CLI openspec и наличие agents-скиллов; WARN без изменения кода возврата.
  • dsh/install.sh --openspec: agents-адаптер в текущий проект ($PWD), отказ без openspec/, идемпотентно, .claude/ не трогает.
  • Слэш-команд нет (R-2): вход — model-invocable скиллы, /role — единственная команда бандла.
  • Документация: dsh/PORT.md §1/§2/§5/§6/§8, dsh/README.md.
  • Change dsh-openspec (proposal/spec/design), план docs/superpowers/plans/2026-10-24-dsh-openspec.md.

Acceptance

  • openspec validate dsh-openspec --strict — valid.
  • bash dsh/tests/run.sh — 45/45; bash tests/run.sh — 630/630.
  • Живой прогон в /tmp/dsh-openspec-accept: new change probe → status → instructions → validate --strict (Change 'probe' is valid) → archive -y (спека создана), повторный init идемпотентен.
  • skill role и bootstrap не менялись; их тесты зелёные.

Находки ревью

Маркер Что Статус
I-1 --openspec печатал ok: и код 0 при провале openspec init fixed 8c0fc89
M-1 ветка «нет CLI» у --openspec не была покрыта тестом fixed 8c0fc89
T3.1 описание --openspec в usage() смещено fixed 56bbfba
T4.1 README Layout ставил .agents/skills внутрь дерева dsh/ fixed 4ecb9b1
T2.1/M-2 негативный тест --check опирается на системные каталоги (Linux с npm -g в /usr) deferred → follow-up
T3.4 TDD-порядок нарушен (код раньше тестов) deferred → follow-up
O-1 core.symlinks=false ломал dsh/tests/run.sh в свежем worktree fixed upstream (#58)
O-2 экспортированный DSH_HOME делает HOME=$(mktemp -d) недостаточной изоляцией deferred → follow-up
Закрыто. PR #60 (мержнут, `46e4c3d`), архив change — PR #61 (`de58eff`), спека — `openspec/specs/dsh-openspec/`. ## Что сделано - `.agents/skills/openspec-*` — шесть скиллов, которые пишет `openspec init --tools agents`. DSH читает этот каталог нативно: проверено сабагентом с cwd в проекте (все шесть имён в каталоге скиллов). Глобальной копии в `~/.dsh/skills` нет — решение владельца R-1. - `dsh/install.sh --check`: версия CLI openspec и наличие agents-скиллов; `WARN` без изменения кода возврата. - `dsh/install.sh --openspec`: agents-адаптер в текущий проект (`$PWD`), отказ без `openspec/`, идемпотентно, `.claude/` не трогает. - Слэш-команд нет (R-2): вход — model-invocable скиллы, `/role` — единственная команда бандла. - Документация: `dsh/PORT.md` §1/§2/§5/§6/§8, `dsh/README.md`. - Change `dsh-openspec` (proposal/spec/design), план `docs/superpowers/plans/2026-10-24-dsh-openspec.md`. ## Acceptance - `openspec validate dsh-openspec --strict` — valid. - `bash dsh/tests/run.sh` — 45/45; `bash tests/run.sh` — 630/630. - Живой прогон в `/tmp/dsh-openspec-accept`: `new change probe` → `status` → `instructions` → `validate --strict` (`Change 'probe' is valid`) → `archive -y` (спека создана), повторный `init` идемпотентен. - `skill role` и bootstrap не менялись; их тесты зелёные. ## Находки ревью | Маркер | Что | Статус | |---|---|---| | I-1 | `--openspec` печатал `ok:` и код 0 при провале `openspec init` | fixed 8c0fc89 | | M-1 | ветка «нет CLI» у `--openspec` не была покрыта тестом | fixed 8c0fc89 | | T3.1 | описание `--openspec` в `usage()` смещено | fixed 56bbfba | | T4.1 | README Layout ставил `.agents/skills` внутрь дерева `dsh/` | fixed 4ecb9b1 | | T2.1/M-2 | негативный тест `--check` опирается на системные каталоги (Linux с `npm -g` в `/usr`) | deferred → follow-up | | T3.4 | TDD-порядок нарушен (код раньше тестов) | deferred → follow-up | | O-1 | `core.symlinks=false` ломал `dsh/tests/run.sh` в свежем worktree | fixed upstream (#58) | | O-2 | экспортированный `DSH_HOME` делает `HOME=$(mktemp -d)` недостаточной изоляцией | deferred → follow-up |
aep closed this issue 2026-10-24 19:01:15 +03:00
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: aep/claude-harness#42
No description provided.