wtf.epic-to-features

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Epic to Features

从Epic到Feature

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.
将一个Epic分解为完整的Feature集合,并逐一创建它们。核心价值:预先提出完整的Feature列表,然后在用户完全控制下逐步编写每个Feature。

Process

流程

0. GitHub CLI setup

0. GitHub CLI 配置

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
write-feature
and
write-task
).
Skip this step if gh-setup was already confirmed this session (e.g. when chained from
write-epic
).
运行
../references/gh-setup.md
中的配置检查。如果未安装
gh
或未完成认证,请停止操作。注意相关扩展是否可用——这将决定后续是否通过
write-feature
write-task
创建原生子议题和依赖链接。
如果本次会话中已确认gh-setup完成(例如从
write-epic
链式调用而来),则跳过此步骤。

1. Identify the Epic

1. 确定Epic

If an Epic number was passed in as context, use it directly. Otherwise call
AskUserQuestion
with
question: "Which Epic are you breaking into Features?"
,
header: "Epic"
, and
options
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.
如果上下文已传入Epic编号,则直接使用。否则调用
AskUserQuestion
,参数为
question: "你要将哪个Epic分解为Feature?"
header: "Epic"
,并通过
gh issue list --label epic
获取最近的开放Epic议题编号和标题,预填充到
options
中。
获取Epic详情:
bash
gh issue view <epic_number>
提取:目标、背景和成功指标。
通过子议题层级列出该Epic下已创建的Feature:
bash
gh sub-issue list <epic_number>
记录已存在的Feature,请勿重复提议或创建。

2. Propose the full Feature list

2. 提出完整的Feature列表

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:
  1. Merchant can view settlement status for a completed payment
  2. Merchant can filter settlements by date range
  3. Finance Manager can export settlement report as CSV
  4. System notifies Merchant when settlement is delayed
Then call
AskUserQuestion
with:
  • question
    : "Does this list look complete? You can add, remove, or rename any Feature before we start."
  • header
    : "Feature list"
  • options
    :
    [{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.
根据Epic的目标、背景和成功指标,推导一组可共同实现Epic成果的Feature提议。每个Feature必须遵循以下模式:[领域角色] 能够 [领域动词] [领域对象]
如果Epic已存在部分创建完成的Feature(通过
gh sub-issue list
发现),则在列表开头添加说明:“Epic #N 已创建 [X] 个Feature:[带议题编号的列表]。以下是我提议的剩余Feature:”
将剩余(或完整,如果尚未创建任何Feature)的列表以纯文本编号形式呈现,例如:
以下是我为该Epic提议的Feature:
  1. 商家可查看已完成付款的结算状态
  2. 商家可按日期范围筛选结算记录
  3. 财务经理可将结算报告导出为CSV格式
  4. 当结算延迟时,系统向商家发送通知
然后调用
AskUserQuestion
,参数为:
  • question
    : “这个列表是否完整?在开始之前,你可以添加、删除或重命名任何Feature。”
  • header
    : “Feature列表”
  • options
    :
    [{label: "看起来没问题", description: "继续使用此列表"}, {label: "需要修改", description: "我想添加、删除或重命名Feature"}]
等待用户确认或调整列表,应用所有修改。

3. Walk through Features one by one

3. 逐一处理Feature

For each Feature in the confirmed list, in order:
  1. Announce: "Creating Feature [N/total]: [capability name]"
  2. Follow the
    write-feature
    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).
  3. Before moving to the next Feature, call
    AskUserQuestion
    with:
    • question
      : "Feature [N] created. Ready to continue to Feature [N+1]: [next capability name]?"
    • header
      : "Continue?"
    • options
      :
      [{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
      /clear
      before resuming.
    • Skip this feature → mark as skipped in the list and move to the next.
    • Add a new feature → call
      AskUserQuestion
      with
      question: "What is the new feature capability?"
      ,
      header: "New feature"
      , and
      options
      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.
按顺序处理确认列表中的每个Feature:
  1. 通知:“正在创建第 [N/总数] 个Feature:[能力名称]
  2. 遵循
    write-feature
    流程,传入:
    • Epic编号(跳过write-feature的步骤1——Epic已获取)
    • 能力名称作为write-feature步骤2的预填答案
    • 简化澄清环节:由于能力名称已遵循
      [角色] 能够 [动词] [对象]
      模式,且已掌握Epic上下文,除非Epic内容存在真正的歧义,否则跳过write-feature的步骤3(澄清问题)。write-feature的步骤4(用户故事推导)和步骤5(DDD语言校验)应静默运行。从write-feature的步骤6(垂直切片评估)继续。
  3. 在处理下一个Feature之前,调用
    AskUserQuestion
    ,参数为:
    • question
      : “第 [N] 个Feature已创建。是否准备继续处理第 [N+1] 个Feature:[下一个能力名称]?”
    • header
      : “是否继续?”
    • options
      :
      [{label: "是,继续", description: "处理下一个Feature(默认选项)"}, {label: "在此暂停", description: "退出——我稍后再继续"}, {label: "跳过此Feature", description: "标记为已跳过,继续下一个"}, {label: "添加新Feature", description: "在继续前向列表中插入一个新Feature"}]
    • 是,继续 → 继续处理。
    • 在此暂停 → 退出。打印已创建和剩余的Feature摘要。建议在继续前使用
      /clear
    • 跳过此Feature → 在列表中标记为已跳过,继续下一个。
    • 添加新Feature → 调用
      AskUserQuestion
      ,参数为
      question: "新Feature的能力是什么?"
      header: "新Feature"
      ,并根据Epic目标或成功指标中尚未体现的内容,预填充1-2个能力名称到
      options
      中。将确认后的Feature添加到列表,然后继续。

4. Completion

4. 完成

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
with:
  • question
    : "What's next?"
  • header
    : "Next step"
  • options
    :
    [{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
    feature-to-tasks
    process with the first created Feature number.
  • Break down next Feature → follow the
    feature-to-tasks
    process with the second created Feature number (or whichever the user specifies).
  • Stop here → exit.
Suggest
/clear
before continuing if the conversation has grown long.
当所有Feature已创建(或已跳过)时,打印摘要:
“Epic #<epic_number> 的Feature分解已完成。 已创建:[带议题编号的列表] 已跳过:[如有则列出]”
然后调用
AskUserQuestion
,参数为:
  • question
    : “下一步做什么?”
  • header
    : “下一步”
  • options
    :
    [{label: "分解第一个Feature", description: "为第一个Feature规划并创建任务(默认选项)"}, {label: "分解下一个Feature", description: "为其他Feature规划并创建任务"}, {label: "在此停止", description: "退出——无需进一步操作"}]
  • 分解第一个Feature → 使用第一个已创建的Feature编号,遵循
    feature-to-tasks
    流程。
  • 分解下一个Feature → 使用第二个已创建的Feature编号(或用户指定的编号),遵循
    feature-to-tasks
    流程。
  • 在此停止 → 退出。
如果对话内容较长,建议在继续前使用
/clear