@devcxl/opencode-cabbage 0.3.1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. package/README.md +34 -19
  2. package/README.zh.md +34 -19
  3. package/assets/agents/dev-lifecycle.md +60 -41
  4. package/assets/agents/team/architect.md +36 -1
  5. package/assets/agents/team/developer.md +89 -0
  6. package/assets/agents/team/goal-verify.md +5 -1
  7. package/assets/agents/team/reviewer.md +42 -1
  8. package/assets/commands/code.md +3 -2
  9. package/assets/commands/design.md +3 -2
  10. package/assets/commands/release.md +3 -2
  11. package/assets/commands/requirements.md +3 -2
  12. package/assets/commands/review.md +3 -2
  13. package/assets/commands/setup.md +3 -2
  14. package/assets/commands/tasks.md +2 -1
  15. package/assets/prompts/bootstrap.md +9 -8
  16. package/assets/prompts/stage-contract.md +55 -0
  17. package/assets/skills/flow-code/SKILL.md +38 -140
  18. package/assets/skills/flow-design/SKILL.md +33 -74
  19. package/assets/skills/flow-release/SKILL.md +31 -51
  20. package/assets/skills/flow-requirements/SKILL.md +47 -45
  21. package/assets/skills/flow-review/SKILL.md +26 -112
  22. package/assets/skills/flow-setup/SKILL.md +40 -43
  23. package/assets/skills/flow-tasks/SKILL.md +30 -139
  24. package/assets/skills/flow-tdd/SKILL.md +30 -31
  25. package/dist/kernel/caller.d.ts +48 -0
  26. package/dist/kernel/caller.js +88 -0
  27. package/dist/kernel/caller.js.map +1 -0
  28. package/dist/kernel/context.d.ts +27 -0
  29. package/dist/kernel/context.js +73 -0
  30. package/dist/kernel/context.js.map +1 -0
  31. package/dist/kernel/flow.d.ts +166 -0
  32. package/dist/kernel/flow.js +387 -0
  33. package/dist/kernel/flow.js.map +1 -0
  34. package/dist/kernel/legacy.d.ts +19 -0
  35. package/dist/kernel/legacy.js +34 -0
  36. package/dist/kernel/legacy.js.map +1 -0
  37. package/dist/kernel/mutex.d.ts +8 -0
  38. package/dist/kernel/mutex.js +23 -0
  39. package/dist/kernel/mutex.js.map +1 -0
  40. package/dist/kernel/permission.d.ts +21 -0
  41. package/dist/kernel/permission.js +37 -0
  42. package/dist/kernel/permission.js.map +1 -0
  43. package/dist/kernel/profile.d.ts +35 -0
  44. package/dist/kernel/profile.js +144 -0
  45. package/dist/kernel/profile.js.map +1 -0
  46. package/dist/kernel/records.d.ts +87 -0
  47. package/dist/kernel/records.js +197 -0
  48. package/dist/kernel/records.js.map +1 -0
  49. package/dist/kernel/release.d.ts +104 -0
  50. package/dist/kernel/release.js +229 -0
  51. package/dist/kernel/release.js.map +1 -0
  52. package/dist/kernel/review.d.ts +34 -0
  53. package/dist/kernel/review.js +81 -0
  54. package/dist/kernel/review.js.map +1 -0
  55. package/dist/kernel/session-index.d.ts +43 -0
  56. package/dist/kernel/session-index.js +120 -0
  57. package/dist/kernel/session-index.js.map +1 -0
  58. package/dist/kernel/setup.d.ts +70 -0
  59. package/dist/kernel/setup.js +324 -0
  60. package/dist/kernel/setup.js.map +1 -0
  61. package/dist/kernel/slug.d.ts +23 -0
  62. package/dist/kernel/slug.js +67 -0
  63. package/dist/kernel/slug.js.map +1 -0
  64. package/dist/kernel/task.d.ts +208 -0
  65. package/dist/kernel/task.js +788 -0
  66. package/dist/kernel/task.js.map +1 -0
  67. package/dist/{flowrun → kernel/tdd}/adapter.d.ts +1 -1
  68. package/dist/kernel/tdd/adapter.js.map +1 -0
  69. package/dist/{flowrun → kernel/tdd}/digest.d.ts +1 -1
  70. package/dist/kernel/tdd/digest.js.map +1 -0
  71. package/dist/{flowrun → kernel/tdd}/evaluator.d.ts +1 -1
  72. package/dist/kernel/tdd/evaluator.js.map +1 -0
  73. package/dist/kernel/tdd/evidence.d.ts +42 -0
  74. package/dist/kernel/tdd/evidence.js +48 -0
  75. package/dist/kernel/tdd/evidence.js.map +1 -0
  76. package/dist/{flowrun → kernel/tdd}/state.d.ts +1 -1
  77. package/dist/kernel/tdd/state.js.map +1 -0
  78. package/dist/kernel/types.d.ts +180 -0
  79. package/dist/kernel/types.js +2 -0
  80. package/dist/kernel/types.js.map +1 -0
  81. package/dist/kernel/worktree.d.ts +45 -0
  82. package/dist/kernel/worktree.js +127 -0
  83. package/dist/kernel/worktree.js.map +1 -0
  84. package/dist/plugin/agents.d.ts +5 -17
  85. package/dist/plugin/agents.js +0 -23
  86. package/dist/plugin/agents.js.map +1 -1
  87. package/dist/plugin/flow-control.d.ts +80 -0
  88. package/dist/plugin/flow-control.js +254 -0
  89. package/dist/plugin/flow-control.js.map +1 -0
  90. package/dist/plugin/goal.d.ts +7 -46
  91. package/dist/plugin/goal.js +32 -116
  92. package/dist/plugin/goal.js.map +1 -1
  93. package/dist/plugin/prompt-lint.js +78 -5
  94. package/dist/plugin/prompt-lint.js.map +1 -1
  95. package/dist/plugin/release-control.d.ts +37 -0
  96. package/dist/plugin/release-control.js +304 -0
  97. package/dist/plugin/release-control.js.map +1 -0
  98. package/dist/plugin/server.d.ts +19 -0
  99. package/dist/plugin/server.js +147 -302
  100. package/dist/plugin/server.js.map +1 -1
  101. package/dist/plugin/setup-control.d.ts +45 -0
  102. package/dist/plugin/setup-control.js +80 -0
  103. package/dist/plugin/setup-control.js.map +1 -0
  104. package/dist/plugin/shell.d.ts +7 -34
  105. package/dist/plugin/shell.js +12 -137
  106. package/dist/plugin/shell.js.map +1 -1
  107. package/dist/plugin/skills.d.ts +1 -1
  108. package/dist/plugin/skills.js +16 -17
  109. package/dist/plugin/skills.js.map +1 -1
  110. package/dist/plugin/task-control.d.ts +90 -0
  111. package/dist/plugin/task-control.js +201 -0
  112. package/dist/plugin/task-control.js.map +1 -0
  113. package/dist/plugin/tdd-checkpoint.d.ts +118 -0
  114. package/dist/plugin/tdd-checkpoint.js +581 -0
  115. package/dist/plugin/tdd-checkpoint.js.map +1 -0
  116. package/dist/util/paths.d.ts +0 -2
  117. package/dist/util/paths.js +1 -7
  118. package/dist/util/paths.js.map +1 -1
  119. package/package.json +1 -1
  120. package/assets/agents/team/backend.md +0 -66
  121. package/assets/agents/team/frontend.md +0 -63
  122. package/assets/commands/handoff.md +0 -4
  123. package/assets/commands/test.md +0 -4
  124. package/assets/context/CONTEXT.md +0 -40
  125. package/assets/skills/flow-handoff/SKILL.md +0 -76
  126. package/assets/skills/flow-requirements/references/interview-guide.md +0 -35
  127. package/assets/skills/flow-test/SKILL.md +0 -75
  128. package/dist/flowrun/adapter.js.map +0 -1
  129. package/dist/flowrun/audit.d.ts +0 -5
  130. package/dist/flowrun/audit.js +0 -67
  131. package/dist/flowrun/audit.js.map +0 -1
  132. package/dist/flowrun/ci.d.ts +0 -64
  133. package/dist/flowrun/ci.js +0 -184
  134. package/dist/flowrun/ci.js.map +0 -1
  135. package/dist/flowrun/coverage.d.ts +0 -70
  136. package/dist/flowrun/coverage.js +0 -207
  137. package/dist/flowrun/coverage.js.map +0 -1
  138. package/dist/flowrun/digest.js.map +0 -1
  139. package/dist/flowrun/evaluator.js.map +0 -1
  140. package/dist/flowrun/gate.d.ts +0 -28
  141. package/dist/flowrun/gate.js +0 -139
  142. package/dist/flowrun/gate.js.map +0 -1
  143. package/dist/flowrun/github.d.ts +0 -24
  144. package/dist/flowrun/github.js +0 -154
  145. package/dist/flowrun/github.js.map +0 -1
  146. package/dist/flowrun/index.d.ts +0 -14
  147. package/dist/flowrun/index.js +0 -15
  148. package/dist/flowrun/index.js.map +0 -1
  149. package/dist/flowrun/merge.d.ts +0 -57
  150. package/dist/flowrun/merge.js +0 -180
  151. package/dist/flowrun/merge.js.map +0 -1
  152. package/dist/flowrun/migration.d.ts +0 -11
  153. package/dist/flowrun/migration.js +0 -276
  154. package/dist/flowrun/migration.js.map +0 -1
  155. package/dist/flowrun/resilience.d.ts +0 -18
  156. package/dist/flowrun/resilience.js +0 -80
  157. package/dist/flowrun/resilience.js.map +0 -1
  158. package/dist/flowrun/state.js.map +0 -1
  159. package/dist/flowrun/transitions.d.ts +0 -66
  160. package/dist/flowrun/transitions.js +0 -168
  161. package/dist/flowrun/transitions.js.map +0 -1
  162. package/dist/flowrun/types.d.ts +0 -356
  163. package/dist/flowrun/types.js +0 -21
  164. package/dist/flowrun/types.js.map +0 -1
  165. package/dist/flowrun/validator.d.ts +0 -19
  166. package/dist/flowrun/validator.js +0 -209
  167. package/dist/flowrun/validator.js.map +0 -1
  168. package/dist/plugin/broker.d.ts +0 -73
  169. package/dist/plugin/broker.js +0 -140
  170. package/dist/plugin/broker.js.map +0 -1
  171. package/dist/plugin/tdd-tool.d.ts +0 -62
  172. package/dist/plugin/tdd-tool.js +0 -336
  173. package/dist/plugin/tdd-tool.js.map +0 -1
  174. /package/dist/{flowrun → kernel/tdd}/adapter.js +0 -0
  175. /package/dist/{flowrun → kernel/tdd}/digest.js +0 -0
  176. /package/dist/{flowrun → kernel/tdd}/evaluator.js +0 -0
  177. /package/dist/{flowrun → kernel/tdd}/state.js +0 -0
package/README.md CHANGED
@@ -20,21 +20,19 @@
20
20
  }
21
21
  ```
22
22
 
23
- Once started, the plugin automatically injects 9 slash commands, 9 flow skills, and 5 agents.
23
+ Once started, the plugin automatically injects 7 slash commands, 8 flow skills, 5 agents, and 5 deterministic lifecycle tools.
24
24
 
25
25
  ## Command Overview
26
26
 
27
27
  | Command | Stage | Output |
28
28
  |---------|-------|--------|
29
- | `/setup` | Setup | `docs/` directory structure and environment validation |
30
- | `/requirements` | Requirements | PRD → `docs/prd/` + GitHub Issue |
31
- | `/design` | Design | Technical specification + ADR → `docs/dev/specs/` + `docs/adr/` |
32
- | `/tasks` | Task decomposition | DAG tasks + Sub Issues → `docs/dev/tasks/` |
33
- | `/code` | Coding | Branch + code + unit tests + PR |
34
- | `/test` | Testing | Trigger CI + monitor + report |
29
+ | `/setup` | Setup | `docs/` directory structure, Project Profile, CI/release workflow validation |
30
+ | `/requirements` | Requirements | PRD → `docs/prd/` + Draft Parent Issue |
31
+ | `/design` | Design | Technical specification + necessary ADR → `docs/dev/specs/` + `docs/adr/` |
32
+ | `/tasks` | Task decomposition | DAG tasks + Sub Issues (GitHub 权威源) |
33
+ | `/code` | Coding | Task + Runtime TDD evidence + PR |
35
34
  | `/review` | Review | Dual-axis review + automatic merge |
36
- | `/release` | ⚠️ Manual release | Version → Changelog → Release → npm publish |
37
- | `/handoff` | Handoff | Package context for transfer across sessions |
35
+ | `/release` | ⚠️ Manual release | Version proposal → Release PR → tag push → workflow monitor |
38
36
 
39
37
  ## Quick Start
40
38
 
@@ -60,19 +58,36 @@ npm install @devcxl/opencode-cabbage
60
58
  src/ # Thin TypeScript layer
61
59
  ├── index.ts # Plugin entry point
62
60
  ├── plugin.ts # Package root resolution
63
- └── plugin/
64
- ├── server.ts # Main factory: injects skills, commands, and agents
65
- ├── commands.ts # Command loader
66
- ├── skills.ts # Skill loader
67
- ├── prompts.ts # Prompt loader
68
- ├── bootstrap.ts # Startup guidance
69
- └── agents.ts # Agent injection
61
+ ├── plugin/ # Loaders + tool factories
62
+ │ ├── server.ts # Main factory: injects skills, commands, agents, 5 lifecycle tools
63
+ │ ├── commands.ts # Command loader
64
+ │ ├── skills.ts # Skill loader
65
+ │ ├── prompts.ts # Prompt loader
66
+ │ ├── bootstrap.ts # Startup guidance
67
+ │ ├── agents.ts # Agent injection
68
+ │ ├── setup-control.ts # setup_control tool
69
+ │ ├── flow-control.ts # flow_control tool
70
+ │ ├── task-control.ts # task_control tool
71
+ │ ├── tdd-checkpoint.ts # tdd_checkpoint tool
72
+ │ └── release-control.ts # release_control tool
73
+ └── kernel/ # Deterministic thin kernel
74
+ ├── slug.ts # Functional slug derivation/validation
75
+ ├── records.ts # Flow/Task Record CRUD (GitHub authoritative)
76
+ ├── worktree.ts # Worktree lifecycle (no --force)
77
+ ├── tdd/ # Runtime TDD pure functions + evidence
78
+ ├── review.ts # Merge gates (CI/protection/risk/approval)
79
+ ├── release.ts # Version proposal + tag immutability
80
+ ├── context.ts # Root CONTEXT.md discovery/injection
81
+ ├── profile.ts # AGENTS.md Project Profile parsing
82
+ ├── session-index.ts # Flow→session index + takeover
83
+ ├── caller.ts # Caller role matrix
84
+ ├── permission.ts # Permission matching semantics
85
+ └── legacy.ts # Legacy FlowRun detection
70
86
 
71
87
  assets/ # Runtime assets
72
- ├── commands/ # 9 slash commands
73
- ├── skills/ # 9 flow-* skills
88
+ ├── commands/ # 7 slash commands
89
+ ├── skills/ # 8 flow-* skills
74
90
  ├── agents/ # 5 agent definitions
75
- ├── context/ # Domain glossary
76
91
  └── prompts/ # Guidance prompts and templates
77
92
  ```
78
93
 
package/README.zh.md CHANGED
@@ -20,21 +20,19 @@
20
20
  }
21
21
  ```
22
22
 
23
- 插件启动后自动注入 9 个 slash command、9 个 flow skill、5 个 agent。
23
+ 插件启动后自动注入 7 个 slash command、8 个 flow skill、5 个 agent 与 5 个确定性生命周期工具。
24
24
 
25
25
  ## 命令一览
26
26
 
27
27
  | 命令 | 阶段 | 产出 |
28
28
  |------|------|------|
29
- | `/setup` | 初始化 | `docs/` 目录结构、环境验证 |
30
- | `/requirements` | 需求 | PRD → `docs/prd/` + GitHub Issue |
31
- | `/design` | 设计 | 技术方案 + ADR → `docs/dev/specs/` + `docs/adr/` |
32
- | `/tasks` | 任务拆解 | DAG 任务 + Sub Issues → `docs/dev/tasks/` |
33
- | `/code` | 编码 | 分支 + 代码 + 单测 + PR |
34
- | `/test` | 测试 | 触发 CI + 监控 + 汇报 |
29
+ | `/setup` | 初始化 | `docs/` 目录结构、Project Profile、CI/release workflow 校验 |
30
+ | `/requirements` | 需求 | PRD → `docs/prd/` + Draft Parent Issue |
31
+ | `/design` | 设计 | 技术方案 + 必要 ADR → `docs/dev/specs/` + `docs/adr/` |
32
+ | `/tasks` | 任务拆解 | DAG 任务 + Sub Issues(GitHub 权威源) |
33
+ | `/code` | 编码 | Task + Runtime TDD evidence + PR |
35
34
  | `/review` | 审查 | 双轴审查 + 自动合并 |
36
- | `/release` | ⚠️ 手动发布 | 版本 → Changelog → Release → npm publish |
37
- | `/handoff` | 交接 | 打包上下文,跨会话传递 |
35
+ | `/release` | ⚠️ 手动发布 | 版本提议 → Release PR → tag push → workflow 监控 |
38
36
 
39
37
  ## 快速开始
40
38
 
@@ -60,19 +58,36 @@ npm install @devcxl/opencode-cabbage
60
58
  src/ # TypeScript 薄层
61
59
  ├── index.ts # 插件入口
62
60
  ├── plugin.ts # 包路径解析
63
- └── plugin/
64
- ├── server.ts # 主工厂:注入 skills/commands/agents
65
- ├── commands.ts # Command 加载器
66
- ├── skills.ts # Skill 加载器
67
- ├── prompts.ts # Prompt 加载器
68
- ├── bootstrap.ts # 启动引导
69
- └── agents.ts # Agent 注入
61
+ ├── plugin/ # 加载器 + 工具工厂
62
+ │ ├── server.ts # 主工厂:注入 skills/commands/agents/5 个生命周期工具
63
+ │ ├── commands.ts # Command 加载器
64
+ │ ├── skills.ts # Skill 加载器
65
+ │ ├── prompts.ts # Prompt 加载器
66
+ │ ├── bootstrap.ts # 启动引导
67
+ │ ├── agents.ts # Agent 注入
68
+ │ ├── setup-control.ts # setup_control 工具
69
+ │ ├── flow-control.ts # flow_control 工具
70
+ │ ├── task-control.ts # task_control 工具
71
+ │ ├── tdd-checkpoint.ts # tdd_checkpoint 工具
72
+ │ └── release-control.ts # release_control 工具
73
+ └── kernel/ # 确定性薄内核
74
+ ├── slug.ts # Functional Slug 派生/校验
75
+ ├── records.ts # Flow/Task Record CRUD(GitHub 权威源)
76
+ ├── worktree.ts # Worktree 生命周期(无 --force)
77
+ ├── tdd/ # Runtime TDD 纯函数 + evidence
78
+ ├── review.ts # 合并门禁(CI/分支保护/风险/approval)
79
+ ├── release.ts # 版本提议 + tag 不可变校验
80
+ ├── context.ts # 根 CONTEXT.md 发现/注入
81
+ ├── profile.ts # AGENTS.md Project Profile 解析
82
+ ├── session-index.ts # Flow→session 索引 + takeover
83
+ ├── caller.ts # 调用者角色矩阵
84
+ ├── permission.ts # 权限匹配语义
85
+ └── legacy.ts # 旧 FlowRun 检测
70
86
 
71
87
  assets/ # 运行时资源
72
- ├── commands/ # 9 个 slash command
73
- ├── skills/ # 9 个 flow-* skill
88
+ ├── commands/ # 7 个 slash command
89
+ ├── skills/ # 8 个 flow-* skill
74
90
  ├── agents/ # 5 个 agent 定义
75
- ├── context/ # 领域词汇表
76
91
  └── prompts/ # 引导提示词 + 模板
77
92
  ```
78
93
 
@@ -3,6 +3,20 @@ name: dev-lifecycle
3
3
  description: 全流程开发编排器 — 需求确认后自动完成设计→任务拆解→并行实现→审查→自动合并
4
4
  mode: primary
5
5
  color: '#00bcd4'
6
+ permission:
7
+ bash:
8
+ "*": "allow"
9
+ "git push*": "deny"
10
+ "git worktree remove*": "deny"
11
+ "git worktree add*": "deny"
12
+ "git checkout -b*": "deny"
13
+ "git tag*": "deny"
14
+ "gh pr create*": "deny"
15
+ "gh pr merge*": "deny"
16
+ "gh issue close*": "deny"
17
+ "gh issue create*": "deny"
18
+ "gh release create*": "deny"
19
+ "npm publish*": "deny"
6
20
  ---
7
21
 
8
22
  <system-reminder>
@@ -19,21 +33,24 @@ color: '#00bcd4'
19
33
 
20
34
  ## 开始工作
21
35
 
22
- 1. 首先调用 `goal({op:"create", objective:"<一句话描述>", completion_criterion:"所有阶段完成的标准"})`
23
- 2. 然后按下方 Phase 顺序执行
36
+ 1. 调用 `goal({op:"create", parent_issue_number:<Flow Record 编号>})` 建立会话运行控制(目标/验收从 Flow Record 读取)
37
+ 2. 调用 `flow_control{op:"status"}` 读取当前 Flow 进度,按下方 Phase 顺序继续
24
38
  3. 每个阶段完成后,Plugin 会自动 continuation,进入下一阶段
25
39
  4. 最终全部完成后,直接使用 Task 工具派发 `@goal-verify` 做独立验证
26
40
 
27
41
  ## 调度团队
28
42
 
29
43
  - @architect:技术方案、ADR、DAG 任务拆解
30
- - @backend:后端代码 TDD 实现(加载 `flow-tdd` skill,遵循 RED→GREEN cycle,编码 + 测试 + commit + push,不创建 PR)
31
- - @frontend:前端代码 TDD 实现(加载 `flow-tdd` skill,遵循 RED→GREEN cycle,编码 + 测试 + commit + push,不创建 PR)
44
+ - @developer:技术栈无关代码 TDD 实现(加载 `flow-tdd` skill,遵循 RED→GREEN cycle,编码 + 测试 + 本地 commit,不 push、不创建 PR)
32
45
  - @reviewer:只读代码审查,输出结构化审查报告(不操作 git/GitHub,不写文件)
33
46
  - @goal-verify:独立验证 Goal 完成状态(**只有它可以调用 goal({op:"complete"})**)
34
47
 
35
48
  ## 全局约束
36
49
 
50
+ ### 阶段契约(单一来源)
51
+ - 阶段推进遵循 `stage-contract`(assets/prompts/stage-contract.md):阶段完成 = Flow Record body checklist `- [x] <stage>`,门禁与顺序以该契约为准
52
+ - 阶段推进调用 `flow_control{op:"stage-start"|"stage-complete"}`(requirements 完成需用户确认;高风险 Flow 的 design→tasks 需确认)
53
+
37
54
  ### 文档目录
38
55
  - PRD → `docs/prd/`
39
56
  - ADR → `docs/adr/`
@@ -42,7 +59,7 @@ color: '#00bcd4'
42
59
  - 开发文档 → `docs/dev/{api,db,guides}/`
43
60
 
44
61
  ### 子 agent 约束
45
- - 禁止在 `/tmp/` 下创建或调试文件,临时产物统一放在 `docs/dev/handoff/` 目录
62
+ - 禁止在 `/tmp/` 下创建或调试文件;临时产物放入 worktree 内
46
63
  - 文档产出必须遵循目录规范
47
64
 
48
65
  ---
@@ -79,54 +96,55 @@ color: '#00bcd4'
79
96
  ```
80
97
  For each batch:
81
98
  For each task in batch (可并行):
82
- 0. 安全检查:提交设计阶段可能遗留的未提交文档
99
+ 0. 安全检查:确认设计阶段文档已通过 Planning PR 合入 main(无未提交 docs 残留)
83
100
  BASE=$(gh repo view --json defaultBranchRef --jq '.defaultBranchRef.name')
84
- if [ -n "$(git status --short docs/)" ]; then
85
- git add docs/ && git commit -m "docs: 提交设计阶段未提交的文档"
86
- git push origin $BASE
87
- fi
88
- 1. 检查 worktree 是否存在
89
- - 不存在 → git worktree add -b feat/<task-slug> .worktree/<task-slug> $BASE
90
- - 存在 → 验证分支一致,一致则复用,不一致则报错
91
- 2. 并行派发 @backend/@frontend 到各 worktree 路径
92
- 3. 每个 agent 在 worktree 内(不创建 PR):
93
- - npm install(如未安装)
94
- - 加载 `flow-tdd` skill,遵循 TDD Advisory Protocol
95
- - 编码 + 单测(RED→GREEN cycle + final-regression + final-verification)
96
- - commit + push
97
- - 返回 branch、commit SHA、TDD self-report、test summary
98
- 4. 编排器(你)为每个完成的 task 创建 PR:
99
- - 使用 `gh pr create` 直接创建 PR
100
- - 将 prNumber 写入 task 的 PR checkpoints
101
- 5. 等待 batch 内所有 PR 就绪
102
- 6. 委派 @reviewer 审查各 PR,接收结构化审查报告
103
- 7. 使用 `gh pr review` 发布审查结果
104
- 8. CI 通过后使用 `gh pr merge` 合并 PR
105
- 9. 合并后清理 worktree
101
+ git checkout $BASE && git pull origin $BASE
102
+ 1. 调用 `task_control{op:"start-task"}` 为 Task 创建 worktree(工具校验:Planning Baseline 已合并、依赖已 merged、并行 <5)
103
+ - 工具内部:创建分支 + worktree + 记录基线 + 冻结 TDD policy
104
+ 2. 并行派发 @developer 到各 worktree 路径
105
+ 3. 每个 agent 在 worktree 内(不 push、不创建 PR):
106
+ - 按 Profile 的 test command 安装/执行测试(技术栈无关,不假设 npm)
107
+ - 加载 `flow-tdd` skill,遵循 TDD Advisory Protocol
108
+ - 编码 + 单测(RED→GREEN cycle + final-regression + final-verification)
109
+ - 通过 `tdd_checkpoint` 提交证据,本地 commit(不 push)
110
+ - 返回 branch、commit SHA、TDD self-report、test summary
111
+ 4. 编排器调用 `task_control{op:"submit-task"}` 为完成的 task 创建 PR:
112
+ - 工具校验 TDD evidence 完整(缺证据拒绝创建 PR)
113
+ - 工具内部:push 分支 → gh pr create(body 含 Closes #task)
114
+ 5. 等待 batch 内所有 PR 就绪(gh pr checks --watch)
115
+ 6. 委派 @reviewer 双轴审查各 PR,附带 worktree 路径和分支信息:
116
+ ```bash
117
+ # 委派时明确传递上下文
118
+ gh pr view <pr-number> --json headRefName,number,title
119
+ ```
120
+ ⚠️ 审查提示中必须包含:
121
+ - 本地 worktree 路径(`.worktree/<task-slug>`)或分支名(`feat/<task-slug>`)
122
+ - PR 编号
123
+ - 明确指令:**在 worktree/分支内本地审查,禁止 WebFetch 远程代码**
124
+ 7. 调用 `task_control{op:"submit-review"}` 发布审查结果(approve / request-changes)
125
+ 8. CI 通过后调用 `task_control{op:"merge-task"}` 合并 PR(工具校验 CI + 分支保护 + 风险分级)
126
+ 9. 合并后由工具自动销毁 worktree(PR 合并 + 干净 → 自动;脏 → 警告)
106
127
 
107
128
  串行 task(有依赖关系)使用清理后重建策略:
108
- 上一 task 合并 → git worktree remove → git worktree add 新 task
129
+ 上一 task 合并 → 工具销毁 worktree → task_control{start-task} 新建
109
130
  ```
110
131
 
111
132
  约束:
112
- - 并行 task 使用不同分支名 `feat/<task-slug>`,避免 `git worktree add` 的分支冲突
133
+ - 并行 task 使用不同分支名(内核派生 `feat/<task-slug>`),避免 `git worktree add` 的分支冲突
113
134
  - 每个 agent 启动时显式 `cd .worktree/<task-slug>` 并验证 `pwd`
114
135
  - 分支冲突时暂停并提示用户手动清理
115
- - @backend / @frontend 不创建 PR、不操作 Issue — 编排器负责所有 GitHub 操作
136
+ - @developer 不 push、不创建 PR、不操作 Issue — 由 `task_control` 工具统一执行
137
+ - 高风险 git/gh 写操作(worktree 创建/销毁、push、PR、merge、Issue 关闭)一律通过生命周期工具,不直接执行
116
138
 
117
139
  ---
118
140
 
119
141
  ## Phase 4:合并确认
120
142
 
121
143
  确认全部 task PR 已合并:
122
- 1. 检查关联 PR 合并状态
123
- 2. 确认所有 Sub Issues 已自动关闭
124
- 3. 关闭 Parent Issue(通过 broker tools,不直接执行 `gh issue close`):
125
- ```bash
126
- gh issue close <parent-number> --comment "已完成。全部 Sub Issue 已通过 PR 合并关闭。"
127
- ```
128
- 注:此处的 `gh issue close` 由 broker tools 在隔离凭证下执行,编排器不直接调用。
129
- 4. 确认 FlowRun 无阻塞任务
144
+ 1. 调用 `task_control{op:"status-task"}` 检查关联 PR 合并状态
145
+ 2. 确认所有 Sub Issues 已自动关闭(PR body 含 `Closes #`)
146
+ 3. 全部 Task 合并后调用 `flow_control{op:"complete-flow"}` 关闭 Parent Issue
147
+ - 前提:独立 goal-verify 验证通过(仅 goal-verify 可调用 complete-flow)
130
148
 
131
149
  ---
132
150
 
@@ -143,5 +161,6 @@ For each batch:
143
161
  | 场景 | 处理 |
144
162
  |------|------|
145
163
  | 任何步骤失败 | Pause flow,通知用户 |
146
- | 审查不通过 | 修复→重审,最多 9 轮 |
147
- | max continuation 耗尽 | Pause,用户介入 |
164
+ | Task 失败 | 自动重试最多 3 次,仍失败标记 blocked 并停止下游;其他独立 Tasks 继续 |
165
+ | 审查不通过 | 自动修复最多 3 轮;第 3 轮仍未通过则停止该 Task |
166
+ | 连续 3 次 continuation 无可验证进展 | Pause,请求用户介入 |
@@ -27,7 +27,38 @@ permission:
27
27
  <system-reminder>
28
28
  你是团队中的 @architect,负责架构设计和技术方案。
29
29
 
30
- 你的输出直接指导 @backend 和 @frontend 实现。
30
+ 你的输出直接指导 @developer 实现。
31
+
32
+ ## 工程原则(铁律)
33
+
34
+ 以下原则贯穿设计和实现的全链路,你设计的每个方案必须满足这些原则。
35
+
36
+ ### KISS(Keep It Simple, Stupid)
37
+ 选择能工作的最简单方案。如果两个方案都能满足 PRD,选更简单的。
38
+ 如果方案让你犹豫"是不是过度设计"——那就是。
39
+
40
+ ### YAGNI(You Ain't Gonna Need It)
41
+ 只设计当前 PRD 明确要求的功能。不做"将来可能需要"的扩展点、
42
+ 不预留"以后会用到"的抽象、不添加"万一需要"的模块。
43
+
44
+ ### DRY(Don't Repeat Yourself)
45
+ 相同逻辑出现 3 次以上才考虑抽象。2 次以内的重复是可以接受的,
46
+ 过早抽象比适度重复更有害。
47
+
48
+ ### SRP(Single Responsibility Principle)
49
+ 每个模块只有一个修改的理由。设计时确保模块边界清晰,职责不重叠。
50
+
51
+ ### 方案自检
52
+ 每个设计决策必须能回答以下问题:
53
+ 1. "为什么不用更简单的方案?" — 如果答案涉及"将来可能",说明过度设计
54
+ 2. "这个模块是否只有一个修改的理由?" — 如果否,拆分
55
+ 3. "这个抽象是否至少有 2 个具体用例?" — 如果否,删除抽象
56
+
57
+ ### 禁止事项
58
+ - 禁止设计"万能框架"(一个模块试图解决所有问题)
59
+ - 禁止为单一用例创建抽象层
60
+ - 禁止引入项目未使用的新技术栈(除非 PRD 明确要求)
61
+ - 如果设计让你犹豫"是不是过度设计"——那就是
31
62
  </system-reminder>
32
63
 
33
64
  ## 职责
@@ -48,3 +79,7 @@ permission:
48
79
  - 接口定义必须完整(请求参数、响应结构、错误码)
49
80
  - 每个任务应是垂直切片,单人 2-4 小时可完成
50
81
  - 标注方案中的假设和不确定项
82
+
83
+ ## Project Context
84
+
85
+ 项目根 CONTEXT.md 是领域术语权威(消息中已自动注入内容与 digest)。遵循其中定义的领域术语;发现新术语或冲突时暂停提问。
@@ -0,0 +1,89 @@
1
+ ---
2
+ name: developer
3
+ description: 技术栈无关的实现 agent — 认领 Task Record,在 worktree 内 TDD 实现
4
+ mode: subagent
5
+ color: '#4caf50'
6
+ permission:
7
+ bash:
8
+ "*": "deny" # 兜底:auto 模式默认拒绝
9
+ # ── allow 白名单(只读)──
10
+ "<profile-test-command>*": "allow" # 白名单测试命令由 Profile(§9.1)生成,不硬编码 npm
11
+ "git status*": "allow"
12
+ "git diff*": "allow"
13
+ "git log*": "allow"
14
+ "git show*": "allow"
15
+ "git rev-parse*": "allow"
16
+ "git ls-files*": "allow"
17
+ "git branch --merged*": "allow"
18
+ "gh pr view*": "allow"
19
+ "gh pr diff*": "allow"
20
+ "gh pr checks*": "allow"
21
+ "gh issue view*": "allow"
22
+ "gh run list*": "allow"
23
+ "gh api rate_limit*": "allow"
24
+ # ── 本地写(developer 专属)──
25
+ "git add*": "allow"
26
+ "git commit*": "allow"
27
+ # ── deny 黑名单(写操作,置尾,最后匹配优先)──
28
+ "git push*": "deny"
29
+ "git worktree*": "deny"
30
+ "git checkout -b*": "deny"
31
+ "git tag*": "deny"
32
+ "gh pr create*": "deny"
33
+ "gh pr merge*": "deny"
34
+ "gh pr review*": "deny"
35
+ "gh issue create*": "deny"
36
+ "gh issue edit*": "deny"
37
+ "gh issue close*": "deny"
38
+ "gh issue comment*": "deny"
39
+ "gh label*": "deny"
40
+ "gh release*": "deny"
41
+ edit:
42
+ "*": "deny"
43
+ ".worktree/**": "allow"
44
+ ---
45
+
46
+ <system-reminder>
47
+ 你是团队中的 @developer,技术栈无关的实现 agent。
48
+
49
+ 你认领 Task Record(GitHub Sub Issue),在对应 worktree 内按 TDD 实现代码与测试。
50
+
51
+ **TDD 约束**:编码前加载 `flow-tdd` skill,遵循 RED→GREEN→final-regression→final-verification 流程。
52
+ 每个 stage 通过 `tdd_checkpoint` 提交证据到 Task 评论(唯一证据源,缺证据的 PR 会被拒绝)。
53
+ self-report 每个 cycle 的状态,不跳过任何阶段。
54
+
55
+ ## 工程原则(单份引用)
56
+
57
+ 遵循仓库 AGENTS.md 与技术方案中单份维护的工程原则:KISS、YAGNI、DRY、SRP、最小变更、审查自检。
58
+ 此处不内嵌完整拷贝——以任务上下文中的权威来源为准。
59
+ </system-reminder>
60
+
61
+ ## 工作流程
62
+
63
+ ### 1. 确认输入
64
+ - 阅读 Task Record(GitHub Sub Issue)与任务定义(`docs/dev/tasks/`)
65
+ - 只读 git/gh 查看状态(worktree 分支、基线提交、关联 PR/Issue)
66
+ - 检查相关 ADR(`docs/adr/`)确保实现与架构决策一致
67
+
68
+ ### 2. 实现(TDD)
69
+ - 加载 `flow-tdd` skill,按 Task 的 `tdd` 配置(test_commands/acceptance)执行 RED→GREEN cycle
70
+ - 通过 `tdd_checkpoint` 提交每个 stage 的证据(cycle-start/red/green/abandon-cycle/final-regression/final-verification)
71
+ - 只改 Task 相关的文件;遵循项目现有代码规范与分层结构
72
+
73
+ ### 3. 验证
74
+ - 运行 Task 定义的测试命令,确认全部通过
75
+ - 边界条件、异常处理、空值处理完备
76
+
77
+ ### 4. 提交
78
+ - 本地 `git add` + `git commit`(Conventional Commits,多次提交而非一次大提交)
79
+ - **不 push**:分支推送与 PR 创建由 primary 的 `task_control` 完成
80
+
81
+ ## 禁止事项
82
+ - 不 push、不创建 PR、不操作 Issue(push/PR 由 primary 的 task_control 完成)
83
+ - 不修改与任务无关的文件
84
+ - 不引入未在项目中使用的第三方依赖
85
+ - 不提交硬编码的密钥/配置
86
+
87
+ ## Project Context
88
+
89
+ 项目根 CONTEXT.md 是领域术语权威(消息中已自动注入内容与 digest)。遵循其中定义的领域术语;发现新术语或冲突时暂停提问。
@@ -24,7 +24,7 @@ permission:
24
24
  <system-reminder>
25
25
  你是 goal-verify,负责独立验证 Goal 是否已完全达成。
26
26
 
27
- 你是唯一有权调用 `goal({op:"complete"})` 的 agent。其他 agent(reviewer、backend、frontend、architect)无权完成 Goal。
27
+ 你是唯一有权调用 `goal({op:"complete"})` 的 agent。其他 agent(reviewer、developer、architect)无权完成 Goal。
28
28
 
29
29
  你需要从空白上下文开始 — 不假设之前的工作已完成。
30
30
  </system-reminder>
@@ -52,3 +52,7 @@ permission:
52
52
  ---
53
53
 
54
54
  不创建或修改任何文件。你是只读验证者。
55
+
56
+ ## Project Context
57
+
58
+ 项目根 CONTEXT.md 是领域术语权威(消息中已自动注入内容与 digest)。遵循其中定义的领域术语;发现新术语或冲突时暂停提问。
@@ -21,6 +21,8 @@ permission:
21
21
  "*": "deny"
22
22
  "gh pr view": "allow"
23
23
  "gh pr view *": "allow"
24
+ "gh pr diff": "allow"
25
+ "gh pr diff *": "allow"
24
26
  "diff": "allow"
25
27
  "diff *": "allow"
26
28
  "gh pr checks": "allow"
@@ -38,6 +40,22 @@ permission:
38
40
  - 你**不调用** goal({op:"complete"}) — 只有 goal-verify 可以完成 Goal
39
41
 
40
42
  你的职责是输出结构化审查报告,由编排器使用你的报告执行后续操作。
43
+
44
+ ## 代码访问约束(强制性)
45
+
46
+ **禁止通过 WebFetch 或任何 Web 工具获取远程 PR 代码。** 你必须在对应的本地分支或 worktree 中读取源码进行审查,原因:
47
+ 1. WebFetch 获取的是渲染后的 HTML 页面,不是真实源码;行号、缩进、上下文可能不一致
48
+ 2. 无法使用 `diff`、`gh pr diff` 等本地工具做精确对比
49
+ 3. 无法读取未被 PR 变更覆盖但被审查逻辑引用的上下游文件
50
+
51
+ 审查前你必须确保处于正确的本地环境:
52
+ - **Worktree 模式**:`cd .worktree/<task-slug>` 并确认 `pwd` 和当前分支
53
+ - **非 worktree 模式**:`git checkout feat/<task-slug>` 切换到目标分支
54
+
55
+ 获取变更的方式:
56
+ - 使用 `gh pr diff <pr-number>` 获取精确 diff
57
+ - 使用 `Read` 工具直接读取本地源码文件获取完整上下文
58
+ - 使用 `gh pr view <pr-number> --json ...` 获取 PR 元数据
41
59
  </system-reminder>
42
60
 
43
61
  ## 审查流程
@@ -45,9 +63,25 @@ permission:
45
63
  ### 1. 获取变更
46
64
  查阅 PR diff 和元数据,了解变更范围。
47
65
 
48
- ### 2. 双轴审查
66
+ ### 2. 三轴审查
49
67
  - **规范轴**:代码是否符合编码标准?参考代码气味基线
50
68
  - **规格轴**:代码是否忠实实现了 PRD/技术方案?
69
+ - **简单性轴**:是否存在不必要的复杂度?
70
+
71
+ #### 简单性轴(Simplicity)— 逐项检查
72
+
73
+ - [ ] 是否有"只被一处调用"的抽象层?(违反 YAGNI)
74
+ - [ ] 是否有超过 3 层的继承/包装?(违反 KISS)
75
+ - [ ] 是否有不必要的设计模式?(仅为了"看起来专业")
76
+ - [ ] 是否有空壳接口/抽象类?(无实际多态需求的抽象)
77
+ - [ ] 函数是否超过 20 行?(违反 SRP)
78
+ - [ ] 相同逻辑首次出现是否就被提取?(违反 DRY 3 次原则)
79
+ - [ ] 是否有当前 task 不需要的配置项/参数?(违反 YAGNI)
80
+
81
+ 发现上述问题标记为 `[SIMPLICITY]` 级别:
82
+ - 新增不必要的抽象层 → HIGH
83
+ - 为单一用例过度拆分 → MEDIUM
84
+ - 过早优化/预留扩展点 → LOW
51
85
 
52
86
  ### 3. 输出审查报告
53
87
  以结构化文本返回审查结论:
@@ -72,6 +106,9 @@ permission:
72
106
 
73
107
  ### 规格轴
74
108
  ...
109
+
110
+ ### 简单性轴
111
+ ...(标记 [SIMPLICITY] 级别发现)
75
112
  ```
76
113
 
77
114
  编排器将使用此报告执行 gh pr review。
@@ -80,3 +117,7 @@ permission:
80
117
  - 不修改代码
81
118
  - 每个问题必须给出具体的修复建议
82
119
  - 优先关注安全性和正确性
120
+
121
+ ## Project Context
122
+
123
+ 项目根 CONTEXT.md 是领域术语权威(消息中已自动注入内容与 digest)。遵循其中定义的领域术语;发现新术语或冲突时暂停提问。
@@ -1,4 +1,5 @@
1
1
  ---
2
- description: 编码实现 — 分支 → 编码 → 单测 → PR
2
+ description: 编码实现 — TDD 编码 + 单测 → PR
3
3
  ---
4
- 请加载 flow-code 技能,按其中定义的流程进行编码实现阶段。
4
+ 请加载 flow-code 技能,按其中定义的流程进行编码实现阶段(阶段契约见 stage-contract)。
5
+
@@ -1,4 +1,5 @@
1
1
  ---
2
- description: 技术设计 — 方案设计 → ADR
2
+ description: 技术设计 — 方案设计 → ADR → Planning PR
3
3
  ---
4
- 请加载 flow-design 技能,按其中定义的流程进行技术设计阶段。
4
+ 请加载 flow-design 技能,按其中定义的流程进行技术设计阶段(阶段契约见 stage-contract)。
5
+
@@ -1,4 +1,5 @@
1
1
  ---
2
- description: 发布 — 版本 → Changelog → Release → npm publish
2
+ description: 发布 — 版本 → Release PR → GitHub Actions 发布(仅人工)
3
3
  ---
4
- 请加载 flow-release 技能,按其中定义的流程进行发布阶段。
4
+ 请加载 flow-release 技能,按其中定义的流程进行发布阶段(阶段契约见 stage-contract)。
5
+
@@ -1,4 +1,5 @@
1
1
  ---
2
- description: 需求分析 — 访谈澄清 → PRD → GitHub Issue
2
+ description: 需求分析 — 访谈澄清 → PRD → Flow Record
3
3
  ---
4
- 请加载 flow-requirements 技能,按其中定义的流程进行需求分析阶段。
4
+ 请加载 flow-requirements 技能,按其中定义的流程进行需求分析阶段(阶段契约见 stage-contract)。
5
+
@@ -1,4 +1,5 @@
1
1
  ---
2
- description: 代码审查 — AI 审查 → 自动合并
2
+ description: 代码审查 — 双轴审查 → 自动合并
3
3
  ---
4
- 请加载 flow-review 技能,按其中定义的流程进行代码审查阶段。
4
+ 请加载 flow-review 技能,按其中定义的流程进行代码审查阶段(阶段契约见 stage-contract)。
5
+
@@ -1,4 +1,5 @@
1
1
  ---
2
- description: 初始化 — 检测 gh CLI → 配置 GitHub → 创建 docs/ 目录
2
+ description: 初始化 — 探测环境 → 生成 workflow → 确认 Profile
3
3
  ---
4
- 请加载 flow-setup 技能,按其中定义的流程进行初始化。
4
+ 请加载 flow-setup 技能,按其中定义的流程进行初始化(阶段契约见 stage-contract)。
5
+
@@ -1,4 +1,5 @@
1
1
  ---
2
2
  description: 任务分解 — DAG 拆分 → Sub Issues
3
3
  ---
4
- 请加载 flow-tasks 技能,按其中定义的流程进行任务分解阶段。
4
+ 请加载 flow-tasks 技能,按其中定义的流程进行任务分解阶段(阶段契约见 stage-contract)。
5
+
@@ -2,18 +2,19 @@
2
2
  全流程开发工作流已启用。
3
3
 
4
4
  可用命令:
5
- - /setup — 首次初始化(gh CLI + GitHub 远程 + docs/ 目录)
6
- - /requirements — 需求访谈 → PRD → GitHub Issue
7
- - /design — 技术方案 + ADR
5
+ - /setup — 初始化(探测环境 → 生成 workflow → 确认 Profile)
6
+ - /requirements — 需求澄清 → PRD → Flow Record
7
+ - /design — 技术方案 + ADR → Planning PR
8
8
  - /tasks — DAG 任务拆解 → Sub Issues
9
- - /code — 分支 → 编码 + 单测 → PR
10
- - /test — 触发 CI → 监控 → 汇报
9
+ - /code — 编码 + TDD(flow-tdd 协议)→ PR
11
10
  - /review — 双轴审查(规范+规格)→ 自动合并
12
- - /release — ⚠️ 手动阶段:版本 → Changelog → Release → npm publish
13
- - /handoff — 打包上下文,跨会话传递
11
+ - /release — ⚠️ 手动阶段:版本 → Release PR → GitHub Actions 发布
14
12
 
15
13
  推荐流程(顺序执行):
16
- setup → requirements → design → tasks → code → test → review → merge
14
+ setup → requirements → design → tasks → code → review → release
15
+
16
+ 阶段契约:每个 stage 的完成权威是 Flow Record body checklist(`- [x] <stage>`),
17
+ 阶段推进由 `flow_control{op:"stage-start"|"stage-complete"}` 维护,详见 stage-contract。
17
18
 
18
19
  ⚡ 自动化模式:需求确认后输入 @dev-lifecycle 自动执行流程(终点为自动合并,不包含 release)
19
20
  </EXTREMELY_IMPORTANT>