feature-capture
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.
What this skill does
# 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](../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
1. Verify `docs/features/` exists (if not, tell user to run `/feature-init`)
2. Create directory: `docs/features/[kebab-case-id]/`
3. Write file: `docs/features/[id]/idea.md` with YAML frontmatter
4. 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](interview.md)
- Ask questions using AskUserQuestion tool
- Capture type, name, problem, priority, effort, impact, areas
### Phase 2: Validation
**See**: [validation.md](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](capture.md)
- Create `docs/features/[id]/idea.md` with frontmatter AND content in ONE write
- **After writing idea.md, regenerate the dashboard** by running:
```bash
python3 ${CLAUDE_PLUGIN_ROOT}/skills/shared/lib/run_dashboard.py <project_root>
```
- Do NOT attempt to edit DASHBOARD.md - it will be blocked
### Phase 4-5: Git Staging & Confirmation
**See**: [confirmation.md](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.
```markdown
---
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:
1. **`/feature-capture`** - Creates idea.md in backlog (YOU ARE HERE)
2. **`/feature-plan [id]`** - Adds plan.md, changes to in-progress
3. **`/feature-review-plan [id]`** - Creates feature branch, opens draft PR, submits plan for external review
4. **`/feature-implement [id]`** - Writes code following the approved plan
5. **`/feature-review-impl [id]`** - Submits implementation for external code review
6. **`/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:
1. Create: `docs/features/user-authentication/idea.md`
2. With this content:
```markdown
---
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
```
3. Regenerate the dashboard:
```bash
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!**
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.