docs(dsh): OpenSpec — проектные скиллы, --openspec, проверка (#42)

Co-Authored-By: DeepSeek Harness <noreply@deepseek.com>
This commit is contained in:
Andrey Epifancev 2026-10-24 19:35:27 +04:00
parent 56bbfbac5f
commit cd5ef4f765
2 changed files with 52 additions and 1 deletions

View File

@ -18,7 +18,8 @@ This is a port, not a copy. Three layers map differently:
| Hard rules | `PreToolUse` shell hooks | `ctx.tools.guard` Cordis guard | logic reused, wrapper new | | Hard rules | `PreToolUse` shell hooks | `ctx.tools.guard` Cordis guard | logic reused, wrapper new |
| Superpowers | plugin + `SessionStart` hook | skills + `agent/pre-step` bootstrap | content 1:1, bootstrap new | | Superpowers | plugin + `SessionStart` hook | skills + `agent/pre-step` bootstrap | content 1:1, bootstrap new |
| SDD | `Task` (synchronous) | `subagent` (asynchronous) / `workflow` | semantics differ | | SDD | `Task` (synchronous) | `subagent` (asynchronous) / `workflow` | semantics differ |
| Gitea, OpenSpec | CLI + skills | `bash` + skills | 1:1 | | Gitea | CLI + skills | `bash` + skills | 1:1 |
| OpenSpec | CLI + `.claude/skills` + `/opsx:*` | CLI + проектные `.agents/skills` | close: нет слэш-команд |
| codegraph | MCP | MCP (`mcp__codegraph__*`) | 1:1 with names | | codegraph | MCP | MCP (`mcp__codegraph__*`) | 1:1 with names |
| auto-memory | Claude Code feature | none | dropped/replaced with files | | auto-memory | Claude Code feature | none | dropped/replaced with files |
| install | `install.sh` + `settings.json` | bundle + profile manager | new | | install | `install.sh` + `settings.json` | bundle + profile manager | new |
@ -53,6 +54,13 @@ file has to be installed as `$DSH_HOME/AGENTS.md` because DSH does not read
4. **Display metadata and an optional CodeGraph MCP overlay** so the bundle can 4. **Display metadata and an optional CodeGraph MCP overlay** so the bundle can
be installed through the Plugins page and codegraph stays available. be installed through the Plugins page and codegraph stays available.
5. **OpenSpec** — воркфлоу идут проектными скиллами `.agents/skills/openspec-*`,
которые пишет `openspec init --tools agents`. DSH читает этот каталог нативно;
проверено сабагентом с cwd в проекте — все шесть имён в каталоге скиллов.
Глобальной копии в `~/.dsh/skills` нет: генератор обновляется вместе с CLI
проекта, а копия старела бы молча. Слэш-команд нет — только скиллы.
Установка в проект — `bash dsh/install.sh --openspec`; проверка — `--check`.
## 3. What is deliberately deferred ## 3. What is deliberately deferred
- **`harness-check` and `role-hint`**: non-blocking SessionStart hooks. They can - **`harness-check` and `role-hint`**: non-blocking SessionStart hooks. They can
@ -194,6 +202,31 @@ with "requires ... in the Host scope".
`~/.claude/skills`. The DSH copy wins because `dsh/install.sh --skills` copies `~/.claude/skills`. The DSH copy wins because `dsh/install.sh --skills` copies
real files there; the Claude cache is only a fallback. real files there; the Claude cache is only a fallback.
### OpenSpec skills
Воркфлоу OpenSpec ставит генератор CLI, а не обвязка:
```bash
cd <project>
openspec init --tools agents # или: bash <harness>/dsh/install.sh --openspec
openspec update # обновить скиллы после апгрейда CLI
```
Скиллы лежат в `.agents/skills/openspec-{propose,apply-change,archive-change,explore,sync-specs,update-change}/SKILL.md`
и перезаписываются генератором: править их руками нельзя. Команды адаптер
`agents` не ставит, поэтому `/openspec` в DSH нет — модель вызывает скилл по
фразе «openspec propose» / «openspec archive».
Цикл без Claude Code:
```bash
openspec new change <id>
openspec status --change <id> --json
openspec instructions proposal --change <id> --json
openspec validate <id> --strict
openspec archive <id> -y
```
## 6. Install and verify ## 6. Install and verify
Prerequisites: the `claude-harness` checkout, a superpowers source, DSH Prerequisites: the `claude-harness` checkout, a superpowers source, DSH
@ -224,6 +257,11 @@ bash dsh/install.sh --global --skills --roles
# mcp__codegraph__codegraph_explore. # mcp__codegraph__codegraph_explore.
``` ```
`--openspec` добавляет agents-адаптер в текущий проект (`$PWD`) и требует
существующий `openspec/`: без него скрипт отказывается и печатает готовую
команду. В живой сессии проверка такая: в проекте с `.agents/skills`
спросить «what skills do you have?» — должны быть шесть `openspec-*`.
`--roles` also appends the DSH SDD note to `~/.dsh/roles/dev.md` (the bullet that `--roles` also appends the DSH SDD note to `~/.dsh/roles/dev.md` (the bullet that
points `dev` at the `sdd` skill). The note lives only in the installed copy: the points `dev` at the `sdd` skill). The note lives only in the installed copy: the
shared `roles/dev.md` stays Claude Code-compatible, so a Claude session never shared `roles/dev.md` stays Claude Code-compatible, so a Claude session never
@ -334,3 +372,5 @@ profile was removed; the real `desktop` profile was not touched.
7. Decide the long-term home: keep `dsh/` in this repository while it shares 7. Decide the long-term home: keep `dsh/` in this repository while it shares
hooks/roles/skills, then extract a `dsh-harness` repository when the bundle hooks/roles/skills, then extract a `dsh-harness` repository when the bundle
gets its own release cadence. gets its own release cadence.
8. OpenSpec — **done** (change `dsh-openspec`): проектные скиллы, `--openspec`,
`--check`; приёмка — в дизайне change.

View File

@ -19,6 +19,9 @@ separate Cordis bundle plus a thin install helper.
dispatches (report files, task review, fix loop, ledger), with controller dispatches (report files, task review, fix loop, ledger), with controller
modes for one plan and for several parallel plans; the optional overlay modes for one plan and for several parallel plans; the optional overlay
enables model routes and depth 2. enables model routes and depth 2.
- OpenSpec — воркфлоу идут проектными скиллами `.agents/skills/openspec-*`
(ставит `openspec init --tools agents`); глобальной копии нет, слэш-команд
нет. Установка в проект: `bash dsh/install.sh --openspec`.
**Not yet:** `briefing`, `harness-check`, `role-hint`, `harness-doctor`, **Not yet:** `briefing`, `harness-check`, `role-hint`, `harness-doctor`,
auto-memory, caveman. See [PORT.md](PORT.md) for the design, mapping table, and auto-memory, caveman. See [PORT.md](PORT.md) for the design, mapping table, and
@ -36,6 +39,9 @@ bash dsh/install.sh --global
bash dsh/install.sh --skills bash dsh/install.sh --skills
bash dsh/install.sh --roles bash dsh/install.sh --roles
# В корне проекта, где уже есть openspec/: добавить agents-скиллы
bash <harness>/dsh/install.sh --openspec
# Install the bundle in DSH: # Install the bundle in DSH:
# Plugins -> install a bundle from dsh/bundle # Plugins -> install a bundle from dsh/bundle
# or ask the agent to call plugin_manager install_bundle with that target. # or ask the agent to call plugin_manager install_bundle with that target.
@ -57,6 +63,8 @@ manager owns those writes.
user-facing command with the same file. Expect the five-line role summary. user-facing command with the same file. Expect the five-line role summary.
5. Prompt `Let's make a react todo list` — `brainstorming` must trigger before 5. Prompt `Let's make a react todo list` — `brainstorming` must trigger before
any code. any code.
6. In a project with `.agents/skills`, ask `what skills do you have?` — the six
`openspec-*` skills must be listed.
The injected bootstrap starts with a marker: The injected bootstrap starts with a marker:
@ -96,6 +104,7 @@ dsh/
tests/ tests/
install.sh install.sh
skills/{role,sdd}/SKILL.md model-invocable skills installed into ~/.dsh skills/{role,sdd}/SKILL.md model-invocable skills installed into ~/.dsh
.agents/skills/openspec-* проектные скиллы OpenSpec (генерирует CLI)
subagent-models.yml opt-in overlay: model routes + maxDepth 2 subagent-models.yml opt-in overlay: model routes + maxDepth 2
mcp.codegraph.yml optional CodeGraph MCP overlay mcp.codegraph.yml optional CodeGraph MCP overlay
PORT.md design, mapping, risks, next phases PORT.md design, mapping, risks, next phases
@ -142,3 +151,5 @@ repository layout:
session model. session model.
- SDD on DSH is asynchronous, not a copy of Claude's `Task`. See the `sdd` - SDD on DSH is asynchronous, not a copy of Claude's `Task`. See the `sdd`
skill and `openspec/changes/dsh-sdd/`. skill and `openspec/changes/dsh-sdd/`.
- OpenSpec-скиллы проект получает сам (`openspec init --tools agents` или
`--openspec`); обвязка ставит их только в проект, не в `~/.dsh`.