code-review
Review the changes since a fixed point (commit, branch, tag, or merge-base) along two axes: Standards (does the code follow this…
Ask which skill or flow fits your situation. A router over the skills in this repo.
Claude Code
$ npx -y skills add mattpocock/skills --skill ask-matt --agent claude-code
Codex
$ npx skills add mattpocock/skills --skill ask-matt -a codex -y
Cursor
$ npx skills add mattpocock/skills --skill ask-matt -a cursor -y
Gemini CLI
$ npx skills add mattpocock/skills --skill ask-matt -a gemini-cli -y
GitHub Copilot
$ npx skills add mattpocock/skills --skill ask-matt -a github-copilot -y
OpenCode
$ npx skills add mattpocock/skills --skill ask-matt -a opencode -y
Windsurf
$ npx skills add mattpocock/skills --skill ask-matt -a windsurf -y
name: ask-matt description: Ask which skill or flow fits your situation. A router over the skills in this repo. disable-model-invocation: true
You don't remember every skill, so ask.
Before stating what a skill does or recommending a step be skipped, read that skill's SKILL.md: the summaries here are for orientation only.
A **flow** is a path through the skills. Most paths run along one **main flow**, and two **on-ramps** merge onto it. Everything else is standalone, or a vocabulary layer that runs underneath.
The route most work travels. You have an idea and want it built.
1. **`/grill-with-docs`** sharpens the idea by interview. Start here whenever you are **working in a working directory**: it's stateful, retaining what it learns in `GLOSSARY.md` and ADRs. (No working directory? Use `/grill-me` instead, covered under Standalone. Both run the same `/grilling` primitive; `grill-with-docs` is the one that leaves a paper trail, which makes it the better of the two whenever a repo is there to leave it in.) 2. **Branch: can you settle every question in conversation?** If a question needs a runnable answer (state, business logic, a UI you have to see), detour through a prototype, bridged by **`/handoff`** in both directions (a prototype lives in its own directory, which is exactly what `/handoff` is for; see Phase boundaries):
3. **Branch: is this a multi-session build?**
Either way, the code gets built by driving **`/tdd`** (one red-green slice at a time) and closes out with **`/code-review`**, a two-axis review (Standards + Spec) of the diff. `/implement` runs both per ticket; `/implement-spec`'s implementers each drive `/tdd`, and it runs one `/code-review` over the integration branch. Reach for **`/tdd`** on its own when you just want to build a concrete behaviour test-first without a full spec, and **`/code-review`** on its own whenever you want to review a branch or PR against a fixed point.
When the work goes up as a pull request, **`/pr`** shapes the body: the smallest visual that shows the change, before/after evidence that it works, and a one-way or two-way door call. It's model-invoked, so the agent reaches for it whenever it writes a PR.
4. **`/retro`** closes the loop. After a build, and especially one that went sideways, it looks back over the session and suggests changes to the agent's **environment**, not the code: navigation pointers, automated checks, the coding standards `/code-review` enforces, steering files, tooling. Mechanical mistakes become deterministic checks; judgement calls become coding standards. The next build then starts from a better environment.
Keep steps 1–3 in **one unbroken context window** (don't compact or clear until after `/to-tickets`) so the grilling, spec, and tickets all build on the same thinking. Each `/implement` then starts fresh, working from the ticket. Run `/retro` in the session it's looking back on, before you clear; after clearing, point it at that session's log instead.
The limit on this is the **[smart zone](https://www.aihero.dev/ai-coding-dictionary/smart-zone)**: the window (~150k tokens on state-of-the-art models) within which the model still reasons sharply. If a session approaches it before `/to-tickets`, don't push on degraded; `/compact` at the nearest phase boundary and carry on (see Phase boundaries).
A starting situation that generates work, then merges onto the main flow.
Triage is only for issues **you didn't create**: bug reports, incoming feature requests, anything that arrives raw. Tickets that `/to-tickets` produced are already agent-ready, so **don't triage them**.
My agent skills that I use every day to do real engineering - not vibe coding. Developing real applications is hard. Approaches like GSD, BMAD, and Spec-Kit try to help by owning the process.
Review the changes since a fixed point (commit, branch, tag, or merge-base) along two axes: Standards (does the code follow this…
Shared vocabulary for designing deep modules. Use when the user wants to design or improve a module's interface, find deepening…
Diagnosis loop for hard bugs and performance regressions. Use when the user says "diagnose"/"debug this", or reports something…
Build and sharpen a project's domain model. Use when discussing codebase terminology, writing or editing a GLOSSARY.md, or…
A relentless interview to sharpen a plan or design, which also creates docs (ADR's and glossary) as we go.
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Act on user feedback attached to the current session. Use when the user submits feedback on the session's changes via the Submit…