| name | feature-capture |
| description | Interactive workflow for adding items to the backlog. Use when user wants to add a new feature, track an idea, capture requirements, or mentions something that should be in the backlog. |
| user-invocable | true |
Add Feature to Backlog
You are executing the ADD TO BACKLOG workflow.
First: Check Initialization
Read docs/features/DASHBOARD.md to verify the project is initialized.
If docs/features/ directory does NOT exist, tell the user:
"Run /feature-init first to set up the feature workflow structure."
Do NOT create the structure yourself. The init script handles this.
Multi-repo workspace? If the root has a .feature-workspace.yml, decide scope first: one member → cd <member> and capture there; workspace-only → capture here; touches 2+ members → capture a type: Epic here with one repo:id child per member. See ../shared/workspace.md.
FORBIDDEN - Do Not Do These Things
- NEVER create BACKLOG.json - This is an old format. Do not use it.
- NEVER create .feature-workflow/ directory - This is an old format. Do not use it.
- NEVER write DASHBOARD.md - It's auto-generated by hooks. You will be blocked.
- NEVER write JSON files for features - Use markdown only.
- NEVER create docs/features/ yourself - Use
/feature-init instead.
REQUIRED - You Must Do This
- Verify
docs/features/ exists (if not, tell user to run /feature-init)
- Create directory:
docs/features/[kebab-case-id]/
- Write file:
docs/features/[id]/idea.md with YAML frontmatter
- That's it. The hook will auto-generate DASHBOARD.md.
First Step (Do This Now)
Read the file at path: docs/features/DASHBOARD.md
Check for duplicates and understand current features. If the file doesn't exist, that's OK - you'll create the first feature.
Target Files
- Read:
docs/features/DASHBOARD.md (to check for duplicates)
- Write:
docs/features/[id]/idea.md (to add new feature)
Workflow Overview
| Phase | Description | Details |
|---|
| 1 | Interactive Questions | Capture essential information through focused questions |
| 2 | Validation | Check for duplicate IDs in DASHBOARD.md |
| 3 | Create Feature Directory | Write idea.md with frontmatter + problem statement |
| 4 | Git Staging | Optionally stage changes |
| 5 | Confirmation | Display summary and next steps |
Phase 1: Interactive Questions
See: interview.md
- Ask questions using AskUserQuestion tool
- Capture type, name, problem, priority, effort, impact, areas
Phase 2: Validation
See: validation.md
- Read DASHBOARD.md to check existing features
- Generate kebab-case ID from feature name
- Check for duplicate IDs
Phase 3: Create Feature Directory
See: capture.md
Phase 4-5: Git Staging & Confirmation
See: confirmation.md
- Optionally stage with git
- Display summary and next steps
File Organization
Features are stored in directories with status determined by file presence:
docs/features/
├── DASHBOARD.md # Auto-generated, read-only for Claude
├── my-feature/
│ ├── idea.md # Problem statement + metadata (backlog)
│ ├── plan.md # Implementation plan (in-progress)
│ └── shipped.md # Completion notes (completed)
└── another-feature/
└── idea.md
Status Detection by File Presence
| Files Present | Status |
|---|
idea.md only | backlog |
idea.md + plan.md | in-progress |
idea.md + plan.md + shipped.md | completed |
Key Principles:
/feature-capture creates idea.md only (backlog status)
/feature-plan adds plan.md (changes to in-progress)
/feature-implement writes the code following the plan
/feature-review-plan opens a draft PR for external plan review
/feature-review-impl submits implementation for external code review
/feature-ship adds shipped.md and merges the PR (changes to completed)
- DASHBOARD.md is auto-regenerated by hooks - never edit directly
idea.md Format
IMPORTANT: Write idea.md with YAML frontmatter on the FIRST write. Do not write content first and add frontmatter later.
---
id: my-feature
name: Human Readable Name
type: Feature|Enhancement|Bug Fix|Tech Debt
priority: P0|P1|P2
effort: Small|Medium|Large
impact: Low|Medium|High
created: 2024-01-20
---
# My Feature Name
## Problem Statement
Description of the problem this feature solves...
## Proposed Solution
High-level approach (optional, keep brief)...
## Affected Areas
- area1
- area2
Integration Notes
This command is the first step in the feature lifecycle:
/feature-capture - Creates idea.md in backlog (YOU ARE HERE)
/feature-plan [id] - Adds plan.md, changes to in-progress
/feature-review-plan [id] - Creates feature branch, opens draft PR, submits plan for external review
/feature-implement [id] - Writes code following the approved plan
/feature-review-impl [id] - Submits implementation for external code review
/feature-ship [id] - Writes shipped.md, merges PR, changes to completed
What Makes a Good Backlog Item?
IMPORTANT: Capture the WHAT and WHY, not the HOW.
DO Capture:
- What you need - The feature, fix, or improvement
- Why it matters - The value, pain point, or opportunity
- Who benefits - Which users or systems are affected
- Context - Any relevant background information
DO NOT Capture:
- Implementation details - Don't describe how to build it yet
- Technical designs - That's for
/feature-plan
- Architecture decisions - That's for
/feature-plan
Examples
Good (focuses on what/why):
"Users can't find their validation reports after running a scan. They have to search through multiple pages and often give up."
Bad (jumps to solution):
"We need to add a reports dashboard with filters and a search bar that queries the DynamoDB table."
Error Handling
- If
docs/features/ directory doesn't exist, create it
- If duplicate ID found in DASHBOARD.md, offer to choose different name
- If DASHBOARD.md doesn't exist yet, that's OK - hook will create it
Quick Example
For a feature called "User Authentication", you would:
- Create:
docs/features/user-authentication/idea.md
- With this content:
---
id: user-authentication
name: User Authentication
type: Feature
priority: P1
effort: Medium
impact: High
created: 2026-01-22
---
# User Authentication
## Problem Statement
Users cannot log in securely...
## Affected Areas
- auth
- api
- Regenerate the dashboard:
python3 ${CLAUDE_PLUGIN_ROOT}/skills/shared/lib/run_dashboard.py <project_root>
That's it. The dashboard regeneration ensures DASHBOARD.md is up to date.
Let's capture your idea!