@devcxl/opencode-cabbage 0.3.2 → 1.1.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 (179) hide show
  1. package/README.md +34 -19
  2. package/README.zh.md +34 -19
  3. package/assets/agents/dev-lifecycle.md +60 -49
  4. package/assets/agents/team/architect.md +8 -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 +6 -0
  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 +28 -79
  19. package/assets/skills/flow-release/SKILL.md +31 -51
  20. package/assets/skills/flow-requirements/SKILL.md +31 -196
  21. package/assets/skills/flow-review/SKILL.md +26 -123
  22. package/assets/skills/flow-setup/SKILL.md +40 -43
  23. package/assets/skills/flow-tasks/SKILL.md +23 -153
  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 +84 -0
  30. package/dist/kernel/context.js.map +1 -0
  31. package/dist/kernel/flow.d.ts +175 -0
  32. package/dist/kernel/flow.js +467 -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 +45 -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 +147 -0
  45. package/dist/kernel/profile.js.map +1 -0
  46. package/dist/kernel/records.d.ts +103 -0
  47. package/dist/kernel/records.js +240 -0
  48. package/dist/kernel/records.js.map +1 -0
  49. package/dist/kernel/release.d.ts +106 -0
  50. package/dist/kernel/release.js +241 -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 +82 -0
  54. package/dist/kernel/review.js.map +1 -0
  55. package/dist/kernel/session-index.d.ts +45 -0
  56. package/dist/kernel/session-index.js +136 -0
  57. package/dist/kernel/session-index.js.map +1 -0
  58. package/dist/kernel/setup.d.ts +95 -0
  59. package/dist/kernel/setup.js +401 -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 +213 -0
  65. package/dist/kernel/task.js +873 -0
  66. package/dist/kernel/task.js.map +1 -0
  67. package/dist/{flowrun → kernel/tdd}/adapter.d.ts +1 -1
  68. package/dist/{flowrun → kernel/tdd}/adapter.js +27 -26
  69. package/dist/kernel/tdd/adapter.js.map +1 -0
  70. package/dist/{flowrun → kernel/tdd}/digest.d.ts +2 -1
  71. package/dist/{flowrun → kernel/tdd}/digest.js +6 -4
  72. package/dist/kernel/tdd/digest.js.map +1 -0
  73. package/dist/{flowrun → kernel/tdd}/evaluator.d.ts +1 -1
  74. package/dist/{flowrun → kernel/tdd}/evaluator.js +1 -1
  75. package/dist/kernel/tdd/evaluator.js.map +1 -0
  76. package/dist/kernel/tdd/evidence.d.ts +42 -0
  77. package/dist/kernel/tdd/evidence.js +48 -0
  78. package/dist/kernel/tdd/evidence.js.map +1 -0
  79. package/dist/{flowrun → kernel/tdd}/state.d.ts +2 -2
  80. package/dist/{flowrun → kernel/tdd}/state.js +1 -1
  81. package/dist/kernel/tdd/state.js.map +1 -0
  82. package/dist/kernel/types.d.ts +180 -0
  83. package/dist/kernel/types.js +2 -0
  84. package/dist/kernel/types.js.map +1 -0
  85. package/dist/kernel/worktree.d.ts +45 -0
  86. package/dist/kernel/worktree.js +156 -0
  87. package/dist/kernel/worktree.js.map +1 -0
  88. package/dist/plugin/agents.d.ts +5 -17
  89. package/dist/plugin/agents.js +0 -23
  90. package/dist/plugin/agents.js.map +1 -1
  91. package/dist/plugin/flow-control.d.ts +91 -0
  92. package/dist/plugin/flow-control.js +287 -0
  93. package/dist/plugin/flow-control.js.map +1 -0
  94. package/dist/plugin/goal.d.ts +17 -46
  95. package/dist/plugin/goal.js +47 -117
  96. package/dist/plugin/goal.js.map +1 -1
  97. package/dist/plugin/prompt-lint.js +78 -6
  98. package/dist/plugin/prompt-lint.js.map +1 -1
  99. package/dist/plugin/release-control.d.ts +39 -0
  100. package/dist/plugin/release-control.js +343 -0
  101. package/dist/plugin/release-control.js.map +1 -0
  102. package/dist/plugin/server.d.ts +19 -0
  103. package/dist/plugin/server.js +198 -320
  104. package/dist/plugin/server.js.map +1 -1
  105. package/dist/plugin/setup-control.d.ts +59 -0
  106. package/dist/plugin/setup-control.js +111 -0
  107. package/dist/plugin/setup-control.js.map +1 -0
  108. package/dist/plugin/shell.d.ts +7 -34
  109. package/dist/plugin/shell.js +12 -137
  110. package/dist/plugin/shell.js.map +1 -1
  111. package/dist/plugin/skills.d.ts +1 -1
  112. package/dist/plugin/skills.js +1 -7
  113. package/dist/plugin/skills.js.map +1 -1
  114. package/dist/plugin/task-control.d.ts +90 -0
  115. package/dist/plugin/task-control.js +208 -0
  116. package/dist/plugin/task-control.js.map +1 -0
  117. package/dist/plugin/tdd-checkpoint.d.ts +128 -0
  118. package/dist/plugin/tdd-checkpoint.js +664 -0
  119. package/dist/plugin/tdd-checkpoint.js.map +1 -0
  120. package/dist/util/gh.d.ts +5 -0
  121. package/dist/util/gh.js +12 -0
  122. package/dist/util/gh.js.map +1 -1
  123. package/dist/util/paths.d.ts +6 -2
  124. package/dist/util/paths.js +15 -7
  125. package/dist/util/paths.js.map +1 -1
  126. package/package.json +4 -4
  127. package/assets/agents/team/backend.md +0 -100
  128. package/assets/agents/team/frontend.md +0 -98
  129. package/assets/commands/handoff.md +0 -4
  130. package/assets/commands/test.md +0 -4
  131. package/assets/context/CONTEXT.md +0 -41
  132. package/assets/skills/flow-handoff/SKILL.md +0 -76
  133. package/assets/skills/flow-test/SKILL.md +0 -75
  134. package/dist/flowrun/adapter.js.map +0 -1
  135. package/dist/flowrun/audit.d.ts +0 -5
  136. package/dist/flowrun/audit.js +0 -67
  137. package/dist/flowrun/audit.js.map +0 -1
  138. package/dist/flowrun/ci.d.ts +0 -64
  139. package/dist/flowrun/ci.js +0 -184
  140. package/dist/flowrun/ci.js.map +0 -1
  141. package/dist/flowrun/coverage.d.ts +0 -70
  142. package/dist/flowrun/coverage.js +0 -207
  143. package/dist/flowrun/coverage.js.map +0 -1
  144. package/dist/flowrun/digest.js.map +0 -1
  145. package/dist/flowrun/evaluator.js.map +0 -1
  146. package/dist/flowrun/gate.d.ts +0 -28
  147. package/dist/flowrun/gate.js +0 -139
  148. package/dist/flowrun/gate.js.map +0 -1
  149. package/dist/flowrun/github.d.ts +0 -24
  150. package/dist/flowrun/github.js +0 -154
  151. package/dist/flowrun/github.js.map +0 -1
  152. package/dist/flowrun/index.d.ts +0 -14
  153. package/dist/flowrun/index.js +0 -15
  154. package/dist/flowrun/index.js.map +0 -1
  155. package/dist/flowrun/merge.d.ts +0 -57
  156. package/dist/flowrun/merge.js +0 -180
  157. package/dist/flowrun/merge.js.map +0 -1
  158. package/dist/flowrun/migration.d.ts +0 -11
  159. package/dist/flowrun/migration.js +0 -276
  160. package/dist/flowrun/migration.js.map +0 -1
  161. package/dist/flowrun/resilience.d.ts +0 -18
  162. package/dist/flowrun/resilience.js +0 -80
  163. package/dist/flowrun/resilience.js.map +0 -1
  164. package/dist/flowrun/state.js.map +0 -1
  165. package/dist/flowrun/transitions.d.ts +0 -66
  166. package/dist/flowrun/transitions.js +0 -168
  167. package/dist/flowrun/transitions.js.map +0 -1
  168. package/dist/flowrun/types.d.ts +0 -356
  169. package/dist/flowrun/types.js +0 -21
  170. package/dist/flowrun/types.js.map +0 -1
  171. package/dist/flowrun/validator.d.ts +0 -19
  172. package/dist/flowrun/validator.js +0 -209
  173. package/dist/flowrun/validator.js.map +0 -1
  174. package/dist/plugin/broker.d.ts +0 -73
  175. package/dist/plugin/broker.js +0 -140
  176. package/dist/plugin/broker.js.map +0 -1
  177. package/dist/plugin/tdd-tool.d.ts +0 -62
  178. package/dist/plugin/tdd-tool.js +0 -336
  179. package/dist/plugin/tdd-tool.js.map +0 -1
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,62 +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,附带 worktree 路径和分支信息:
103
- ```bash
104
- # 委派时明确传递上下文
105
- gh pr view <pr-number> --json headRefName,number,title
106
- ```
107
- ⚠️ 审查提示中必须包含:
108
- - 本地 worktree 路径(`.worktree/<task-slug>`)或分支名(`feat/<task-slug>`)
109
- - PR 编号
110
- - 明确指令:**在 worktree/分支内本地审查,禁止 WebFetch 远程代码**
111
- 7. 使用 `gh pr review` 发布审查结果
112
- 8. CI 通过后使用 `gh pr merge` 合并 PR
113
- 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 合并 + 干净 → 自动;脏 → 警告)
114
127
 
115
128
  串行 task(有依赖关系)使用清理后重建策略:
116
- 上一 task 合并 → git worktree remove → git worktree add 新 task
129
+ 上一 task 合并 → 工具销毁 worktree → task_control{start-task} 新建
117
130
  ```
118
131
 
119
132
  约束:
120
- - 并行 task 使用不同分支名 `feat/<task-slug>`,避免 `git worktree add` 的分支冲突
133
+ - 并行 task 使用不同分支名(内核派生 `feat/<task-slug>`),避免 `git worktree add` 的分支冲突
121
134
  - 每个 agent 启动时显式 `cd .worktree/<task-slug>` 并验证 `pwd`
122
135
  - 分支冲突时暂停并提示用户手动清理
123
- - @backend / @frontend 不创建 PR、不操作 Issue — 编排器负责所有 GitHub 操作
136
+ - @developer 不 push、不创建 PR、不操作 Issue — 由 `task_control` 工具统一执行
137
+ - 高风险 git/gh 写操作(worktree 创建/销毁、push、PR、merge、Issue 关闭)一律通过生命周期工具,不直接执行
124
138
 
125
139
  ---
126
140
 
127
141
  ## Phase 4:合并确认
128
142
 
129
143
  确认全部 task PR 已合并:
130
- 1. 检查关联 PR 合并状态
131
- 2. 确认所有 Sub Issues 已自动关闭
132
- 3. 关闭 Parent Issue(通过 broker tools,不直接执行 `gh issue close`):
133
- ```bash
134
- gh issue close <parent-number> --comment "已完成。全部 Sub Issue 已通过 PR 合并关闭。"
135
- ```
136
- 注:此处的 `gh issue close` 由 broker tools 在隔离凭证下执行,编排器不直接调用。
137
- 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)
138
148
 
139
149
  ---
140
150
 
@@ -151,5 +161,6 @@ For each batch:
151
161
  | 场景 | 处理 |
152
162
  |------|------|
153
163
  | 任何步骤失败 | Pause flow,通知用户 |
154
- | 审查不通过 | 修复→重审,最多 9 轮 |
155
- | max continuation 耗尽 | Pause,用户介入 |
164
+ | Task 失败 | 自动重试最多 3 次,仍失败标记 blocked 并停止下游;其他独立 Tasks 继续 |
165
+ | 审查不通过 | 自动修复最多 3 轮;第 3 轮仍未通过则停止该 Task |
166
+ | 连续 3 次 continuation 无可验证进展 | Pause,请求用户介入 |
@@ -22,12 +22,15 @@ permission:
22
22
  "*": "deny"
23
23
  "docs/**": "allow"
24
24
  "assets/**": "allow"
25
+ # planning worktree 内交付物(.worktree/planning-<slug>/docs/** 相对主工作区)
26
+ ".worktree/**/docs/**": "allow"
27
+ ".worktree/**/assets/**": "allow"
25
28
  ---
26
29
 
27
30
  <system-reminder>
28
31
  你是团队中的 @architect,负责架构设计和技术方案。
29
32
 
30
- 你的输出直接指导 @backend 和 @frontend 实现。
33
+ 你的输出直接指导 @developer 实现。
31
34
 
32
35
  ## 工程原则(铁律)
33
36
 
@@ -79,3 +82,7 @@ permission:
79
82
  - 接口定义必须完整(请求参数、响应结构、错误码)
80
83
  - 每个任务应是垂直切片,单人 2-4 小时可完成
81
84
  - 标注方案中的假设和不确定项
85
+
86
+ ## Project Context
87
+
88
+ 项目根 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"
@@ -115,3 +117,7 @@ permission:
115
117
  - 不修改代码
116
118
  - 每个问题必须给出具体的修复建议
117
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>
@@ -0,0 +1,55 @@
1
+ # Stage Contract
2
+
3
+ Flow 阶段契约的单一来源。Primary(`dev-lifecycle`)与所有 stage 命令(`/setup /requirements /design /tasks /code /review /release`)共享本契约。
4
+
5
+ ## 阶段模型
6
+
7
+ | Stage | 阶段名(flow_control) | 产出 | 工具 |
8
+ |-------|----------------------|------|------|
9
+ | setup | —(前置初始化) | Profile 确认、workflow 就绪 | `setup_control` |
10
+ | requirements | `requirements` | PRD、Decision Map、Flow Record、CONTEXT.md 术语 | `flow_control{create-flow}` |
11
+ | design | `design` | 技术方案 + ADR(Planning Baseline) | `flow_control{planning-start, planning-pr}` |
12
+ | tasks | `tasks` | DAG 任务定义、Sub Issues | `task_control{create-task}` |
13
+ | code | `code` | 实现 + TDD evidence + PR | `task_control{start-task, submit-task}` |
14
+ | review | `review` | 审查报告、合并 | `task_control{submit-review, merge-task}` |
15
+ | release | —(手动) | 版本、Release PR、GitHub Actions 发布 | `release_control` |
16
+
17
+ ## 完成权威
18
+
19
+ - **阶段完成 = Flow Record(Parent Issue)body checklist 中的 `- [x] <stage>`**
20
+ - 阶段推进由 `flow_control{op:"stage-start"|"stage-complete"}` 维护:start 打 `cabbage:stage:<name>` label,complete 标记 checklist
21
+ - 已完成阶段重复 start/complete → 幂等通过
22
+
23
+ ## 门禁规则
24
+
25
+ | 场景 | 要求 |
26
+ |------|------|
27
+ | stage-start X | 前置阶段须已 completed(requirements 无前置) |
28
+ | stage-complete X | 前置阶段须已 completed;**requirements 完成需用户确认一次** |
29
+ | stage-start tasks(高风险 Flow,label `cabbage:risk:high`) | 需用户确认(`user_confirmed: true`) |
30
+ | 依赖 Task 启动 | 前置依赖 Task 已 merged、并行数 < 5 |
31
+
32
+ ## 阶段顺序与基线
33
+
34
+ ```
35
+ setup → requirements → design → tasks → code → review → (release 手动)
36
+ ```
37
+
38
+ - **Planning Baseline**:CONTEXT.md + PRD + Design + ADR 经单个 Planning PR 合入后,才允许创建 Task Record
39
+ - **requirements 基线**:需求阶段结束须用户确认一次
40
+ - **goal 最小化**:`goal({op:"create", parent_issue_number:<Flow Record 编号>})`,目标/验收从 Flow Record 读取
41
+
42
+ ## 各阶段关键约束
43
+
44
+ - **requirements**:渐进式澄清(Decision Map),一次只问一个问题;领域术语写入根 CONTEXT.md
45
+ - **design**:architect 在 planning worktree 产出文档;方案遵循工程原则(KISS/YAGNI/DRY/SRP)
46
+ - **tasks**:垂直切片、可独立验证、无循环依赖;标题用英文功能标题(内核派生 slug)
47
+ - **code**:TDD 协议唯一来源是 `flow-tdd` skill;证据经 `tdd_checkpoint` 提交,缺证据 PR 被拒
48
+ - **review**:双轴审查(规范 + 规格)+ TDD criterion coverage;reviewer 只读,写操作经 `task_control`
49
+ - **release**:人工流程;按 Profile 版本规则 + 项目 GitHub Actions release workflow(技术栈无关)
50
+
51
+ ## Prohibited Actions
52
+
53
+ - 不跳过前置门禁直接 stage-start/complete
54
+ - 不手工修改 Flow Record 的 stage checklist(由 flow_control 维护)
55
+ - 不绕过工具直接执行高风险 git/gh 写操作(push/PR/merge/worktree)