wtf.epic-to-features
Epic to Features
Break an Epic down into its full set of Features and create them one by one. Core value: proposes the complete feature list upfront, then walks through writing each Feature with full user control.
Process
0. GitHub CLI setup
Run the setup check from ../references/gh-setup.md. Stop if gh is not installed or not authenticated. Note whether the extensions are available — this determines whether native sub-issue and dependency links are created downstream (via wtf.write-feature and wtf.write-task).
Skip this step if gh-setup was already confirmed this session (e.g. when chained from wtf.write-epic).
1. Identify the Epic
If an Epic number was passed in as context, use it directly. Otherwise call AskUserQuestion (per ../references/questioning-style.md):
- question: "Which Epic are you breaking into Features?"
- header: "Epic"
- options: from recent open Epics via
gh issue list --label epic
Fetch the Epic with gh issue view <epic_number> and extract: Goal, Context, and Success Metrics.
List Features already created under this Epic via gh sub-issue list <epic_number> per the cookbook in ../references/gh-setup.md. Note which Features already exist — do not re-propose or re-create them.
2. Propose the full Feature list
Based on the Epic's Goal, Context, and Success Metrics, derive a proposed list of Features that together deliver the Epic's outcome. Each Feature must follow the pattern: [Domain Actor] can [domain verb] [domain object].
If the Epic already has partially-created Features (found via gh sub-issue list), open the list with a note: "Epic #N already has [X] Features created: [list with issue numbers]. Here are the remaining Features I'd propose:"
Present the remaining (or full, if none exist yet) list as plain numbered text, for example:
Here are the Features I'd propose for this Epic:
- Merchant can view settlement status for a completed payment
- Merchant can filter settlements by date range
- Finance Manager can export settlement report as CSV
- System notifies Merchant when settlement is delayed
Then call AskUserQuestion (per ../references/questioning-style.md):
- question: "Does this list look complete? You can add, remove, or rename any Feature before we start."
- header: "Feature list"
- options:
- Looks good → proceed with this list
- Make changes → add, remove, or rename a Feature
Wait for the user to confirm or adjust the list. Apply any changes.
3. Walk through Features one by one
For each Feature in the confirmed list, in order:
- Announce: "Creating Feature [N/total]: [capability name]"
- Follow the
wtf.write-featureprocess, passing:- The Epic number (skip step 1 of write-feature — Epic is already fetched)
- The capability name as the pre-filled answer to step 2 of write-feature
- Abbreviated clarification: because the capability name already follows the
[Actor] can [verb] [object]pattern and the Epic context is already in hand, skip write-feature step 3 (clarification questions) unless something is genuinely ambiguous from the Epic. Write-feature step 4 (user story derivation) and step 5 (DDD Language Guard) should still run silently. Resume from write-feature step 6 (vertical slice assessment).
- Before moving to the next Feature, call
AskUserQuestion(per../references/questioning-style.md):- question: "Feature [N] created. Ready to continue to Feature [N+1]: [next capability name]?"
- header: "Continue?"
- options:
- Yes, continue → proceed to the next Feature (default)
- Pause here → exit; print a summary of which Features were created and which remain; suggest
/clearbefore resuming - Skip this feature → mark as skipped in the list and move to the next
- Add a new feature → call
AskUserQuestionwith question "What is the new feature capability?", header "New feature", options from capability names inferred from the Epic's Goal or Success Metrics not yet in the list; add the confirmed feature, then continue
4. Completion
When all Features have been created (or skipped), print a summary:
"Epic #<epic_number> Feature breakdown complete. Created: [list with issue numbers] Skipped: [list if any]"
Then call AskUserQuestion (per ../references/questioning-style.md):
- question: "What's next?"
- header: "Next step"
- options:
- Break down first Feature → follow
wtf.feature-to-taskswith the first created Feature number (default) - Break down next Feature → follow
wtf.feature-to-taskswith a different Feature number - Stop here → exit, no further action
- Break down first Feature → follow
Suggest
/clearbefore continuing if the conversation has grown long.
More from xiduzo/wtf
wtf.write-feature
This skill should be used when a user wants to create a GitHub Feature issue, break down an Epic into user-facing capabilities, write user stories in domain language, or capture what a domain actor can do — for example "create a feature", "write a feature for this epic", "add a feature to an epic", "break this epic into features", "write user stories for this feature", or "describe what this actor can do". Use this skill to write a single Feature; use `wtf.epic-to-features` to generate the full set of Features for an Epic at once. Not applicable to Tasks, Epics, or bug reports.
38wtf.write-task
This skill should be used when a user wants to create a task, write a ticket, decompose a feature into implementable work, break down a story, define a vertical slice for development, or write Gherkin scenarios — for example "create a task", "write a task for this feature", "break this feature into tasks", "define implementation work", or "add a sub-issue to this feature". Guides creation of a GitHub Task issue linked to a parent Feature and Epic, derives Gherkin acceptance scenarios from the Feature's ACs, enforces DDD ubiquitous language in scenarios, and checks for vertical-slice integrity and task dependencies.
38wtf.write-epic
This skill should be used when a user wants to create, draft, or plan a GitHub Epic issue — for example "write an epic", "I want to define a new initiative", "scope out this strategic project", "turn this idea into an epic", "plan work that spans multiple features", or "start from a bounded context". Also use when the user asks to define domain outcomes, capture a large initiative before breaking it into features, or describe work in terms of business goals rather than technical tasks.
38wtf.steer-design
This skill should be used when a team wants to create or refine the design guidelines document — for example "create the design steering doc", "document our design system", "write the design principles", "document our component patterns", "set up the design guidelines", or "update the design doc". Generates docs/steering/DESIGN.md as a living document capturing design principles, the design system, tokens, component patterns, and accessibility standards. Generated once and refined — not regenerated from scratch.
37wtf.reflect
This skill should be used when a developer wants to capture learnings from a difficult session, record what Claude got wrong, save implementation gotchas, or update the steering docs with hard-won knowledge — for example "let's reflect", "capture what we learned", "that was painful, save this", "update the steering docs with what went wrong", "I need to debrief", "what went wrong today", "log this lesson", "save this gotcha", "document this mistake", "I want to write this down before I forget", "add this to the steering docs", or when prompted by the intervention tracker after multiple corrections. Routes each learning into the right steering doc (TECH, QA, DESIGN, or VISION) under a "Hard-Won Lessons" section.
37wtf.verify-task
This skill should be used when a QA engineer wants to test or verify a completed task, run through acceptance criteria, check Gherkin scenarios against the implementation, record pass/fail results, or sign off on a ticket before merge. Triggers on phrases like "verify task #42", "run QA on this issue", "test the acceptance criteria", "sign off on task", "check if this task is ready to merge", "does this task meet its acceptance criteria", "run acceptance tests for task #X", "walk through the Gherkin for task #X", or "I want to test this task".
37