Agent skill
propose-feature-concept
Create a new feature concept document to pitch the idea and explain the problem/solution
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/propose-feature-concept
SKILL.md
Propose Feature Concept Skill
Create a feature concept document that pitches the feature idea and explains the problem it solves. This is the first step in the feature proposal process.
Roles
You (reading this file) are the orchestrator.
| Role | Reads | Does |
|---|---|---|
| Orchestrator (you) | SKILL.md, next-step.py output | Runs state machine, spawns subagents, writes outputs |
| State machine | progress.json, workspace files | Decides next action, validates gates |
| Subagent | Phase file (e.g., SETUP.md) | Executes phase instructions |
⚠️ You do NOT read files in phases/ — pass them to subagents via context_files. Subagents read their phase file and execute it.
When to Use
- User wants to propose a new feature for crumbly, forester, or other forest crates
- Starting to document a feature idea
- Need to explain "why" and "what" before diving into requirements
Prerequisites
- User has described the feature idea
Optional: Offer Idea Honing First
Before starting the orchestrator loop, ask the user:
Would you like to use an idea honing process to bring more clarity to the concept? This involves working through questions one at a time to explore ambiguities and design considerations.
If yes, use the idea-honing skill following the protocol in skills/README.md. Return to this skill after idea honing is complete.
Orchestrator Loop
import json
workspace = f"planning/{feature_slug}"
bash(f"mkdir -p {workspace}", on_error="raise")
while True:
result = bash(f"python3 skills/propose-feature-concept/next-step.py {workspace}", on_error="raise")
action = json.loads(result)
if action["type"] == "done":
setup = json.loads(fs_read("Line", f"{workspace}/setup.json", 1, -1))
review = fs_read("Line", f"{workspace}/review.md", 1, -1)
log(f"Feature concept created at {setup['feature_dir']}/concept.md")
log(review)
break
if action["type"] == "gate_failed":
log(f"Gate failed: {action['reason']}")
break
if action["type"] == "spawn":
r = spawn(
action["prompt"],
context_files=action["context_files"],
context_data=action.get("context_data"),
allow_tools=True
)
write("create", f"{workspace}/{action['output_file']}", file_text=r.response)
Handling Exceptions
The state machine handles the happy path. When things go wrong, exercise judgment:
| Exception | Response |
|---|---|
| Spawn times out | Assess: retry with longer timeout? Report partial progress? |
| Spawn returns error | Report failure to state machine, let it track retries |
| Empty/invalid response | Treat as failure, report to state machine |
Don't silently advance past failures. Either retry, fail explicitly, or document gaps.
Anti-Patterns
| ❌ Don't | ✅ Do |
|---|---|
| Read phase files yourself | Pass phase files via context_files to subagents |
| Decide what phase is next | State machine decides via next-step.py |
| Skip gates "because it looks done" | Always validate gates |
| Store state in your memory | State lives in progress.json |
| Silently advance past failures | Retry, fail, or document gaps |
Phases
- SETUP: Determine feature number, create feature name, check for idea honing document, create feature directory
- DRAFT: Copy template and work with user to fill in concept document as narrative
- REVIEW: Review for narrative flow, validate creation, provide recommendations
Inputs
- Feature idea description from user
- Optional: idea-honing.md from prior idea honing session
Outputs
docs/features/NNNN-feature-name/concept.md- The feature concept documentplanning/<feature-slug>/review.md- Review and next steps
Next Steps
After creating the concept:
- Review and refine the narrative
- Get feedback on whether the feature is valuable
- Once concept is solid, move to requirements using
propose-feature-requirementsskill
Didn't find tool you were looking for?