@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
@@ -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)
@@ -1,140 +1,38 @@
1
1
  ---
2
2
  name: flow-code
3
- description: 分支 → 编码 + 单测 → PR 提交(Worktree 模式)
3
+ description: 编码实现 — task_control 创建 worktree + TDD(flow-tdd 协议)
4
4
  ---
5
5
 
6
6
  # flow-code
7
7
 
8
- 认领 Sub Issue,创建 worktree,实现代码+单测,提交 PR。
8
+ 认领 Task Record(Sub Issue),在 worktree 内按 TDD 实现代码与单测。
9
+ worktree 创建、PR 提交由内核工具 `task_control` 完成,本 skill 不复制 shell 实现。
9
10
 
10
- ## Prerequisites
11
- - `/tasks` 已完成 → Sub Issues 就绪
12
- - 阅读 `docs/adr/` 确保实现与 ADR 兼容
13
- - 确认 task 的 `worktree_root` 字段(来自 task 文件 frontmatter)
14
-
15
- ## Workflow
16
-
17
- ### 1. 选择任务
18
- 选择一个可执行的 Sub Issue(前置依赖已满足)。
19
-
20
- ### 2. 检查 ADR 约束
21
- 阅读相关 ADR,确保实现方案不违反已有架构决策。
22
-
23
- ### 3. 创建/复用 Worktree
24
- ```bash
25
- # 探测默认分支
26
- BASE=$(gh repo view --json defaultBranchRef --jq '.defaultBranchRef.name' 2>/dev/null || git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's@^refs/remotes/origin/@@' || echo "main")
27
-
28
- # 检查和创建 worktree
29
- WORKTREE=".worktree/<task-slug>"
30
- BRANCH="feat/<task-slug>"
31
-
32
- if [ -d "$WORKTREE" ]; then
33
- # Worktree 目录已存在 → 验证一致性
34
- EXISTING=$(git -C "$WORKTREE" rev-parse --abbrev-ref HEAD 2>/dev/null)
35
- if [ "$EXISTING" != "$BRANCH" ]; then
36
- echo "ERROR: $WORKTREE exists but tracks branch '$EXISTING' (expected '$BRANCH')"
37
- exit 1
38
- fi
39
- echo "Worktree 已存在,复用:$WORKTREE"
40
- else
41
- # 检查分支是否已存在
42
- if git show-ref --verify "refs/heads/$BRANCH" >/dev/null 2>&1; then
43
- # 分支已存在,检查是否已合并
44
- if git branch --merged "$BASE" | grep -q "$BRANCH"; then
45
- git branch -D "$BRANCH"
46
- else
47
- echo "ERROR: 分支 '$BRANCH' 已存在,请先处理"
48
- exit 1
49
- fi
50
- fi
51
- # 创建 worktree + 分支
52
- git worktree add -b "$BRANCH" "$WORKTREE" "$BASE"
53
- fi
54
-
55
- # 进入 worktree
56
- cd "$WORKTREE"
57
- ```
58
- ### 4. 安装依赖
59
-
60
- ```bash
61
- npm install
62
- ```
63
-
64
- ### 5. 编码 + 单测
65
- ```bash
66
- # 实现代码 + 单元测试
67
- npm test
68
- ```
69
-
70
- #### TDD Advisory Protocol
71
-
72
- 编码阶段必须遵循 `flow-tdd` skill 定义的 TDD 流程。Agent 在编写任何功能代码前加载 `flow-tdd` skill。
73
-
74
- **TDD 检查点(commit 前自检):**
75
- - [ ] 每个功能的代码变更都有对应的测试
76
- - [ ] 测试在修改前是 RED(失败),修改后是 GREEN(通过)
77
- - [ ] 已完成 `final-regression`(全部测试通过)
78
- - [ ] 已完成 `final-verification`(对照 acceptance_criteria)
79
- - [ ] self-report 已写入 commit message 或 PR body
80
-
81
- > 引用:`flow-tdd` skill 是 TDD 协议的唯一来源,包含完整的 RED→GREEN cycle 状态机、abandon-cycle 规则和 final-regression/verification 流程。
82
-
83
- ### 6. 文档同步检查
84
- 完成编码后,逐项检查以下文档是否需要同步更新:
85
-
86
- ```
87
- ## 文档同步检查清单
88
- □ guides/quickstart.md — 安装方式或前置条件有变化吗?
89
- □ guides/configuration.md — 新增/修改了配置项吗?
90
- □ guides/usage.md — 命令或行为有变化吗?
91
- □ guides/architecture.md — 架构或流程有变化吗?
92
- □ docs/dev/guides/contributing.md — 开发流程有变化吗?
93
- ```
94
-
95
- - 逐项评估,无需修改的跳过
96
- - 需要修改的文档随代码一起提交到同一个 PR
97
- - PR body 中列出已同步的文档
98
-
99
- ### 7. 提交 PR
100
- ```bash
101
- # 在 worktree 内执行
102
-
103
- # 根据 task 预期文件和 git status 确定待暂存文件
104
- # Task 文件通常包含 frontmatter expected_files 字段
105
- git status --short
106
-
107
- # 显式暂存任务相关文件(不是 git add .)
108
- # 示例:git add src/plugin/goal.ts test/goal.test.ts assets/agents/team/reviewer.md
109
- git add <file1> <file2> ...
110
-
111
- # 提交前检查:确保无密钥、无超大文件、无任务范围外文件
112
- git diff --cached --name-only
113
-
114
- git commit -m "feat(<scope>): <title>"
115
- git push origin feat/<task-slug>
116
- mkdir -p docs/dev/handoff
117
- echo "Closes #<issue-num>" > docs/dev/handoff/pr-body.md
118
- gh pr create --title "<title>" --body-file docs/dev/handoff/pr-body.md
119
- ```
120
-
121
- ### 8. 更新开发文档
122
- 如涉及 API 变更 → 更新 `docs/dev/api/`
123
- 如涉及数据模型变更 → 更新 `docs/dev/db/`
11
+ ## 核心:调用 task_control + flow-tdd
124
12
 
125
- ## Output
126
- - Worktree 已创建/复用(`.worktree/<task-slug>/`)
127
- - 代码已推送
128
- - PR 已创建并关联 Sub Issue(PR body 含 `Closes #<issue-num>`)
129
- - 文档同步 checklist 已完成
130
- - 已同步的文档随 PR 提交
131
- - dev docs 已更新
13
+ 1. `task_control{op:"start-task", task_id:"<slug>", ...}` — 创建 worktree + 记录基线 + 冻结 TDD policy
14
+ 2. 加载 `flow-tdd` skill,按 Task 的 `tdd` 配置执行 RED→GREEN cycle
15
+ 3. 每个 stage 通过 `tdd_checkpoint` 提交证据(唯一证据源,缺证据的 PR 会被拒绝)
16
+ 4. 本地 `git add` + `git commit`(多次提交)
17
+ 5. **不 push、不创建 PR** — 由 primary 的 `task_control{op:"submit-task"}` 完成
18
+
19
+ ## 编码约束
20
+
21
+ - 只改 Task 相关的文件;遵循项目现有代码规范与分层结构
22
+ - 遵循工程原则(KISS/YAGNI/DRY/SRP/最小变更,单份引用仓库 AGENTS.md)
23
+ - 文档同步:涉及 guides/api/db 变更时随代码同 PR 更新
132
24
 
133
- ## 上下文管理
134
- 如果上下文窗口压力大,使用 `../flow-handoff` 打包进度。
25
+ ## TDD 引用
26
+
27
+ > `flow-tdd` skill 是 TDD 协议的唯一来源,包含完整的 RED→GREEN cycle 状态机、
28
+ > abandon-cycle 规则和 final-regression/verification 流程,以及 `tdd_checkpoint` 各 op 的调用方式。
29
+
30
+ ## Output
31
+ - Worktree 已创建(task_control)
32
+ - TDD evidence 已提交(tdd_checkpoint)
33
+ - 本地 commit 就绪(分支推送与 PR 由 task_control 完成)
135
34
 
136
35
  ## 后续
137
- - **/test** — 触发 CI E2E 测试
138
36
  - **/review** — 审查 PR
139
37
 
140
38
  ## Contract
@@ -143,33 +41,33 @@ gh pr create --title "<title>" --body-file docs/dev/handoff/pr-body.md
143
41
  由 `/code` 命令或 `@dev-lifecycle` Phase 3 触发。
144
42
 
145
43
  ### Inputs
146
- - Sub Issue 编号(来源:`/tasks` 产出)
147
- - task 文件 frontmatter 中的 `worktree_root`(来源:task 文件)
44
+ - Task Record(Sub Issue 编号与标题,来源:`/tasks` 产出)
148
45
 
149
46
  ### Preconditions
150
47
  - `/tasks` 已完成 → Sub Issues 就绪
151
- - 前置依赖任务已合并
48
+ - Planning Baseline 已合入;前置依赖任务已合并(task_control 门禁)
152
49
 
153
50
  ### Procedure
154
- 1. 选择依赖已满足的 Sub Issue
155
- 2. 创建或复用 Worktree(`git worktree add -b`)
156
- 3. 安装依赖 → 编码 + 单测 → commit + push
157
- 4. 编排器创建 PR
51
+ 1. 调用 `task_control{op:"start-task"}` 创建/复用 worktree
52
+ 2. 加载 `flow-tdd`,按 Task 的 tdd 配置执行 RED→GREEN cycle
53
+ 3. 通过 `tdd_checkpoint` 提交证据
54
+ 4. 本地 git add + commit(不 push)
55
+ 5. 交回 primary 调用 `task_control{op:"submit-task"}` 创建 PR
158
56
 
159
57
  ### Outputs
160
58
  - Worktree 已创建(`.worktree/<task-slug>/`)
161
- - 代码已推送
162
- - PR 已创建(Orchestrator 执行)
59
+ - TDD evidence(Task Record 单评论)
60
+ - 本地 commit
163
61
 
164
62
  ### Failure
165
- - Worktree 创建失败 → 检查分支冲突或目录残留
166
- - 测试失败 → 修复后重试
63
+ - worktree 创建失败 → 检查分支冲突或目录残留(task_control 报错)
64
+ - 测试失败 → 修复后重试(不跳过 RED)
167
65
 
168
66
  ### Idempotency
169
- - Worktree 已存在 → 复用
67
+ - worktree 已存在 → task_control 校验分支一致性后复用
170
68
  - 代码已提交 → 追加提交
171
69
 
172
70
  ### Prohibited Actions
173
- - Worker 不创建 PR、不操作 Issue
71
+ - 不 push、不创建 PR、不操作 Issue(由 task_control 完成)
174
72
  - 不使用 `git add .`
175
- - 不直接 push 到默认分支
73
+ - 不绕过 task_control 直接执行 worktree 创建 / PR 创建 / 分支推送
@@ -1,83 +1,40 @@
1
1
  ---
2
2
  name: flow-design
3
- description: 技术方案设计 → 方案文档 + ADR 输出
3
+ description: 技术方案设计 → 方案文档 + ADR(planning worktree + Planning PR)
4
4
  ---
5
5
 
6
6
  # flow-design
7
7
 
8
- 基于 PRD 进行技术方案设计,输出方案文档和 ADR。
8
+ 基于 PRD 进行技术方案设计,architect 在 planning worktree 产出 CONTEXT.md + PRD + Design + ADR,
9
+ 并由 `flow_control` 通过 Planning PR 合入形成 Planning Baseline。
9
10
 
10
- ## Prerequisites
11
- - `/requirements` 已完成 → `docs/prd/<title>.md` + Parent Issue 存在
12
- - 阅读 `../_context/CONTEXT.md` 了解领域术语
11
+ ## 核心:调用 flow_control
13
12
 
14
- ## Workflow
13
+ 1. `flow_control{op:"planning-start"}` — 创建 planning worktree `.worktree/planning-<slug>`(architect 在此写文档)
14
+ 2. 在 planning worktree 内产出:根 `CONTEXT.md` 术语更新 + `docs/prd/<title>.md` + `docs/dev/specs/<title>.md` + `docs/adr/<date>-<slug>.md`
15
+ 3. `flow_control{op:"planning-pr"}` — 对 planning worktree 变更创建 Planning PR(合并后 = Planning Baseline)
15
16
 
16
- ### 1. 阅读上下文
17
- - 阅读 PRD:`docs/prd/<title>.md`
18
- - 阅读已有 ADR:`docs/adr/`(确保设计不与已有架构决策冲突)
19
- - 阅读 `docs/dev/out-of-scope.md`(了解已排除范围)
17
+ worktree 创建与 Planning PR 创建均由内核工具完成,创建动作全部收敛到工具内。
20
18
 
21
- ### 2. 技术方案设计
22
- 输出到 `docs/dev/specs/<title>.md`,包含:
23
- - 技术选型与理由
24
- - 架构与数据流
25
- - API / 数据模型
26
- - 与已有的 ADR 的兼容性检查
19
+ ## 设计约束
27
20
 
28
- ### 3. 记录 ADR
29
- 为每个关键决策记录 ADR 到 `docs/adr/<YYYY-MM-DD>-<slug>.md`。
30
- ADR 格式参考 `_prompts/adr-format` 中的格式要求。
21
+ 技术方案必须遵循以下原则:
31
22
 
32
- ADR 至少记录:
33
- - 技术选型决策
34
- - 架构模式决策
35
- - 任何可能有争议的方案选择
23
+ 1. **首选最简单方案** — 如果两个方案都能满足 PRD,选更简单的
24
+ 2. **不引入不必要的新技术** — 不要因为"这个技术很流行"而使用它
25
+ 3. **方案自检** — 每个设计决策必须能回答"为什么不用更简单的替代方案?"
26
+ 4. **ADR 记录简化决策** — 如果选择复杂方案,必须在 ADR 中说明为何简单方案不够
36
27
 
37
- ### 4. 附到 GitHub Issue
38
- ```bash
39
- mkdir -p docs/dev/handoff
40
- cat > docs/dev/handoff/design-comment.md << 'EOF'
41
- ## 技术方案
28
+ ## CONTEXT.md 术语
42
29
 
43
- ...(摘要)
44
-
45
- ## ADR
46
-
47
- ...(ADR 列表)
48
-
49
- 完整文档:docs/dev/specs/<title>.md
50
- EOF
51
- gh issue comment <issue-number> --body-file docs/dev/handoff/design-comment.md
52
- ```
53
-
54
- ### 5. 提交文档(Planning PR)
55
- 设计文档和 ADR 通过 Planning PR 合入,确保分支保护下也能正常工作:
56
-
57
- ```bash
58
- # 探测默认分支
59
- BASE=$(gh repo view --json defaultBranchRef --jq '.defaultBranchRef.name' 2>/dev/null || echo "main")
60
-
61
- # 创建 planning 分支
62
- git checkout -b chore/plan-<slug> $BASE
63
- git add docs/dev/specs/<title>.md docs/adr/<date>-<slug>.md
64
- git commit -m "docs: <title> — 技术方案 + ADR"
65
- git push origin chore/plan-<slug>
66
-
67
- # 创建 PR
68
- gh pr create --title "docs: <title> — 技术方案 + ADR" \
69
- --body "Planning PR:完整技术方案和架构决策记录" \
70
- --base $BASE
71
-
72
- # 合并 PR 后切回 $BASE
73
- git checkout $BASE && git pull origin $BASE
74
- ```
30
+ 阅读项目根 CONTEXT.md(领域术语权威,已自动注入内容与 digest);
31
+ 设计中发现的新术语经用户确认后写入根 CONTEXT.md(术语权威)。
75
32
 
76
33
  ## Output
77
34
  - `docs/dev/specs/<title>.md` — 技术方案
78
35
  - `docs/adr/<date>-<slug>.md` — ADR 决议
79
- - Parent Issue 收到设计评论
80
- - 文档通过 Planning PR 合入默认分支
36
+ - 根 CONTEXT.md 术语更新(如发现新术语)
37
+ - Planning PR(由 flow_control 创建)
81
38
 
82
39
  ## 后续
83
40
  - **/tasks** — 基于设计方案拆解为 DAG 任务
@@ -89,31 +46,33 @@ git checkout $BASE && git pull origin $BASE
89
46
 
90
47
  ### Inputs
91
48
  - `docs/prd/<title>.md` — 上游 PRD(来源:requirements 阶段产出)
92
- - Parent Issue 编号(来源:Goal metadata 或 `/requirements` 阶段产出)
49
+ - Flow Record 编号(来源:requirements 阶段产出)
93
50
 
94
51
  ### Preconditions
95
- - `/requirements` 已完成 → `docs/prd/<title>.md` 存在
96
- - Parent Issue 存在
52
+ - `/requirements` 已完成 → PRD 与 Flow Record 存在
53
+ - requirements 基线已用户确认
97
54
 
98
55
  ### Procedure
99
- 1. 阅读 PRD、已有 ADR、Out of Scope
100
- 2. 输出技术方案到 `docs/dev/specs/<title>.md`
101
- 3. 记录 ADR 到 `docs/adr/<YYYY-MM-DD>-<slug>.md`
102
- 4. 附设计评论到 Parent Issue
103
- 5. 通过 Planning PR 提交文档
56
+ 1. 调用 `flow_control{op:"planning-start"}` 创建 planning worktree
57
+ 2. 阅读 PRD、已有 ADR、根 CONTEXT.md 术语
58
+ 3. 输出技术方案到 `docs/dev/specs/<title>.md`
59
+ 4. 记录 ADR 到 `docs/adr/<YYYY-MM-DD>-<slug>.md`
60
+ 5. 调用 `flow_control{op:"planning-pr"}` 创建 Planning PR
104
61
 
105
62
  ### Outputs
106
- - `docs/dev/specs/<title>.md` — 技术方案
107
- - `docs/adr/<date>-<slug>.md` — ADR 决议
63
+ - 技术方案 + ADR(planning worktree 内)
64
+ - Planning PR(Planning Baseline 的一部分)
108
65
 
109
66
  ### Failure
110
67
  - ADR 与已有决策冲突 → 记录冲突并标注
111
- - Planning PR 合并失败 → 通知用户手动处理
68
+ - Planning PR 创建失败 → 通知用户手动处理
112
69
 
113
70
  ### Idempotency
114
71
  - 技术方案已存在 → 读取并更新
115
72
  - ADR 已存在 → 不重复创建
73
+ - planning worktree 已存在 → 复用(工具校验分支一致性)
116
74
 
117
75
  ### Prohibited Actions
118
- - 不直接 push 到默认分支
76
+ - 不绕过 flow_control 手工创建 worktree / Planning PR(由内核工具完成)
119
77
  - 不跳过 ADR 兼容性检查
78
+ - 不直接 push 到默认分支
@@ -1,54 +1,34 @@
1
1
  ---
2
2
  name: flow-release
3
- description: 版本 → Changelog → Release → npm publish(仅人工)
3
+ description: 版本 → Release PR → GitHub Actions 发布(release_control,仅人工)
4
4
  ---
5
5
 
6
6
  # flow-release
7
7
 
8
- 版本号更新 → tag 推送 → Release 草稿 → 人工审核发布 → 自动 npm publish。
8
+ 通过 `release_control` 完成版本提议、Release PR、合并发布与发布监控。
9
+ 发布流程技术栈无关:按 Profile 的版本规则(version file / tag format / release workflow)执行,
10
+ 最终发布走项目自己的 GitHub Actions release workflow(不假设 npm 或任何特定生态)。
9
11
 
10
- ## Prerequisites
11
- - main 分支最新,所有 PR 已合并
12
- - CI 通过
12
+ ## 核心:调用 release_control
13
13
 
14
- ## Workflow
14
+ 1. `release_control{op:"propose-version"}` — 聚合上一 tag 后全部 commit,按 Profile 版本规则分类,输出提议版本
15
+ 2. `release_control{op:"open-release-pr"}` — 固定顺序:release branch → 按 Profile 写规则更新版本 → Release PR(人工确认后)
16
+ 3. `release_control{op:"merge-release-pr"}` — CI + 人工批准 → merge → SHA 校验 → 打 tag push
17
+ 4. `release_control{op:"monitor"}` — 轮询 GitHub Actions release workflow 至成功;瞬时失败 rerun;代码/配置缺陷 → Corrective Flow
15
18
 
16
- ### 1. 确认版本号
17
- 从 conventional commits 自动确定 semver bump:
18
- ```bash
19
- git log $(git describe --tags --abbrev=0)..HEAD --oneline
20
- ```
21
- - `fix:` → patch | `feat:` → minor | `BREAKING:` → major
19
+ ## 版本规则(Profile)
22
20
 
23
- ### 2. 更新版本号 → 打 tag → 推送
24
- ```bash
25
- npm version <major|minor|patch> --no-git-tag-version
26
- # 更新 CHANGELOG.md
27
- git commit -m "chore(release): v<version>"
28
- BASE=$(gh repo view --json defaultBranchRef --jq '.defaultBranchRef.name')
29
- git tag v<version>
30
- git push origin $BASE --tags
31
- ```
32
-
33
- ### 3. Release 草稿(自动)
34
- tag 推送触发 `.github/workflows/release-draft.yml`:
35
- - 构建 + 测试
36
- - 生成 Release 草稿(含自动 release notes)
37
-
38
- ### 4. 人工审核发布
39
- GitHub Releases 页面 → 检查 Release 草稿 → 点击 **Publish release**。
40
-
41
- 发布触发 `.github/workflows/release-publish.yml`:
42
- - 自动 `npm publish`(需要 `NPM_TOKEN` 仓库 Secret)
21
+ 版本分类依赖 AGENTS.md `## Project Profile` 的 `version bump rule`:
22
+ `breaking→major, feature→minor, fix→patch`(0.x breaking 也 major)。
23
+ 未分类 commit → release_control 要求用户分类后重试。
43
24
 
44
25
  ## Output
45
- - 版本已更新
46
- - tag 已推送
47
- - Release 草稿已创建(待人工发布)
48
- - 发布后自动推送 npm
26
+ - 提议版本
27
+ - Release PR(合并 + tag push)
28
+ - GitHub Actions release workflow 运行结果
49
29
 
50
30
  ## 后续
51
- 无需后续阶段。Flow 完成。
31
+ - 发布完成后 Flow 结束(goal-verify 独立验证 → complete-flow)
52
32
 
53
33
  ## Contract
54
34
 
@@ -56,31 +36,31 @@ GitHub Releases 页面 → 检查 Release 草稿 → 点击 **Publish release**
56
36
  由 `/release` 命令触发。**仅手动触发**,不包含在自动流程中。
57
37
 
58
38
  ### Inputs
59
- - 版本号类型(patch/minor/major,来源:用户指定)
39
+ - 用户对提议版本/Release 的确认
60
40
 
61
41
  ### Preconditions
62
42
  - 所有 PR 已合并
63
- - 默认分支最新
64
- - 所有测试通过
43
+ - 默认分支最新且 CI 通过
44
+ - Release Profile 已确认(AGENTS.md Project Profile)
65
45
 
66
46
  ### Procedure
67
- 1. 确认版本号
68
- 2. 更新版本(npm version)
69
- 3. 生成 Changelog
70
- 4. 创建 git tag → push → 触发 Release 草稿
71
- 5. 人工审核发布 → npm publish
47
+ 1. 调用 `release_control{op:"propose-version"}` 确定版本
48
+ 2. 调用 `release_control{op:"open-release-pr"}` 创建 Release PR(人工确认)
49
+ 3. 调用 `release_control{op:"merge-release-pr"}` 合并 + 打 tag
50
+ 4. 调用 `release_control{op:"monitor"}` 监控发布 workflow
72
51
 
73
52
  ### Outputs
74
- - GitHub Release
75
- - npm 包已发布
53
+ - GitHub Release(经项目 release workflow)
54
+ - tag 已推送
76
55
 
77
56
  ### Failure
78
- - npm publish 失败 → 检查 npm 认证
57
+ - 发布 workflow 失败 → monitor 识别瞬时失败并 rerun;代码/配置缺陷 → Corrective Flow + 新版本
79
58
  - tag 已存在 → 提示版本冲突
80
59
 
81
60
  ### Idempotency
82
- - 相同版本号 → 阻止
61
+ - 相同版本号 → 阻止重复发布
83
62
 
84
63
  ### Prohibited Actions
85
- - 不在自动模式中执行
86
- - 不跳过测试直接发布
64
+ - 不在自动模式中执行(release 为人工流程)
65
+ - 不假设 npm 或其他特定技术生态(按 Profile 规则 + 项目 GitHub Actions release workflow)
66
+ - 不跳过测试/CI 直接发布
@@ -1,82 +1,84 @@
1
1
  ---
2
2
  name: flow-requirements
3
- description: 需求访谈 → PRD 输出 → GitHub Issue 创建
3
+ description: 渐进式需求澄清 → PRD → Flow Record(flow_control)
4
4
  ---
5
5
 
6
6
  # flow-requirements
7
7
 
8
- 通过采访式对话澄清需求,输出 PRD 文档并创建 GitHub Issue。
8
+ 通过渐进式需求澄清将松散想法凝固为 PRD,并用 `flow_control{op:"create-flow"}` 创建 Flow Record(Parent Issue)。
9
9
 
10
- ## Prerequisites
11
- - `/setup` 已完成(gh CLI 可用)
10
+ ## 核心理念:战争迷雾(Fog of War)
12
11
 
13
- ## Workflow
12
+ 需求澄清不是一次性穷举——只定义**前沿**(当前可见的待决策问题),逐个解决,每解决一个迷雾推开一层,直到所有关键决策已定,PRD 自然成形。
14
13
 
15
- ### 1. 需求访谈
16
- 按参考文档 `references/interview-guide.md` 进行深度盘问,澄清:
17
- - 用户故事与业务价值
18
- - 边界条件
19
- - 验收标准
20
- - 技术约束
21
- - 排除范围(记录到 out-of-scope)
14
+ ## Phase A:创建决策映射
22
15
 
23
- ### 2. 输出 PRD
24
- 整理为 PRD 文档保存到 `docs/prd/<title>.md`。
16
+ 在 `docs/dev/decision-map.md` 创建映射,追踪所有待决策问题(Ticket 含 slug / Blocked by / Status / Type / Question / Answer)。初始只创建 2–4 个前沿 Ticket,不试图穷举。
25
17
 
26
- 参考 `_prompts/prd-format` 中的格式要求。
18
+ Ticket 类型:Grilling(与用户对话澄清)/ Research(查文档)/ Prototype(低保真验证)。
27
19
 
28
- ### 3. 记录 Out-of-Scope
29
- 将在访谈中明确排除的需求记入 `docs/dev/out-of-scope.md`:
30
- - 便于后续回顾为什么某些功能不做
31
- - 避免重复讨论
20
+ ## Phase B:渐进式解决
32
21
 
33
- ### 4. 创建 Parent GitHub Issue
34
- ```bash
35
- mkdir -p tmp
36
- gh issue create \
37
- --title "<PRD Title>" \
38
- --label "enhancement" \
39
- --body-file docs/prd/<title>.md
40
- ```
22
+ - 每次只处理**一个**已解除阻塞的 Ticket;处理前 Claim(`Status: in-progress`)
23
+ - Grilling 型:**一次只问一个问题**,每个问题给出推荐答案,沿决策树分支深入
24
+ - 追问技巧:"然后呢?"(第 3 层才触及本质)、"如果不做这个会怎样?"(验证优先级)、"谁来判断做对了?"(明确验收)
25
+ - 解决后 `Status: resolved` 并记录 Answer;检查是否有新问题浮现 → 追加 Ticket
26
+ - 循环直到所有前沿 Ticket 已 resolved
27
+
28
+ ## Phase C:凝固为 PRD
29
+
30
+ 从 Decision Map 的 Answer 提炼为 PRD,保存到 `docs/prd/<title>.md`。
31
+
32
+ ## Phase D:创建 Flow Record
33
+
34
+ 调用 `flow_control{op:"create-flow", title:"<英文功能标题>"}` 创建 Draft Parent Issue(Flow Record)。
35
+ 内核负责 slug 派生与校验、Profile 门禁、双 session 检查、legacy 检测——创建动作全部收敛到工具内。
36
+
37
+ ## CONTEXT.md 术语发现
38
+
39
+ 需求澄清中发现的领域术语写入根 `CONTEXT.md`(术语权威)。发现新术语或冲突时暂停提问,用户确认后由 `flow_control` 更新。
41
40
 
42
41
  ## Output
43
- - `docs/prd/<title>.md` — PRD 文档
44
- - `docs/dev/out-of-scope.md` — 排除范围记录
45
- - GitHub Parent Issue 已创建
42
+ - `docs/dev/decision-map.md` — 决策映射(PRD 生成后可删除)
43
+ - `docs/prd/<title>.md` — PRD
44
+ - Flow Record(Parent Issue,由 flow_control 创建)
46
45
 
47
46
  ## 下一阶段
48
- - **/design** — 基于此 PRD 进行技术设计
47
+ - **/design** — 基于 PRD 进行技术设计
49
48
 
50
49
  ## Contract
51
50
 
52
51
  ### Trigger
53
- 由 `/requirements` 命令或 `@dev-lifecycle` Phase 0 触发。
52
+ 由 `/requirements` 命令或 `@dev-lifecycle` 触发。
54
53
 
55
54
  ### Inputs
56
55
  - 用户提供的功能描述(来自消息文本)
57
56
 
58
57
  ### Preconditions
59
- - `/setup` 已完成(gh CLI 可用,docs 目录就绪)
58
+ - `/setup` 已完成(Profile 已确认,gh CLI 可用)
60
59
 
61
60
  ### Procedure
62
- 1. 按 interview-guide 进行需求访谈
63
- 2. 输出 PRD 到 `docs/prd/<title>.md`
64
- 3. 记录 Out of Scope 到 `docs/dev/out-of-scope.md`
65
- 4. 创建 Parent GitHub Issue
61
+ 1. 锚定核心问题,创建 Decision Map
62
+ 2. 渐进式解决所有前沿 Ticket(Grilling / Research / Prototype)
63
+ 3. 迷雾推至足够远 → 凝固为 PRD
64
+ 4. 记录领域术语到 CONTEXT.md
65
+ 5. 调用 `flow_control{op:"create-flow"}` 创建 Flow Record
66
66
 
67
67
  ### Outputs
68
- - `docs/prd/<title>.md` — PRD 文档
69
- - `docs/dev/out-of-scope.md` — 排除范围记录
70
- - GitHub Parent Issue
68
+ - `docs/dev/decision-map.md`
69
+ - `docs/prd/<title>.md`
70
+ - Flow Record(Parent Issue)
71
71
 
72
72
  ### Failure
73
- - gh CLI 不可用 → 提示先执行 /setup
73
+ - Profile 未确认 → flow_control 返回 `SETUP_REQUIRED`,提示先执行 `/setup`
74
74
  - Issue 创建失败 → 记录错误,不阻塞 PRD 写入
75
75
 
76
76
  ### Idempotency
77
- - 如果 PRD 文件已存在 → 更新而非覆盖
78
- - 如果 Parent Issue 已创建 → 追加评论而非重复创建
77
+ - Decision Map 已存在 → 从中断点继续
78
+ - PRD 文件已存在 → 更新而非覆盖
79
+ - Flow Record 已创建 → 绑定已有 Issue(`parent_issue_number`)而非重复创建
79
80
 
80
81
  ### Prohibited Actions
81
- - 不跳过访谈直接输出 PRD
82
- - 不省略 Out of Scope 记录
82
+ - 不跳过 Phase A 和 Phase B 直接输出 PRD
83
+ - 不一次问多个问题
84
+ - 不绕过 flow_control 手工创建 Issue(由 create-flow 完成)