cc-devflow 4.5.4 → 4.5.5

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 (74) hide show
  1. package/.claude/skills/cc-act/CHANGELOG.md +6 -0
  2. package/.claude/skills/cc-act/PLAYBOOK.md +21 -5
  3. package/.claude/skills/cc-act/SKILL.md +21 -11
  4. package/.claude/skills/cc-act/assets/PR_BRIEF_TEMPLATE.md +10 -0
  5. package/.claude/skills/cc-act/assets/RELEASE_NOTE_TEMPLATE.md +8 -0
  6. package/.claude/skills/cc-act/references/closure-contract.md +3 -0
  7. package/.claude/skills/cc-act/scripts/cc-act-common.sh +48 -0
  8. package/.claude/skills/cc-act/scripts/generate-status-report.sh +3 -0
  9. package/.claude/skills/cc-act/scripts/render-pr-brief.sh +6 -0
  10. package/.claude/skills/cc-act/scripts/sync-act-docs.sh +13 -0
  11. package/.claude/skills/cc-do/CHANGELOG.md +6 -0
  12. package/.claude/skills/cc-do/PLAYBOOK.md +7 -6
  13. package/.claude/skills/cc-do/SKILL.md +27 -12
  14. package/.claude/skills/cc-do/references/execution-recovery.md +9 -0
  15. package/.claude/skills/cc-investigate/CHANGELOG.md +6 -0
  16. package/.claude/skills/cc-investigate/PLAYBOOK.md +5 -1
  17. package/.claude/skills/cc-investigate/SKILL.md +22 -5
  18. package/.claude/skills/cc-investigate/assets/ANALYSIS_TEMPLATE.md +14 -0
  19. package/.claude/skills/cc-investigate/assets/TASKS_TEMPLATE.md +1 -0
  20. package/.claude/skills/cc-investigate/assets/TASK_MANIFEST_TEMPLATE.json +9 -1
  21. package/.claude/skills/cc-investigate/references/investigation-contract.md +2 -0
  22. package/.claude/skills/cc-plan/CHANGELOG.md +23 -0
  23. package/.claude/skills/cc-plan/PLAYBOOK.md +38 -18
  24. package/.claude/skills/cc-plan/SKILL.md +81 -47
  25. package/.claude/skills/cc-plan/assets/DESIGN_TEMPLATE.md +68 -3
  26. package/.claude/skills/cc-plan/assets/TASKS_TEMPLATE.md +28 -5
  27. package/.claude/skills/cc-plan/assets/TASK_MANIFEST_TEMPLATE.json +54 -2
  28. package/.claude/skills/cc-plan/assets/TINY_DESIGN_TEMPLATE.md +44 -0
  29. package/.claude/skills/cc-plan/references/planning-contract.md +29 -15
  30. package/.claude/skills/cc-roadmap/CHANGELOG.md +12 -0
  31. package/.claude/skills/cc-roadmap/PLAYBOOK.md +15 -9
  32. package/.claude/skills/cc-roadmap/SKILL.md +22 -16
  33. package/.claude/skills/cc-roadmap/assets/BACKLOG_TEMPLATE.md +3 -1
  34. package/.claude/skills/cc-roadmap/assets/ROADMAP_TEMPLATE.md +11 -1
  35. package/.claude/skills/cc-roadmap/assets/TRACKING_TEMPLATE.json +57 -10
  36. package/.claude/skills/cc-roadmap/scripts/lib/roadmap-tracking/markdown.js +68 -3
  37. package/.claude/skills/cc-roadmap/scripts/lib/roadmap-tracking/schema.js +120 -0
  38. package/.claude/skills/cc-roadmap/scripts/lib/roadmap-tracking/store.js +25 -1
  39. package/.claude/skills/cc-roadmap/scripts/locate-roadmap-item.sh +13 -5
  40. package/.claude/skills/cc-roadmap/scripts/roadmap-tracking.js +3 -3
  41. package/.claude/skills/cc-roadmap/scripts/sync-roadmap-progress.sh +3 -3
  42. package/CHANGELOG.md +7 -0
  43. package/README.md +5 -5
  44. package/README.zh-CN.md +5 -5
  45. package/docs/CLAUDE.md +1 -1
  46. package/docs/examples/START-HERE.md +3 -3
  47. package/docs/examples/example-bindings.json +26 -9
  48. package/docs/examples/full-design-blocked/BACKLOG.md +4 -2
  49. package/docs/examples/full-design-blocked/README.md +4 -4
  50. package/docs/examples/full-design-blocked/ROADMAP.md +16 -2
  51. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/design.md +39 -1
  52. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json +41 -0
  53. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md +8 -1
  54. package/docs/examples/full-design-blocked/roadmap.json +123 -0
  55. package/docs/examples/local-handoff/BACKLOG.md +4 -2
  56. package/docs/examples/local-handoff/README.md +4 -4
  57. package/docs/examples/local-handoff/ROADMAP.md +16 -2
  58. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/design.md +19 -1
  59. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json +26 -0
  60. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/tasks.md +8 -1
  61. package/docs/examples/local-handoff/roadmap.json +121 -0
  62. package/docs/examples/pdca-loop/BACKLOG.md +4 -2
  63. package/docs/examples/pdca-loop/README.md +4 -4
  64. package/docs/examples/pdca-loop/ROADMAP.md +16 -2
  65. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/design.md +19 -1
  66. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json +22 -3
  67. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md +8 -1
  68. package/docs/examples/pdca-loop/roadmap.json +191 -0
  69. package/docs/examples/scripts/check-example-bindings.sh +7 -4
  70. package/docs/guides/getting-started.md +2 -2
  71. package/docs/guides/getting-started.zh-CN.md +2 -2
  72. package/lib/compiler/__tests__/skills-registry.test.js +17 -3
  73. package/lib/skill-runtime/__tests__/cli-bootstrap.integration.test.js +9 -1
  74. package/package.json +1 -1
@@ -6,7 +6,7 @@
6
6
 
7
7
  - Enter from: a bug, regression, or broken requirement whose root cause is still unclear.
8
8
  - Stay in: `cc-investigate` until `planning/analysis.md` and the repair handoff are both frozen.
9
- - Exit to: `cc-do` only after root cause and repair boundary are explicit in canonical artifacts.
9
+ - Exit to: `cc-do` only after root cause, repair boundary, and source roadmap progress are explicit in canonical artifacts.
10
10
  - Reroute to: `cc-plan` for scope/design truth changes, or `roadmap` for project-level priority decisions.
11
11
 
12
12
  ## Core Rules
@@ -22,6 +22,7 @@
22
22
  9. 多组件、深层调用、flaky 问题必须先补边界探针、反向追踪或条件等待证据。
23
23
  10. diagnose-only 只能输出根因、owner、风险和 next action,不能把未修复状态标成完成。
24
24
  11. workflow forensics 先分类 artifact / git / state / tool / permission / process failure,再决定是否进入修复。
25
+ 12. 退出前必须跑 Roadmap Sync Gate:`implementation drift`、`missing spec truth`、`roadmap mismatch` 三种结论都要让 source RM 的状态和 next action 跟上。
25
26
 
26
27
  ## Iron Law
27
28
 
@@ -36,6 +37,7 @@ root-cause contract 至少包含:稳定复现或缩小后的可验证症状、
36
37
  - `planning/analysis.md`
37
38
  - `planning/tasks.md`
38
39
  - `planning/task-manifest.json`
40
+ - `change-meta.json`
39
41
 
40
42
  ## Investigation Standard
41
43
 
@@ -159,6 +161,7 @@ root-cause contract 至少包含:稳定复现或缩小后的可验证症状、
159
161
  - 模板在 `assets/`
160
162
  - 调查契约在 `references/investigation-contract.md`
161
163
  - 需要分析骨架时用 `scripts/bootstrap-analysis.sh`
164
+ - Roadmap 回写使用 `../cc-roadmap/scripts/locate-roadmap-item.sh` 和 `../cc-roadmap/scripts/sync-roadmap-progress.sh`
162
165
 
163
166
  ## Exit Rule
164
167
 
@@ -170,3 +173,4 @@ root-cause contract 至少包含:稳定复现或缩小后的可验证症状、
170
173
  - 用什么命令证明修好了
171
174
 
172
175
  这次调查才算合格。
176
+ 如果 source RM 仍然停在旧 status、旧 progress 或旧 REQ/FIX 绑定,说明本次 `cc-investigate` 没有真正退出。
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: cc-investigate
3
- version: 1.2.1
3
+ version: 1.2.2
4
4
  description: "Use when a bug, regression, broken task, or unexpected behavior needs root-cause investigation, reproducible evidence, and a frozen repair handoff before cc-do resumes coding."
5
5
  triggers:
6
6
  - "帮我查这个 bug"
@@ -17,6 +17,8 @@ reads:
17
17
  - "assets/ANALYSIS_TEMPLATE.md"
18
18
  - "assets/TASKS_TEMPLATE.md"
19
19
  - "assets/TASK_MANIFEST_TEMPLATE.json"
20
+ - "../cc-roadmap/scripts/locate-roadmap-item.sh"
21
+ - "../cc-roadmap/scripts/sync-roadmap-progress.sh"
20
22
  writes:
21
23
  - path: "devflow/changes/<change-key>/planning/analysis.md"
22
24
  durability: "durable"
@@ -30,6 +32,8 @@ writes:
30
32
  - path: "devflow/changes/<change-key>/change-meta.json"
31
33
  durability: "durable"
32
34
  required: true
35
+ effects:
36
+ - source roadmap progress sync when investigation freezes, reroutes, or diagnoses a roadmap mismatch
33
37
  entry_gate:
34
38
  - "Read the current bug report, existing requirement artifacts, relevant code, tests, and recent history before forming any hypothesis."
35
39
  - "Use a FIX-<number>-<description> change key for new bug-fix investigations."
@@ -39,11 +43,13 @@ entry_gate:
39
43
  - "For multi-component, deep-stack, or flaky symptoms, record boundary probes, backward trace, or condition-wait evidence before declaring the root cause."
40
44
  - "For performance regressions, collect a baseline or profile signal before treating logs as evidence."
41
45
  - "Do not write production code here; this stage ends with planning/analysis.md plus executable repair tasks for cc-do."
46
+ - "Before exit, locate the source RM in `devflow/roadmap.json`, `devflow/ROADMAP.md`, optional `devflow/BACKLOG.md`, or legacy `devflow/roadmap-tracking.json`; the repair handoff must not leave roadmap progress stale."
42
47
  exit_criteria:
43
48
  - "planning/analysis.md records symptom, reproduction, evidence chain, boundary probes or backward trace when applicable, pattern analysis, tested hypotheses, confirmed root cause, and repair boundary."
44
49
  - "diagnose-only outcomes clearly stop before implementation while preserving root cause, owner, and next action."
45
50
  - "workflow forensics classify artifact, git, state, or tool failures before repair tasks are generated."
46
51
  - "planning/tasks.md and planning/task-manifest.json are explicit enough that cc-do can repair the bug without chat memory."
52
+ - "The source roadmap item has been synchronized with the investigation outcome, or `planning/analysis.md` and `change-meta.json` record why no roadmap update is valid."
47
53
  - "The honest next step is cc-do, cc-plan, or roadmap."
48
54
  reroutes:
49
55
  - when: "The issue is actually a new feature, a scope redesign, or a product decision instead of a bug investigation."
@@ -60,9 +66,9 @@ recovery_modes:
60
66
  when: "New execution evidence disproves the current root-cause contract or widens the suspected blast radius."
61
67
  action: "Reopen planning/analysis.md, update the evidence chain, and regenerate repair tasks only after the new root cause is frozen."
62
68
  tool_budget:
63
- read_files: 10
69
+ read_files: 11
64
70
  search_steps: 6
65
- shell_commands: 6
71
+ shell_commands: 7
66
72
  ---
67
73
 
68
74
  # CC-Investigate
@@ -151,7 +157,7 @@ NO REPAIR WITHOUT A FROZEN ROOT-CAUSE CONTRACT
151
157
 
152
158
  ## Harness Contract
153
159
 
154
- - Allowed actions: reproduce, collect evidence, trace code paths, test hypotheses, freeze root cause, and write only `planning/analysis.md`, `planning/tasks.md`, `planning/task-manifest.json`, and `change-meta.json`.
160
+ - Allowed actions: reproduce, collect evidence, trace code paths, test hypotheses, freeze root cause, write `planning/analysis.md`, `planning/tasks.md`, `planning/task-manifest.json`, and `change-meta.json`, then run the final roadmap progress sync for the source RM.
155
161
  - Forbidden actions: writing production code, disguising guesses as root cause, or skipping directly from symptoms to repair.
156
162
  - Required evidence: every root-cause claim must point to reproduction evidence, code facts, recent history, or explicit user confirmation.
157
163
  - Reroute rule: product/scope changes go to `cc-plan`; strategy questions go to `roadmap`; only confirmed repair handoff goes to `cc-do`.
@@ -233,7 +239,13 @@ diagnose-only 仍然写 `planning/analysis.md`,但 `planning/tasks.md` 只能
233
239
  - 写清正确测试缝隙:测试是否覆盖真实触发链;如果没有正确 seam,这本身就是需要记录的架构事实
234
240
  - 写明 affected module、allowed files、forbidden files、blast radius estimate;超过 5 个文件默认拆分或 reroute
235
241
  - 输出 `planning/tasks.md` + `planning/task-manifest.json` + `change-meta.json`
236
- 8. **Hand off**
242
+ 8. **Roadmap sync**
243
+ - 用 `locate-roadmap-item.sh` 定位 source RM;找不到时在 `analysis.md` 和 `change-meta.json.roadmapSync` 写 `no-source-rm`
244
+ - `implementation drift`:回写 source RM 为 `Repair planned` 或等价调查完成状态,绑定 `FIX-*`,进度保持在可执行修复前的真实百分比
245
+ - `missing spec truth`:回写 source RM 的 expected spec delta 或 follow-up,必要时 reroute 到 `cc-plan`
246
+ - `roadmap mismatch`:不要直接进入修复;先把 mismatch 写回 roadmap / backlog,下一步写 `roadmap` 或 `cc-plan`
247
+ - 使用 `sync-roadmap-progress.sh` 更新 `devflow/roadmap.json`,并重新生成 `devflow/ROADMAP.md` / `devflow/BACKLOG.md`
248
+ 9. **Hand off**
237
249
  - 下一步明确写成 `cc-do`
238
250
  - 如果 repair contract 越过当前 requirement,就 reroute 到 `cc-plan`
239
251
  - 如果是 diagnose-only,下一步写成 human action、monitoring、backlog、`cc-plan` 或 `cc-do`,但不得标记实现完成
@@ -430,6 +442,7 @@ flaky bug 的目标不是立刻 100% 复现,而是提高复现率直到可调
430
442
  - 正确测试缝隙写清楚,不用浅层测试制造假安全
431
443
  - `planning/tasks.md` 只包含修复任务,不夹带新需求
432
444
  - 如果应该回 `cc-plan`,理由写清楚,不假装还能继续 patch
445
+ - Roadmap Sync Gate 必须在 handoff 前闭合:source RM 绑定的 `FIX-*`、调查状态、spec diagnosis 和 next action 不能停留在聊天里。
433
446
 
434
447
  ## Bundled Resources
435
448
 
@@ -439,6 +452,8 @@ flaky bug 的目标不是立刻 100% 复现,而是提高复现率直到可调
439
452
  - 修复任务模板:`assets/TASKS_TEMPLATE.md`
440
453
  - manifest 模板:`assets/TASK_MANIFEST_TEMPLATE.json`
441
454
  - 分析骨架:`scripts/bootstrap-analysis.sh`
455
+ - Roadmap 定位:`../cc-roadmap/scripts/locate-roadmap-item.sh`
456
+ - Roadmap 回写:`../cc-roadmap/scripts/sync-roadmap-progress.sh`
442
457
 
443
458
  ## Working Rules
444
459
 
@@ -452,11 +467,13 @@ flaky bug 的目标不是立刻 100% 复现,而是提高复现率直到可调
452
467
  8. 外部调研必须先脱敏,调研结论必须回到本仓库证据验证。
453
468
  9. 修复触点超过 5 个文件时,默认先拆分或 reroute,不把大重构伪装成 bug fix。
454
469
  10. 好的调查不是“找了很多可能性”,而是把错误世界缩成一个可信的 repair contract。
470
+ 11. Roadmap 相关文件以 `devflow/roadmap.json` 为真相源,`devflow/ROADMAP.md` / `devflow/BACKLOG.md` 只是投影;不要再写旧式 `devflow/roadmap/*` 路径。
455
471
 
456
472
  ## Exit Criteria
457
473
 
458
474
  - `planning/analysis.md` 已冻结症状、复现、证据链、根因和修复边界
459
475
  - `planning/tasks.md` / `planning/task-manifest.json` 可直接交给 `cc-do`
476
+ - Roadmap Sync Gate 已闭合:source RM 已回写调查结果 / reroute,或 no-op reason 已落盘
460
477
  - 下一步唯一答案是 `cc-do`、`cc-plan` 或 `roadmap`
461
478
 
462
479
  ## Do Not
@@ -8,6 +8,7 @@
8
8
  - Output language:
9
9
  - Source roadmap item:
10
10
  - Source roadmap version:
11
+ - Roadmap sync status:
11
12
  - Incident / bug ID:
12
13
  - Primary capability:
13
14
  - Related capability specs:
@@ -181,6 +182,18 @@
181
182
  - Verification after fix:
182
183
  - Why this can enter `cc-do`:
183
184
 
185
+ ## Roadmap Sync Gate
186
+
187
+ - Source RM:
188
+ - Locate command:
189
+ - Sync command:
190
+ - Updated files: `devflow/roadmap.json`, `devflow/ROADMAP.md`, optional `devflow/BACKLOG.md`
191
+ - Spec diagnosis effect: `implementation drift` | `missing spec truth` | `roadmap mismatch`
192
+ - Status after sync: `Repair planned` | `Reroute to cc-plan` | `Reroute to roadmap` | `No source RM`
193
+ - Progress after sync:
194
+ - No-op reason:
195
+ - Blocking mismatch:
196
+
184
197
  ## Review Gate
185
198
 
186
199
  - Repro stable:
@@ -192,4 +205,5 @@
192
205
  - Diagnose-only verdict if applicable:
193
206
  - Correct test seam identified:
194
207
  - Repair scope still belongs to this requirement:
208
+ - Roadmap sync closed:
195
209
  - If not, reroute:
@@ -7,6 +7,7 @@
7
7
  - Investigate skill version:
8
8
  - Output language:
9
9
  - Source bug / incident:
10
+ - Roadmap sync status:
10
11
  - Change meta: `change-meta.json`
11
12
 
12
13
  ## Execution Handoff
@@ -9,6 +9,14 @@
9
9
  "itemId": "RM-001",
10
10
  "roadmapVersion": "1.0",
11
11
  "roadmapSkillVersion": "2.1.0",
12
+ "syncStatus": "pending",
13
+ "syncCommand": ".claude/skills/cc-roadmap/scripts/sync-roadmap-progress.sh --rm RM-001 --status \"Repair planned\" --req FIX-XXX --progress 0%",
14
+ "updatedFiles": [
15
+ "devflow/roadmap.json",
16
+ "devflow/ROADMAP.md",
17
+ "devflow/BACKLOG.md"
18
+ ],
19
+ "noOpReason": "",
12
20
  "sourceStage": "Stage 1",
13
21
  "successSignal": "The broken behavior is reproducible and then fixed without widening scope",
14
22
  "killSignal": "Repair requires reopening product scope or redesigning unrelated modules",
@@ -20,7 +28,7 @@
20
28
  ]
21
29
  },
22
30
  "planningMeta": {
23
- "ccInvestigateSkillVersion": "1.1.6",
31
+ "ccInvestigateSkillVersion": "1.2.2",
24
32
  "analysisVersion": "analysis.v1",
25
33
  "approvedAt": "2026-04-17T12:00:00.000Z",
26
34
  "approvedBy": "user",
@@ -30,12 +30,14 @@
30
30
  - root cause class
31
31
  - repair boundary
32
32
  - blast radius
33
+ - roadmap sync status
33
34
 
34
35
  ## Output Shape
35
36
 
36
37
  - `planning/analysis.md` 是人类真相源
37
38
  - `planning/tasks.md` 是修复 handoff
38
39
  - `planning/task-manifest.json` 是执行真相源
40
+ - `change-meta.json` 必须记录 roadmap sync status、spec diagnosis 和 no-op reason / updated files
39
41
 
40
42
  ## Root-Cause Hypothesis
41
43
 
@@ -1,5 +1,28 @@
1
1
  # CC-Plan Skill Changelog
2
2
 
3
+ ## v3.7.5 - 2026-05-06
4
+
5
+ - absorb the external TDD skill's interface-testability details into native planning: injected dependencies, returned results, concrete boundary operations, and small-interface/deep-implementation checks
6
+ - require Red task handoff to include spec-style test names, one logical behavior, public verification paths, and no bulk Red slices
7
+ - update design, tiny-design, tasks, and manifest templates with Green minimality guards and concrete refactor candidate fields
8
+
9
+ ## v3.7.4 - 2026-05-06
10
+
11
+ - clarify that `REQ-*` and `FIX-*` are independent numbering namespaces, so the same numeric suffix can exist under both prefixes
12
+ - require new `REQ` numbers to increment from existing `REQ-*` directories and new `FIX` numbers to increment from existing `FIX-*` directories
13
+
14
+ ## v3.7.3 - 2026-05-06
15
+
16
+ - add PRD-grade requirement brief fields to `cc-plan` design and execution handoff
17
+ - require user-perspective problem / solution, user stories, implementation decisions, testing decisions, out-of-scope, and further notes to live inside `planning/design.md` instead of a new `PRD.md`
18
+ - add `planningMeta.requirementBrief` to the manifest template and refresh example artifacts for `cc-plan@3.7.3`
19
+
20
+ ## v3.7.2 - 2026-05-06
21
+
22
+ - add a Roadmap Sync Gate so approved planning runs must reconcile the source RM before handing off to `cc-do`
23
+ - document `locate-roadmap-item.sh` and `sync-roadmap-progress.sh` as the canonical way to update `devflow/roadmap.json` and regenerate `ROADMAP.md` / `BACKLOG.md`
24
+ - update design, tiny-design, tasks, and manifest templates with roadmap sync status fields
25
+
3
26
  ## v3.7.1 - 2026-04-29
4
27
 
5
28
  - add ambiguity, review loop, source evidence, and external document conflict contracts
@@ -6,7 +6,7 @@
6
6
 
7
7
  - Enter from: an approved roadmap item, requirement, or bug that still needs design.
8
8
  - Stay in: `cc-plan` until the approved design and executable task breakdown are both frozen.
9
- - Exit to: `cc-do` only after `planning/design.md` is approved and `planning/tasks.md` plus `planning/task-manifest.json` are generated.
9
+ - Exit to: `cc-do` only after `planning/design.md` is approved, `planning/tasks.md` plus `planning/task-manifest.json` are generated, and the source roadmap progress is synchronized or explicitly marked no-op.
10
10
  - Reroute to: `roadmap` if the conversation expands back into project strategy.
11
11
 
12
12
  ## Core Rules
@@ -18,8 +18,8 @@
18
18
  5. 版本、来源、冻结决策必须可追踪。
19
19
  6. 机械决策自动落盘;taste decision 和 user challenge 必须显式交给用户拍板。
20
20
  7. 同 blast radius 内的完整边界优先做完,跨系统或无证据扩张才 defer。
21
- 8. 具体执行计划默认测试先行;没有 Red/Green/Refactor 链、公共测试 seam、行为断言、mock 边界或 TDD exception,不准交给 `cc-do`。
22
- 9. 新 change 目录必须使用 `REQ-<number>-<description>` 或 `FIX-<number>-<description>`;旧小写目录只读兼容,不再作为新输出。
21
+ 8. 具体执行计划默认测试先行;没有 Red/Green/Refactor 链、spec-style test name、公共测试 seam、行为断言、mock 边界或 TDD exception,不准交给 `cc-do`。
22
+ 9. 新 change 目录必须使用 `REQ-<number>-<description>` 或 `FIX-<number>-<description>`;`REQ` 和 `FIX` 各自递增自己的编号,跨前缀同号不是冲突;旧小写目录只读兼容,不再作为新输出。
23
23
  10. 原始需求跨多个独立子系统时,先拆回 roadmap / 多个 REQ/FIX;不要把一个大杂烩压成单个计划。
24
24
  11. `tiny-design` 仍然必须被批准,它只是短设计,不是跳过设计。
25
25
  12. 非 trivial 方案必须至少比较 `minimal viable` 和 `ideal architecture` 两种角色,小方案没有天然优先权。
@@ -29,12 +29,16 @@
29
29
  16. 先对齐项目语言和持久决策,再命名 capability、模块、接口、测试和任务;术语冲突必须显式暴露。
30
30
  17. 行为变更按 tracer bullet 垂直切片推进,不能把任务水平切成“先测试层、再服务层、最后 UI 层”。
31
31
  18. WHAT/WHY ambiguity、外部文档冲突、source trust boundary 和 review loop 上限必须在设计 gate 内闭合;模糊需求不能靠 `cc-do` 临场解释。
32
+ 19. 退出前必须跑 Roadmap Sync Gate:`devflow/roadmap.json` 是真相源,`devflow/ROADMAP.md` 和 `devflow/BACKLOG.md` 只是投影;source RM 存在就回写,找不到才记录 no-op。
33
+ 20. PRD 的结构要吸收进 `planning/design.md`:用户视角的问题和方案、完整 user stories、实现决策、测试决策、out-of-scope 和 further notes;不要默认创建独立 `PRD.md`。
34
+ 21. 接口可测性必须在计划阶段解决:依赖尽量注入,结果尽量可返回和断言,系统边界 adapter 拆成具体操作,避免让测试用条件分支 mock 一个万能 fetcher。
32
35
 
33
36
  ## Required Outputs
34
37
 
35
38
  - `planning/design.md`
36
39
  - `planning/tasks.md`
37
40
  - `planning/task-manifest.json`
41
+ - `change-meta.json`
38
42
 
39
43
  ## Local Kit
40
44
 
@@ -42,13 +46,14 @@
42
46
  - 任务结构解析在 `scripts/parse-task-dependencies.js`
43
47
  - 计划边界和 placeholder 红线见 `references/planning-contract.md`
44
48
  - 变更版本时同步 `CHANGELOG.md`,必要时用 `scripts/bump-skill-version.sh`
49
+ - Roadmap 回写使用 `../cc-roadmap/scripts/locate-roadmap-item.sh` 和 `../cc-roadmap/scripts/sync-roadmap-progress.sh`
45
50
 
46
51
  ## Planning Standard
47
52
 
48
53
  1. 一份 `planning/design.md` 讲清 clarification、方案、review 和 final gate。
49
54
  2. 一份 `planning/tasks.md` 讲清执行任务和 handoff。
50
55
  3. `planning/task-manifest.json` 只做机器真相源,不再重复人类叙事。
51
- 4. 先固定 canonical change key:需求用 `REQ-*`,修复用 `FIX-*`。
56
+ 4. 先固定 canonical change key:需求用 `REQ-*`,修复用 `FIX-*`,编号只在同前缀内取最大值后递增。
52
57
  5. 推荐方案获批前,不得生成 `planning/tasks.md`。
53
58
  6. `planning/tasks.md` 之前,`planning/design.md` 内的 review gate 必须闭合。
54
59
  7. 每个任务都要写清:
@@ -61,20 +66,25 @@
61
66
  - 完成证据
62
67
  8. `planning/tasks.md` 顶部必须写清 frozen decisions、commands to trust、do-not-re-decide。
63
68
  9. `planning/task-manifest.json` 必须是 `cc-do` 的真相源,而不是装饰文件。
64
- 10. `planning/design.md` 必须包含 `Existing Leverage`、`NOT in scope`、`Failure Modes`、`Test Diagram`,除非明确说明为什么不适用。
65
- 11. `planning/design.md` `planning/tasks.md` 必须包含 implementation surface map:文件、职责、归属理由、耦合风险。
66
- 12. `full-design` 必须包含 implementation decision horizon 和 error/rescue map;不适用时写清 N/A 理由。
67
- 13. `planning/design.md` 必须包含 assumptions preview、ambiguity gate、source trust boundary、external conflict buckets 和 bounded review loop。
68
- 14. artifactCLI、包、容器、文档入口必须在计划阶段写清分发和 discoverability,不准到 `cc-act` 才发现没人能用。
69
- 15. 行为变更任务必须拆成 `[TEST] -> [IMPL] -> [REFACTOR]` 或写明 TDD exception;不能用“实现并测试”混成一个任务。
70
- 16. 行为变更任务必须按一个 observable behavior 一条 tracer bullet 链组织,不能先批量写红灯再批量实现。
71
- 17. 回归测试不能 defer。修改既有行为且缺少覆盖时,必须先计划 regression test。
72
- 18. Red 任务必须验证公共接口上的行为,不验证私有函数、内部调用次数或临时数据结构。
73
- 19. Mock 只能放在系统边界;如果测试必须 mock 自己控制的模块,说明 seam 或接口设计还没压平。
74
- 20. 找不到正确 seam 时,先计划 exploratory spike 或设计修正,不能用假红灯冒充 TDD。
75
- 21. UI scope 要写 design completeness score 和 loading / empty / error / success / partial 状态。
76
- 22. developer/operator-facing scope 要写 target persona、time to first value、magic moment 和 install / run / debug / upgrade 风险。
77
- 23. Review gate 只拦会导致实现错误、执行卡住、范围越界、验证缺失的问题;文字偏好和 nice-to-have 只能作为 advisory。
69
+ 10. `change-meta.json` 必须记录 `roadmapSync`:status、updatedFiles、command、no-op reason 或阻塞原因。
70
+ 11. `planning/design.md` 必须包含 `Existing Leverage`、`NOT in scope`、`Failure Modes`、`Test Diagram`,除非明确说明为什么不适用。
71
+ 12. `planning/design.md` 或 `planning/tasks.md` 必须包含 implementation surface map:文件、职责、归属理由、耦合风险。
72
+ 13. `full-design` 必须包含 implementation decision horizon error/rescue map;不适用时写清 N/A 理由。
73
+ 14. `planning/design.md` 必须包含 assumptions previewambiguity gate、source trust boundary、external conflict buckets 和 bounded review loop。
74
+ 15. `planning/design.md` 必须包含 PRD-grade brief:Problem Statement、Solution、actors / user stories、Implementation Decisions、Testing Decisions、Out of Scope 和 Further Notes。
75
+ 16. artifact、CLI、包、容器、文档入口必须在计划阶段写清分发和 discoverability,不准到 `cc-act` 才发现没人能用。
76
+ 17. 行为变更任务必须拆成 `[TEST] -> [IMPL] -> [REFACTOR]` 或写明 TDD exception;不能用“实现并测试”混成一个任务。
77
+ 18. 行为变更任务必须按一个 observable behavior 一条 tracer bullet 链组织,不能先批量写红灯再批量实现。
78
+ 19. 回归测试不能 defer。修改既有行为且缺少覆盖时,必须先计划 regression test。
79
+ 20. Red 任务必须验证公共接口上的行为,不验证私有函数、内部调用次数或临时数据结构。
80
+ 21. Mock 只能放在系统边界;如果测试必须 mock 自己控制的模块,说明 seam 或接口设计还没压平。
81
+ 22. 找不到正确 seam 时,先计划 exploratory spike 或设计修正,不能用假红灯冒充 TDD。
82
+ 23. Red 任务必须说明 public verification path:从同一公共接口或用户可见路径读回结果。直接查 DB / 内部状态只在该边界本身就是被测对象时允许。
83
+ 24. Green 任务必须写 minimality guard:只做当前红灯要求的最少实现,不预铺未来测试尚未要求的分支、状态或 API。
84
+ 25. Refactor 任务必须列候选坏味道:重复、长方法、浅模块、feature envy、primitive obsession、命名、三层以上分支,以及新代码暴露出的旧代码问题。
85
+ 26. UI scope 要写 design completeness score 和 loading / empty / error / success / partial 状态。
86
+ 27. developer/operator-facing scope 要写 target persona、time to first value、magic moment 和 install / run / debug / upgrade 风险。
87
+ 28. Review gate 只拦会导致实现错误、执行卡住、范围越界、验证缺失的问题;文字偏好和 nice-to-have 只能作为 advisory。
78
88
 
79
89
  ## Approval Flow
80
90
 
@@ -89,6 +99,9 @@
89
99
  计划内的工程审查至少回答:
90
100
 
91
101
  - 现有代码已经解决了哪些子问题?
102
+ - 用户视角的问题和方案是否已经能独立发布成 issue / PRD brief?
103
+ - user stories 是否覆盖主要 actor、happy path、edge/recovery、operator/DX 行为,而不是只写一条 happy path?
104
+ - 实现决策和测试决策是否写成 durable 模块责任、接口契约和行为验收,而不是短期文件行号?
92
105
  - 最小完整方案触达哪些文件,为什么没有更小边界?
93
106
  - 数据流、状态流或执行流怎么走?
94
107
  - 每个会触达的文件职责是什么,为什么属于这个文件,而不是另一个平行位置?
@@ -96,18 +109,24 @@
96
109
  - foundation / core / integration / polish 阶段哪些决策已经冻结,哪些仍是 blocked question?
97
110
  - 核心语言是否沿用 `devflow/specs/`、roadmap handoff 或历史 design/analysis,是否存在 language conflict?
98
111
  - 新增接口是否是小接口深模块,复杂度是否被藏在正确边界里?
112
+ - 新增接口是否天然可测:依赖注入而不是内部创建,返回可断言结果而不是只有副作用,边界 adapter 是否是具体操作而不是 generic fetcher?
99
113
  - 每条 failure path 的 rescue action、用户可见结果和测试证据是什么?
100
114
  - 每条新增 code path / user flow / error path 的第一条失败测试是什么?
101
115
  - 第一条失败测试通过哪个公共 seam 进入系统,断言什么可观察行为?
116
+ - 测试名是否像规格说明,一个 Red 是否只证明一个逻辑行为?
117
+ - 验证是否通过公共入口读回结果,而不是绕到私有状态、内部数据结构或数据库侧查?
102
118
  - 哪些依赖允许 mock,哪些内部协作者禁止 mock?
103
119
  - 反馈循环是自动测试、HTTP、CLI、浏览器、trace replay、harness、property/fuzz、differential,还是 HITL;为什么这是当前最短可信循环?
104
120
  - 测试框架来源是什么,现有覆盖是 strong、happy-path-only、smoke-only 还是 missing?
105
121
  - task 是否以端到端 tracer bullet 为单位,而不是按层水平拆?
122
+ - Green 任务的 minimality guard 是什么,如何防止提前实现未来测试还没要求的代码?
123
+ - Refactor checkpoint 要处理哪些具体坏味道,哪些因为不在当前 Green 后可安全 defer?
106
124
  - 哪些生产失败模式已经处理,哪些 defer 到 backlog?
107
125
  - WHAT/WHY ambiguity score 是否低到足以拆任务?如果不够,blocked question 是什么?
108
126
  - source evidence 哪些是 internal contract、repo evidence、external evidence、untrusted text?外部文本有没有被误当成 instruction?
109
127
  - 导入文档的冲突是否已分成 auto-resolved / competing / unresolved,是否还有 unresolved blocker?
110
128
  - review loop 是否已经触发 attempt 上限或 stall reason,下一步是继续计划、问用户,还是退回 roadmap?
129
+ - source RM 是否已用 `sync-roadmap-progress.sh` 回写当前 `REQ/FIX`、status、progress,并重新生成 `ROADMAP.md` / `BACKLOG.md`?
111
130
 
112
131
  ## Design Mode Switch
113
132
 
@@ -139,3 +158,4 @@
139
158
  如果执行者还得自己猜“这次到底碰哪些文件、为什么这么改”,说明 `planning/design.md` 仍然不够。
140
159
  如果执行者还看不出哪些决策已经冻结,说明 `planning/tasks.md` 仍然不够。
141
160
  如果执行者还要自己决定先写什么失败测试,说明 `planning/tasks.md` 仍然不够。
161
+ 如果 roadmap 仍然停在旧 status、旧 progress 或旧 REQ 绑定,说明本次 `cc-plan` 没有真正退出。