refactor: commands rename /run-pipeline + /spec (#29)

* refactor: rename /pipeline-driver to /run-pipeline + /spec-driver to /spec

- Rename command + skill dir + skill() ref for both
- Update cross-references in .opencode/ .md files
- pipeline_status / spec_status tool names unchanged (independent)
- Update project-map README

* docs(handoff): add pr-14 handoff + ADR-009

* docs(handoff): set PR number 29

---------

Co-authored-by: opencode-agent <agent@slaid098.dev>
This commit is contained in:
Sergey 2026-07-24 00:46:00 +03:00 committed by GitHub
parent 55a95140cd
commit 1bd541f172
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
15 changed files with 72 additions and 37 deletions

View file

@ -117,7 +117,7 @@ After updating project map, validate handoff and ADR files:
## Spec cleanup (post-merge, опционально) ## Spec cleanup (post-merge, опционально)
Если `docs/spec/roadmap.md` существует в репо (spec-driver был запущен): Если `docs/spec/roadmap.md` существует в репо (spec был запущен):
1. Извлеки все `#N` номера issues из `docs/spec/roadmap.md` (regex `#(\d+)`). 1. Извлеки все `#N` номера issues из `docs/spec/roadmap.md` (regex `#(\d+)`).
2. Для каждого `#N`: `gh issue view N --json state --jq .state`. 2. Для каждого `#N`: `gh issue view N --json state --jq .state`.
3. Если ВСЕ issues имеют `state=CLOSED`: 3. Если ВСЕ issues имеют `state=CLOSED`:

View file

@ -1,5 +1,5 @@
--- ---
description: Global code reviewer. Reviews PRs against project skills and universal code standards. Invoke via @reviewer. Uses gh pr comment to approve or request changes. Does NOT merge — merge is done by main agent via pipeline-driver. description: Global code reviewer. Reviews PRs against project skills and universal code standards. Invoke via @reviewer. Uses gh pr comment to approve or request changes. Does NOT merge — merge is done by main agent via run-pipeline.
mode: subagent mode: subagent
temperature: 0.1 temperature: 0.1
steps: 100 steps: 100
@ -86,7 +86,7 @@ permission:
"tail *": allow "tail *": allow
--- ---
You are a global code reviewer. Your job: review PRs against project skills and universal code standards, leave GitHub PR reviews as comments. You do NOT merge — merge is done by the main agent via pipeline-driver after CI ✅. You are a global code reviewer. Your job: review PRs against project skills and universal code standards, leave GitHub PR reviews as comments. You do NOT merge — merge is done by the main agent via run-pipeline after CI ✅.
## Setup ## Setup
@ -231,7 +231,7 @@ Review body format:
### Verdict: APPROVE ### Verdict: APPROVE
``` ```
Do NOT attempt merge. Stop. Main agent merges via pipeline-driver after CI ✅. Do NOT attempt merge. Stop. Main agent merges via run-pipeline after CI ✅.
After this command, you MUST respond with your review text only. Do NOT call any more tools. After this command, you MUST respond with your review text only. Do NOT call any more tools.
### If requesting changes (critical issues found): ### If requesting changes (critical issues found):
@ -304,7 +304,7 @@ After this command, you MUST respond with your review text only. Do NOT call any
6. If unsure about something → NEEDS_DISCUSSION, don't guess. 6. If unsure about something → NEEDS_DISCUSSION, don't guess.
7. After `gh pr comment` (APPROVE or REQUEST_CHANGES), STOP. 7. After `gh pr comment` (APPROVE or REQUEST_CHANGES), STOP.
Respond with final text only. ANY further tool call is a protocol violation. Respond with final text only. ANY further tool call is a protocol violation.
Main agent merges via pipeline-driver. Main agent merges via run-pipeline.
8. After `gh pr comment` with REQUEST_CHANGES, STOP. Do not merge. 8. After `gh pr comment` with REQUEST_CHANGES, STOP. Do not merge.
9. Для получения login автора PR используй `gh pr view --json author` (НЕ `gh api user` — broad API call, не в allow-list, вызывает doom-loop). 9. Для получения login автора PR используй `gh pr view --json author` (НЕ `gh api user` — broad API call, не в allow-list, вызывает doom-loop).
10. Для debug-вывода используй `pwd`/`ls`/`cat`НЕ `echo` (не в allow-list). 10. Для debug-вывода используй `pwd`/`ls`/`cat`НЕ `echo` (не в allow-list).

View file

@ -1,5 +0,0 @@
---
description: Run pipeline-driver — autonomous 7-phase PR pipeline
agent: build
---
Load the `pipeline-driver` skill via `skill({name: "pipeline-driver"})` and follow its ПРОТОКОЛ strictly. Each iteration: call `pipeline_status` tool, execute the `NEXT:` action it returns, repeat until COMPLETE or STOP. Полностью автономно — 1 строка прогресса после каждой фазы, STOP на AMBIGUOUS/error.

View file

@ -0,0 +1,5 @@
---
description: Run pipeline — autonomous 7-phase PR pipeline
agent: build
---
Load the `run-pipeline` skill via `skill({name: "run-pipeline"})` and follow its ПРОТОКОЛ strictly. Each iteration: call `pipeline_status` tool, execute the `NEXT:` action it returns, repeat until COMPLETE or STOP. Полностью автономно — 1 строка прогресса после каждой фазы, STOP на AMBIGUOUS/error.

View file

@ -1,5 +0,0 @@
---
description: Run spec-driver — interactive spec generation for new project
agent: build
---
Load the `spec-driver` skill via `skill({name: "spec-driver"})` and follow its ПРОТОКОЛ strictly. Главный агент — оркестратор: `spec_status` tool (read-only) + вопрос юзеру + task(general) делегирование. Не делает edit/memory_search/gh сам. Каждая фаза = 1 subagent. Стоп на issues — дальше юзер сам /pipeline-driver.

View file

@ -0,0 +1,5 @@
---
description: Run spec — interactive spec generation for new project
agent: build
---
Load the `spec` skill via `skill({name: "spec"})` and follow its ПРОТОКОЛ strictly. Главный агент — оркестратор: `spec_status` tool (read-only) + вопрос юзеру + task(general) делегирование. Не делает edit/memory_search/gh сам. Каждая фаза = 1 subagent. Стоп на issues — дальше юзер сам /run-pipeline.

View file

@ -29,7 +29,7 @@ DANGEROUS_PATTERNS = [
), ),
( (
r"^gh pr merge\*?$", r"^gh pr merge\*?$",
"merge is done by main agent via pipeline-driver, not subagents. " "merge is done by main agent via run-pipeline, not subagents. "
"Use 'gh pr merge' from primary build/plan agent only (global " "Use 'gh pr merge' from primary build/plan agent only (global "
"opencode.json:195 has 'gh pr merge*: allow'). Per-agent 'gh pr " "opencode.json:195 has 'gh pr merge*: allow'). Per-agent 'gh pr "
"merge*: deny' is the defense (see ADR-016). See ADR-006 for " "merge*: deny' is the defense (see ADR-016). See ADR-006 for "

View file

@ -47,11 +47,11 @@ description: <когда загружать. Триггеры на русско
├── get-project-map/SKILL.md ├── get-project-map/SKILL.md
├── issue/SKILL.md ├── issue/SKILL.md
├── memory/SKILL.md ├── memory/SKILL.md
├── pipeline-driver/SKILL.md ├── run-pipeline/SKILL.md
├── python-development/SKILL.md ├── python-development/SKILL.md
├── repo-init/SKILL.md ├── repo-init/SKILL.md
├── run-tests/SKILL.md ├── run-tests/SKILL.md
└── spec-driver/SKILL.md └── spec/SKILL.md
``` ```
## 3. Скиллы авто-дискаверятся ## 3. Скиллы авто-дискаверятся

View file

@ -83,7 +83,7 @@ Issue создаёт **subagent** (general type), а не основной аг
4. Запусти `gh issue create --title "..." --body "..."` (labels — см. guidance ниже) 4. Запусти `gh issue create --title "..." --body "..."` (labels — см. guidance ниже)
5. Верни URL созданного issue основному агенту 5. Верни URL созданного issue основному агенту
Main agent НЕ пишет body и НЕ запускает `gh issue create` — всё через subagent. Это согласовано с `pipeline-driver` skill (Phase 0: "через subagent с `issue` skill") и `AGENTS.md` (Dev Workflow, step 2: "delegate to `task` subagent"). Main agent НЕ пишет body и НЕ запускает `gh issue create` — всё через subagent. Это согласовано с `run-pipeline` skill (Phase 0: "через subagent с `issue` skill") и `AGENTS.md` (Dev Workflow, step 2: "delegate to `task` subagent").
## Пример хорошего issue ## Пример хорошего issue
@ -146,12 +146,12 @@ Label выбирай по типу задачи (совпадает с commit `t
## Полный workflow ## Полный workflow
После создания issue, цикл продолжается (см. `pipeline-driver` skill для деталей PR процесса): После создания issue, цикл продолжается (см. `run-pipeline` skill для деталей PR процесса):
1. **Subagent**`task(general)` читает issue, реализует, коммитит, push, создаёт PR. Оркестрация — через `pipeline-driver` skill. 1. **Subagent**`task(general)` читает issue, реализует, коммитит, push, создаёт PR. Оркестрация — через `run-pipeline` skill.
2. **Docs review**`@docs-reviewer` subagent валидирует handoff + ADR, обновляет project map (pre-merge). 2. **Docs review**`@docs-reviewer` subagent валидирует handoff + ADR, обновляет project map (pre-merge).
3. **Code review**`@reviewer` subagent ревьюит PR (diff, skills, standards), постит `## Code Review Summary` комментарий. 3. **Code review**`@reviewer` subagent ревьюит PR (diff, skills, standards), постит `## Code Review Summary` комментарий.
4. **Merge or Repeat** — APPROVE → `gh pr merge N --squash --delete-branch` (после CI ✅); замечания → fix subagent → re-review → merge. 4. **Merge or Repeat** — APPROVE → `gh pr merge N --squash --delete-branch` (после CI ✅); замечания → fix subagent → re-review → merge.
5. **Memory-sync**`@memory-syncer` дистиллирует handoff + ADR в `app_data/opencode-memory/repos/{host}/{org}/{repo}.md`. 5. **Memory-sync**`@memory-syncer` дистиллирует handoff + ADR в `app_data/opencode-memory/repos/{host}/{org}/{repo}.md`.
См. `AGENTS.md` (Development Workflow) и `pipeline-driver` skill — все три документа описывают одну и ту же full-subagent модель делегирования. См. `AGENTS.md` (Development Workflow) и `run-pipeline` skill — все три документа описывают одну и ту же full-subagent модель делегирования.

View file

@ -1,9 +1,9 @@
--- ---
name: pipeline-driver name: run-pipeline
description: Автономный исполнитель PR-пайплайна. Делегирует 7 фаз subagent'ам, не импровизирует порядок, не мержит при красном CI. description: Автономный исполнитель PR-пайплайна. Делегирует 7 фаз subagent'ам, не импровизирует порядок, не мержит при красном CI.
--- ---
# Pipeline Driver # Run Pipeline
Автономная процедура-loop для проведения PR через 7 фаз. Source of truth для Автономная процедура-loop для проведения PR через 7 фаз. Source of truth для
порядка и действий — `pipeline_status` tool. порядка и действий — `pipeline_status` tool.
@ -98,7 +98,7 @@ Review PR#M в текущем репо.
5. Оставь review как PR comment (НЕ `gh pr review --approve` — GitHub блокирует 5. Оставь review как PR comment (НЕ `gh pr review --approve` — GitHub блокирует
self-approve): self-approve):
`gh pr comment M --body "## Code Review Summary\n...\n### Verdict: APPROVE|REQUEST_CHANGES"`. `gh pr comment M --body "## Code Review Summary\n...\n### Verdict: APPROVE|REQUEST_CHANGES"`.
6. НЕ МЕРДЖИТЬ — merge делает основной агент через pipeline-driver. 6. НЕ МЕРДЖИТЬ — merge делает основной агент через run-pipeline.
``` ```
### Template D (fix_ci) ### Template D (fix_ci)

View file

@ -1,13 +1,13 @@
--- ---
name: spec-driver name: spec
description: Автономный исполнитель spec-генерации для нового проекта. Детерминированно ведёт агента по 9 фазам через spec_status tool. Главный агент — оркестратор, делегирует ВСЮ работу subagent'ам. Also when user says "создай спеку", "новый проект", "спецификация проекта", "spec", "project spec". description: Автономный исполнитель spec-генерации для нового проекта. Детерминированно ведёт агента по 9 фазам через spec_status tool. Главный агент — оркестратор, делегирует ВСЮ работу subagent'ам. Also when user says "создай спеку", "новый проект", "спецификация проекта", "spec", "project spec".
--- ---
# Spec Driver # Spec
Автономная процедура-loop для генерации спецификации нового проекта. Source of Автономная процедура-loop для генерации спецификации нового проекта. Source of
truth для порядка и действий — `spec_status` tool. На выходе — `docs/spec/` truth для порядка и действий — `spec_status` tool. На выходе — `docs/spec/`
(директория с файлами по фазам) + N GitHub issues, готовых для `/pipeline-driver`. (директория с файлами по фазам) + N GitHub issues, готовых для `/run-pipeline`.
## ПРОТОКОЛ (ЖЁСТКО) ## ПРОТОКОЛ (ЖЁСТКО)
@ -29,7 +29,7 @@ truth для порядка и действий — `spec_status` tool. На в
- Главному агенту: edit/write/read файлов (всё через subagent), memory_search (через subagent), gh issue create (через subagent). - Главному агенту: edit/write/read файлов (всё через subagent), memory_search (через subagent), gh issue create (через subagent).
- Формулировать вопросы не из question templates ниже. - Формулировать вопросы не из question templates ниже.
- Предлагать стек вне hardcoded default stack по типу проекта. - Предлагать стек вне hardcoded default stack по типу проекта.
- Запускать /pipeline-driver (стоп на issues — дальше юзер сам). - Запускать /run-pipeline (стоп на issues — дальше юзер сам).
### Остановы ### Остановы
@ -188,7 +188,7 @@ Prompt template I (см. ниже, create issues).
``` ```
Spec complete. Issues: #N1, #N2, ... Spec complete. Issues: #N1, #N2, ...
Запусти /pipeline-driver для issue #<первый> чтобы начать реализацию. Запусти /run-pipeline для issue #<первый> чтобы начать реализацию.
``` ```
## Prompt templates ## Prompt templates
@ -196,7 +196,7 @@ Spec complete. Issues: #N1, #N2, ...
### Template A (detect / Phase 0) ### Template A (detect / Phase 0)
``` ```
Контекст: запуск spec-driver в репо <cwd>. Контекст: запуск spec в репо <cwd>.
1. `git rev-parse --show-toplevel` → repo root. 1. `git rev-parse --show-toplevel` → repo root.
2. Если docs/spec/meta.md существует → прочитай frontmatter, верни phase/status. 2. Если docs/spec/meta.md существует → прочитай frontmatter, верни phase/status.
3. Если нет → создай docs/spec/meta.md с frontmatter: 3. Если нет → создай docs/spec/meta.md с frontmatter:
@ -321,4 +321,4 @@ Default stack для типа (хардкод, добавить всегда):
- После каждой фазы → 1 строка прогресса юзеру. - После каждой фазы → 1 строка прогресса юзеру.
- Если subagent error → 1 retry, потом STOP + report пользователю. - Если subagent error → 1 retry, потом STOP + report пользователю.
- Главный агент = оркестратор: `spec_status` tool + вопрос юзеру + task(general) делегирование. Не делает edit/memory_search/gh сам. - Главный агент = оркестратор: `spec_status` tool + вопрос юзеру + task(general) делегирование. Не делает edit/memory_search/gh сам.
- Стоп на issues — дальше юзер сам /pipeline-driver. - Стоп на issues — дальше юзер сам /run-pipeline.

View file

@ -3,7 +3,7 @@ import path from "path"
import { tool } from "@opencode-ai/plugin" import { tool } from "@opencode-ai/plugin"
export default tool({ export default tool({
description: "Spec status oracle. Returns current phase + NEXT action for spec-driver. Call BEFORE any spec action. Read-only. Returns DONE on phase complete, NOT_DONE on missing section, AMBIGUOUS on parse error.", description: "Spec status oracle. Returns current phase + NEXT action for the spec command. Call BEFORE any spec action. Read-only. Returns DONE on phase complete, NOT_DONE on missing section, AMBIGUOUS on parse error.",
args: { args: {
validate: tool.schema.boolean().optional().describe("If true, show all phases detail"), validate: tool.schema.boolean().optional().describe("If true, show all phases detail"),
}, },

View file

@ -0,0 +1,17 @@
# ADR-009: Commands rename to verbs (PR #29)
## Статус
Accepted
## Контекст
Commands /pipeline-driver and /spec-driver — nouns, should be verbs (imperative). /opencode-config → /configure-opencode done in #12.
## Решение
- /pipeline-driver → /run-pipeline
- /spec-driver → /spec
- Cross-references updated
- Tool names unchanged (independent)
## Альтернативы
- Keep noun names — отклонено (commands should be verbs per convention)
- Rename tools too — отклонено (tools independent, renaming breaks pipeline_status oracle)

View file

@ -0,0 +1,18 @@
# PR #29: Commands rename /run-pipeline + /spec
## Что сделано
- Rename: /pipeline-driver → /run-pipeline (command + skill dir + skill() ref)
- Rename: /spec-driver → /spec (command + skill dir + skill() ref)
- Updated cross-references in .opencode/ .md files
- pipeline_status / spec_status tool names NOT changed (independent)
## Почему
Commands should be verbs (imperative), not nouns. /run-pipeline, /spec — clearer user actions.
## Pending
- AGENTS.md references to /pipeline-driver — обновляется в #10 (orchestrator AGENTS.md)
- pipeline-driver skill content rewrite — в #16
## Watch out
- Tool names (pipeline_status, spec_status) unchanged — independent of command names
- Cross-references updated in .opencode/ .md files

View file

@ -19,8 +19,8 @@ opencode-config/
│ │ └── reviewer.md # Code review subagent (verdict APPROVE|REQUEST_CHANGES) │ │ └── reviewer.md # Code review subagent (verdict APPROVE|REQUEST_CHANGES)
│ ├── commands/ │ ├── commands/
│ │ ├── configure-opencode.md # /configure-opencode — edit opencode.json │ │ ├── configure-opencode.md # /configure-opencode — edit opencode.json
│ │ ├── pipeline-driver.md # /pipeline-driver — 7-phase PR pipeline │ │ ├── run-pipeline.md # /run-pipeline — 7-phase PR pipeline
│ │ └── spec-driver.md # /spec-driver — 9-phase spec generation │ │ └── spec.md # /spec — 9-phase spec generation
│ ├── skills/ │ ├── skills/
│ │ ├── add-skill/SKILL.md # Create new opencode skill │ │ ├── add-skill/SKILL.md # Create new opencode skill
│ │ ├── branch/SKILL.md # Branch naming conventions │ │ ├── branch/SKILL.md # Branch naming conventions
@ -30,12 +30,12 @@ opencode-config/
│ │ ├── issue/SKILL.md # GitHub issue creation │ │ ├── issue/SKILL.md # GitHub issue creation
│ │ ├── memory/SKILL.md # opencode-memory usage guide │ │ ├── memory/SKILL.md # opencode-memory usage guide
│ │ ├── configure-opencode/SKILL.md # Canonical rule: write to .opencode/ │ │ ├── configure-opencode/SKILL.md # Canonical rule: write to .opencode/
│ │ ├── pipeline-driver/SKILL.md # 7-phase pipeline orchestration │ │ ├── run-pipeline/SKILL.md # 7-phase pipeline orchestration
│ │ ├── python-development/SKILL.md # Python dev patterns │ │ ├── python-development/SKILL.md # Python dev patterns
│ │ ├── release/SKILL.md # Tag + GitHub Release │ │ ├── release/SKILL.md # Tag + GitHub Release
│ │ ├── repo-init/SKILL.md # New repository bootstrap │ │ ├── repo-init/SKILL.md # New repository bootstrap
│ │ ├── run-tests/SKILL.md # Test runner guide │ │ ├── run-tests/SKILL.md # Test runner guide
│ │ └── spec-driver/SKILL.md # 9-phase spec generation │ │ └── spec/SKILL.md # 9-phase spec generation
│ ├── tools/ │ ├── tools/
│ │ ├── pipeline-status.ts # pipeline_status tool wrapper │ │ ├── pipeline-status.ts # pipeline_status tool wrapper
│ │ └── spec-status.ts # spec_status tool wrapper │ │ └── spec-status.ts # spec_status tool wrapper