feature-planning
When to use
Use this skill when:
- The user has a feature idea they want to explore or plan
- An existing feature plan needs refinement
- A feature plan needs to be turned into actionable roadmaps
Do NOT use when:
- Bug fixes (use
bug-analyzer skill)
- Simple, well-understood changes that don't need planning
Procedure: Plan a feature
- Gather requirements — What problem does this solve? Who benefits? What's the expected outcome? Run a cross-source discrepancy scan (per
cross-source-consistency, gated by consistency.cross_source): where the source ticket carries text + an attachment/mockup, or leaves a clearly-needed behavior unstated (weekend/holiday shift, empty/error state, timezone), surface the conflict/gap as an Open question before drafting phases — an inferred behavior is a scope expansion to confirm, not to bake in. See cross-source-consistency-mechanics.
- Analyze scope — Which modules, routes, models, services are affected?
- Write the plan — Create a feature plan document (see template below).
- Verify — Confirm all affected areas are identified, no missing dependencies.
A feature plan captures the "what and why" of a feature:
- Problem it solves, who benefits, expected outcome
- Scope, affected modules, technical approach
- Open questions and decisions
A roadmap captures the "how and when" — the step-by-step implementation plan.
Feature plans and roadmaps are linked but separate concerns.
File structure
agents/features/ # Project-wide feature plans
├── {feature-name}.md
app/Modules/{Module}/agents/features/ # Module-scoped feature plans
├── {feature-name}.md
.augment/templates/
└── features.md # Feature plan template
Roadmaps generated from features live in agents/roadmaps/ (or module-level agents/roadmaps/).
Feature lifecycle
Quick workflow (small features)
Explore → Plan → Refine → Roadmap → Implement
↑ ↑
└── iterate ─────┘
| Phase |
Command |
Output |
| Explore |
/feature-explore |
Brainstorming notes, feasibility check, rough scope |
| Plan |
/feature-plan |
Structured feature doc in agents/features/ |
| Refine |
/feature-refactor |
Updated feature doc with changes |
| Roadmap |
/feature-roadmap |
Roadmap(s) in agents/roadmaps/, linked from feature |
Full workflow (complex features, 7 phases)
Use the full workflow for features that span multiple files, require architecture decisions,
or have unclear requirements. Trigger with /feature:dev.
Discovery → Exploration → Questions → Architecture → Implementation → Review → Summary
Phase 1: Discovery
- Clarify the feature request — what problem does it solve?
- Identify constraints, requirements, and affected users.
- Understanding Lock (Hard Gate): Summarize understanding in 5–7 bullets covering:
what is being built, why, who it's for, key constraints, explicit non-goals.
- List all assumptions explicitly.
- Wait for explicit confirmation before proceeding. Do NOT design until confirmed.
Phase 2: Codebase Exploration
- Search for similar features in the codebase.
- Map the architecture and abstractions in the affected area.
- Identify key files, services, models, routes involved.
- Present findings with file references.
Phase 3: Clarifying Questions
- Review codebase findings against the feature request.
- Identify underspecified aspects: edge cases, error handling, integrations, backward compatibility.
- Non-functional requirements — explicitly clarify or propose defaults for:
- Performance expectations (response time, throughput)
- Scale (users, data volume, concurrent requests)
- Security / privacy constraints
- Reliability / availability needs
- Maintenance and ownership expectations
- Present all questions in an organized list.
- Wait for answers before proceeding.
Phase 4: Architecture Design
- Design 2-3 implementation approaches with different tradeoffs:
- Minimal changes — smallest change, maximum reuse.
- Clean architecture — maintainability, elegant abstractions.
- Pragmatic balance — speed + quality.
- Present comparison with pros/cons and a recommendation.
- Ask the user which approach to use (present as numbered options).
Phase 5: Implementation
- Wait for explicit approval before starting.
- Follow chosen architecture from Phase 4.
- Follow codebase conventions strictly.
- Track progress via task list or roadmap.
- One behavior at a time: the failing test for that behavior, observed
failing, then the minimum code that makes it pass, then the next behavior.
Tests are a step of this phase, never a follow-up suggested in Phase 7 —
a plan that reaches the summary owing its tests planned test-after.
Exceptions are the Do-NOT list in the
test-driven-development skill,
and a skipped cycle is recorded in the decision log rather than passed over.
Phase 6: Quality Review
- Review the implementation for:
- Simplicity, DRY, elegance.
- Bugs and correctness.
- Convention adherence.
- Present findings with severity levels.
- Ask what to fix now vs. later.
Phase 7: Summary
- Summarize what was built, key decisions, files modified.
- Suggest next steps (documentation, follow-up features) — never tests, which
Phase 5 already closed per behavior.
- Update roadmap if applicable.
Decision log
Maintain a running decision log throughout the planning process. For each decision:
- What was decided
- Alternatives considered
- Why this option was chosen
Include the decision log in the feature plan file under a ## Decisions section.
This ensures future developers (and agents) understand the reasoning, not just the outcome.
Bite-sized task granularity (structural roadmaps only)
When a feature plan's generated roadmap declares complexity: structural in its frontmatter, every task bullet must be self-contained and 2–5 minutes of work. Lightweight roadmaps (the default) skip this section — coarse-grained tasks are correct when the work is well-scoped and low-risk — but coarse means one behavior, not one layer: ("Reject login with an unknown email — test, then handler", "Reject login with a wrong password — test, then handler"), never an implementation step followed by an "Update tests" step.
Structural roadmap tasks must include:
- Exact file path —
app/Modules/Auth/Services/LoginService.php, never "the login service".
- Complete code — every method body, import, and signature ready to paste; no
// existing code ellipses, no ….
- Exact command — the precise CLI invocation, never "run the migration". Examples:
php artisan migrate --path=database/migrations/2026_05_09_create_logins.php (Laravel), bin/console doctrine:migrations:migrate --no-interaction (Symfony), bin/rails db:migrate VERSION=20260509… (Rails), npx prisma migrate deploy (Prisma), alembic upgrade +1 (Python / Alembic), sqlx migrate run (Rust).
- Expected output — what success looks like (
Migrated: 2026_05_09_create_logins) and the exit code.
- No placeholders — angle-bracket placeholders,
TODO, FIXME, tbd, and ??? are blockers; resolve before the task ships.
The complexity flag lives in the roadmap's YAML frontmatter:
---
complexity: structural # triggers bite-sized granularity
# or
complexity: lightweight # default — skips bite-sized granularity
---
Source: adapted from an external reference; complexity-gating is our addition (Council Round 1, Q4 — mitigates UX pushback for senior engineers on well-scoped work).
The four plan criteria — what a reviewer fails a plan on
The 3-scan self-review below catches mechanical gaps. These four catch the plan
itself. Each is written so a reviewer can fail on it: the criterion states
what failing looks like, not what passing feels like. A plan that cannot be
failed on any of the four has not been reviewed, it has been read.
- Necessity — every phase, step and artifact in the plan is traceable to a
stated problem or acceptance criterion. Fails when the plan contains work
no requirement asked for: a new abstraction with one caller, a migration for a
field nothing reads, a "while we're in there" refactor, a config surface
nobody requested. Name the orphan step and the requirement it does not map to.
- Sufficiency — every stated requirement and acceptance criterion is
discharged by at least one step. Fails when a requirement has no owning
step, or when the only step that claims it is a heading with no verifiable
outcome under it. This is the mirror of Necessity and is checked in the
opposite direction: walk the requirements, not the steps.
- Ordering — no step depends on the outcome of a step that comes after it,
and the load-bearing unknown is resolved before the work that assumes it (see
complexity-first-planning).
Fails when step N consumes something step N+2 creates, or when the plan
builds three cheap phases on an integration nobody has proven yet.
- Groundedness — every command, skill, command-verb and tool the plan tells
someone to run exists. Fails when the plan names a verb, skill or
command that is not in the index. Check it against
CAPABILITIES.yaml at the repository root — the
generated capability index listing every shipped skill and command per
capability area — plus the project's own script/task entry points for anything
the index does not cover. This is the one of the four that is decidable
without judgement, so it is the one that should never be waved through.
A failure on any of the four is a blocker, not a note: fix the plan and re-run
the criterion, or move the item to Open questions with the reason.
Self-review (3-scan checklist)
Before presenting any plan, run these three scans in order. Each is a fast pass — not a deep review. Failures block presentation; fix and re-scan.
- Spec coverage — every requirement, AC bullet, or constraint from the input has a corresponding section / AC / scope item in the plan. Walk the input top-to-bottom; tick each requirement against the plan; missing items become open questions or new AC.
- Placeholder / TODO scan — grep the draft for
<placeholder>, TODO, FIXME, tbd, ???, XXX. Either resolve them now or surface them in the Open questions section. No placeholder ships unflagged.
- Type / shape consistency — proposed data structures, API shapes, file paths, and module names match existing codebase patterns. Cite at least one existing file per new structure as the convention anchor.
This scan is separate from adversarial-review (below). Self-review catches mechanical gaps (missing AC, leftover placeholders, mis-shaped types); adversarial-review challenges the plan's reasoning.
Source: adapted from an external reference.
Adversarial self-review
After the 3-scan self-review passes, run the adversarial-review skill before presenting.
Focus on the "Feature plans / Architecture" attack questions. See that skill for the full process.
Feature plan format
See .augment/templates/features.md for the full structure. Key sections:
- Problem — What pain point does this solve?
- Proposal — What's the solution?
- Scope — What's in, what's out?
- Affected Areas — Which modules, models, services, routes?
- Technical Approach — High-level architecture decisions
- Non-Functional Requirements — Performance, scale, security, reliability
- Decisions — Decision log with alternatives and reasoning
- Open Questions — Unresolved decisions
- Roadmaps — Links to generated roadmap files
Integration with other systems
Sessions
- **Feature:** `agents/features/my-feature.md`
Roadmaps
Feature plans link to their roadmaps in the ## Roadmaps section.
Roadmaps reference their source feature in the ## Context section.
Modules
If a feature is scoped to a single module, the feature plan and roadmaps live in the
module's agents/ directory:
- Feature:
app/Modules/{Module}/agents/features/
- Roadmaps:
app/Modules/{Module}/agents/roadmaps/
Behavior rules
Research before planning
Before creating a feature plan, always:
- Search the codebase for related code, existing patterns, and affected areas.
- Read module docs if the feature touches a specific module.
- Check existing features in
agents/features/ for overlap or dependencies.
Be collaborative
- Ask questions — don't assume requirements.
- Challenge scope — suggest what can be deferred.
- Show tradeoffs — present options with pros/cons.
- Validate feasibility — check if the codebase supports the approach.
Keep it navigational
Feature plans are decision documents, not implementation guides.
Implementation details belong in roadmaps.
Output format
- Feature plan document following the template structure
- Decision log with rationale for key choices
- Implementation roadmap with ordered tasks
Auto-trigger keywords
- feature planning
- feature exploration
- feature roadmap
- requirements
Gotcha
- Don't plan features without understanding the business context — ask the user before assuming.
- The model tends to over-engineer plans — start with the simplest viable solution.
- A plan without acceptance criteria is incomplete — always define what "done" means.
- Don't create plans for features that already exist — search the codebase first.
Do NOT
- Do NOT create feature plans without user input — always collaborate.
- Do NOT skip codebase research — always check what exists.
- Do NOT put implementation steps in the feature plan — that's the roadmap's job.
- Do NOT commit or push without permission.
- Do NOT duplicate information from
AGENTS.md or module docs.
1---2name: feature-planning3description: Use when the user says "plan a feature", "brainstorm", "explore this idea", or wants to go from idea to structured plan and roadmap.4---56# feature-planning78## When to use910Use this skill when:11- The user has a feature idea they want to explore or plan12- An existing feature plan needs refinement13- A feature plan needs to be turned into actionable roadmaps1415Do NOT use when:16- Bug fixes (use `bug-analyzer` skill)17- Simple, well-understood changes that don't need planning1819## Procedure: Plan a feature20211. **Gather requirements** — What problem does this solve? Who benefits? What's the expected outcome? Run a **cross-source discrepancy scan** (per [`cross-source-consistency`](../../rules/cross-source-consistency.md), gated by `consistency.cross_source`): where the source ticket carries text + an attachment/mockup, or leaves a clearly-needed behavior unstated (weekend/holiday shift, empty/error state, timezone), surface the conflict/gap as an *Open question* before drafting phases — an inferred behavior is a scope expansion to confirm, not to bake in. See [`cross-source-consistency-mechanics`](../../../docs/guidelines/agent-infra/cross-source-consistency-mechanics.md).222. **Analyze scope** — Which modules, routes, models, services are affected?233. **Write the plan** — Create a feature plan document (see template below).244. **Verify** — Confirm all affected areas are identified, no missing dependencies.2526A **feature plan** captures the "what and why" of a feature:27- Problem it solves, who benefits, expected outcome28- Scope, affected modules, technical approach29- Open questions and decisions3031A **roadmap** captures the "how and when" — the step-by-step implementation plan.32Feature plans and roadmaps are linked but separate concerns.3334## File structure3536```37agents/features/ # Project-wide feature plans38├── {feature-name}.md3940app/Modules/{Module}/agents/features/ # Module-scoped feature plans41├── {feature-name}.md4243.augment/templates/44└── features.md # Feature plan template45```4647Roadmaps generated from features live in `agents/roadmaps/` (or module-level `agents/roadmaps/`).4849## Feature lifecycle5051### Quick workflow (small features)5253```54Explore → Plan → Refine → Roadmap → Implement55 ↑ ↑56 └── iterate ─────┘57```5859| Phase | Command | Output |60|---|---|---|61| **Explore** | `/feature-explore` | Brainstorming notes, feasibility check, rough scope |62| **Plan** | `/feature-plan` | Structured feature doc in `agents/features/` |63| **Refine** | `/feature-refactor` | Updated feature doc with changes |64| **Roadmap** | `/feature-roadmap` | Roadmap(s) in `agents/roadmaps/`, linked from feature |6566### Full workflow (complex features, 7 phases)6768Use the full workflow for features that span multiple files, require architecture decisions,69or have unclear requirements. Trigger with `/feature:dev`.7071```72Discovery → Exploration → Questions → Architecture → Implementation → Review → Summary73```7475#### Phase 1: Discovery76- Clarify the feature request — what problem does it solve?77- Identify constraints, requirements, and affected users.78- **Understanding Lock (Hard Gate):** Summarize understanding in 5–7 bullets covering:79 what is being built, why, who it's for, key constraints, explicit non-goals.80- List all **assumptions** explicitly.81- **Wait for explicit confirmation before proceeding.** Do NOT design until confirmed.8283#### Phase 2: Codebase Exploration84- Search for similar features in the codebase.85- Map the architecture and abstractions in the affected area.86- Identify key files, services, models, routes involved.87- Present findings with file references.8889#### Phase 3: Clarifying Questions90- Review codebase findings against the feature request.91- Identify underspecified aspects: edge cases, error handling, integrations, backward compatibility.92- **Non-functional requirements** — explicitly clarify or propose defaults for:93 - Performance expectations (response time, throughput)94 - Scale (users, data volume, concurrent requests)95 - Security / privacy constraints96 - Reliability / availability needs97 - Maintenance and ownership expectations98- Present all questions in an organized list.99- **Wait for answers before proceeding.**100101#### Phase 4: Architecture Design102- Design 2-3 implementation approaches with different tradeoffs:103 - **Minimal changes** — smallest change, maximum reuse.104 - **Clean architecture** — maintainability, elegant abstractions.105 - **Pragmatic balance** — speed + quality.106- Present comparison with pros/cons and a recommendation.107- **Ask the user which approach to use** (present as numbered options).108109#### Phase 5: Implementation110- **Wait for explicit approval** before starting.111- Follow chosen architecture from Phase 4.112- Follow codebase conventions strictly.113- Track progress via task list or roadmap.114- **One behavior at a time**: the failing test for that behavior, observed115 failing, then the minimum code that makes it pass, then the next behavior.116 Tests are a step of this phase, never a follow-up suggested in Phase 7 —117 a plan that reaches the summary owing its tests planned test-after.118 Exceptions are the Do-NOT list in the `test-driven-development` skill,119 and a skipped cycle is recorded in the decision log rather than passed over.120121#### Phase 6: Quality Review122- Review the implementation for:123 - Simplicity, DRY, elegance.124 - Bugs and correctness.125 - Convention adherence.126- Present findings with severity levels.127- **Ask what to fix now vs. later.**128129#### Phase 7: Summary130- Summarize what was built, key decisions, files modified.131- Suggest next steps (documentation, follow-up features) — never tests, which132 Phase 5 already closed per behavior.133- Update roadmap if applicable.134135## Decision log136137Maintain a running **decision log** throughout the planning process. For each decision:138- What was decided139- Alternatives considered140- Why this option was chosen141142Include the decision log in the feature plan file under a `## Decisions` section.143This ensures future developers (and agents) understand the reasoning, not just the outcome.144145## Bite-sized task granularity (structural roadmaps only)146147When a feature plan's generated roadmap declares `complexity: structural` in its frontmatter, every task bullet must be self-contained and 2–5 minutes of work. Lightweight roadmaps (the default) skip this section — coarse-grained tasks are correct when the work is well-scoped and low-risk — but coarse means *one behavior*, not one layer: ("Reject login with an unknown email — test, then handler", "Reject login with a wrong password — test, then handler"), never an implementation step followed by an "Update tests" step.148149Structural roadmap tasks must include:1501511. **Exact file path** — `app/Modules/Auth/Services/LoginService.php`, never *"the login service"*.1522. **Complete code** — every method body, import, and signature ready to paste; no `// existing code` ellipses, no `…`.1533. **Exact command** — the precise CLI invocation, never *"run the migration"*. Examples: `php artisan migrate --path=database/migrations/2026_05_09_create_logins.php` (Laravel), `bin/console doctrine:migrations:migrate --no-interaction` (Symfony), `bin/rails db:migrate VERSION=20260509…` (Rails), `npx prisma migrate deploy` (Prisma), `alembic upgrade +1` (Python / Alembic), `sqlx migrate run` (Rust).1544. **Expected output** — what success looks like (`Migrated: 2026_05_09_create_logins`) and the exit code.1555. **No placeholders** — angle-bracket placeholders, `TODO`, `FIXME`, `tbd`, and `???` are blockers; resolve before the task ships.156157The complexity flag lives in the roadmap's YAML frontmatter:158159```yaml160---161complexity: structural # triggers bite-sized granularity162# or163complexity: lightweight # default — skips bite-sized granularity164---165```166167Source: adapted from an external reference; complexity-gating is our addition (Council Round 1, Q4 — mitigates UX pushback for senior engineers on well-scoped work).168169## The four plan criteria — what a reviewer fails a plan on170171The 3-scan self-review below catches mechanical gaps. These four catch the plan172itself. Each is written so a reviewer can **fail** on it: the criterion states173what failing looks like, not what passing feels like. A plan that cannot be174failed on any of the four has not been reviewed, it has been read.1751761. **Necessity** — every phase, step and artifact in the plan is traceable to a177 stated problem or acceptance criterion. **Fails when** the plan contains work178 no requirement asked for: a new abstraction with one caller, a migration for a179 field nothing reads, a "while we're in there" refactor, a config surface180 nobody requested. Name the orphan step and the requirement it does not map to.1812. **Sufficiency** — every stated requirement and acceptance criterion is182 discharged by at least one step. **Fails when** a requirement has no owning183 step, or when the only step that claims it is a heading with no verifiable184 outcome under it. This is the mirror of Necessity and is checked in the185 opposite direction: walk the requirements, not the steps.1863. **Ordering** — no step depends on the outcome of a step that comes after it,187 and the load-bearing unknown is resolved before the work that assumes it (see188 [`complexity-first-planning`](../complexity-first-planning/SKILL.md)).189 **Fails when** step N consumes something step N+2 creates, or when the plan190 builds three cheap phases on an integration nobody has proven yet.1914. **Groundedness** — every command, skill, command-verb and tool the plan tells192 someone to run **exists**. **Fails when** the plan names a verb, skill or193 command that is not in the index. Check it against194 [`CAPABILITIES.yaml`](../../../CAPABILITIES.yaml) at the repository root — the195 generated capability index listing every shipped skill and command per196 capability area — plus the project's own script/task entry points for anything197 the index does not cover. This is the one of the four that is decidable198 without judgement, so it is the one that should never be waved through.199200A failure on any of the four is a blocker, not a note: fix the plan and re-run201the criterion, or move the item to *Open questions* with the reason.202203## Self-review (3-scan checklist)204205Before presenting any plan, run these three scans in order. Each is a fast pass — not a deep review. Failures block presentation; fix and re-scan.2062071. **Spec coverage** — every requirement, AC bullet, or constraint from the input has a corresponding section / AC / scope item in the plan. Walk the input top-to-bottom; tick each requirement against the plan; missing items become open questions or new AC.2082. **Placeholder / TODO scan** — grep the draft for `<placeholder>`, `TODO`, `FIXME`, `tbd`, `???`, `XXX`. Either resolve them now or surface them in the *Open questions* section. No placeholder ships unflagged.2093. **Type / shape consistency** — proposed data structures, API shapes, file paths, and module names match existing codebase patterns. Cite at least one existing file per new structure as the convention anchor.210211This scan is **separate from** adversarial-review (below). Self-review catches mechanical gaps (missing AC, leftover placeholders, mis-shaped types); adversarial-review challenges the plan's reasoning.212213Source: adapted from an external reference.214215## Adversarial self-review216217After the 3-scan self-review passes, run the **`adversarial-review`** skill before presenting.218Focus on the "Feature plans / Architecture" attack questions. See that skill for the full process.219220## Feature plan format221222See `.augment/templates/features.md` for the full structure. Key sections:223224- **Problem** — What pain point does this solve?225- **Proposal** — What's the solution?226- **Scope** — What's in, what's out?227- **Affected Areas** — Which modules, models, services, routes?228- **Technical Approach** — High-level architecture decisions229- **Non-Functional Requirements** — Performance, scale, security, reliability230- **Decisions** — Decision log with alternatives and reasoning231- **Open Questions** — Unresolved decisions232- **Roadmaps** — Links to generated roadmap files233234## Integration with other systems235236### Sessions237238```markdown239- **Feature:** `agents/features/my-feature.md`240```241242### Roadmaps243244Feature plans link to their roadmaps in the `## Roadmaps` section.245Roadmaps reference their source feature in the `## Context` section.246247### Modules248249If a feature is scoped to a single module, the feature plan and roadmaps live in the250module's `agents/` directory:251- Feature: `app/Modules/{Module}/agents/features/`252- Roadmaps: `app/Modules/{Module}/agents/roadmaps/`253254255## Behavior rules256257### Research before planning258259Before creating a feature plan, always:2601. **Search the codebase** for related code, existing patterns, and affected areas.2612. **Read module docs** if the feature touches a specific module.2623. **Check existing features** in `agents/features/` for overlap or dependencies.263264### Be collaborative265266- **Ask questions** — don't assume requirements.267- **Challenge scope** — suggest what can be deferred.268- **Show tradeoffs** — present options with pros/cons.269- **Validate feasibility** — check if the codebase supports the approach.270271### Keep it navigational272273Feature plans are decision documents, not implementation guides.274Implementation details belong in roadmaps.275276## Output format2772781. Feature plan document following the template structure2792. Decision log with rationale for key choices2803. Implementation roadmap with ordered tasks281282## Auto-trigger keywords283284- feature planning285- feature exploration286- feature roadmap287- requirements288289## Gotcha290291- Don't plan features without understanding the business context — ask the user before assuming.292- The model tends to over-engineer plans — start with the simplest viable solution.293- A plan without acceptance criteria is incomplete — always define what "done" means.294- Don't create plans for features that already exist — search the codebase first.295296## Do NOT297298- Do NOT create feature plans without user input — always collaborate.299- Do NOT skip codebase research — always check what exists.300- Do NOT put implementation steps in the feature plan — that's the roadmap's job.301- Do NOT commit or push without permission.302- Do NOT duplicate information from `AGENTS.md` or module docs.