From dev
Use when the feature list needs to evolve mid-project. Triggers when user says "split feature", "add feature", "re-prioritize", "audit features", "feature is too big", or when coding-session discovers a feature needs splitting. Provides protocols for adding, splitting, deprecating, and auditing features in features.json.
How this skill is triggered — by the user, by Claude, or both
Slash command
/dev:manage-featuresThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Structured feature list management for harness-based projects. Feature lists are living documents — they evolve as you learn more about the project. **Every change to features.json must be deliberate and documented.**
Structured feature list management for harness-based projects. Feature lists are living documents — they evolve as you learn more about the project. Every change to features.json must be deliberate and documented.
Core principle: The feature list reflects reality. When reality changes, update the list — don't pretend the original plan still works.
Use this skill when:
Do NOT use for:
When: During coding-session, you realize a feature is too big for one session.
Protocol:
// BEFORE: One big feature
{
"id": "F012",
"category": "core",
"description": "User authentication system",
"steps": ["Login form", "JWT tokens", "Session management", "Password reset", "OAuth"],
"passes": false
}
// AFTER: Split into atomic pieces
{
"id": "F012",
"category": "core",
"description": "Basic login with JWT token generation",
"steps": ["Login form", "JWT token generation", "Token validation middleware"],
"passes": false
},
{
"id": "F012a",
"category": "core",
"description": "Session management and token refresh",
"steps": ["Refresh token flow", "Session expiry", "Concurrent session limits"],
"passes": false
},
{
"id": "F012b",
"category": "core",
"description": "Password reset flow",
"steps": ["Reset request endpoint", "Email token generation", "Reset confirmation"],
"passes": false
},
{
"id": "F012c",
"category": "integration",
"description": "OAuth provider integration",
"steps": ["OAuth callback handler", "Provider config", "Account linking"],
"passes": false
}
Rules:
When: You discover work that isn't captured in the feature list.
Protocol:
"passes": false{
"id": "F045",
"category": "operations",
"description": "Rate limiting for API endpoints",
"steps": ["Configure rate limiter", "Add middleware", "Add rate limit headers", "Test under load"],
"passes": false
}
When to add vs. when to expand existing:
Red flag: Adding features as an excuse to avoid finishing current work. Complete the current feature first, then add new ones.
When: A feature is no longer relevant (requirements changed, superseded by another approach).
Protocol:
"deprecated" field with the reason"passes": true (it passes by not needing to exist){
"id": "F023",
"category": "integration",
"description": "DEPRECATED: XML feed parser",
"deprecated": "Replaced by JSON API in F031",
"steps": [],
"passes": true
}
Why not delete? Feature IDs are referenced in progress.txt and git history. Deleting creates gaps that confuse future sessions. Deprecating preserves the audit trail.
When: Dependencies make the current order suboptimal, or blockers require re-sequencing.
Protocol:
Features should generally be implemented in ID order, but sometimes you need to skip ahead. Document re-prioritization in progress.txt:
--- Session 2026-02-22-03 ---
Agent: Claude Opus 4.6
Worked on: Feature re-prioritization
Completed:
- Skipping F015-F017 (blocked by external API access)
- Prioritizing F021 (unblocks F018-F020)
- Added dependency notes to F015, F016, F017
Blocked: F015-F017 require API credentials from user
Next: F021 - Database connection pooling
Commit: chore(project): re-prioritize features (F015-F017 blocked)
Add dependency notes to blocked features:
{
"id": "F015",
"category": "integration",
"description": "Exchange API data fetching",
"steps": ["API client setup", "Authentication", "Data normalization"],
"passes": false,
"blocked_by": "Waiting for API credentials"
}
When: Periodically (every 10-20 features completed), or when something feels off.
Audit checklist:
1. Consistency check:
- [ ] All passing features actually pass verify.sh
- [ ] No features marked passing that have broken tests
- [ ] No duplicate or overlapping features
2. Completeness check:
- [ ] No implemented functionality missing from feature list
- [ ] No orphaned code (code without a corresponding feature)
- [ ] Categories are balanced (not 50 core, 2 testing)
3. Granularity check:
- [ ] No remaining features that would take more than one session
- [ ] No features so small they're trivial (merge with neighbors)
4. Dependency check:
- [ ] Blocked features have documented reasons
- [ ] No circular dependencies
- [ ] Features in reasonable implementation order
After audit, document findings:
--- Session 2026-02-22-audit ---
Agent: Claude Opus 4.6
Worked on: Feature list audit
Completed:
- Found F008 marked passing but test actually skipped — reverted to false
- Split F034 into F034/F034a (too large for one session)
- Deprecated F011 (superseded by F029)
- Added 3 missing features for error handling (F046-F048)
- Total: 48/52 features passing (92%)
Blocked: none
Next: F034 - Notification system (reduced scope)
Commit: chore(project): audit and update feature list
Every features.json change gets a progress.txt entry:
--- Session 2026-02-22-02 ---
Agent: Claude Opus 4.6
Worked on: Feature management - split F012
Completed:
- Split F012 (auth system) into F012, F012a, F012b, F012c
- F012 reduced to basic login + JWT (one session scope)
- Implemented F012 (basic login) — verify.sh passes
Blocked: none
Next: F012a - Session management
Commit: feat(project): implement basic login (F012), split auth features
| Excuse | Reality | Counter |
|---|---|---|
| "I'll just squeeze it into one session" | Oversized features produce rushed, untested code | Split it. Two clean sessions > one messy one. |
| "Adding features slows us down" | Missing features means missing tests and undocumented work | 2 minutes to add a feature saves hours of confusion later. |
| "I'll delete the old feature" | Deleting breaks references in progress.txt and git history | Deprecate, never delete. Preserve the audit trail. |
| "Dependencies are obvious, no need to document" | Obvious to you now. Opaque to the next session. | Write it down. Takes 30 seconds. |
| "Feature list is fine, no need to audit" | Drift accumulates silently. Audit catches it early. | Audit every 10-20 features. Cheap insurance. |
If you're thinking any of these:
All of these mean: The feature list is drifting from reality. Fix it now.
npx claudepluginhub 0xobat/claude-skills --plugin devOrchestrates multi-session projects by implementing one feature per cycle from feature-list.json through TDD pipeline with quality gates and code review.
Interactively adds features, ideas, or requirements to project backlog by prompting for details, creating docs/features/[id]/idea.md with YAML frontmatter, validating duplicates from DASHBOARD.md, and optionally staging git changes.
Manages a 4-phase feature development pipeline: research, implementation planning, progress tracking, and phased execution for major features. Supports status checks and next-step guidance via subcommands.