mirror of
https://github.com/mattpocock/skills.git
synced 2026-09-13 02:48:06 +07:00
Compare commits
7
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
84b5ee5afd | ||
|
|
0ab1b63a41 | ||
|
|
85f83d3fde | ||
|
|
885e2ca4d8 | ||
|
|
4f289474ba | ||
|
|
5c89081d4b | ||
|
|
1bb95954ef |
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"mattpocock-skills": patch
|
||||
---
|
||||
|
||||
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.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"mattpocock-skills": patch
|
||||
---
|
||||
|
||||
Quote the `description` front matter in `to-spec`, `code-review`, `setup-matt-pocock-skills`, `writing-fragments`, `writing-shape`, and `wait-what`. An unquoted colon-space left over from the em-dash sweep in #905 made each block invalid YAML, so `skills.sh` skipped all six during discovery and they couldn't be listed or installed via `npx skills`.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"mattpocock-skills": patch
|
||||
---
|
||||
|
||||
grilling: update the round template so consecutive questions are separated by a horizontal rule (`---`) instead of running together.
|
||||
@@ -1 +1,2 @@
|
||||
node_modules
|
||||
.claude
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: code-review
|
||||
description: Review the changes since a fixed point (commit, branch, tag, or merge-base) along two axes: Standards (does the code follow this repo's documented coding standards?) and Spec (does the code match what the originating issue/spec asked for?). Runs both reviews in parallel sub-agents and reports them side by side. Use when the user wants to review a branch, a PR, work-in-progress changes, or asks to "review since X".
|
||||
description: "Review the changes since a fixed point (commit, branch, tag, or merge-base) along two axes: Standards (does the code follow this repo's documented coding standards?) and Spec (does the code match what the originating issue/spec asked for?). Runs both reviews in parallel sub-agents and reports them side by side. Use when the user wants to review a branch, a PR, work-in-progress changes, or asks to \"review since X\"."
|
||||
---
|
||||
|
||||
Two-axis review of the diff between `HEAD` and a fixed point the user supplies:
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: setup-matt-pocock-skills
|
||||
description: Configure this repo for the engineering skills: set up its issue tracker, triage label vocabulary, and domain doc layout. Run once before first use of the other engineering skills.
|
||||
description: "Configure this repo for the engineering skills: set up its issue tracker, triage label vocabulary, and domain doc layout. Run once before first use of the other engineering skills."
|
||||
disable-model-invocation: true
|
||||
---
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: to-spec
|
||||
description: Turn the current conversation into a spec and publish it to the project issue tracker: no interview, just synthesis of what you've already discussed.
|
||||
description: "Turn the current conversation into a spec and publish it to the project issue tracker: no interview, just synthesis of what you've already discussed."
|
||||
disable-model-invocation: true
|
||||
---
|
||||
|
||||
|
||||
@@ -14,3 +14,4 @@ npx skills@latest add mattpocock/skills --skill=<name>
|
||||
- **[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.
|
||||
- **[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.
|
||||
- **[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.
|
||||
- **[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.
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
---
|
||||
name: implement-spec
|
||||
description: "Implement a specification in code."
|
||||
disable-model-invocation: true
|
||||
---
|
||||
|
||||
You have been provided a spec. This spec should have tickets associated with it, describing how to implement the spec.
|
||||
|
||||
The goal is a PR which implements the entire spec on a single branch.
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
**Implementer subagents** should be run in the background where possible for **maximum concurrency**.
|
||||
|
||||
## Steps
|
||||
|
||||
1. Read the spec and tickets. Read enough to understand the task graph.
|
||||
|
||||
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.
|
||||
|
||||
3. Create a branch, and a draft PR. The PR should be marked as 'closing' the spec issue and tickets.
|
||||
|
||||
4. Use **implementer subagents** to implement each ticket. Each implementer subagent should work in its own worktree, on its own branch.
|
||||
|
||||
5. Once an **implementer subagent** completes, merge its work to the PR branch with a **merger subagent**.
|
||||
|
||||
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.
|
||||
|
||||
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**.
|
||||
|
||||
8. Mark the PR as ready for review.
|
||||
|
||||
9. Clean up all **implementer subagent** worktrees.
|
||||
@@ -0,0 +1,5 @@
|
||||
interface:
|
||||
display_name: "Implement Spec"
|
||||
short_description: "Implement a whole spec as one PR"
|
||||
policy:
|
||||
allow_implicit_invocation: false
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: writing-fragments
|
||||
description: Writing, explore: mine raw fragments, no structure yet.
|
||||
description: "Writing, explore: mine raw fragments, no structure yet."
|
||||
disable-model-invocation: true
|
||||
---
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: writing-shape
|
||||
description: Writing, exploit: shape raw material into an article, paragraph by paragraph.
|
||||
description: "Writing, exploit: shape raw material into an article, paragraph by paragraph."
|
||||
disable-model-invocation: true
|
||||
---
|
||||
|
||||
|
||||
@@ -7,11 +7,17 @@ Interview the user relentlessly until you reach a shared understanding. Map this
|
||||
|
||||
Work the tree in **rounds**. The **frontier** is every decision whose prerequisites are already settled: the questions you can ask _now_ without guessing at answers you haven't heard yet. Ask the whole frontier in one round: number each question and give your recommended answer. Then wait for the user's answers before the next round.
|
||||
|
||||
Each question should be formatted like so:
|
||||
Format a round like so:
|
||||
|
||||
```
|
||||
❓ **Q1** - **<question title>**: <question body, might be multiple paragraphs, including multiple choices>
|
||||
|
||||
➡️ <your recommended answer>
|
||||
|
||||
---
|
||||
|
||||
❓ **Q2** - **<question title>**: <question body, might be multiple paragraphs, including multiple choices>
|
||||
|
||||
➡️ <your recommended answer>
|
||||
```
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: wait-what
|
||||
description: Stop. That last message did not land: re-pitch it.
|
||||
description: "Stop. That last message did not land: re-pitch it."
|
||||
disable-model-invocation: true
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user