cc-devflow 4.5.7 → 4.5.8

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 (62) hide show
  1. package/.claude/skills/cc-act/CHANGELOG.md +6 -0
  2. package/.claude/skills/cc-act/PLAYBOOK.md +9 -0
  3. package/.claude/skills/cc-act/SKILL.md +15 -5
  4. package/.claude/skills/cc-act/references/closure-contract.md +4 -0
  5. package/.claude/skills/cc-act/scripts/detect-ship-target.sh +27 -0
  6. package/.claude/skills/cc-act/scripts/ensure-ship-branch.sh +93 -0
  7. package/.claude/skills/cc-act/scripts/generate-status-report.sh +6 -0
  8. package/.claude/skills/cc-act/scripts/render-pr-brief.sh +6 -0
  9. package/.claude/skills/cc-act/scripts/sync-act-docs.sh +14 -0
  10. package/.claude/skills/cc-dev/CHANGELOG.md +5 -0
  11. package/.claude/skills/cc-dev/PLAYBOOK.md +63 -0
  12. package/.claude/skills/cc-dev/SKILL.md +168 -0
  13. package/.claude/skills/cc-do/CHANGELOG.md +6 -0
  14. package/.claude/skills/cc-do/SKILL.md +23 -1
  15. package/.claude/skills/cc-next/CHANGELOG.md +5 -0
  16. package/.claude/skills/cc-next/PLAYBOOK.md +52 -0
  17. package/.claude/skills/cc-next/SKILL.md +161 -0
  18. package/.claude/skills/cc-plan/CHANGELOG.md +6 -0
  19. package/.claude/skills/cc-plan/SKILL.md +45 -3
  20. package/.claude/skills/cc-plan/assets/TASKS_TEMPLATE.md +26 -0
  21. package/.claude/skills/cc-plan/assets/TASK_MANIFEST_TEMPLATE.json +49 -1
  22. package/.claude/skills/cc-plan/references/planning-contract.md +11 -0
  23. package/.claude/skills/cc-pr-land/CHANGELOG.md +5 -0
  24. package/.claude/skills/cc-pr-land/PLAYBOOK.md +45 -0
  25. package/.claude/skills/cc-pr-land/SKILL.md +157 -0
  26. package/.claude/skills/cc-pr-review/CHANGELOG.md +5 -0
  27. package/.claude/skills/cc-pr-review/PLAYBOOK.md +46 -0
  28. package/.claude/skills/cc-pr-review/SKILL.md +142 -0
  29. package/.claude/skills/cc-review/CHANGELOG.md +21 -0
  30. package/.claude/skills/cc-review/PLAYBOOK.md +64 -10
  31. package/.claude/skills/cc-review/SKILL.md +185 -18
  32. package/.claude/skills/cc-review/references/e2e-and-plugin-verification.md +4 -0
  33. package/.claude/skills/cc-review/references/implementation-review-branch.md +37 -0
  34. package/.claude/skills/cc-review/references/plan-review-branch.md +36 -1
  35. package/.claude/skills/cc-review/references/review-methods.md +98 -3
  36. package/.claude/skills/cc-review/scripts/collect-review-context.sh +80 -0
  37. package/.claude/skills/cc-simplify/CHANGELOG.md +6 -0
  38. package/.claude/skills/cc-simplify/SKILL.md +19 -8
  39. package/CHANGELOG.md +8 -1
  40. package/README.md +52 -3
  41. package/README.zh-CN.md +52 -3
  42. package/config/distributable-skills.json +8 -0
  43. package/docs/assets/cc-devflow-pr-harness-en.svg +153 -0
  44. package/docs/assets/cc-devflow-pr-harness-zh.svg +152 -0
  45. package/docs/assets/wechat-group-qr.jpg +0 -0
  46. package/docs/examples/example-bindings.json +9 -5
  47. package/docs/examples/full-design-blocked/README.md +1 -1
  48. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/design.md +1 -1
  49. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json +310 -6
  50. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md +45 -1
  51. package/docs/examples/local-handoff/README.md +1 -1
  52. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/design.md +1 -1
  53. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json +197 -4
  54. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/tasks.md +35 -1
  55. package/docs/examples/pdca-loop/README.md +1 -1
  56. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/design.md +1 -1
  57. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json +198 -5
  58. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md +35 -1
  59. package/docs/examples/scripts/check-example-bindings.sh +19 -1
  60. package/docs/guides/getting-started.md +1 -1
  61. package/docs/guides/getting-started.zh-CN.md +1 -1
  62. package/package.json +6 -1
@@ -4,7 +4,7 @@
4
4
 
5
5
  - Requirement version: `REQ-002.v2`
6
6
  - Design version: `design.v2`
7
- - CC-Plan skill version: `3.8.1`
7
+ - CC-Plan skill version: `3.8.2`
8
8
  - Source roadmap item: `RM-010`
9
9
  - Source roadmap version: `roadmap.v2`
10
10
 
@@ -37,50 +37,94 @@
37
37
  - audit row-result contract
38
38
  - Parallel boundaries: no parallel execution until row-outcome semantics are frozen
39
39
 
40
+ ## Execution Protocol
41
+
42
+ ClaudeCode / Codex 执行本计划时,必须把本文件当成任务模板合同,而不是普通 TODO 列表。
43
+
44
+ - Template source: `assets/TASKS_TEMPLATE.md`
45
+ - Task selection: read `planning/task-manifest.json.currentTaskId`; if empty, run the ready-task selector before choosing work.
46
+ - Task block rule: read the full task block before coding; title-only execution is invalid.
47
+ - Completion rule: after verification and review gates pass, run the completion script; do not manually edit checkbox, status, or `currentTaskId`.
48
+ - Completion failure: if the script fails, fix the missing checkpoint / review / dependency evidence and rerun it. Do not bypass it by editing JSON or Markdown.
49
+
50
+ ```bash
51
+ SCRIPT_ROOT=".claude/skills/cc-do/scripts"
52
+ if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then
53
+ SCRIPT_ROOT=".codex/skills/cc-do/scripts"
54
+ fi
55
+ bash "$SCRIPT_ROOT/select-ready-tasks.sh" --manifest docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json
56
+ bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json --tasks docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md --task <task-id>
57
+ ```
58
+
40
59
  ## Phase 1: Rule Matrix
41
60
 
42
61
  - [x] T001 [TEST] Add failing tests for duplicate and over-limit row outcomes (dependsOn:none) `src/invite/bulk-import.test.ts`
43
62
  Goal: 先把最危险的 bulk invite 行为变成红灯。
63
+ TDD phase: red
44
64
  Files: `src/invite/bulk-import.test.ts`
45
65
  Read first: `design.md`, `src/invite/bulk-import.ts`
46
66
  Verification: `npm test -- src/invite/bulk-import.test.ts`
47
67
  Evidence: failing output
68
+ Completion: after verification evidence and required checkpoint/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/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json --tasks docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md --task T001`; do not hand-edit status.
69
+ Test seam: bulk invite rules and admin upload UI behavior
70
+ Public verification path: Run the bulk invite rule and admin panel tests through their public flows
71
+ Allowed mocks: file upload boundary / billing / seat limit boundary
48
72
  Ready when: 当前规则文件已经可定位
49
73
 
50
74
  - [x] T002 [IMPL] Implement the initial bulk invite row classification (dependsOn:T001) `src/invite/bulk-import.ts`
51
75
  Goal: 给 duplicate / over-limit 行为一个最小实现。
76
+ TDD phase: green
52
77
  Files: `src/invite/bulk-import.ts`
53
78
  Read first: `design.md`, `src/invite/bulk-import.test.ts`
54
79
  Verification: `npm test -- src/invite/bulk-import.test.ts`
55
80
  Evidence: passing output + checkpoint
81
+ Completion: after verification evidence and required checkpoint/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/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json --tasks docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md --task T002`; do not hand-edit status.
82
+ Test seam: bulk invite rules and admin upload UI behavior
83
+ Public verification path: Run the bulk invite rule and admin panel tests through their public flows
84
+ Allowed mocks: file upload boundary / billing / seat limit boundary
56
85
  Ready when: T001 已见红
57
86
 
58
87
  ## Phase 2: Surface Integration
59
88
 
60
89
  - [x] T003 [TEST] Add failing admin panel tests for mixed CSV results (dependsOn:T002) `src/admin/BulkInvitePanel.test.tsx`
61
90
  Goal: 在 UI 层看到 mixed row outcomes 的真实表现。
91
+ TDD phase: red
62
92
  Files: `src/admin/BulkInvitePanel.test.tsx`
63
93
  Read first: `design.md`, `src/admin/BulkInvitePanel.tsx`
64
94
  Verification: `npm test -- src/admin/BulkInvitePanel.test.tsx`
65
95
  Evidence: failing output
96
+ Completion: after verification evidence and required checkpoint/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/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json --tasks docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md --task T003`; do not hand-edit status.
97
+ Test seam: bulk invite rules and admin upload UI behavior
98
+ Public verification path: Run the bulk invite rule and admin panel tests through their public flows
99
+ Allowed mocks: file upload boundary / billing / seat limit boundary
66
100
  Ready when: T002 已完成
67
101
 
68
102
  - [x] T004 [IMPL] Render bulk invite results in the admin panel (dependsOn:T003) `src/admin/BulkInvitePanel.tsx`
69
103
  Goal: 把 row outcomes 接进管理界面。
104
+ TDD phase: green
70
105
  Files: `src/admin/BulkInvitePanel.tsx`
71
106
  Read first: `design.md`, `src/admin/BulkInvitePanel.test.tsx`
72
107
  Verification: `npm test -- src/admin/BulkInvitePanel.test.tsx`
73
108
  Evidence: passing output + review notes
109
+ Completion: after verification evidence and required checkpoint/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/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json --tasks docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md --task T004`; do not hand-edit status.
110
+ Test seam: bulk invite rules and admin upload UI behavior
111
+ Public verification path: Run the bulk invite rule and admin panel tests through their public flows
112
+ Allowed mocks: file upload boundary / billing / seat limit boundary
74
113
  Ready when: T003 已见红
75
114
 
76
115
  ## Phase 3: Verification
77
116
 
78
117
  - [x] T005 Run mixed-surface checks and gather review evidence (dependsOn:T004) `bulk invite quality gates`
79
118
  Goal: 为 `cc-check` 准备 bulk invite 的新鲜证据。
119
+ TDD phase: evidence
80
120
  Files: `src/admin/BulkInvitePanel.tsx`, `src/invite/bulk-import.ts`
81
121
  Read first: `tasks.md`, `task-manifest.json`
82
122
  Verification:
83
123
  - `npm test -- src/invite/bulk-import.test.ts`
84
124
  - `npm test -- src/admin/BulkInvitePanel.test.tsx`
85
125
  Evidence: passing output + review notes
126
+ Completion: after verification evidence and required checkpoint/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/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json --tasks docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md --task T005`; do not hand-edit status.
127
+ Test seam: bulk invite rules and admin upload UI behavior
128
+ Public verification path: Run the bulk invite rule and admin panel tests through their public flows
129
+ Allowed mocks: file upload boundary / billing / seat limit boundary
86
130
  Ready when: T004 已完成
@@ -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.2.0`, `cc-plan@3.8.1`, `cc-do@1.6.2`, `cc-check@1.10.1`, `cc-act@1.8.2`
7
+ - Bound skills: `cc-roadmap@5.2.0`, `cc-plan@3.8.2`, `cc-do@1.6.3`, `cc-check@1.10.1`, `cc-act@1.8.3`
8
8
 
9
9
  This example shows verified work that is **ready to move forward**, but `cc-act` still chooses `local-handoff`.
10
10
 
@@ -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.8.1`
7
+ - CC-Plan skill version: `3.8.2`
8
8
  - Requirement ID: `REQ-003`
9
9
  - Design mode: `tiny-design`
10
10
  - Why this stays `tiny-design`: the patch adds one export action inside the existing admin audit UI without changing data contracts
@@ -6,7 +6,7 @@
6
6
  "requirementId": "REQ-003",
7
7
  "requirementVersion": "REQ-003.v1",
8
8
  "planningMeta": {
9
- "reqPlanSkillVersion": "3.8.1",
9
+ "reqPlanSkillVersion": "3.8.2",
10
10
  "designVersion": "design.v1",
11
11
  "approvedAt": "2026-04-16T13:10:00.000Z",
12
12
  "approvedBy": "user",
@@ -163,7 +163,60 @@
163
163
  },
164
164
  "status": "passed",
165
165
  "attempts": 1,
166
- "maxRetries": 1
166
+ "maxRetries": 1,
167
+ "tddPhase": "red",
168
+ "verticalSlice": "Slice 1",
169
+ "testSeam": {
170
+ "entry": "admin audit panel UI behavior",
171
+ "behaviorAsserted": "the missing download action is reproduced as a failing test",
172
+ "specStyleTestName": "the missing download action is reproduced as a failing test",
173
+ "oneLogicalBehavior": true,
174
+ "publicVerificationPath": "Run the audit summary panel test and observe CSV export through visible rows",
175
+ "implementationDetailRisk": "low"
176
+ },
177
+ "feedbackLoop": {
178
+ "type": "automated-test",
179
+ "determinism": "deterministic",
180
+ "expectedFailure": "Fails before the behavior exists"
181
+ },
182
+ "allowedMocks": [
183
+ "download / blob boundary"
184
+ ],
185
+ "testQuality": {
186
+ "usesPublicInterface": true,
187
+ "describesBehavior": true,
188
+ "specStyleName": true,
189
+ "oneLogicalBehavior": true,
190
+ "verifiesThroughPublicPath": true,
191
+ "survivesInternalRefactor": true,
192
+ "mocksOnlySystemBoundaries": true,
193
+ "noBulkRed": true
194
+ },
195
+ "greenMinimality": {
196
+ "guard": "Keep the task scoped to its stated verification evidence",
197
+ "noSpeculativeBranches": true
198
+ },
199
+ "completion": {
200
+ "command": "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",
201
+ "requiredBeforeCompletion": [
202
+ "verification evidence captured",
203
+ "checkpoint written",
204
+ "spec review gate recorded",
205
+ "code review gate recorded"
206
+ ],
207
+ "forbiddenShortcuts": [
208
+ "manual checkbox edit",
209
+ "manual manifest status edit",
210
+ "leaving currentTaskId stale"
211
+ ]
212
+ },
213
+ "refactorCandidates": [
214
+ "duplication",
215
+ "long method",
216
+ "primitive obsession",
217
+ "naming",
218
+ "more than three nested branches"
219
+ ]
167
220
  },
168
221
  {
169
222
  "id": "T002",
@@ -215,7 +268,60 @@
215
268
  },
216
269
  "status": "passed",
217
270
  "attempts": 1,
218
- "maxRetries": 1
271
+ "maxRetries": 1,
272
+ "tddPhase": "green",
273
+ "verticalSlice": "Slice 2",
274
+ "testSeam": {
275
+ "entry": "admin audit panel UI behavior",
276
+ "behaviorAsserted": "admins can trigger a CSV download from the existing summary panel",
277
+ "specStyleTestName": "admins can trigger a CSV download from the existing summary panel",
278
+ "oneLogicalBehavior": true,
279
+ "publicVerificationPath": "Run the audit summary panel test and observe CSV export through visible rows",
280
+ "implementationDetailRisk": "low"
281
+ },
282
+ "feedbackLoop": {
283
+ "type": "automated-test",
284
+ "determinism": "deterministic",
285
+ "expectedFailure": ""
286
+ },
287
+ "allowedMocks": [
288
+ "download / blob boundary"
289
+ ],
290
+ "testQuality": {
291
+ "usesPublicInterface": true,
292
+ "describesBehavior": true,
293
+ "specStyleName": true,
294
+ "oneLogicalBehavior": true,
295
+ "verifiesThroughPublicPath": true,
296
+ "survivesInternalRefactor": true,
297
+ "mocksOnlySystemBoundaries": true,
298
+ "noBulkRed": true
299
+ },
300
+ "greenMinimality": {
301
+ "guard": "Implement only the code needed to pass the current red behavior",
302
+ "noSpeculativeBranches": true
303
+ },
304
+ "completion": {
305
+ "command": "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",
306
+ "requiredBeforeCompletion": [
307
+ "verification evidence captured",
308
+ "checkpoint written",
309
+ "spec review gate recorded",
310
+ "code review gate recorded"
311
+ ],
312
+ "forbiddenShortcuts": [
313
+ "manual checkbox edit",
314
+ "manual manifest status edit",
315
+ "leaving currentTaskId stale"
316
+ ]
317
+ },
318
+ "refactorCandidates": [
319
+ "duplication",
320
+ "long method",
321
+ "primitive obsession",
322
+ "naming",
323
+ "more than three nested branches"
324
+ ]
219
325
  },
220
326
  {
221
327
  "id": "T003",
@@ -271,12 +377,99 @@
271
377
  },
272
378
  "status": "passed",
273
379
  "attempts": 1,
274
- "maxRetries": 1
380
+ "maxRetries": 1,
381
+ "tddPhase": "evidence",
382
+ "verticalSlice": "Slice 3",
383
+ "testSeam": {
384
+ "entry": "admin audit panel UI behavior",
385
+ "behaviorAsserted": "fresh verification evidence exists for local handoff",
386
+ "specStyleTestName": "fresh verification evidence exists for local handoff",
387
+ "oneLogicalBehavior": true,
388
+ "publicVerificationPath": "Run the audit summary panel test and observe CSV export through visible rows",
389
+ "implementationDetailRisk": "low"
390
+ },
391
+ "feedbackLoop": {
392
+ "type": "automated-test",
393
+ "determinism": "deterministic",
394
+ "expectedFailure": ""
395
+ },
396
+ "allowedMocks": [
397
+ "download / blob boundary"
398
+ ],
399
+ "testQuality": {
400
+ "usesPublicInterface": true,
401
+ "describesBehavior": true,
402
+ "specStyleName": true,
403
+ "oneLogicalBehavior": true,
404
+ "verifiesThroughPublicPath": true,
405
+ "survivesInternalRefactor": true,
406
+ "mocksOnlySystemBoundaries": true,
407
+ "noBulkRed": true
408
+ },
409
+ "greenMinimality": {
410
+ "guard": "Keep the task scoped to its stated verification evidence",
411
+ "noSpeculativeBranches": true
412
+ },
413
+ "completion": {
414
+ "command": "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",
415
+ "requiredBeforeCompletion": [
416
+ "verification evidence captured",
417
+ "checkpoint written",
418
+ "spec review gate recorded",
419
+ "code review gate recorded"
420
+ ],
421
+ "forbiddenShortcuts": [
422
+ "manual checkbox edit",
423
+ "manual manifest status edit",
424
+ "leaving currentTaskId stale"
425
+ ]
426
+ },
427
+ "refactorCandidates": [
428
+ "duplication",
429
+ "long method",
430
+ "primitive obsession",
431
+ "naming",
432
+ "more than three nested branches"
433
+ ]
275
434
  }
276
435
  ],
277
436
  "metadata": {
278
437
  "source": "tasks.md",
279
438
  "generatedBy": "docs-example",
280
439
  "planVersion": 1
440
+ },
441
+ "executionProtocol": {
442
+ "templateCompliance": {
443
+ "required": true,
444
+ "sourceTemplate": "assets/TASKS_TEMPLATE.md",
445
+ "taskBlockMustInclude": [
446
+ "Goal",
447
+ "TDD phase",
448
+ "Files",
449
+ "Read first",
450
+ "Verification",
451
+ "Evidence",
452
+ "Test seam",
453
+ "Public verification path",
454
+ "Allowed mocks",
455
+ "Completion"
456
+ ],
457
+ "titleOnlyTasks": "forbidden"
458
+ },
459
+ "selection": {
460
+ "sourceOfTruth": "planning/task-manifest.json.currentTaskId",
461
+ "commandTemplate": "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\"/select-ready-tasks.sh --manifest docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json"
462
+ },
463
+ "completion": {
464
+ "manualStatusEdit": "forbidden",
465
+ "commandTemplate": "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 <task-id>",
466
+ "failurePolicy": "Do not hand-edit status; fix missing checkpoint, review gate, or dependency evidence and rerun the script.",
467
+ "updates": [
468
+ "planning/task-manifest.json.tasks[].status",
469
+ "planning/task-manifest.json.currentTaskId",
470
+ "planning/task-manifest.json.status",
471
+ "planning/tasks.md checkbox"
472
+ ]
473
+ }
281
474
  }
282
475
  }
@@ -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.8.1`
7
+ - CC-Plan skill version: `3.8.2`
8
8
  - Source roadmap item: `RM-020`
9
9
  - Source roadmap version: `roadmap.v3`
10
10
 
@@ -36,32 +36,66 @@
36
36
  - panel placement
37
37
  - Parallel boundaries: none
38
38
 
39
+ ## Execution Protocol
40
+
41
+ ClaudeCode / Codex 执行本计划时,必须把本文件当成任务模板合同,而不是普通 TODO 列表。
42
+
43
+ - Template source: `assets/TASKS_TEMPLATE.md`
44
+ - Task selection: read `planning/task-manifest.json.currentTaskId`; if empty, run the ready-task selector before choosing work.
45
+ - Task block rule: read the full task block before coding; title-only execution is invalid.
46
+ - Completion rule: after verification and review gates pass, run the completion script; do not manually edit checkbox, status, or `currentTaskId`.
47
+ - Completion failure: if the script fails, fix the missing checkpoint / review / dependency evidence and rerun it. Do not bypass it by editing JSON or Markdown.
48
+
49
+ ```bash
50
+ SCRIPT_ROOT=".claude/skills/cc-do/scripts"
51
+ if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then
52
+ SCRIPT_ROOT=".codex/skills/cc-do/scripts"
53
+ fi
54
+ bash "$SCRIPT_ROOT/select-ready-tasks.sh" --manifest docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json
55
+ 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>
56
+ ```
57
+
39
58
  ## Phase 1: Foundation
40
59
 
41
60
  - [x] T001 [TEST] Add a failing test for the missing download action (dependsOn:none) `src/admin/AuditSummaryPanel.test.tsx`
42
61
  Goal: 证明现在还没有可下载的 summary export。
62
+ TDD phase: red
43
63
  Files: `src/admin/AuditSummaryPanel.test.tsx`
44
64
  Read first: `design.md`, `src/admin/AuditSummaryPanel.tsx`
45
65
  Verification: `npm test -- src/admin/AuditSummaryPanel.test.tsx`
46
66
  Evidence: failing output
67
+ Completion: after verification evidence and required checkpoint/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.
68
+ Test seam: admin audit panel UI behavior
69
+ Public verification path: Run the audit summary panel test and observe CSV export through visible rows
70
+ Allowed mocks: download / blob boundary
47
71
  Ready when: 当前 audit summary test 已可运行
48
72
 
49
73
  - [x] T002 [IMPL] Add the download summary action (dependsOn:T001) `src/admin/AuditSummaryPanel.tsx`
50
74
  Goal: 用最小实现让 summary export 真的可用。
75
+ TDD phase: green
51
76
  Files: `src/admin/AuditSummaryPanel.tsx`
52
77
  Read first: `design.md`, `src/admin/AuditSummaryPanel.test.tsx`
53
78
  Verification: `npm test -- src/admin/AuditSummaryPanel.test.tsx`
54
79
  Evidence: passing output + checkpoint
80
+ Completion: after verification evidence and required checkpoint/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.
81
+ Test seam: admin audit panel UI behavior
82
+ Public verification path: Run the audit summary panel test and observe CSV export through visible rows
83
+ Allowed mocks: download / blob boundary
55
84
  Ready when: T001 已见红
56
85
 
57
86
  ## Phase 2: Verify
58
87
 
59
88
  - [x] T003 Run targeted checks and collect handoff evidence (dependsOn:T002) `audit summary quality gates`
60
89
  Goal: 为 `cc-check` 和 `cc-act` 留下这次导出改动的真实证据。
90
+ TDD phase: evidence
61
91
  Files: `src/admin/AuditSummaryPanel.tsx`, `src/admin/AuditSummaryPanel.test.tsx`
62
92
  Read first: `tasks.md`, `task-manifest.json`
63
93
  Verification:
64
94
  - `npm test -- src/admin/AuditSummaryPanel.test.tsx`
65
95
  - `npm run lint -- src/admin/AuditSummaryPanel.tsx`
66
96
  Evidence: passing output + clean lint output
97
+ Completion: after verification evidence and required checkpoint/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.
98
+ Test seam: admin audit panel UI behavior
99
+ Public verification path: Run the audit summary panel test and observe CSV export through visible rows
100
+ Allowed mocks: download / blob boundary
67
101
  Ready when: T002 已完成
@@ -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.2.0`, `cc-plan@3.8.1`, `cc-do@1.6.2`, `cc-check@1.10.1`, `cc-act@1.8.2`
7
+ - Bound skills: `cc-roadmap@5.2.0`, `cc-plan@3.8.2`, `cc-do@1.6.3`, `cc-check@1.10.1`, `cc-act@1.8.3`
8
8
 
9
9
  This folder shows one minimal but complete `cc-roadmap -> cc-plan -> cc-do -> cc-check -> cc-act` loop.
10
10
 
@@ -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.8.1`
7
+ - CC-Plan skill version: `3.8.2`
8
8
  - Requirement ID: `REQ-001`
9
9
  - Design mode: `tiny-design`
10
10
  - Why this stays `tiny-design`: the patch is limited to an existing dialog and test file, with no API or data model changes