Skip to content

Commit 84b5ee5

Browse files
mattpocockclaude
andcommitted
Add implement-spec skill (in-progress) with its bucket docs
The skill itself takes a spec plus its tickets and drives them to one PR, reading the tickets as a task graph so implementer subagents can run concurrently across the ready frontier. Documentation duties for the in-progress bucket: - List it in skills/in-progress/README.md (flat list, name linked to its SKILL.md), the one entry every skill in a bucket must have. It stays out of the top-level README and .claude-plugin/plugin.json, and gets no docs page, as the bucket requires. - Add a changeset, so the release notes carry it. - Match the bucket's openai.yaml style in short_description: a short verb phrase, no closing period. Also ignore .claude, which holds settings.local.json and agent worktrees that should never be committed. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
1 parent 0ab1b63 commit 84b5ee5

5 files changed

Lines changed: 47 additions & 0 deletions

File tree

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"mattpocock-skills": patch
3+
---
4+
5+
Add the `implement-spec` skill (in-progress bucket, user-invoked). It takes a spec and its tickets and drives them to a single PR: the tickets are read as a task graph with blocking edges, so implementer subagents run in background worktrees across the ready frontier for concurrency, a merger subagent folds each one back into the PR branch, and the flow closes with `/code-review` before the PR is marked ready.

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
node_modules
2+
.claude

skills/in-progress/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,4 @@ npx skills@latest add mattpocock/skills --skill=<name>
1414
- **[writing-shape](./writing-shape/SKILL.md)**: Take a markdown file of raw material and shape it into an article paragraph by paragraph, arguing format choices at each step.
1515
- **[claude-handoff](./claude-handoff/SKILL.md)**: Hand the current conversation off to a fresh background agent that picks up the work immediately, seeded with a handoff summary via `claude --bg`. User-invoked.
1616
- **[setup-ts-deep-modules](./setup-ts-deep-modules/SKILL.md)**: Wire dependency-cruiser into a TypeScript repo so each package is a deep module: implementation hidden in subfolders, reachable only through its entry-point files, tests exercising it through those. User-invoked.
17+
- **[implement-spec](./implement-spec/SKILL.md)**: Implement a whole spec on one branch. Works the tickets as a task graph rather than a list, running implementer subagents across the ready frontier for maximum concurrency, and lands the result as a single PR. User-invoked.
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
---
2+
name: implement-spec
3+
description: "Implement a specification in code."
4+
disable-model-invocation: true
5+
---
6+
7+
You have been provided a spec. This spec should have tickets associated with it, describing how to implement the spec.
8+
9+
The goal is a PR which implements the entire spec on a single branch.
10+
11+
The tickets are not a list of steps. They are a **task graph** with blocking relationships between them. This means there is always a **frontier** of tickets which are ready to be grabbed.
12+
13+
Communication to and from subagents should be sparse. Communicate primarily through **context pointers**: to the spec, tickets, research notes, and previous commits. Don't duplicate information already available via pointers.
14+
15+
**Implementer subagents** should be run in the background where possible for **maximum concurrency**.
16+
17+
## Steps
18+
19+
1. Read the spec and tickets. Read enough to understand the task graph.
20+
21+
2. (optional) Use an **exploration subagent** to conduct any exploration required by the tickets - relevant codebase files or external documentation. Ensure the exploration subagent can save files - it should save its markdown notes in a directory outside the repo, accessible by all future subagents. This lets **implementer subagents** focus on implementation rather than exploration.
22+
23+
3. Create a branch, and a draft PR. The PR should be marked as 'closing' the spec issue and tickets.
24+
25+
4. Use **implementer subagents** to implement each ticket. Each implementer subagent should work in its own worktree, on its own branch.
26+
27+
5. Once an **implementer subagent** completes, merge its work to the PR branch with a **merger subagent**.
28+
29+
6. If this changes the **frontier** of available tickets, kick off more **implementer subagents** to work on the new tickets. This allows for maximum concurrency.
30+
31+
7. Once all tickets are complete, run /code-review on the PR branch. Fix all issues raised by the code review in an **implementer subagent**.
32+
33+
8. Mark the PR as ready for review.
34+
35+
9. Clean up all **implementer subagent** worktrees.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
interface:
2+
display_name: "Implement Spec"
3+
short_description: "Implement a whole spec as one PR"
4+
policy:
5+
allow_implicit_invocation: false

0 commit comments

Comments
 (0)