本文件定义 bugfix-flow 状态机使用的持久化格式。所有子 skill 都应遵循此约定。
Bugfix-Flow 有两个状态位置:
- pre-worktree 阶段:默认不创建;仅在 pick 前需要澄清或暂停时,在启动命令所在仓库根目录使用
.bugfix-flow/pending.json - 正式状态机阶段:在目标 worktree 根目录下创建
.bugfix-flow/
每个被 bugfix-flow 接管的正式开发会话,在 worktree 根目录下创建 .bugfix-flow/:
.bugfix-flow/
state # 当前阶段(纯文本,一行)
mode # 运行模式:auto | manual
context.json # bug 上下文(JSON)
verify-report.md # 验证报告(可选,markdown)
.bugfix-flow/应被添加到.gitignore中,避免提交到仓库。
.bugfix-flow/pending.json 是 pre-worktree 暂存文件,不是正式状态机 state。它只用于 pick 前澄清或暂停时的短期恢复。
建议格式:
{
"flow": "bugfix-flow",
"mode": "manual",
"phase": "clarifying",
"summary": "空配置文件会导致服务启动 panic",
"created_at": "2026-04-30T12:00:00Z",
"updated_at": "2026-04-30T12:05:00Z"
}约束:
phase取值:clarifying,picking- 同一 repo root 只允许一个 pending 流程;如已存在,编排器必须提示用户恢复、覆盖或取消
pending.json不参与state-transition-guard的正式 state 校验
合法值(按流转顺序):
picked → implementing → ready → finished
↑__________↓(bugfix-verify 失败时回退到 implementing)
picked:已创建 worktree/分支并写入 bug 上下文,等待开始修复implementing:正在/已执行 bug 修复ready:验证通过,等待人工决定是否提交或继续修改finished:流程已明确结束,可清理.bugfix-flow/
合法值:
manual:人工确认模式。每个门控点暂停,等用户确认后再继续auto:全自动模式。连续自动推进,直到进入ready或遇到阻塞
{
"source": "issue",
"type": "fix",
"summary": "空配置文件会导致服务启动 panic",
"reproduction": "使用空 config.yaml 启动服务",
"expected": "服务应返回明确错误而不是 panic",
"verification_targets": [
"空配置文件启动时不 panic",
"错误信息包含配置为空"
],
"issue": {
"number": 123,
"title": "fix: avoid panic on empty config",
"url": "https://github.com/owner/repo/issues/123"
}
}约束:
source:issue或adhoctype:固定为fixsummary:本次修复的简要目标reproduction:最小复现步骤;若未知可写明当前缺口expected:修复后的预期行为verification_targets:验证时必须检查的结果列表issue:仅在source=issue时存在
子 skill 查找 .bugfix-flow/ 时,按以下优先级:
- 当前目录是否存在
.bugfix-flow/state - 若不存在,向父目录逐级递归查找
- 若找到,以找到
.bugfix-flow/的目录为基准读取其他文件 - 若未找到正式 state,编排器可以读取当前 git 仓库根目录的
.bugfix-flow/pending.json恢复 pick 前澄清流程 - 若正式 state 和 pending 都未找到,视为不在 bugfix-flow 会话中
- 读取:子 skill 可以读取
.bugfix-flow/中的文件获取上下文 - 写入:子 skill 可以写入
context.json、verify-report.md等业务文件 - 写入
.bugfix-flow/状态文件时,优先使用Write,不要依赖 shell 重定向 - 初始状态:
bugfix-pick是唯一允许创建正式.bugfix-flow/state初始值的子 skill,初始 state 为picked - 状态更新:初始创建之后,
.bugfix-flow/state由bugfix-flow编排器统一维护,其他子 skill 不应直接修改 - mode 适配:子 skill 在执行门控操作前,应按以下优先级检测运行模式:
- 检查
$ARGUMENTS是否包含--auto - 读取
.bugfix-flow/pending.json的mode(用于 pick 前恢复阶段) - 读取
.bugfix-flow/mode(用于持久化状态机阶段) - 默认
manual模式
- 检查
新建会话时,编排器不得在源仓库预先创建正式 .bugfix-flow/state。仅当 pick 前需要澄清或暂停时,写入 .bugfix-flow/pending.json。正确顺序是:
- 如需澄清或暂停,
bugfix-flow在源仓库根目录写入或更新.bugfix-flow/pending.json bugfix-pick创建目标 worktree 和分支bugfix-pick在目标 worktree 根目录写入.bugfix-flow/mode、.bugfix-flow/state和.bugfix-flow/context.jsonbugfix-flow回到源仓库根目录并删除.bugfix-flow/pending.json(如果存在)- 正式状态机从
picked开始恢复和推进