cc-devflow 4.5.10 → 4.5.12

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 (187) hide show
  1. package/.claude/skills/cc-act/CHANGELOG.md +23 -0
  2. package/.claude/skills/cc-act/PLAYBOOK.md +17 -269
  3. package/.claude/skills/cc-act/SKILL.md +38 -418
  4. package/.claude/skills/cc-act/assets/PROJECT_POSTMORTEM_INDEX_TEMPLATE.md +2 -13
  5. package/.claude/skills/cc-act/assets/PROJECT_POSTMORTEM_TEMPLATE.md +1 -9
  6. package/.claude/skills/cc-act/assets/PR_BRIEF_TEMPLATE.md +21 -177
  7. package/.claude/skills/cc-act/references/closure-contract.md +12 -63
  8. package/.claude/skills/cc-act/references/git-commit-guidelines.md +5 -5
  9. package/.claude/skills/cc-act/scripts/cc-act-common.sh +5 -322
  10. package/.claude/skills/cc-act/scripts/detect-ship-target.sh +11 -2
  11. package/.claude/skills/cc-act/scripts/inspect-git-index.sh +58 -0
  12. package/.claude/skills/cc-act/scripts/render-pr-brief.sh +40 -440
  13. package/.claude/skills/cc-act/scripts/verify-act-gate.sh +10 -50
  14. package/.claude/skills/cc-check/CHANGELOG.md +24 -0
  15. package/.claude/skills/cc-check/PLAYBOOK.md +19 -273
  16. package/.claude/skills/cc-check/SKILL.md +33 -454
  17. package/.claude/skills/cc-check/references/review-contract.md +12 -147
  18. package/.claude/skills/cc-dev/CHANGELOG.md +20 -0
  19. package/.claude/skills/cc-dev/PLAYBOOK.md +1 -1
  20. package/.claude/skills/cc-dev/SKILL.md +52 -130
  21. package/.claude/skills/cc-dev/scripts/resolve-cc-devflow.sh +181 -0
  22. package/.claude/skills/cc-do/CHANGELOG.md +17 -0
  23. package/.claude/skills/cc-do/PLAYBOOK.md +19 -113
  24. package/.claude/skills/cc-do/SKILL.md +39 -236
  25. package/.claude/skills/cc-do/references/execution-recovery.md +15 -109
  26. package/.claude/skills/cc-do/scripts/cc-do-common.sh +5 -57
  27. package/.claude/skills/cc-do/scripts/check-task-status.sh +35 -65
  28. package/.claude/skills/cc-do/scripts/mark-task-complete.sh +9 -46
  29. package/.claude/skills/cc-do/scripts/select-ready-tasks.sh +29 -97
  30. package/.claude/skills/cc-investigate/CHANGELOG.md +23 -0
  31. package/.claude/skills/cc-investigate/PLAYBOOK.md +20 -180
  32. package/.claude/skills/cc-investigate/SKILL.md +65 -513
  33. package/.claude/skills/cc-investigate/assets/TASKS_TEMPLATE.md +48 -95
  34. package/.claude/skills/cc-investigate/references/investigation-contract.md +14 -217
  35. package/.claude/skills/cc-next/CHANGELOG.md +6 -0
  36. package/.claude/skills/cc-next/PLAYBOOK.md +12 -8
  37. package/.claude/skills/cc-next/SKILL.md +34 -140
  38. package/.claude/skills/cc-plan/CHANGELOG.md +29 -0
  39. package/.claude/skills/cc-plan/PLAYBOOK.md +22 -161
  40. package/.claude/skills/cc-plan/SKILL.md +47 -640
  41. package/.claude/skills/cc-plan/assets/TASKS_TEMPLATE.md +30 -225
  42. package/.claude/skills/cc-plan/references/planning-contract.md +24 -160
  43. package/.claude/skills/cc-plan/scripts/next-change-key.sh +8 -44
  44. package/.claude/skills/cc-plan/scripts/parse-task-dependencies.js +2 -2
  45. package/.claude/skills/cc-plan/scripts/validate-scope.sh +1 -1
  46. package/.claude/skills/cc-pr-land/SKILL.md +14 -114
  47. package/.claude/skills/cc-pr-review/CHANGELOG.md +4 -0
  48. package/.claude/skills/cc-pr-review/SKILL.md +20 -103
  49. package/.claude/skills/cc-review/CHANGELOG.md +17 -0
  50. package/.claude/skills/cc-review/PLAYBOOK.md +13 -86
  51. package/.claude/skills/cc-review/SKILL.md +53 -241
  52. package/.claude/skills/cc-review/references/e2e-and-plugin-verification.md +2 -2
  53. package/.claude/skills/cc-review/references/implementation-review-branch.md +7 -147
  54. package/.claude/skills/cc-review/references/plan-review-branch.md +5 -147
  55. package/.claude/skills/cc-review/references/review-methods.md +10 -218
  56. package/.claude/skills/cc-review/scripts/collect-review-context.sh +4 -63
  57. package/.claude/skills/cc-roadmap/PLAYBOOK.md +1 -1
  58. package/.claude/skills/cc-roadmap/SKILL.md +3 -3
  59. package/.claude/skills/cc-simplify/CHANGELOG.md +7 -0
  60. package/.claude/skills/cc-simplify/SKILL.md +26 -21
  61. package/.claude/skills/cc-spec-init/PLAYBOOK.md +12 -48
  62. package/.claude/skills/cc-spec-init/SKILL.md +29 -132
  63. package/.claude/skills/cc-spec-init/references/spec-contract.md +8 -17
  64. package/CHANGELOG.md +27 -0
  65. package/README.md +5 -3
  66. package/README.zh-CN.md +5 -3
  67. package/bin/cc-devflow-cli.js +20 -260
  68. package/bin/cc-devflow.js +44 -7
  69. package/docs/commands/README.md +1 -1
  70. package/docs/commands/README.zh-CN.md +1 -1
  71. package/docs/examples/README.md +1 -1
  72. package/docs/examples/START-HERE.md +14 -14
  73. package/docs/examples/example-bindings.json +11 -11
  74. package/docs/examples/full-design-blocked/README.md +4 -6
  75. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/{planning/tasks.md → task.md} +20 -15
  76. package/docs/examples/local-handoff/README.md +8 -11
  77. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/handoff/pr-brief.md +31 -0
  78. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/{planning/tasks.md → task.md} +18 -13
  79. package/docs/examples/pdca-loop/README.md +6 -9
  80. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/handoff/pr-brief.md +9 -11
  81. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/{planning/tasks.md → task.md} +18 -13
  82. package/docs/examples/scripts/check-example-bindings.sh +11 -62
  83. package/docs/guides/artifact-contract.md +10 -36
  84. package/docs/guides/getting-started.md +8 -7
  85. package/docs/guides/getting-started.zh-CN.md +8 -7
  86. package/docs/guides/minimize-artifacts.md +16 -116
  87. package/docs/guides/project-postmortem.md +14 -71
  88. package/lib/compiler/__tests__/skills-registry.test.js +9 -8
  89. package/lib/compiler/resource-copier.js +29 -0
  90. package/lib/skill-runtime/__tests__/archive-change.test.js +2 -2
  91. package/lib/skill-runtime/__tests__/benchmark-skills.test.js +109 -0
  92. package/lib/skill-runtime/__tests__/cli-bootstrap.integration.test.js +14 -4
  93. package/lib/skill-runtime/errors.js +3 -3
  94. package/lib/skill-runtime/index.js +5 -23
  95. package/lib/skill-runtime/paths.js +5 -52
  96. package/lib/skill-runtime/query-registry.js +4 -4
  97. package/lib/skill-runtime/query.js +89 -201
  98. package/lib/skill-runtime/store.js +4 -40
  99. package/lib/skill-runtime/trace.js +2 -2
  100. package/package.json +5 -7
  101. package/.claude/skills/cc-act/assets/PROJECT_POSTMORTEM_PRINCIPLES_TEMPLATE.md +0 -29
  102. package/.claude/skills/cc-act/assets/RELEASE_NOTE_TEMPLATE.md +0 -54
  103. package/.claude/skills/cc-act/scripts/generate-status-report.sh +0 -92
  104. package/.claude/skills/cc-act/scripts/sync-act-docs.sh +0 -355
  105. package/.claude/skills/cc-check/assets/REPORT_CARD_TEMPLATE.json +0 -234
  106. package/.claude/skills/cc-check/scripts/render-report-card.js +0 -438
  107. package/.claude/skills/cc-check/scripts/verify-gate.sh +0 -85
  108. package/.claude/skills/cc-do/scripts/build-task-context.sh +0 -175
  109. package/.claude/skills/cc-do/scripts/record-review-decision.sh +0 -88
  110. package/.claude/skills/cc-do/scripts/recover-workflow.sh +0 -82
  111. package/.claude/skills/cc-do/scripts/run-problem-analysis.sh +0 -70
  112. package/.claude/skills/cc-do/scripts/verify-task-gates.sh +0 -109
  113. package/.claude/skills/cc-do/scripts/write-task-checkpoint.sh +0 -92
  114. package/.claude/skills/cc-investigate/assets/TASK_MANIFEST_TEMPLATE.json +0 -225
  115. package/.claude/skills/cc-plan/assets/TASK_MANIFEST_TEMPLATE.json +0 -179
  116. package/.claude/skills/cc-spec-init/assets/CHANGE_META_TEMPLATE.json +0 -28
  117. package/.claude/skills/cc-spec-init/scripts/validate-spec-links.sh +0 -45
  118. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/design.md +0 -234
  119. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json +0 -488
  120. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/review/report-card.json +0 -189
  121. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/handoff/resume-index.md +0 -39
  122. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/handoff/status.md +0 -29
  123. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/design.md +0 -123
  124. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json +0 -292
  125. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/review/report-card.json +0 -136
  126. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/handoff/status.md +0 -29
  127. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/design.md +0 -124
  128. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json +0 -292
  129. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/review/report-card.json +0 -136
  130. package/docs/get-shit-done-strategy-audit.md +0 -518
  131. package/docs/skill-runtime-migration.md +0 -46
  132. package/lib/skill-runtime/__tests__/approve.test.js +0 -92
  133. package/lib/skill-runtime/__tests__/autopilot.test.js +0 -253
  134. package/lib/skill-runtime/__tests__/benchmark-artifacts.test.js +0 -165
  135. package/lib/skill-runtime/__tests__/delegation.test.js +0 -97
  136. package/lib/skill-runtime/__tests__/dispatch.test.js +0 -237
  137. package/lib/skill-runtime/__tests__/intent.test.js +0 -203
  138. package/lib/skill-runtime/__tests__/lifecycle.test.js +0 -169
  139. package/lib/skill-runtime/__tests__/planner.tdd.test.js +0 -331
  140. package/lib/skill-runtime/__tests__/prepare-pr.test.js +0 -126
  141. package/lib/skill-runtime/__tests__/query.test.js +0 -860
  142. package/lib/skill-runtime/__tests__/readiness.test.js +0 -53
  143. package/lib/skill-runtime/__tests__/release.test.js +0 -85
  144. package/lib/skill-runtime/__tests__/review-check-integration.test.js +0 -148
  145. package/lib/skill-runtime/__tests__/review-records.test.js +0 -619
  146. package/lib/skill-runtime/__tests__/runtime.integration.test.js +0 -351
  147. package/lib/skill-runtime/__tests__/schemas.test.js +0 -337
  148. package/lib/skill-runtime/__tests__/task-contract-migrate.test.js +0 -137
  149. package/lib/skill-runtime/__tests__/task-contract.test.js +0 -783
  150. package/lib/skill-runtime/__tests__/team-state.test.js +0 -51
  151. package/lib/skill-runtime/__tests__/verify-artifacts.test.js +0 -203
  152. package/lib/skill-runtime/__tests__/worker-run.test.js +0 -275
  153. package/lib/skill-runtime/__tests__/worker.test.js +0 -56
  154. package/lib/skill-runtime/__tests__/workflow-context-legacy-fallback.test.js +0 -31
  155. package/lib/skill-runtime/__tests__/workflow-context.test.js +0 -98
  156. package/lib/skill-runtime/artifacts.js +0 -88
  157. package/lib/skill-runtime/context-index.js +0 -545
  158. package/lib/skill-runtime/delegation.js +0 -533
  159. package/lib/skill-runtime/intent.js +0 -309
  160. package/lib/skill-runtime/lifecycle.js +0 -294
  161. package/lib/skill-runtime/operations/CLAUDE.md +0 -19
  162. package/lib/skill-runtime/operations/approve.js +0 -81
  163. package/lib/skill-runtime/operations/autopilot-core.js +0 -337
  164. package/lib/skill-runtime/operations/autopilot-execution.js +0 -307
  165. package/lib/skill-runtime/operations/autopilot-shared.js +0 -48
  166. package/lib/skill-runtime/operations/autopilot.js +0 -163
  167. package/lib/skill-runtime/operations/dispatch.js +0 -416
  168. package/lib/skill-runtime/operations/init.js +0 -60
  169. package/lib/skill-runtime/operations/janitor.js +0 -61
  170. package/lib/skill-runtime/operations/plan.js +0 -59
  171. package/lib/skill-runtime/operations/prepare-pr.js +0 -25
  172. package/lib/skill-runtime/operations/release.js +0 -99
  173. package/lib/skill-runtime/operations/resume.js +0 -126
  174. package/lib/skill-runtime/operations/review-records.js +0 -265
  175. package/lib/skill-runtime/operations/snapshot.js +0 -45
  176. package/lib/skill-runtime/operations/task-contract.js +0 -524
  177. package/lib/skill-runtime/operations/verify.js +0 -170
  178. package/lib/skill-runtime/operations/worker-run.js +0 -531
  179. package/lib/skill-runtime/operations/worker.js +0 -33
  180. package/lib/skill-runtime/planner.js +0 -539
  181. package/lib/skill-runtime/readiness.js +0 -84
  182. package/lib/skill-runtime/review-records.js +0 -123
  183. package/lib/skill-runtime/review.js +0 -855
  184. package/lib/skill-runtime/schemas.js +0 -746
  185. package/lib/skill-runtime/task-contract.js +0 -187
  186. package/lib/skill-runtime/team-state.js +0 -122
  187. package/lib/skill-runtime/workflow-context.js +0 -748
@@ -4,7 +4,7 @@
4
4
 
5
5
  - Example version: `1.0.0`
6
6
  - Last reviewed: `2026-04-17`
7
- - Bound skills: `cc-roadmap@5.3.0`, `cc-plan@3.9.0`, `cc-do@1.6.7`, `cc-check@1.11.1`, `cc-act@1.8.8`
7
+ - Bound skills: `cc-roadmap@5.3.0`, `cc-plan@3.10.1`, `cc-do@1.7.1`, `cc-check@1.12.1`, `cc-act@1.9.1`
8
8
 
9
9
  This example shows verified work that is **ready to move forward**, but `cc-act` still chooses `local-handoff`.
10
10
 
@@ -32,25 +32,22 @@ But the current environment is local-only:
32
32
 
33
33
  1. Why `cc-check` is `pass`
34
34
  2. Why `cc-act` still does not choose `create-pr`
35
- 3. How `resume-index.md` becomes the only final handoff file
35
+ 3. How `handoff/pr-brief.md` becomes the only final handoff file
36
36
 
37
37
  ## Artifact Map
38
38
 
39
39
  - `roadmap.json` (editable roadmap truth)
40
40
  - `ROADMAP.md` (generated view)
41
41
  - `BACKLOG.md` (deprecated projection)
42
- - `changes/REQ-003-audit-log-export/planning/tasks.md`
43
- - `changes/REQ-003-audit-log-export/planning/design.md` (legacy fallback sample)
44
- - `changes/REQ-003-audit-log-export/planning/task-manifest.json`
45
- - `changes/REQ-003-audit-log-export/review/report-card.json`
46
- - `changes/REQ-003-audit-log-export/handoff/resume-index.md`
42
+ - `changes/REQ-003-audit-log-export/task.md`
43
+ - `changes/REQ-003-audit-log-export/handoff/pr-brief.md`
47
44
 
48
- ## Why There Is No `pr-brief.md`
45
+ ## Why There Is A Local `pr-brief.md`
49
46
 
50
47
  This sample intentionally chooses `local-handoff`.
51
48
 
52
- That mode needs:
49
+ That mode still needs one durable PR/handoff file:
53
50
 
54
- - `resume-index.md`
51
+ - `handoff/pr-brief.md`
55
52
 
56
- It does **not** require a PR brief yet.
53
+ It does **not** require process files.
@@ -0,0 +1,31 @@
1
+ # PR Brief
2
+
3
+ ## Change
4
+
5
+ - Change key: REQ-003-audit-log-export
6
+ - Branch: REQ/003-audit-log-export
7
+
8
+ ## Task Summary
9
+
10
+ - Done: audit log export handoff example
11
+
12
+ ## Validation
13
+
14
+ - Command: example binding check
15
+ - Result: pass
16
+
17
+ ## PR Body Draft
18
+
19
+ ```markdown
20
+ ## Summary
21
+
22
+ - Demonstrates local handoff with `task.md` and this PR brief.
23
+
24
+ ## Validation
25
+
26
+ - Example files are checked by `docs/examples/scripts/check-example-bindings.sh`.
27
+
28
+ ## Risk / Rollback
29
+
30
+ - Documentation-only example.
31
+ ```
@@ -4,7 +4,7 @@
4
4
 
5
5
  - Requirement version: `REQ-003.v1`
6
6
  - Design version: `design.v1`
7
- - CC-Plan skill version: `3.9.0`
7
+ - CC-Plan skill version: `3.10.1`
8
8
  - Work branch: `REQ/003-audit-log-export`
9
9
  - Source roadmap item: `RM-020`
10
10
  - Source roadmap version: `roadmap.v3`
@@ -42,20 +42,25 @@
42
42
  ClaudeCode / Codex 执行本计划时,必须把本文件当成任务模板合同,而不是普通 TODO 列表。
43
43
 
44
44
  - Template source: `assets/TASKS_TEMPLATE.md`
45
- - Context index first: run `cc-devflow query workflow-context --change <changeId> --change-key <changeKey> --cwd <repo-root> --data-only --no-trace --compact` before opening deep sections; use `packetOnly` plus `mustNotForget` first, verify `sourceHashes`, open `defaultOpen` refs only when needed, and reserve `deepOpen` for matching `openWhen.conditions`.
46
- - Task selection: read `planning/task-manifest.json.currentTaskId`; if empty, run the ready-task selector before choosing work.
45
+ - CLI resolver: all workflow commands must run through `.claude/skills/cc-dev/scripts/resolve-cc-devflow.sh` or `.codex/skills/cc-dev/scripts/resolve-cc-devflow.sh`; if it cannot prove `query workflow-context` and `next-change-key`, stop blocked.
46
+ - Context first: run resolved CLI `query workflow-context --change <changeId> --change-key <changeKey> --cwd <repo-root> --data-only --no-trace --compact` before opening deep sections.
47
+ - Task selection: use `scripts/select-ready-tasks.sh --tasks devflow/changes/<change-key>/task.md`.
47
48
  - Task block rule: read the full task block before coding; title-only execution is invalid.
48
- - Completion rule: after verification and review gates pass, run the completion script; do not manually edit checkbox, status, or `currentTaskId`.
49
- - Completion failure: if the script fails, fix the missing review / dependency evidence and rerun it. Do not bypass it by editing JSON or Markdown.
49
+ - Completion rule: after verification and review gates pass, run `scripts/mark-task-complete.sh --tasks devflow/changes/<change-key>/task.md --task <task-id>`.
50
+ - Runtime file ban: do not generate process files beyond this `task.md`.
50
51
 
51
52
  ```bash
52
- cc-devflow query workflow-context --change <changeId> --change-key <changeKey> --cwd <repo-root> --data-only --no-trace --compact
53
- SCRIPT_ROOT=".claude/skills/cc-do/scripts"
53
+ DEVFLOW=".claude/skills/cc-dev/scripts/resolve-cc-devflow.sh"
54
+ if [[ ! -f "$DEVFLOW" && -f ".codex/skills/cc-dev/scripts/resolve-cc-devflow.sh" ]]; then
55
+ DEVFLOW=".codex/skills/cc-dev/scripts/resolve-cc-devflow.sh"
56
+ fi
57
+ bash "$DEVFLOW" require query workflow-context next-change-key
58
+ bash "$DEVFLOW" query workflow-context --change <changeId> --change-key <changeKey> --cwd <repo-root> --data-only --no-trace --compactSCRIPT_ROOT=".claude/skills/cc-do/scripts"
54
59
  if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then
55
60
  SCRIPT_ROOT=".codex/skills/cc-do/scripts"
56
61
  fi
57
- bash "$SCRIPT_ROOT/select-ready-tasks.sh" --manifest docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json
58
- bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json --tasks docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/tasks.md --task <task-id>
62
+ bash "$SCRIPT_ROOT/select-ready-tasks.sh" --manifest docs/examples/local-handoff/changes/REQ-003-audit-log-export/
63
+ bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/local-handoff/changes/REQ-003-audit-log-export/ --tasks docs/examples/local-handoff/changes/REQ-003-audit-log-export/task.md --task <task-id>
59
64
  ```
60
65
 
61
66
  ## Phase 1: Foundation
@@ -67,7 +72,7 @@ bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/local-handoff
67
72
  Read first: `design.md`, `src/admin/AuditSummaryPanel.tsx`
68
73
  Verification: `npm test -- src/admin/AuditSummaryPanel.test.tsx`
69
74
  Evidence: failing output
70
- Completion: after verification evidence and required review records exist, run `SCRIPT_ROOT=".claude/skills/cc-do/scripts"; if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then SCRIPT_ROOT=".codex/skills/cc-do/scripts"; fi; bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json --tasks docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/tasks.md --task T001`; do not hand-edit status.
75
+ Completion: after verification evidence and required review records exist, run `SCRIPT_ROOT=".claude/skills/cc-do/scripts"; if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then SCRIPT_ROOT=".codex/skills/cc-do/scripts"; fi; bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/local-handoff/changes/REQ-003-audit-log-export/ --tasks docs/examples/local-handoff/changes/REQ-003-audit-log-export/task.md --task T001`; do not hand-edit status.
71
76
  Test seam: admin audit panel UI behavior
72
77
  Public verification path: Run the audit summary panel test and observe CSV export through visible rows
73
78
  Allowed mocks: download / blob boundary
@@ -80,7 +85,7 @@ bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/local-handoff
80
85
  Read first: `design.md`, `src/admin/AuditSummaryPanel.test.tsx`
81
86
  Verification: `npm test -- src/admin/AuditSummaryPanel.test.tsx`
82
87
  Evidence: passing output + Git diff
83
- Completion: after verification evidence and required review records exist, run `SCRIPT_ROOT=".claude/skills/cc-do/scripts"; if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then SCRIPT_ROOT=".codex/skills/cc-do/scripts"; fi; bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json --tasks docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/tasks.md --task T002`; do not hand-edit status.
88
+ Completion: after verification evidence and required review records exist, run `SCRIPT_ROOT=".claude/skills/cc-do/scripts"; if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then SCRIPT_ROOT=".codex/skills/cc-do/scripts"; fi; bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/local-handoff/changes/REQ-003-audit-log-export/ --tasks docs/examples/local-handoff/changes/REQ-003-audit-log-export/task.md --task T002`; do not hand-edit status.
84
89
  Test seam: admin audit panel UI behavior
85
90
  Public verification path: Run the audit summary panel test and observe CSV export through visible rows
86
91
  Allowed mocks: download / blob boundary
@@ -92,12 +97,12 @@ bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/local-handoff
92
97
  Goal: 为 `cc-check` 和 `cc-act` 留下这次导出改动的真实证据。
93
98
  TDD phase: evidence
94
99
  Files: `src/admin/AuditSummaryPanel.tsx`, `src/admin/AuditSummaryPanel.test.tsx`
95
- Read first: `tasks.md`, `task-manifest.json`
100
+ Read first: `task.md`
96
101
  Verification:
97
102
  - `npm test -- src/admin/AuditSummaryPanel.test.tsx`
98
103
  - `npm run lint -- src/admin/AuditSummaryPanel.tsx`
99
104
  Evidence: passing output + clean lint output
100
- Completion: after verification evidence and required review records exist, run `SCRIPT_ROOT=".claude/skills/cc-do/scripts"; if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then SCRIPT_ROOT=".codex/skills/cc-do/scripts"; fi; bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json --tasks docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/tasks.md --task T003`; do not hand-edit status.
105
+ Completion: after verification evidence and required review records exist, run `SCRIPT_ROOT=".claude/skills/cc-do/scripts"; if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then SCRIPT_ROOT=".codex/skills/cc-do/scripts"; fi; bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/local-handoff/changes/REQ-003-audit-log-export/ --tasks docs/examples/local-handoff/changes/REQ-003-audit-log-export/task.md --task T003`; do not hand-edit status.
101
106
  Test seam: admin audit panel UI behavior
102
107
  Public verification path: Run the audit summary panel test and observe CSV export through visible rows
103
108
  Allowed mocks: download / blob boundary
@@ -4,7 +4,7 @@
4
4
 
5
5
  - Example version: `1.0.0`
6
6
  - Last reviewed: `2026-04-17`
7
- - Bound skills: `cc-roadmap@5.3.0`, `cc-plan@3.9.0`, `cc-do@1.6.7`, `cc-check@1.11.1`, `cc-act@1.8.8`
7
+ - Bound skills: `cc-roadmap@5.3.0`, `cc-plan@3.10.1`, `cc-do@1.7.1`, `cc-check@1.12.1`, `cc-act@1.9.1`
8
8
 
9
9
  This folder shows one minimal but complete `cc-roadmap -> cc-plan -> cc-do -> cc-check -> cc-act` loop.
10
10
 
@@ -13,7 +13,7 @@ The example is intentionally small:
13
13
  - product context is fake
14
14
  - requirement scope is real enough to feel concrete
15
15
  - the chosen ship mode is `create-pr`
16
- - optional artifacts such as `release-note.md` are intentionally omitted when the mode does not require them
16
+ - process files are intentionally omitted
17
17
 
18
18
  ## Scenario
19
19
 
@@ -30,13 +30,10 @@ The sample requirement is:
30
30
  - `roadmap.json`: editable roadmap truth that renders the generated views
31
31
  - `ROADMAP.md`: generated view of what `cc-roadmap` decided and why this item is first
32
32
  - `BACKLOG.md`: deprecated capability-aware projection that makes `RM-001` ready for `cc-plan`
33
- - `changes/REQ-001-copy-invite-link/planning/tasks.md`: executable task handoff
34
- - `changes/REQ-001-copy-invite-link/planning/design.md`: legacy fallback sample for the approved tiny design
35
- - `changes/REQ-001-copy-invite-link/planning/task-manifest.json`: machine-readable execution truth
36
- - `changes/REQ-001-copy-invite-link/review/report-card.json`: `cc-check` proof and verdict
33
+ - `changes/REQ-001-copy-invite-link/task.md`: executable task handoff
37
34
  - `changes/REQ-001-copy-invite-link/handoff/pr-brief.md`: ship-ready PR handoff
38
35
 
39
- ## Why There Is No `release-note.md`
36
+ ## Why There Are No Process Files
40
37
 
41
38
  This sample chooses `create-pr`.
42
39
 
@@ -45,7 +42,7 @@ That mode needs:
45
42
  - `pr-brief.md`
46
43
  - synced docs if behavior changed
47
44
 
48
- It does **not** need a public release note yet, so the example intentionally stops there.
45
+ It does **not** need process files, so the example intentionally stops there.
49
46
 
50
47
  ## What To Look For
51
48
 
@@ -55,4 +52,4 @@ When reading the sample, check whether you can answer these in under a minute:
55
52
  2. Why does the requirement stay `tiny-design` instead of `full-design`?
56
53
  3. Which task proved the missing behavior first?
57
54
  4. What fresh evidence let `cc-check` say `pass`?
58
- 5. Why does `cc-act` choose `create-pr` and omit `release-note.md`?
55
+ 5. Why does `cc-act` choose `create-pr` and omit process files?
@@ -28,7 +28,7 @@
28
28
 
29
29
  - Reviewed base SHA: `example-base`
30
30
  - Reviewed head SHA: `example-head`
31
- - Review packet: `planning/tasks.md#Contract Summary`; `planning/tasks.md#T001-T003`
31
+ - Review packet: `task.md#Contract Summary`; `task.md#T001-T003`
32
32
  - Finding triage: no findings
33
33
  - QA / claim evidence: `qa=pass`, `tests-pass=pass`, `requirements-met=pass`
34
34
 
@@ -41,14 +41,14 @@
41
41
  - Browser QA: `skipped`, example fixture uses targeted component evidence instead of a live browser
42
42
  - Failure ownership: no open failures recorded
43
43
  - Documentation release: README and CLAUDE unchanged for this scoped example
44
- - PR body accuracy: regenerate the PR body from this brief, current report-card, and current diff
44
+ - PR body accuracy: regenerate the PR body from this brief, current validation evidence, and current diff
45
45
 
46
46
  ## Pull Request Body Contract
47
47
 
48
48
  - Language source: `Output language: en`
49
49
  - PR body language: English
50
50
  - Title rule: use English after the Conventional Commits `type(scope)` prefix; keep identifiers, paths, commands, and issue keys unchanged.
51
- - Body source: current `pr-brief.md`, current diff, current `review/report-card.json`, doc sync output, and roadmap/backlog writeback.
51
+ - Body source: current `pr-brief.md`, current diff, current verification response, and roadmap/backlog writeback.
52
52
  - Required sections: summary, problem, changes, validation, review/gate evidence, risk/rollback, docs/writeback, and follow-ups.
53
53
  - Completeness gate: no empty headings, no stale inherited PR body, no generic "tests passed" without commands or evidence, and no `<placeholder>` text before `gh pr create`.
54
54
 
@@ -74,7 +74,7 @@
74
74
 
75
75
  ## Validation
76
76
 
77
- - `report-card.json` verdict: `pass`
77
+ - Verification verdict: `pass`
78
78
  - `npm test -- src/features/share/ShareDialog.test.tsx`
79
79
  - `npm run lint -- src/features/share/ShareDialog.tsx`
80
80
 
@@ -82,7 +82,7 @@
82
82
 
83
83
  - Reviewed base SHA: `example-base`
84
84
  - Reviewed head SHA: `example-head`
85
- - Review packet: `planning/tasks.md#Contract Summary`; `planning/tasks.md#T001-T003`
85
+ - Review packet: `task.md#Contract Summary`; `task.md#T001-T003`
86
86
  - Finding triage: no findings
87
87
  - QA / claim evidence: `qa=pass`, `tests-pass=pass`, `requirements-met=pass`
88
88
  - Readiness: review freshness=`fresh`; QA coverage has no gaps; browser QA intentionally skipped for this fixture.
@@ -117,7 +117,7 @@
117
117
 
118
118
  ## Verification Evidence
119
119
 
120
- - `report-card.json` verdict: `pass`
120
+ - Verification verdict: `pass`
121
121
  - Merged-result verification: not applicable before merge
122
122
  - Fresh evidence:
123
123
  - `npm test -- src/features/share/ShareDialog.test.tsx`
@@ -127,17 +127,15 @@
127
127
 
128
128
  - `CLAUDE.md`: unchanged
129
129
  - `README.md`: unchanged
130
- - `release-note.md`: intentionally omitted for this mode
131
- - `resume-index.md`: not needed because the change is ready for PR handoff
130
+ - process files: intentionally omitted
132
131
 
133
132
  ## Minimum Landing Pack
134
133
 
135
134
  - Required for this mode:
136
135
  - `pr-brief.md`
137
- - fresh `report-card.json`
136
+ - fresh verification response
138
137
  - Intentionally omitted:
139
- - `release-note.md`
140
- - `resume-index.md`
138
+ - process files
141
139
 
142
140
  ## How To Verify
143
141
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  - Requirement version: `REQ-001.v1`
6
6
  - Design version: `design.v1`
7
- - CC-Plan skill version: `3.9.0`
7
+ - CC-Plan skill version: `3.10.1`
8
8
  - Work branch: `REQ/001-copy-invite-link`
9
9
  - Source roadmap item: `RM-001`
10
10
  - Source roadmap version: `roadmap.v1`
@@ -45,20 +45,25 @@
45
45
  ClaudeCode / Codex 执行本计划时,必须把本文件当成任务模板合同,而不是普通 TODO 列表。
46
46
 
47
47
  - Template source: `assets/TASKS_TEMPLATE.md`
48
- - Context index first: run `cc-devflow query workflow-context --change <changeId> --change-key <changeKey> --cwd <repo-root> --data-only --no-trace --compact` before opening deep sections; use `packetOnly` plus `mustNotForget` first, verify `sourceHashes`, open `defaultOpen` refs only when needed, and reserve `deepOpen` for matching `openWhen.conditions`.
49
- - Task selection: read `planning/task-manifest.json.currentTaskId`; if empty, run the ready-task selector before choosing work.
48
+ - CLI resolver: all workflow commands must run through `.claude/skills/cc-dev/scripts/resolve-cc-devflow.sh` or `.codex/skills/cc-dev/scripts/resolve-cc-devflow.sh`; if it cannot prove `query workflow-context` and `next-change-key`, stop blocked.
49
+ - Context first: run resolved CLI `query workflow-context --change <changeId> --change-key <changeKey> --cwd <repo-root> --data-only --no-trace --compact` before opening deep sections.
50
+ - Task selection: use `scripts/select-ready-tasks.sh --tasks devflow/changes/<change-key>/task.md`.
50
51
  - Task block rule: read the full task block before coding; title-only execution is invalid.
51
- - Completion rule: after verification and review gates pass, run the completion script; do not manually edit checkbox, status, or `currentTaskId`.
52
- - Completion failure: if the script fails, fix the missing review / dependency evidence and rerun it. Do not bypass it by editing JSON or Markdown.
52
+ - Completion rule: after verification and review gates pass, run `scripts/mark-task-complete.sh --tasks devflow/changes/<change-key>/task.md --task <task-id>`.
53
+ - Runtime file ban: do not generate process files beyond this `task.md`.
53
54
 
54
55
  ```bash
55
- cc-devflow query workflow-context --change <changeId> --change-key <changeKey> --cwd <repo-root> --data-only --no-trace --compact
56
- SCRIPT_ROOT=".claude/skills/cc-do/scripts"
56
+ DEVFLOW=".claude/skills/cc-dev/scripts/resolve-cc-devflow.sh"
57
+ if [[ ! -f "$DEVFLOW" && -f ".codex/skills/cc-dev/scripts/resolve-cc-devflow.sh" ]]; then
58
+ DEVFLOW=".codex/skills/cc-dev/scripts/resolve-cc-devflow.sh"
59
+ fi
60
+ bash "$DEVFLOW" require query workflow-context next-change-key
61
+ bash "$DEVFLOW" query workflow-context --change <changeId> --change-key <changeKey> --cwd <repo-root> --data-only --no-trace --compactSCRIPT_ROOT=".claude/skills/cc-do/scripts"
57
62
  if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then
58
63
  SCRIPT_ROOT=".codex/skills/cc-do/scripts"
59
64
  fi
60
- bash "$SCRIPT_ROOT/select-ready-tasks.sh" --manifest docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json
61
- bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json --tasks docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md --task <task-id>
65
+ bash "$SCRIPT_ROOT/select-ready-tasks.sh" --manifest docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/
66
+ bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/ --tasks docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/task.md --task <task-id>
62
67
  ```
63
68
 
64
69
  ## Phase 1: Foundation
@@ -70,7 +75,7 @@ bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/pdca-loop/cha
70
75
  Read first: `design.md`, `src/features/share/ShareDialog.tsx`
71
76
  Verification: `npm test -- src/features/share/ShareDialog.test.tsx`
72
77
  Evidence: failing output that shows the missing button / action
73
- Completion: after verification evidence and required review records exist, run `SCRIPT_ROOT=".claude/skills/cc-do/scripts"; if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then SCRIPT_ROOT=".codex/skills/cc-do/scripts"; fi; bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json --tasks docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md --task T001`; do not hand-edit status.
78
+ Completion: after verification evidence and required review records exist, run `SCRIPT_ROOT=".claude/skills/cc-do/scripts"; if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then SCRIPT_ROOT=".codex/skills/cc-do/scripts"; fi; bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/ --tasks docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/task.md --task T001`; do not hand-edit status.
74
79
  Test seam: share dialog UI behavior
75
80
  Public verification path: Run the share dialog test and observe the copy action through the rendered dialog
76
81
  Allowed mocks: clipboard boundary
@@ -83,7 +88,7 @@ bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/pdca-loop/cha
83
88
  Read first: `design.md`, `src/features/share/ShareDialog.test.tsx`
84
89
  Verification: `npm test -- src/features/share/ShareDialog.test.tsx`
85
90
  Evidence: passing output + review notes
86
- Completion: after verification evidence and required review records exist, run `SCRIPT_ROOT=".claude/skills/cc-do/scripts"; if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then SCRIPT_ROOT=".codex/skills/cc-do/scripts"; fi; bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json --tasks docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md --task T002`; do not hand-edit status.
91
+ Completion: after verification evidence and required review records exist, run `SCRIPT_ROOT=".claude/skills/cc-do/scripts"; if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then SCRIPT_ROOT=".codex/skills/cc-do/scripts"; fi; bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/ --tasks docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/task.md --task T002`; do not hand-edit status.
87
92
  Test seam: share dialog UI behavior
88
93
  Public verification path: Run the share dialog test and observe the copy action through the rendered dialog
89
94
  Allowed mocks: clipboard boundary
@@ -95,12 +100,12 @@ bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/pdca-loop/cha
95
100
  Goal: 为 `cc-check` 准备本次实现的真实验证证据。
96
101
  TDD phase: evidence
97
102
  Files: `src/features/share/ShareDialog.tsx`, `src/features/share/ShareDialog.test.tsx`
98
- Read first: `tasks.md`, `task-manifest.json`
103
+ Read first: `task.md`
99
104
  Verification:
100
105
  - `npm test -- src/features/share/ShareDialog.test.tsx`
101
106
  - `npm run lint -- src/features/share/ShareDialog.tsx`
102
107
  Evidence: passing test output + clean lint output
103
- Completion: after verification evidence and required review records exist, run `SCRIPT_ROOT=".claude/skills/cc-do/scripts"; if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then SCRIPT_ROOT=".codex/skills/cc-do/scripts"; fi; bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json --tasks docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md --task T003`; do not hand-edit status.
108
+ Completion: after verification evidence and required review records exist, run `SCRIPT_ROOT=".claude/skills/cc-do/scripts"; if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then SCRIPT_ROOT=".codex/skills/cc-do/scripts"; fi; bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/ --tasks docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/task.md --task T003`; do not hand-edit status.
104
109
  Test seam: share dialog UI behavior
105
110
  Public verification path: Run the share dialog test and observe the copy action through the rendered dialog
106
111
  Allowed mocks: clipboard boundary
@@ -17,11 +17,6 @@ fi
17
17
  skill_version() {
18
18
  local skill="$1"
19
19
  local file="$ROOT_DIR/.claude/skills/$skill/SKILL.md"
20
- if [[ ! -f "$file" ]]; then
21
- echo "Missing skill file: $file" >&2
22
- exit 1
23
- fi
24
-
25
20
  sed -n 's/^version: //p' "$file" | head -n 1
26
21
  }
27
22
 
@@ -35,27 +30,15 @@ assert_contains() {
35
30
  }
36
31
 
37
32
  ROADMAP_VERSION="$(skill_version cc-roadmap)"
38
- NEXT_VERSION="$(skill_version cc-next)"
39
- DEV_VERSION="$(skill_version cc-dev)"
40
33
  REQ_PLAN_VERSION="$(skill_version cc-plan)"
41
- INVESTIGATE_VERSION="$(skill_version cc-investigate)"
42
34
  REQ_DO_VERSION="$(skill_version cc-do)"
43
- REQ_REVIEW_VERSION="$(skill_version cc-review)"
44
- PR_REVIEW_VERSION="$(skill_version cc-pr-review)"
45
- PR_LAND_VERSION="$(skill_version cc-pr-land)"
46
35
  REQ_CHECK_VERSION="$(skill_version cc-check)"
47
36
  REQ_ACT_VERSION="$(skill_version cc-act)"
48
37
 
49
38
  for pair in \
50
39
  "cc-roadmap:$ROADMAP_VERSION" \
51
- "cc-next:$NEXT_VERSION" \
52
- "cc-dev:$DEV_VERSION" \
53
40
  "cc-plan:$REQ_PLAN_VERSION" \
54
- "cc-investigate:$INVESTIGATE_VERSION" \
55
41
  "cc-do:$REQ_DO_VERSION" \
56
- "cc-review:$REQ_REVIEW_VERSION" \
57
- "cc-pr-review:$PR_REVIEW_VERSION" \
58
- "cc-pr-land:$PR_LAND_VERSION" \
59
42
  "cc-check:$REQ_CHECK_VERSION" \
60
43
  "cc-act:$REQ_ACT_VERSION"
61
44
  do
@@ -73,11 +56,10 @@ while IFS= read -r encoded; do
73
56
  readme="$ROOT_DIR/$(jq -r '.readme' <<<"$encoded")"
74
57
  root="$ROOT_DIR/$(jq -r '.root' <<<"$encoded")"
75
58
  change_dir="$ROOT_DIR/$(jq -r '.changeDir' <<<"$encoded")"
76
- planning_dir="$change_dir/planning"
77
- review_dir="$change_dir/review"
59
+ task_file="$change_dir/task.md"
78
60
  handoff_dir="$change_dir/handoff"
79
61
 
80
- for file in "$readme" "$root/ROADMAP.md" "$root/BACKLOG.md" "$root/roadmap.json" "$planning_dir/design.md" "$planning_dir/tasks.md" "$planning_dir/task-manifest.json"; do
62
+ for file in "$readme" "$root/ROADMAP.md" "$root/BACKLOG.md" "$root/roadmap.json" "$task_file"; do
81
63
  if [[ ! -f "$file" ]]; then
82
64
  echo "Example $example_id is missing required file: $file" >&2
83
65
  exit 1
@@ -85,40 +67,14 @@ while IFS= read -r encoded; do
85
67
  done
86
68
 
87
69
  assert_contains "$root/ROADMAP.md" "- Skill version: \`$ROADMAP_VERSION\`"
88
- assert_contains "$root/ROADMAP.md" "- Roadmap state source: \`roadmap.json\`"
89
- assert_contains "$root/ROADMAP.md" "## Technical Architecture"
90
- assert_contains "$root/ROADMAP.md" "\`\`\`mermaid"
91
70
  assert_contains "$root/BACKLOG.md" "- Skill version: \`$ROADMAP_VERSION\`"
92
- assert_contains "$root/BACKLOG.md" "> Deprecated projection. Edit \`roadmap.json\` instead."
93
- assert_contains "$root/BACKLOG.md" "- Roadmap state source: \`roadmap.json\`"
94
- assert_contains "$root/BACKLOG.md" "| RM-ID | Title | Source Stage | Priority | Primary Capability | Secondary Capabilities | Capability Gap | Expected Spec Delta | Evidence | Depends On | Parallel With | Unknowns | Next Decision | Ready |"
95
- assert_contains "$root/BACKLOG.md" "## Ready For Req-Plan"
96
- assert_contains "$root/BACKLOG.md" " - Primary Capability:"
97
- assert_contains "$root/BACKLOG.md" " - Expected spec delta:"
98
- jq -er '.version == 3 and (.items | length) > 0 and (.meta | type == "object") and (.handoff | type == "object") and (.architecture.nodes | length) > 0 and any(.items[]; .backlog != null)' "$root/roadmap.json" >/dev/null
99
- assert_contains "$planning_dir/design.md" "- CC-Plan skill version: \`$REQ_PLAN_VERSION\`"
100
- assert_contains "$planning_dir/tasks.md" "- CC-Plan skill version: \`$REQ_PLAN_VERSION\`"
101
-
102
- jq -er --arg roadmap "$ROADMAP_VERSION" --arg reqplan "$REQ_PLAN_VERSION" '
103
- (.planningMeta.reqPlanSkillVersion // $reqplan) == $reqplan and
104
- (.status? == null) and
105
- (.activePhase? == null) and
106
- (.sourceRoadmap? == null) and
107
- (.spec? == null) and
108
- (.executionProtocol? == null) and
109
- (.planningMeta.requirementBrief? == null) and
110
- (.planningMeta.ambiguityGate? == null) and
111
- (.planningMeta.reviewLoop? == null) and
112
- all(.tasks[]; (.completion? == null) and (.tddPhase | type == "string") and (.testSeam.publicVerificationPath | type == "string"))
113
- ' "$planning_dir/task-manifest.json" >/dev/null
114
-
115
- assert_contains "$planning_dir/tasks.md" "## Execution Protocol"
116
- assert_contains "$planning_dir/tasks.md" "cc-devflow query workflow-context"
117
- assert_contains "$planning_dir/tasks.md" "--data-only --no-trace --compact"
118
- assert_contains "$planning_dir/tasks.md" "mark-task-complete.sh"
119
- assert_contains "$planning_dir/tasks.md" "TDD phase:"
120
- assert_contains "$planning_dir/tasks.md" "Completion:"
121
- assert_contains "$planning_dir/tasks.md" "Public verification path:"
71
+ assert_contains "$task_file" "- CC-Plan skill version: \`$REQ_PLAN_VERSION\`"
72
+ assert_contains "$task_file" "## Execution Protocol"
73
+ assert_contains "$task_file" "task.md"
74
+ assert_contains "$task_file" "mark-task-complete.sh"
75
+ assert_contains "$task_file" "TDD phase:"
76
+ assert_contains "$task_file" "Completion:"
77
+ assert_contains "$task_file" "Public verification path:"
122
78
 
123
79
  assert_contains "$readme" "## Example Meta"
124
80
  assert_contains "$readme" "\`cc-roadmap@$ROADMAP_VERSION\`"
@@ -128,15 +84,8 @@ while IFS= read -r encoded; do
128
84
 
129
85
  if jq -e '.covers | index("cc-act")' <<<"$encoded" >/dev/null; then
130
86
  assert_contains "$readme" "\`cc-act@$REQ_ACT_VERSION\`"
131
- fi
132
-
133
- if [[ -f "$review_dir/report-card.json" ]]; then
134
- "$ROOT_DIR/.claude/skills/cc-check/scripts/verify-gate.sh" --report "$review_dir/report-card.json" >/dev/null
135
- fi
136
-
137
- if jq -e '.covers | index("cc-act")' <<<"$encoded" >/dev/null; then
138
- if [[ ! -f "$handoff_dir/pr-brief.md" && ! -f "$handoff_dir/resume-index.md" && ! -f "$handoff_dir/release-note.md" && ! -f "$handoff_dir/status.md" ]]; then
139
- echo "Example $example_id is missing a final handoff file under $handoff_dir" >&2
87
+ if [[ ! -f "$handoff_dir/pr-brief.md" ]]; then
88
+ echo "Example $example_id is missing PR file: $handoff_dir/pr-brief.md" >&2
140
89
  exit 1
141
90
  fi
142
91
  fi
@@ -1,44 +1,18 @@
1
1
  # Artifact Contract
2
2
 
3
- cc-devflow artifacts follow two rules: progressive disclosure and one state owner.
3
+ cc-devflow keeps the workflow surface intentionally small.
4
4
 
5
- ## Progressive Disclosure
5
+ ## Durable Files
6
6
 
7
- Every skill output should have a default path and deeper layers.
7
+ - `devflow/changes/<change-key>/task.md`
8
+ - `devflow/changes/<change-key>/handoff/pr-brief.md` when PR or local handoff needs it
9
+ - `devflow/postmortems/incidents/<date>-<change-key>.md` when a FIX or recurring failure needs a postmortem
10
+ - `devflow/postmortems/INDEX.md` as the postmortem index
8
11
 
9
- - Default layer: the next actor can see the current state, next action, and proof source quickly.
10
- - Conditional layer: open only when scope, dependency, review, or conflict questions arise.
11
- - Deep layer: full evidence, reasoning, or historical review, opened only for audit or recovery.
12
+ ## State Source
12
13
 
13
- If a field has no clear opener and no downstream consumer, remove it.
14
+ Git records process history. Commit after each completed PDCA or IDCA environment/stage.
14
15
 
15
- ## State Owners
16
+ ## Retired Surface
16
17
 
17
- | State | Owner artifact | Projection / derived readers |
18
- | --- | --- | --- |
19
- | Roadmap item status and progress | `devflow/roadmap.json` | `devflow/ROADMAP.md`, `devflow/BACKLOG.md`, handoff summaries |
20
- | Capability/spec sync state | `devflow/changes/<change-key>/change-meta.json` | `planning/tasks.md`, `review/report-card.json`, handoff summaries |
21
- | Execution task status | `planning/task-manifest.json.tasks[].status` | `planning/tasks.md` checkboxes, recovery summaries |
22
- | Ready task / phase | derived from `tasks[].status`, `tasks[].phase`, and `tasks[].dependsOn` | `currentTaskId` cache, ready-task selector output |
23
- | Runtime event log | `execution/tasks/<task-id>/events.jsonl` only for debug/failed runs | recovery summaries |
24
- | Review verdict | `review/report-card.json.verdict` | PR brief, release note, act gate |
25
- | PR / remote queue truth | live GitHub API / `gh` output | local review notes and handoff summaries |
26
- | Project postmortem facts and principles | `devflow/postmortems/` | planning recall, investigation hypotheses, task guardrails |
27
-
28
- ## Duplication Rules
29
-
30
- - Machine artifacts may reference another owner by id or path, but must not copy its status lifecycle.
31
- - Markdown projections must state their source instead of becoming editable truth.
32
- - Derived fields must be described as derived/cache and must be recomputable.
33
- - A skill must not create a new status field unless it also names the owner, lifecycle, projection readers, and validation gate.
34
- - Task manifests must not duplicate PRD narrative, review-loop prose, source-trust details, completion shell commands, roadmap progress, or spec sync status.
35
- - Project postmortems must cite stronger owner artifacts and Git evidence; they do not own roadmap progress, task status, review verdicts, or spec sync state.
36
-
37
- ## Required Check
38
-
39
- Before changing any skill output, answer:
40
-
41
- 1. Who owns this state?
42
- 2. Is this field consumed directly, or is it a projection?
43
- 3. Can it be recomputed from a stronger source?
44
- 4. What validation fails if this state diverges?
18
+ Do not create process JSON, review ledgers, report cards, status files, resume files, release notes, or principle files.
@@ -86,19 +86,20 @@ Use the skills in this order:
86
86
  Typical outputs:
87
87
 
88
88
  - `cc-roadmap` writes `devflow/roadmap.json` as the editable roadmap truth, then generates `devflow/ROADMAP.md` and deprecated `devflow/BACKLOG.md`
89
- - `cc-spec-init` writes `devflow/specs/INDEX.md`, capability specs, and `change-meta.json`
90
- - `cc-plan` writes `planning/tasks.md#Contract Summary`, CLI-generated `task-manifest.json`, and `change-meta.json`
91
- - `cc-investigate` writes `planning/tasks.md#Root Cause Contract`, CLI-generated `task-manifest.json`, and `change-meta.json`
92
- - `cc-review` writes `review-ledger.jsonl`, optional `review-findings.json`, and Markdown reports only when rendered on demand
93
- - `cc-check` writes `report-card.json`
94
- - `cc-act` writes exactly one final handoff file: `handoff/pr-brief.md`, `handoff/resume-index.md`, or `handoff/release-note.md`
89
+ - `cc-spec-init` writes `devflow/specs/INDEX.md` and capability specs
90
+ - `cc-plan` writes `task.md#Contract Summary`
91
+ - `cc-investigate` writes `task.md#Root Cause Contract`
92
+ - `cc-review` reports concrete findings in the response; it does not write review process files
93
+ - `cc-check` reports verification facts in the response, PR brief, or Git commit
94
+ - `cc-act` writes exactly one final PR file, `handoff/pr-brief.md`, or incident postmortem files when a real incident needs a corpse report
95
95
 
96
96
  Capability truth lives in `devflow/specs/`.
97
97
  Change truth lives in `devflow/changes/<change>/`.
98
98
 
99
99
  - Keep `INDEX.md` plus capability markdown under `devflow/specs/`.
100
100
  - Name new change directories as `REQ-<number>-<description>` for requirements or `FIX-<number>-<description>` for bug fixes. `REQ` and `FIX` advance as separate local sequences, so cross-prefix duplicates are valid. Parallel worktrees may still repeat numbers; the full change key, especially the description, distinguishes the work. Old lowercase directories are compatibility reads only.
101
- - Keep `change-meta.json`, `planning/tasks.md`, CLI-generated `task-manifest.json`, review ledger/findings records, optional CLI logs for debug/failure, `report-card.json`, and one final handoff file under each `devflow/changes/<change>/`. Do not generate task `context.md`, `checkpoint.json`, or AI-written process files.
101
+ - Keep `task.md`, optional `handoff/pr-brief.md`, and incident postmortem files under each `devflow/changes/<change>/`. Do not generate task `context.md`, `checkpoint.json`, review ledgers, status/resume files, release notes, principle files, or AI-written process files.
102
+ - Workflow state is Git-owned: keep `task.md`, commit each completed stage, and do not create process JSON.
102
103
  - Legacy `planning/design.md`, `planning/analysis.md`, and `cc-review-*.md` are readable fallback inputs for older changes, not new default writes.
103
104
  - Worker prompts, journals, assignments, and session logs belong under `devflow/workspaces/<change>/` as ephemeral scratch.
104
105
 
@@ -86,18 +86,19 @@ find .codex/skills -mindepth 2 -maxdepth 2 -name SKILL.md | sort
86
86
  常见产物:
87
87
 
88
88
  - `cc-roadmap` 产出可编辑真相 `devflow/roadmap.json`,再生成 `devflow/ROADMAP.md` 和 deprecated `devflow/BACKLOG.md`
89
- - `cc-spec-init` 产出 `devflow/specs/INDEX.md`、capability spec 和 `change-meta.json`
90
- - `cc-plan` 产出 `planning/tasks.md#Contract Summary`、CLI 生成的 `task-manifest.json` 和 `change-meta.json`
91
- - `cc-investigate` 产出 `planning/tasks.md#Root Cause Contract`、CLI 生成的 `task-manifest.json` 和 `change-meta.json`
92
- - `cc-review` 产出 `review-ledger.jsonl`、可选 `review-findings.json`,Markdown 报告只在需要时按需渲染
93
- - `cc-check` 产出 `report-card.json`
94
- - `cc-act` 只产出一个最终 handoff 文件:`handoff/pr-brief.md`、`handoff/resume-index.md` `handoff/release-note.md`
89
+ - `cc-spec-init` 产出 `devflow/specs/INDEX.md` 和 capability spec
90
+ - `cc-plan` 产出 `task.md#Contract Summary`
91
+ - `cc-investigate` 产出 `task.md#Root Cause Contract`
92
+ - `cc-review` 在当前回复里报告具体问题,不写 review 过程文件
93
+ - `cc-check` 在当前回复、PR 文件或 Git commit 里记录验证事实
94
+ - `cc-act` 只产出最终 PR 文件 `handoff/pr-brief.md`;真实事故需要尸检时才产出 incident postmortem 文件
95
95
 
96
96
  durable truth 分两层:
97
97
 
98
98
  - `devflow/specs/`:capability 真相,保留 `INDEX.md` 与 `capabilities/*.md`
99
99
  - 新 change 目录必须命名为 `REQ-<number>-<description>`(需求)或 `FIX-<number>-<description>`(修复);`REQ` 和 `FIX` 分别维护自己的递增编号,跨前缀同号不是冲突;并行工作树造成重复编号时,完整 change key 的描述负责区分业务内容,旧小写目录只作为历史兼容读取。
100
- - `devflow/changes/<change>/`:变更真相,保留 `change-meta.json`、`planning/tasks.md`、CLI 生成的 `task-manifest.json`、review ledger / findings 记录、debug / failed 的可选 CLI 日志、`report-card.json` 和唯一的最终 handoff 文件。不要生成任务级 `context.md`、`checkpoint.json` 或 AI 手写过程文件。
100
+ - `devflow/changes/<change>/`:变更真相,只保留 `task.md`、可选 `handoff/pr-brief.md`,以及真实事故需要的尸检文件。不要生成任务级 `context.md`、`checkpoint.json`、review ledger、status/resume 文件、release note、principles 或 AI 手写过程文件。
101
+ - 流程状态归 Git:保留 `task.md`,每个完成阶段提交 commit,不创建过程 JSON。
101
102
  - 历史 `planning/design.md`、`planning/analysis.md` 和 `cc-review-*.md` 是旧 change 的可读 fallback,不再是新默认写入。
102
103
  - worker prompt、journal、assignment、session log 统一放到 `devflow/workspaces/<change>/`,作为 ephemeral scratch。
103
104