78 lines
4.5 KiB
Markdown
78 lines
4.5 KiB
Markdown
---
|
|
name: boo-implementing-changes
|
|
description: >
|
|
Implements an existing validated OpenSpec change folder task-by-task,
|
|
marking tasks.md as it goes, and verifies against specs/. Use when a change
|
|
folder exists under openspec/changes/ and the operator says implement, apply,
|
|
build it, or continue. Do NOT use without a change folder; use
|
|
boo-planning-changes first. Do NOT use for ad-hoc fixes outside the OpenSpec
|
|
flow.
|
|
metadata:
|
|
version: "1.0"
|
|
---
|
|
|
|
# Implementing Changes
|
|
|
|
## Size
|
|
|
|
Determined by the change folder's task count; report the count. Accept `$size` override to cap how many tasks run in this dispatch: stop at the cap, report remaining tasks unchecked.
|
|
|
|
## Hard contract
|
|
|
|
Input is a change-id. Scope is tasks.md, nothing else.
|
|
|
|
## Process
|
|
|
|
1. Read proposal.md, design.md, tasks.md from openspec/changes/<id>/. Refuse if tasks.md has unchecked validation errors or the folder fails `openspec validate`.
|
|
2. Start fresh context. This skill is its own dispatch, never chained in the planner's context.
|
|
3. Execute tasks in order. Per task: implement, run the exact verification command the task names, check the box in tasks.md, and run `git diff --stat` to prove the edit.
|
|
4. Deviation rule: if implementation reveals the design is wrong, STOP at that task. Write the discrepancy into design.md under `## Implementation notes`. Report to the operator. Never silently redesign.
|
|
5. On completion: run the full verification suite, report per-task status + `git diff --stat` summary. Do not archive.
|
|
|
|
## What NOT to do
|
|
|
|
- No work outside tasks.md scope. No "while I'm here" refactors.
|
|
- No committing. No archiving. Operator archives manually.
|
|
- No marking a task done without its verification step passing.
|
|
|
|
## Gotchas
|
|
|
|
- **Source material may not match the design**: if a cited source file does not exist or behaves differently, stop and report. Do not redesign silently.
|
|
- **Evidence rule**: every file edit must be verifiable. Prove edits with `git diff --stat`, not with test passes.
|
|
<!-- standing-rules:pi:start -->
|
|
- **Subagent visibility**: when the Paseo MCP tools (`mcp__paseo__*`) are available, spawn each agent persona as an attached Paseo subagent with `create_agent` (`detached: false`, `notifyOnFinish: true`; for an opencode provider also pass `settings.modeId: "build"` and `settings.features.auto_accept: true`) so every persona appears in the operator's Paseo agent track. Resolve each persona's provider/model from the active preset's `agents` map in `~/.paseo/orchestration-preferences.json`; supervise on the finish notification (never poll) and read each result with `get_agent_activity`.
|
|
- **Subagent fallback**: when the Paseo MCP tools are not available, use the platform's native subagent dispatch. On a platform with no subagent dispatch at all (for example Pi), read each `agents/<name>.md` persona and apply its lens in sequential passes.
|
|
- **Subagent concurrency**: honor the active preset's `concurrency` value in `~/.paseo/orchestration-preferences.json`. When it is `1` (local heavy-weight presets, around 27b/35b or larger on a single llama-swap server), dispatch subagents STRICTLY ONE AT A TIME: launch one, wait for its finish notification and read its result, then launch the next. This overrides any parallel fan-out. Absent or higher `concurrency` means parallel fan-out is fine.
|
|
<!-- standing-rules:pi:end -->
|
|
<!-- standing-rules:core:start -->
|
|
- **No commit**: never commit, push, or stage changes; never `git add -A`. Prove any edits with `git diff --stat`.
|
|
- **No em dashes**: never use em dashes (U+2014) in output or files you write.
|
|
<!-- standing-rules:core:end -->
|
|
|
|
## Output format
|
|
|
|
```
|
|
# Implementation: <change-id>
|
|
|
|
## Per-task status
|
|
- [x] 1.1 <task description> -- verified: <command>
|
|
- [x] 1.2 <task description> -- verified: <command>
|
|
...
|
|
|
|
## Diff summary
|
|
<git diff --stat output>
|
|
|
|
## Deviations
|
|
<if any were recorded in design.md, list them here>
|
|
|
|
## Next step
|
|
Validate with boo-validating-changes <change-id>; operator archives after a passing verdict: openspec archive <change-id>
|
|
```
|
|
|
|
## Failure modes
|
|
|
|
- **Change folder missing**: specified id does not exist under openspec/changes/. Report and stop.
|
|
- **Validation fails on first check**: the change folder has errors. Report validation output and stop.
|
|
- **Design conflict**: implementation reveals the design is wrong or incomplete. Write the discrepancy to design.md `## Implementation notes` and report.
|
|
- **Verification command cannot run**: the task's verification cannot be executed. Note which verifications were skipped and why.
|