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
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
and
).
Skip this step if gh-setup was already confirmed this session (e.g. when chained from
).
1. Identify the Epic
If an Epic number was passed in as context, use it directly. Otherwise call
with
question: "Which Epic are you breaking into Features?"
,
, and
pre-filled with recent open Epic issue numbers and titles found via
gh issue list --label epic
.
Fetch the Epic:
bash
gh issue view <epic_number>
Extract: Goal, Context, and Success Metrics.
List Features already created under this Epic using the sub-issue hierarchy:
bash
gh sub-issue list <epic_number>
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
), 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
- : "Does this list look complete? You can add, remove, or rename any Feature before we start."
- : "Feature list"
- :
[{label: "Looks good", description: "Proceed with this list"}, {label: "Make changes", description: "I want to 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 process, 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 with:
-
: "Feature [N] created. Ready to continue to Feature [N+1]:
[next capability name]?"
-
-
:
[{label: "Yes, continue", description: "Proceed to the next Feature (default)"}, {label: "Pause here", description: "Exit — I'll continue later"}, {label: "Skip this feature", description: "Mark as skipped and move on"}, {label: "Add a new feature", description: "Insert a new feature into the list before continuing"}]
-
Yes, continue → continue.
-
Pause here → exit. Print a summary of which Features were created and which remain. Suggest
before resuming.
-
Skip this feature → mark as skipped in the list and move to the next.
-
Add a new feature → call
with
question: "What is the new feature capability?"
,
, and
pre-filled with 1–2 capability names inferred from the Epic's Goal or Success Metrics not yet represented in the list. Add the confirmed feature to the list, 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]"
-
-
-
:
[{label: "Break down first Feature", description: "Plan and create Tasks for the first Feature (default)"}, {label: "Break down next Feature", description: "Plan and create Tasks for a different Feature"}, {label: "Stop here", description: "Exit — no further action"}]
-
Break down first Feature → follow the
process with the first created Feature number.
-
Break down next Feature → follow the
process with the second created Feature number (or whichever the user specifies).
-
Stop here → exit.
Suggest
before continuing if the conversation has grown long.