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

Merged
aep merged 10 commits from feat/42-dsh-openspec into main 2026-10-24 18:59:58 +03:00
2 changed files with 52 additions and 1 deletions
Showing only changes of commit cd5ef4f765 - Show all commits

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 |
| Superpowers | plugin + `SessionStart` hook | skills + `agent/pre-step` bootstrap | content 1:1, bootstrap new |
| 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 |
| auto-memory | Claude Code feature | none | dropped/replaced with files |
| 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
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
- **`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
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
Prerequisites: the `claude-harness` checkout, a superpowers source, DSH
@ -224,6 +257,11 @@ bash dsh/install.sh --global --skills --roles
# 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
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
@ -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
hooks/roles/skills, then extract a `dsh-harness` repository when the bundle
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
modes for one plan and for several parallel plans; the optional overlay
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`,
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 --roles
# В корне проекта, где уже есть openspec/: добавить agents-скиллы
bash <harness>/dsh/install.sh --openspec
# Install the bundle in DSH:
# Plugins -> install a bundle from dsh/bundle
# 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.
5. Prompt `Let's make a react todo list` — `brainstorming` must trigger before
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:
@ -96,6 +104,7 @@ dsh/
tests/
install.sh
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
mcp.codegraph.yml optional CodeGraph MCP overlay
PORT.md design, mapping, risks, next phases
@ -142,3 +151,5 @@ repository layout:
session model.
- SDD on DSH is asynchronous, not a copy of Claude's `Task`. See the `sdd`
skill and `openspec/changes/dsh-sdd/`.
- OpenSpec-скиллы проект получает сам (`openspec init --tools agents` или
`--openspec`); обвязка ставит их только в проект, не в `~/.dsh`.