Compare commits

...
Author SHA1 Message Date
Matt Pocock 6654f6b60c feat: add 'Information access' category to retrospective skill for improved agent insights 2026-08-24 15:19:57 +01:00
Matt Pocock 3ec8e23994 feat: update retro skill description and add to README 2026-08-24 15:18:22 +01:00
Matt Pocock 8fa188659c feat: add initial retro skill and OpenAI agent configuration 2026-08-24 15:16:59 +01:00
Matt Pocock 5b15a47f2d fix: clarify wording in implementation steps for code review process 2026-08-21 11:56:33 +01:00
Matt Pocock 163b780f98 Merge pull request #926 from mattpocock/docs/implement-spec-readme
Add implement-spec skill (in-progress) with its bucket docs
2026-08-21 11:11:22 +01:00
Matt PocockandClaude Opus 5 84b5ee5afd 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>
2026-08-21 11:09:36 +01:00
Matt Pocock 0ab1b63a41 Merge pull request #917 from mattpocock/grilling-add-hr-between-questions
grilling: separate questions in a round with an HR
2026-08-20 11:35:14 +01:00
remote-box 85f83d3fde grilling: separate questions in a round with an HR
Multi-question rounds ran straight into each other with no visual
break. Fold the horizontal rule (---) directly into the round
template so consecutive questions are shown as distinct blocks; the
template demonstrates the separator, so no extra prose instruction
is needed.
2026-08-20 10:34:29 +00:00
Matt Pocock 885e2ca4d8 Merge pull request #911 from mattpocock/fix/907-yaml-frontmatter-colons
Fix invalid YAML front matter in six SKILL.md files
2026-08-19 14:09:18 +01:00
Claude Sonnet 5 4f289474ba chore: add changeset for YAML front-matter fix
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-19 13:04:09 +00:00
Claude Sonnet 5 5c89081d4b fix: quote SKILL.md descriptions with unquoted colons
The colon-space sequences left behind by #905's em-dash-to-colon
sweep make these six front-matter blocks invalid YAML, so skills.sh
skips them during discovery and they can't be installed via
`npx skills`. Quoting the description scalar fixes parsing without
changing the wording.

Fixes #907

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-19 13:01:26 +00:00
Matt Pocock 1bb95954ef Merge pull request #905 from mattpocock/remove-em-dashes
Remove all em-dashes from the repo
2026-08-19 11:04:49 +01:00
16 changed files with 120 additions and 7 deletions
+5
View File
@@ -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
View File
@@ -1 +1,2 @@
node_modules node_modules
.claude
+1 -1
View File
@@ -1,6 +1,6 @@
--- ---
name: code-review 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: Two-axis review of the diff between `HEAD` and a fixed point the user supplies:
@@ -1,6 +1,6 @@
--- ---
name: setup-matt-pocock-skills 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 disable-model-invocation: true
--- ---
+1 -1
View File
@@ -1,6 +1,6 @@
--- ---
name: to-spec 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 disable-model-invocation: true
--- ---
+2
View File
@@ -14,3 +14,5 @@ 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. - **[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. - **[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. - **[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.
- **[retro](./retro/SKILL.md)**: Suggest improvements to the coding agent's environment (steering files, coding standards, automated checks, tooling) after a session. STUB: design notes only, not functional yet. 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 a single **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
+44
View File
@@ -0,0 +1,44 @@
---
name: retro
description: "Conduct a retrospective on a coding session."
disable-model-invocation: true
---
The user has asked for a **retrospective**. You are suggesting improvements to the coding agent's **environment** to improve future runs.
## Steps
1. Call the Skill tool with `writing-for-agents` for the writing style guide.
2. Read the primary sources for the session the user specifies. This may mean searching through session logs on this machine. If the user doesn't specify a session, default to the current one.
3. Look for candidates for improvement in these categories.
- **Navigation**: how easy was it for the agent to find the right files? Are there hidden dependencies between files? Would a **navigation pointer** make it easier? _Use when_ the session took a long time to find a piece of information.
- **Automated checks**: are there automated checks that could catch errors the agent made? Linting, typing, tests, filesystem linters? _Use when_ the agent made a mistake that could have been caught by an automated check.
- **Coding standards**: should the **reviewer agent** be given a new rule to enforce? Should an existing rule be removed or clarified? _Use when_ the reviewer agent failed to catch a mistake.
- **Global AGENTS.md**: are there any steering instructions that should be moved to coding standards (or automated checks) instead? _Use when_ the AGENTS.md file is particularly large - in the repo OR the user's global scope.
- **Tool economy**: did the agent make expensive tool calls that could be streamlined? Is there any custom tooling (CLI's, MCP's) that is particularly token-inefficient? _Use when_ the agent made an expensive tool call.
- **No-ops**: look for instructions in steering files that don't modify the agent's behavior. _Use when_ the steering files are large and unwieldy.
- **Information access**: look for opportunities to increase the agent's access to information. Teeing dev server logs, readonly access to third-party services. _Use when_ a crucial piece of information was not available to the agent.
4. Present these candidates to the user, in order of severity.
## Reference
### Implementation vs Review
Remember that all work goes through two stages: implementation and review. The implementation agent has the most **context pressure**. They are responsible for exploration, writing code, and debugging failures.
The review agent has the least context pressure - it receives a diff, so no exploration needed. It often does not need to write code or debug.
This means that the review agent should be responsible for imposing coding standards, not the implementation agent.
### Files
You have access to several files in the repo:
- `CLAUDE.md`/`AGENTS.md`: these files are pushed to the context window of any agent working in this repo. They should be used incredibly sparingly, usually only for **navigation pointers** to other files.
- `CODING_STANDARDS.md`: this file is read during review, not implementation. Add **navigation pointers** to docs folders if the standards file gets more than 1,000 lines long.
- Docs: use docs as references files, pointed to by other files. Look for existing docs before writing new ones.
- Skills: use skills for docs (since their description goes into the agent's context window), or for user-invoked commands. Follow the advice in the `writing-for-agents` skill.
@@ -0,0 +1,5 @@
interface:
display_name: "Retro"
short_description: "Conduct a retrospective on a coding session."
policy:
allow_implicit_invocation: false
@@ -1,6 +1,6 @@
--- ---
name: writing-fragments 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 disable-model-invocation: true
--- ---
+1 -1
View File
@@ -1,6 +1,6 @@
--- ---
name: writing-shape 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 disable-model-invocation: true
--- ---
+7 -1
View File
@@ -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. 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> ❓ **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> ➡️ <your recommended answer>
``` ```
+1 -1
View File
@@ -1,6 +1,6 @@
--- ---
name: wait-what 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 disable-model-invocation: true
--- ---