Turn a spec into the issues that build it.
Scanned 10/6/2026
npx -y skills add aaronmallen/aaronmallen.me --skill plan --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Plan?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/aaronmallen-plan)More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.
---
description: Turn a spec into the issues that build it.
name: plan
---
# Plan
Take a spec and work out what to build first.
## 1. Read the spec
Issues live on GitHub. Work from [`.claude/issues.md`][issues] for every command and label here.
Read the spec by its number.
Pull out the acceptance criteria, the parts of the codebase the work touches, and anything that reads like a
decision rather than a task.
Check the records in `docs/adr` for one that already settles part of it. If a record answers the question, say
which one and move on. If the work argues with a record, say so now, before anybody writes code.
## 2. Say how big it is
One issue or several. Say which, and why, then ask the user before you file anything.
- **One issue** when the work sits in one place and satisfies every criterion in a sitting.
- **Several** when it spans several, or when a criterion can ship on its own and be checked on its own.
Do not split work to look thorough. Two issues that must land together are one issue.
## 3. Handle the decision first
If the work makes a choice that is hard to reverse and shapes code nobody has written, it needs a record. Read
`docs/writing-adrs.md` for what counts.
The record comes first, in its own issue. File it as the first sub-issue, titled `Record the decision to <the
decision>`, labelled `chore`, and block every other issue on it. Invoke `/write-adr` when that issue gets
implemented, not now.
## 4. File the issues
File each issue, then make it a sub-issue of the spec so the work hangs off it. Each one gets:
- **Labels:** one type from `bug`, `chore`, `enhancement`, `fix`, `optimization`, `release`, `spike`, an area
label for each slice it touches, and a priority: `p1` for work the rest waits on, `p2` for the body of it, `p3`
for polish.
- **Milestone:** the spec's, when it has one.
- **Body:** the shape in `/write-issue`.
Then mark each issue that has to wait as blocked by the issues it waits on, and give it the `blocked` label. Order
comes from those relations, not from the order you filed them in.
Title an issue after the code that lands, not the outcome for a user. `Render posts from Markdown with Rouge`, not
`Make posts look nice`.
## 5. Report
Give the user the spec number, the issue numbers with titles, and what blocks what. Say which issues can be worked in
any order.
Then: `invoke /implement <number> when you are ready`, naming the first unblocked issue.
[issues]: .claude/issues.md
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!