feature-planning
Maintain living documentation for features in the specs/ directory, including creation, updates, and automated review cycles.
Install
mkdir -p .claude/skills/feature-planning-maxpowerdarrel && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/19061" && unzip -o skill.zip -d .claude/skills/feature-planning-maxpowerdarrel && rm skill.zipInstalls to .claude/skills/feature-planning-maxpowerdarrel
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Use this skill whenever the user wants to plan a new feature, draft or update a feature spec for study-help, check the status of in-flight work, review a spec for gaps, or runs /plan-feature or /review-spec. Each feature has a living markdown file in specs/ that captures the why, scope, decisions, and current status. New and substantively-edited specs are reviewed by the spec-reviewer sub-agent for completeness, accuracy, and ambiguity. Trigger phrases include "plan a feature", "draft a spec", "spec out X", "update the X spec", "what's the status of X", "what specs do we have", "review the X spec", "check the X spec for gaps", "/plan-feature", and "/review-spec".Key capabilities
- →Create new feature specification files in markdown format
- →Update existing feature specifications with new decisions or status changes
- →Report the status of features that are in flight or have shipped
- →Review specifications for completeness, accuracy, and ambiguity
- →Maintain a `specs/` directory with one markdown file per feature
How it works
This skill maintains markdown files in a `specs/` directory, treating each as a living document for a feature. It creates, updates, and reviews these specifications, ensuring they align with project principles.
Inputs & outputs
When to use feature-planning
- →Drafting new feature specs
- →Checking feature status
- →Reviewing specs for gaps
- →Updating feature documentation
About this skill
feature-planning skill
This skill maintains the specs/ directory — one markdown file per feature,
each a living document that evolves with the feature it describes. Specs
sit between PROJECT_CONSTITUTION.md
(durable principles) and the code (implementation): they capture what a
feature is, why it exists, what's in/out of scope, and what's been decided.
The skill does five things, depending on the user's intent:
- Create a new spec when one doesn't exist.
- Update an existing spec — typically appending a decision or shifting status as work progresses.
- Report status when the user asks what's in flight or what's been shipped.
- Implement against a spec — read it before changing code, update it when implementation reveals new decisions.
- Review on demand — re-run the spec-reviewer sub-agent against an existing spec to surface gaps the user wants checked.
New specs (Mode 1) and substantive edits to existing specs (Mode 2) are also automatically run through the review pass documented below — a sub-agent that checks for completeness, accuracy against the constitution, and ambiguity, and surfaces clarifying questions.
Specs are not plans. Plans (under ~/.claude/plans/) are per-conversation
scratch space. Specs are project artifacts, checked in, intended to outlive
many conversations.
File layout
study-help/
├── specs/
│ ├── README.md ← index, one row per spec
│ ├── highlights.md
│ ├── notes.md
│ └── auth-sessions.md
└── .claude/skills/feature-planning/
├── SKILL.md ← this file
└── references/
└── spec-template.md
Naming. Spec files use kebab-case slugs (highlights.md,
auth-sessions.md, passage-reader.md). No date prefix, no number prefix —
slugs are stable identifiers, easy to link by name. Sort alphabetically.
Mode 1 — Create a new spec
Trigger: user says "plan a feature", "draft a spec for X", "spec out X", or
runs /plan-feature [name]. The feature does not yet have a file in
specs/.
Steps
-
Confirm the slug. Derive a kebab-case slug from the feature name. If it's ambiguous (e.g. user says "spec out the reader" — could be
reader.mdorpassage-reader.md), ask before proceeding. Slugs are stable; renaming later is friction. -
Check it doesn't already exist.
ls specs/(or readspecs/README.md). If the slug exists, switch to Mode 2 (Update) and tell the user. -
Read the constitution. Open
PROJECT_CONSTITUTION.mdand identify which sections this feature relates to (in-scope items in §2, principles in §3, guardrails in §4, non-goals in §5). The spec must reference real section numbers — don't invent links. -
Copy the template. Read
references/spec-template.mdand write it tospecs/<slug>.mdwith these fields filled in:# <Feature name>— title-case the slug.- Status:
Draft. - Created: today's date in
YYYY-MM-DD(use thecurrentDatefrom the conversation context, not a guess). - Last updated: same as Created.
- Owner:
unassignedunless the user names one. - Why: one paragraph from what the user told you, plus the constitutional reference. Don't pad it.
-
Leave the rest deliberately incomplete. Goals, Non-goals, User-facing behavior, Implementation outline, Open questions, Verification — these should have placeholder bullets the user fills in over time. The spec is meant to be iterated, not finished in one pass. Resist the urge to over-specify on day one.
-
Update
specs/README.md. Insert a row in alphabetical order:| [<slug>](./<slug>.md) | Draft | <one-line summary> |. Ifspecs/README.mddoesn't exist yet, create it from the template at the bottom of this file. -
Show the draft. Print the path and the rendered spec. Tell the user which sections are still open, and ask which they'd like to fill in first.
-
Run the review pass. See Review pass below. Mode 1 always triggers it — even on a brand-new Draft. Catching constitutional conflicts and underspecified
Whyparagraphs is cheapest right now.
Mode 2 — Update an existing spec
Trigger: user says "update the X spec", reports a decision ("we're going to store highlights as offsets, not XPath"), or transitions a feature's lifecycle ("highlights is shipped").
Steps
-
Read the current spec first. Always. Targeted edits depend on knowing what's there.
-
Identify which section to touch. Update only that section. Do not rewrite the whole file.
- Decisions — append a dated bullet:
- YYYY-MM-DD: Decided X over Y. Reason: ...Append-only. Never rewrite or reorder past entries. - Open questions — when a question is resolved, do not delete it. Move it (or reference it) under Decisions with the resolution. The question's existence is part of the history.
- Status — only on lifecycle transitions:
Draft → In Progresswhen the first PR for this feature lands.In Progress → Shippedwhen the feature is user-visible.* → Deprecatedwhen the feature is being removed; add a Decision explaining why. Announce the transition to the user before making it. Don't change status silently. Every transition also triggers aCLAUDE.mdsanity check — see Keeping repo docs in sync.
- Goals / Non-goals / User-facing behavior / Implementation outline / Verification — fine to edit in place as understanding sharpens. Make the edit small and clearly scoped.
- Decisions — append a dated bullet:
-
Bump
Last updated:to today's date on every change. -
Mirror status changes into
specs/README.md. If you changed Status, update the corresponding row in the index too. -
Show what you changed. Print the diff or the relevant section so the user can verify.
-
Run the review pass — only on substantive content edits. If this update touched Goals, Non-goals, User-facing behavior, Implementation outline, or Verification, run the Review pass. Do not run it for:
- Decisions appends (a decision is, by definition, settled).
- Open-questions resolutions (the resolution is now in Decisions).
- Status transitions (Draft → In Progress, etc. — lifecycle, not content).
This keeps the reviewer out of the way for routine edits while still catching shape changes.
Mode 3 — Status check
Trigger: "what specs do we have", "what's in flight", "what's the status of X".
Steps
-
Read
specs/README.mdfirst. It's the index. Don't re-read every spec file unless the user asks for detail on one. -
Report from the index. Group by status if helpful (Draft / In Progress / Shipped / Deprecated).
-
Check for drift. If the user asks about a specific spec, open it and verify its Status matches the README row. If they disagree, tell the user and offer to reconcile — pick the spec file as the source of truth (the README is a cache).
-
Don't fabricate. If a feature has no spec, say so. Don't invent status from memory or git history.
Mode 4 — Implement against a spec
Trigger: user is doing implementation work on a feature that has a spec
(or asks "let's build X" where specs/x.md exists).
Steps
-
Read the spec before changing code. It is the source of intent. Goals tell you what success looks like; Non-goals tell you what to leave out; Decisions tell you what's already been settled.
-
If implementation contradicts the spec, stop. Either:
- The spec is wrong / out of date → switch to Mode 2, update it, then resume coding.
- The implementation is wrong → align it with the spec. Do not silently let the code drift from the spec. The spec is the contract.
-
Capture decisions made during implementation. When you make a non-trivial choice while coding (a library, a schema, a tradeoff), append it to the spec's Decisions section before moving on. Otherwise the rationale gets lost between commits.
-
Mark Status: In Progress the first time real code lands for this feature. Mark Status: Shipped when it's user-visible.
-
Refresh
CLAUDE.mdandSTACK.mdif they drifted. When code lands, the repo-state snapshot inCLAUDE.mdand the tech-choice list inSTACK.mdmay now be wrong. Update them in the same change — see Keeping repo docs in sync.
Mode 5 — Review on demand
Trigger: user says "review the X spec", "check the X spec for gaps",
"audit the X spec", or runs /review-spec X. Use this when the user
explicitly wants the reviewer re-run against a spec, independent of any
edit.
Steps
-
Resolve the slug. If the user gave a name, kebab-case it. Confirm
specs/<slug>.mdexists by reading the index. If it doesn't, say so — don't create one (that's Mode 1). -
Run the Review pass. Apply user answers and append logged questions exactly as documented there.
-
Don't change Status. Mode 5 is a quality check, not a lifecycle transition. The only writes are the answer-driven edits and the new bullets under Open questions.
Review pass
This is the shared procedure that Modes 1, 2, and 5 all use. It invokes
the spec-reviewer sub-agent and turns its findings into either
clarifying questions for the user or new bullets under Open
questions.
Steps
-
Invoke the sub-agent. Use the
Agenttool withsubagent_type: "spec-reviewer". The prompt must contain the absolute paths for:- the spec being reviewed (
specs/<slug>.md), PROJECT_CONSTITUTION.md,.claude/skills/feature-planning/references/spec-template.md.
Example prompt body:
Review the spec at <abs-path>/specs/<slug>.md - the spec being reviewed (
Content truncated.
When not to use it
- →When the user wants to create temporary scratch space for conversation plans
- →When the task involves modifying the skill's source code
Limitations
- →Specs are project artifacts, not per-conversation scratch space
- →The skill does not create Discord roles, channels, or events
How it compares
This workflow uses a structured directory of markdown files for feature specifications, unlike a generic approach that might use ad-hoc documents or temporary notes.
Compared to similar skills
feature-planning side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| feature-planning (this skill) | 0 | 2mo | No flags | Intermediate |
| spec-kit-workflow | 11 | 7mo | No flags | Intermediate |
| product-manager-toolkit | 32 | 7mo | Review | Beginner |
| linear-ticket | 1 | 6mo | No flags | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
spec-kit-workflow
jmanhype
Guides specification-driven development workflow. Automatically invoked when discussing new features, specifications, technical planning, or implementation tasks. Ensures proper workflow phases (specify → clarify → plan → checklist → tasks → analyze → implement).
product-manager-toolkit
davila7
Comprehensive toolkit for product managers including RICE prioritization, customer interview analysis, PRD templates, discovery frameworks, and go-to-market strategies. Use for feature prioritization, user research synthesis, requirement documentation, and product strategy development.
linear-ticket
useautumn
Refine rough engineering thoughts into structured Linear tickets with GitHub permalinks
manage-issues
momics
Create, update, and close GitHub issues on Momics/iroh-http. USE FOR: filing bugs or feature requests, closing issues with commit links, triaging issues with labels and priority. Ensures consistent structure (Summary, Evidence, Impact, Remediation, Acceptance criteria) and correct label usage. DO NO
tpp
photostructure
Work on a Technical Project Plan. Use when starting or continuing work on a TPP from _todo/.
prd
alfredolopez80
Product Requirements Document generation and management with INVEST-compliant user stories