cc-devflow 4.5.7 → 4.5.9

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 (105) hide show
  1. package/.claude/skills/cc-act/CHANGELOG.md +33 -0
  2. package/.claude/skills/cc-act/PLAYBOOK.md +18 -4
  3. package/.claude/skills/cc-act/SKILL.md +76 -7
  4. package/.claude/skills/cc-act/assets/PROJECT_POSTMORTEM_INDEX_TEMPLATE.md +30 -0
  5. package/.claude/skills/cc-act/assets/PROJECT_POSTMORTEM_PRINCIPLES_TEMPLATE.md +29 -0
  6. package/.claude/skills/cc-act/assets/PROJECT_POSTMORTEM_TEMPLATE.md +103 -0
  7. package/.claude/skills/cc-act/assets/PR_BRIEF_TEMPLATE.md +60 -4
  8. package/.claude/skills/cc-act/references/closure-contract.md +7 -0
  9. package/.claude/skills/cc-act/references/git-commit-guidelines.md +342 -37
  10. package/.claude/skills/cc-act/scripts/cc-act-common.sh +29 -1
  11. package/.claude/skills/cc-act/scripts/detect-ship-target.sh +27 -0
  12. package/.claude/skills/cc-act/scripts/ensure-ship-branch.sh +93 -0
  13. package/.claude/skills/cc-act/scripts/generate-status-report.sh +6 -0
  14. package/.claude/skills/cc-act/scripts/render-pr-brief.sh +170 -0
  15. package/.claude/skills/cc-act/scripts/sync-act-docs.sh +15 -1
  16. package/.claude/skills/cc-dev/CHANGELOG.md +5 -0
  17. package/.claude/skills/cc-dev/PLAYBOOK.md +63 -0
  18. package/.claude/skills/cc-dev/SKILL.md +168 -0
  19. package/.claude/skills/cc-do/CHANGELOG.md +17 -0
  20. package/.claude/skills/cc-do/SKILL.md +41 -13
  21. package/.claude/skills/cc-do/scripts/build-task-context.sh +9 -5
  22. package/.claude/skills/cc-do/scripts/mark-task-complete.sh +0 -6
  23. package/.claude/skills/cc-investigate/CHANGELOG.md +17 -0
  24. package/.claude/skills/cc-investigate/PLAYBOOK.md +15 -0
  25. package/.claude/skills/cc-investigate/SKILL.md +46 -1
  26. package/.claude/skills/cc-investigate/assets/ANALYSIS_TEMPLATE.md +47 -0
  27. package/.claude/skills/cc-investigate/assets/TASKS_TEMPLATE.md +21 -2
  28. package/.claude/skills/cc-investigate/assets/TASK_MANIFEST_TEMPLATE.json +28 -58
  29. package/.claude/skills/cc-investigate/references/investigation-contract.md +14 -0
  30. package/.claude/skills/cc-next/CHANGELOG.md +11 -0
  31. package/.claude/skills/cc-next/PLAYBOOK.md +74 -0
  32. package/.claude/skills/cc-next/SKILL.md +196 -0
  33. package/.claude/skills/cc-plan/CHANGELOG.md +25 -0
  34. package/.claude/skills/cc-plan/PLAYBOOK.md +25 -20
  35. package/.claude/skills/cc-plan/SKILL.md +116 -13
  36. package/.claude/skills/cc-plan/assets/DESIGN_TEMPLATE.md +67 -0
  37. package/.claude/skills/cc-plan/assets/TASKS_TEMPLATE.md +85 -0
  38. package/.claude/skills/cc-plan/assets/TASK_MANIFEST_TEMPLATE.json +57 -182
  39. package/.claude/skills/cc-plan/assets/TINY_DESIGN_TEMPLATE.md +46 -0
  40. package/.claude/skills/cc-plan/references/planning-contract.md +51 -26
  41. package/.claude/skills/cc-pr-land/CHANGELOG.md +5 -0
  42. package/.claude/skills/cc-pr-land/PLAYBOOK.md +45 -0
  43. package/.claude/skills/cc-pr-land/SKILL.md +157 -0
  44. package/.claude/skills/cc-pr-review/CHANGELOG.md +5 -0
  45. package/.claude/skills/cc-pr-review/PLAYBOOK.md +46 -0
  46. package/.claude/skills/cc-pr-review/SKILL.md +142 -0
  47. package/.claude/skills/cc-review/CHANGELOG.md +21 -0
  48. package/.claude/skills/cc-review/PLAYBOOK.md +64 -10
  49. package/.claude/skills/cc-review/SKILL.md +185 -18
  50. package/.claude/skills/cc-review/references/e2e-and-plugin-verification.md +4 -0
  51. package/.claude/skills/cc-review/references/implementation-review-branch.md +37 -0
  52. package/.claude/skills/cc-review/references/plan-review-branch.md +36 -1
  53. package/.claude/skills/cc-review/references/review-methods.md +98 -3
  54. package/.claude/skills/cc-review/scripts/collect-review-context.sh +80 -0
  55. package/.claude/skills/cc-roadmap/CHANGELOG.md +6 -0
  56. package/.claude/skills/cc-roadmap/PLAYBOOK.md +30 -0
  57. package/.claude/skills/cc-roadmap/SKILL.md +45 -8
  58. package/.claude/skills/cc-roadmap/assets/BACKLOG_TEMPLATE.md +8 -0
  59. package/.claude/skills/cc-roadmap/assets/ROADMAP_TEMPLATE.md +22 -0
  60. package/.claude/skills/cc-roadmap/assets/TRACKING_TEMPLATE.json +32 -1
  61. package/.claude/skills/cc-roadmap/references/roadmap-dialogue.md +14 -14
  62. package/.claude/skills/cc-simplify/CHANGELOG.md +6 -0
  63. package/.claude/skills/cc-simplify/SKILL.md +19 -8
  64. package/CHANGELOG.md +20 -1
  65. package/README.md +60 -9
  66. package/README.zh-CN.md +60 -9
  67. package/config/distributable-skills.json +8 -0
  68. package/docs/assets/cc-devflow-pr-harness-en.svg +153 -0
  69. package/docs/assets/cc-devflow-pr-harness-zh.svg +152 -0
  70. package/docs/assets/wechat-group-qr.jpg +0 -0
  71. package/docs/examples/example-bindings.json +11 -7
  72. package/docs/examples/full-design-blocked/BACKLOG.md +1 -1
  73. package/docs/examples/full-design-blocked/README.md +1 -1
  74. package/docs/examples/full-design-blocked/ROADMAP.md +1 -1
  75. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/design.md +1 -1
  76. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json +102 -82
  77. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md +45 -1
  78. package/docs/examples/full-design-blocked/roadmap.json +1 -1
  79. package/docs/examples/local-handoff/BACKLOG.md +1 -1
  80. package/docs/examples/local-handoff/README.md +1 -1
  81. package/docs/examples/local-handoff/ROADMAP.md +1 -1
  82. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/design.md +1 -1
  83. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json +70 -61
  84. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/tasks.md +35 -1
  85. package/docs/examples/local-handoff/roadmap.json +1 -1
  86. package/docs/examples/pdca-loop/BACKLOG.md +1 -1
  87. package/docs/examples/pdca-loop/README.md +1 -1
  88. package/docs/examples/pdca-loop/ROADMAP.md +1 -1
  89. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/handoff/pr-brief.md +64 -0
  90. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/design.md +1 -1
  91. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json +71 -81
  92. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md +35 -1
  93. package/docs/examples/pdca-loop/roadmap.json +1 -1
  94. package/docs/examples/scripts/check-example-bindings.sh +24 -2
  95. package/docs/get-shit-done-strategy-audit.md +4 -4
  96. package/docs/guides/artifact-contract.md +44 -0
  97. package/docs/guides/getting-started.md +1 -1
  98. package/docs/guides/getting-started.zh-CN.md +1 -1
  99. package/docs/guides/project-postmortem.md +78 -0
  100. package/lib/skill-runtime/__tests__/planner.tdd.test.js +2 -2
  101. package/lib/skill-runtime/__tests__/schemas.test.js +33 -2
  102. package/lib/skill-runtime/planner.js +1 -2
  103. package/lib/skill-runtime/query.js +1 -1
  104. package/lib/skill-runtime/schemas.js +5 -3
  105. package/package.json +6 -1
@@ -6,63 +6,30 @@
6
6
  "requirementId": "REQ-002",
7
7
  "requirementVersion": "REQ-002.v2",
8
8
  "planningMeta": {
9
- "reqPlanSkillVersion": "3.8.1",
9
+ "reqPlanSkillVersion": "3.8.5",
10
10
  "designVersion": "design.v2",
11
11
  "approvedAt": null,
12
- "approvedBy": null,
13
12
  "basedOnOption": "Option B",
14
- "requirementBrief": {
15
- "problemStatement": "Admins onboarding larger teams need predictable bulk invite behavior for duplicates, invalid rows, and seat limits.",
16
- "solutionSummary": "Freeze deterministic CSV row outcomes before executing the bulk invite flow.",
17
- "actors": [
18
- "workspace admin",
19
- "support operator"
20
- ],
21
- "userStories": [
22
- {
23
- "id": "US-001",
24
- "actor": "workspace admin",
25
- "want": "upload a CSV of invite emails",
26
- "benefit": "invite many collaborators without one-by-one entry",
27
- "acceptance": [
28
- "Mixed valid rows produce visible accepted outcomes"
29
- ]
30
- },
31
- {
32
- "id": "US-002",
33
- "actor": "workspace admin",
34
- "want": "see duplicate, invalid, and over-limit row states",
35
- "benefit": "understand what happened without support help",
36
- "acceptance": [
37
- "Every skipped or rejected row has a reason"
38
- ]
39
- }
40
- ],
41
- "edgeOrRecoveryStories": [
42
- {
43
- "id": "US-EDGE-001",
44
- "actor": "workspace admin",
45
- "boundary": "CSV contains duplicates, invalid emails, or over-limit rows",
46
- "desiredOutcome": "safe rows can proceed while bad rows are explained",
47
- "acceptance": [
48
- "Rule matrix covers duplicate, invalid, and seat-limit cases"
49
- ]
50
- }
51
- ],
52
- "implementationDecisions": [
53
- "Freeze one row-outcome matrix before execution resumes"
54
- ],
55
- "testingDecisions": [
56
- "Test row semantics through bulk-import rules and the admin upload flow"
57
- ],
58
- "outOfScope": [
59
- "enterprise SCIM provisioning",
60
- "background job redesign",
61
- "rollback wizard for partial success"
62
- ],
63
- "furtherNotes": [
64
- "Design remains blocked until duplicate and seat-limit semantics are approved"
65
- ]
13
+ "aiLeverageDecisionLens": {
14
+ "realUserOrOperator": "workspace admin onboarding larger teams",
15
+ "statusQuoWorkaround": "paste invite emails one by one or track them in spreadsheets",
16
+ "humanTeamEffortForFullScope": "multiple weeks across product, engineering, billing, and support review",
17
+ "ccAgentEffortForFullScope": "several hours once row semantics are approved, but unbounded before that",
18
+ "aiCompressionRatio": "high after semantics freeze, low while the product contract is ambiguous",
19
+ "completeLakeBoundary": "row classification, admin upload flow, billing-seat checks, and audit mapping after rule approval",
20
+ "oceanBoundary": "SCIM, background retries, rollback wizard, and unspecified billing semantics",
21
+ "scopeRecommendation": "sharp-wedge",
22
+ "costModel": {
23
+ "agentTime": "medium after rule approval",
24
+ "humanReviewTime": "high until semantics are approved",
25
+ "verificationCost": "bulk rules, admin flow, billing, and audit tests",
26
+ "maintenanceCost": "medium after semantics freeze",
27
+ "failureCost": "high if billing or audit outcomes drift",
28
+ "reversibility": "limited once execution semantics ship"
29
+ },
30
+ "verdict": "sharp-wedge",
31
+ "missingEvidenceOrPivotReason": "none at plan approval; cc-check later reopened duplicate, invalid-row, partial-success, and seat-limit semantics before retry or cc-act",
32
+ "impactOnApprovedDirection": "allow bounded import-path execution, then block final proof if review finds row semantics drift"
66
33
  },
67
34
  "externalBestPractice": {
68
35
  "needed": true,
@@ -172,31 +139,9 @@
172
139
  "impact": "cc-do retry and cc-act must stay blocked until this is answered",
173
140
  "status": "asked"
174
141
  }
175
- ],
176
- "aiLeverageDecisionLens": {
177
- "realUserOrOperator": "workspace admin onboarding larger teams",
178
- "statusQuoWorkaround": "paste invite emails one by one or track them in spreadsheets",
179
- "humanTeamEffortForFullScope": "multiple weeks across product, engineering, billing, and support review",
180
- "ccAgentEffortForFullScope": "several hours once row semantics are approved, but unbounded before that",
181
- "aiCompressionRatio": "high after semantics freeze, low while the product contract is ambiguous",
182
- "completeLakeBoundary": "row classification, admin upload flow, billing-seat checks, and audit mapping after rule approval",
183
- "oceanBoundary": "SCIM, background retries, rollback wizard, and unspecified billing semantics",
184
- "scopeRecommendation": "sharp-wedge",
185
- "costModel": {
186
- "agentTime": "medium after rule approval",
187
- "humanReviewTime": "high until semantics are approved",
188
- "verificationCost": "bulk rules, admin flow, billing, and audit tests",
189
- "maintenanceCost": "medium after semantics freeze",
190
- "failureCost": "high if billing or audit outcomes drift",
191
- "reversibility": "limited once execution semantics ship"
192
- },
193
- "verdict": "sharp-wedge",
194
- "missingEvidenceOrPivotReason": "none at plan approval; cc-check later reopened duplicate, invalid-row, partial-success, and seat-limit semantics before retry or cc-act",
195
- "impactOnApprovedDirection": "allow bounded import-path execution, then block final proof if review finds row semantics drift"
196
- }
142
+ ]
197
143
  },
198
144
  "currentTaskId": null,
199
- "activePhase": null,
200
145
  "tasks": [
201
146
  {
202
147
  "id": "T001",
@@ -245,7 +190,22 @@
245
190
  },
246
191
  "status": "passed",
247
192
  "attempts": 1,
248
- "maxRetries": 1
193
+ "maxRetries": 1,
194
+ "tddPhase": "red",
195
+ "verticalSlice": "Slice 1",
196
+ "testSeam": {
197
+ "entry": "bulk invite rules and admin upload UI behavior",
198
+ "behaviorAsserted": "dangerous row outcomes are reproduced as explicit failing tests",
199
+ "specStyleTestName": "dangerous row outcomes are reproduced as explicit failing tests",
200
+ "oneLogicalBehavior": true,
201
+ "publicVerificationPath": "Run the bulk invite rule and admin panel tests through their public flows",
202
+ "implementationDetailRisk": "low"
203
+ },
204
+ "feedbackLoop": {
205
+ "type": "automated-test",
206
+ "determinism": "deterministic",
207
+ "expectedFailure": "Fails before the behavior exists"
208
+ }
249
209
  },
250
210
  {
251
211
  "id": "T002",
@@ -297,7 +257,22 @@
297
257
  },
298
258
  "status": "passed",
299
259
  "attempts": 1,
300
- "maxRetries": 1
260
+ "maxRetries": 1,
261
+ "tddPhase": "green",
262
+ "verticalSlice": "Slice 2",
263
+ "testSeam": {
264
+ "entry": "bulk invite rules and admin upload UI behavior",
265
+ "behaviorAsserted": "bulk invite rows receive deterministic initial states",
266
+ "specStyleTestName": "bulk invite rows receive deterministic initial states",
267
+ "oneLogicalBehavior": true,
268
+ "publicVerificationPath": "Run the bulk invite rule and admin panel tests through their public flows",
269
+ "implementationDetailRisk": "low"
270
+ },
271
+ "feedbackLoop": {
272
+ "type": "automated-test",
273
+ "determinism": "deterministic",
274
+ "expectedFailure": ""
275
+ }
301
276
  },
302
277
  {
303
278
  "id": "T003",
@@ -348,7 +323,22 @@
348
323
  },
349
324
  "status": "passed",
350
325
  "attempts": 1,
351
- "maxRetries": 1
326
+ "maxRetries": 1,
327
+ "tddPhase": "red",
328
+ "verticalSlice": "Slice 3",
329
+ "testSeam": {
330
+ "entry": "bulk invite rules and admin upload UI behavior",
331
+ "behaviorAsserted": "mixed row outcomes are visible as UI failures before implementation",
332
+ "specStyleTestName": "mixed row outcomes are visible as UI failures before implementation",
333
+ "oneLogicalBehavior": true,
334
+ "publicVerificationPath": "Run the bulk invite rule and admin panel tests through their public flows",
335
+ "implementationDetailRisk": "low"
336
+ },
337
+ "feedbackLoop": {
338
+ "type": "automated-test",
339
+ "determinism": "deterministic",
340
+ "expectedFailure": "Fails before the behavior exists"
341
+ }
352
342
  },
353
343
  {
354
344
  "id": "T004",
@@ -400,7 +390,22 @@
400
390
  },
401
391
  "status": "passed",
402
392
  "attempts": 1,
403
- "maxRetries": 1
393
+ "maxRetries": 1,
394
+ "tddPhase": "green",
395
+ "verticalSlice": "Slice 3",
396
+ "testSeam": {
397
+ "entry": "bulk invite rules and admin upload UI behavior",
398
+ "behaviorAsserted": "admins can see accepted, skipped, and rejected rows in the panel",
399
+ "specStyleTestName": "admins can see accepted, skipped, and rejected rows in the panel",
400
+ "oneLogicalBehavior": true,
401
+ "publicVerificationPath": "Run the bulk invite rule and admin panel tests through their public flows",
402
+ "implementationDetailRisk": "low"
403
+ },
404
+ "feedbackLoop": {
405
+ "type": "automated-test",
406
+ "determinism": "deterministic",
407
+ "expectedFailure": ""
408
+ }
404
409
  },
405
410
  {
406
411
  "id": "T005",
@@ -456,7 +461,22 @@
456
461
  },
457
462
  "status": "passed",
458
463
  "attempts": 1,
459
- "maxRetries": 1
464
+ "maxRetries": 1,
465
+ "tddPhase": "evidence",
466
+ "verticalSlice": "Slice 3",
467
+ "testSeam": {
468
+ "entry": "bulk invite rules and admin upload UI behavior",
469
+ "behaviorAsserted": "fresh verification evidence exists for cc-check",
470
+ "specStyleTestName": "fresh verification evidence exists for cc-check",
471
+ "oneLogicalBehavior": true,
472
+ "publicVerificationPath": "Run the bulk invite rule and admin panel tests through their public flows",
473
+ "implementationDetailRisk": "low"
474
+ },
475
+ "feedbackLoop": {
476
+ "type": "automated-test",
477
+ "determinism": "deterministic",
478
+ "expectedFailure": ""
479
+ }
460
480
  }
461
481
  ],
462
482
  "metadata": {
@@ -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.5`
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 已完成
@@ -5,7 +5,7 @@
5
5
  },
6
6
  "meta": {
7
7
  "roadmapVersion": "roadmap.v2",
8
- "skillVersion": "5.2.0",
8
+ "skillVersion": "5.3.0",
9
9
  "status": "active",
10
10
  "lastUpdated": "2026-04-19",
11
11
  "currentFocusStage": "Stage 2"
@@ -5,7 +5,7 @@
5
5
  ## Backlog Meta
6
6
 
7
7
  - Roadmap version: `roadmap.v2`
8
- - Skill version: `5.2.0`
8
+ - Skill version: `5.3.0`
9
9
  - Last synced: `2026-04-19`
10
10
  - Current focus stage: `Stage 2`
11
11
  - Roadmap state source: `roadmap.json`
@@ -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.3.0`, `cc-plan@3.8.5`, `cc-do@1.6.5`, `cc-check@1.10.1`, `cc-act@1.8.7`
8
8
 
9
9
  This example shows verified work that is **ready to move forward**, but `cc-act` still chooses `local-handoff`.
10
10
 
@@ -3,7 +3,7 @@
3
3
  ## Roadmap Meta
4
4
 
5
5
  - Roadmap version: `roadmap.v3`
6
- - Skill version: `5.2.0`
6
+ - Skill version: `5.3.0`
7
7
  - Status: `active`
8
8
  - Last updated: `2026-04-16`
9
9
  - Owner / decider: `product-owner`
@@ -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.5`
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,44 +6,30 @@
6
6
  "requirementId": "REQ-003",
7
7
  "requirementVersion": "REQ-003.v1",
8
8
  "planningMeta": {
9
- "reqPlanSkillVersion": "3.8.1",
9
+ "reqPlanSkillVersion": "3.8.5",
10
10
  "designVersion": "design.v1",
11
11
  "approvedAt": "2026-04-16T13:10:00.000Z",
12
- "approvedBy": "user",
13
12
  "basedOnOption": "Tiny design card",
14
- "requirementBrief": {
15
- "problemStatement": "Admins can review audit summary rows in the UI, but weekly reporting requires manual copying.",
16
- "solutionSummary": "Add a CSV download action for the currently visible audit summary rows.",
17
- "actors": [
18
- "workspace admin reviewing weekly activity"
19
- ],
20
- "userStories": [
21
- {
22
- "id": "US-001",
23
- "actor": "workspace admin",
24
- "want": "download visible audit summary rows as CSV",
25
- "benefit": "include them in weekly reporting without manual copying",
26
- "acceptance": [
27
- "Panel behavior test proves the export action uses current summary rows"
28
- ]
29
- }
30
- ],
31
- "edgeOrRecoveryStories": [],
32
- "implementationDecisions": [
33
- "Export only rows already visible in the panel",
34
- "Keep CSV as the only output format"
35
- ],
36
- "testingDecisions": [
37
- "Test through the admin panel action and visible row data"
38
- ],
39
- "outOfScope": [
40
- "JSON export",
41
- "scheduled reporting",
42
- "shared reporting backend"
43
- ],
44
- "furtherNotes": [
45
- "Richer machine-readable exports should become a separate requirement"
46
- ]
13
+ "aiLeverageDecisionLens": {
14
+ "realUserOrOperator": "workspace admin preparing weekly review notes",
15
+ "statusQuoWorkaround": "manual copy of visible audit rows",
16
+ "humanTeamEffortForFullScope": "about one day for an engineer to implement, test, and document the local export",
17
+ "ccAgentEffortForFullScope": "about 30 minutes for visible-row CSV export plus targeted test and lint",
18
+ "aiCompressionRatio": "roughly 10x for the bounded local export path",
19
+ "completeLakeBoundary": "visible-row CSV export, panel action, current data source, targeted panel test, and lint",
20
+ "oceanBoundary": "JSON export, scheduled reporting, shared reporting backend, and cross-panel reporting platform",
21
+ "scopeRecommendation": "boil-lake",
22
+ "costModel": {
23
+ "agentTime": "low",
24
+ "humanReviewTime": "low",
25
+ "verificationCost": "targeted panel test plus lint",
26
+ "maintenanceCost": "low while scoped to visible rows",
27
+ "failureCost": "admins keep copying rows manually",
28
+ "reversibility": "reversible UI action"
29
+ },
30
+ "verdict": "boil-lake",
31
+ "missingEvidenceOrPivotReason": "",
32
+ "impactOnApprovedDirection": "complete the local visible-row export lake while deferring reporting platform work"
47
33
  },
48
34
  "externalBestPractice": {
49
35
  "needed": false,
@@ -89,31 +75,9 @@
89
75
  "impact": "cc-do exports only visible rows from the current panel and avoids new reporting contracts",
90
76
  "status": "answered"
91
77
  }
92
- ],
93
- "aiLeverageDecisionLens": {
94
- "realUserOrOperator": "workspace admin preparing weekly review notes",
95
- "statusQuoWorkaround": "manual copy of visible audit rows",
96
- "humanTeamEffortForFullScope": "about one day for an engineer to implement, test, and document the local export",
97
- "ccAgentEffortForFullScope": "about 30 minutes for visible-row CSV export plus targeted test and lint",
98
- "aiCompressionRatio": "roughly 10x for the bounded local export path",
99
- "completeLakeBoundary": "visible-row CSV export, panel action, current data source, targeted panel test, and lint",
100
- "oceanBoundary": "JSON export, scheduled reporting, shared reporting backend, and cross-panel reporting platform",
101
- "scopeRecommendation": "boil-lake",
102
- "costModel": {
103
- "agentTime": "low",
104
- "humanReviewTime": "low",
105
- "verificationCost": "targeted panel test plus lint",
106
- "maintenanceCost": "low while scoped to visible rows",
107
- "failureCost": "admins keep copying rows manually",
108
- "reversibility": "reversible UI action"
109
- },
110
- "verdict": "boil-lake",
111
- "missingEvidenceOrPivotReason": "",
112
- "impactOnApprovedDirection": "complete the local visible-row export lake while deferring reporting platform work"
113
- }
78
+ ]
114
79
  },
115
80
  "currentTaskId": null,
116
- "activePhase": null,
117
81
  "tasks": [
118
82
  {
119
83
  "id": "T001",
@@ -163,7 +127,22 @@
163
127
  },
164
128
  "status": "passed",
165
129
  "attempts": 1,
166
- "maxRetries": 1
130
+ "maxRetries": 1,
131
+ "tddPhase": "red",
132
+ "verticalSlice": "Slice 1",
133
+ "testSeam": {
134
+ "entry": "admin audit panel UI behavior",
135
+ "behaviorAsserted": "the missing download action is reproduced as a failing test",
136
+ "specStyleTestName": "the missing download action is reproduced as a failing test",
137
+ "oneLogicalBehavior": true,
138
+ "publicVerificationPath": "Run the audit summary panel test and observe CSV export through visible rows",
139
+ "implementationDetailRisk": "low"
140
+ },
141
+ "feedbackLoop": {
142
+ "type": "automated-test",
143
+ "determinism": "deterministic",
144
+ "expectedFailure": "Fails before the behavior exists"
145
+ }
167
146
  },
168
147
  {
169
148
  "id": "T002",
@@ -215,7 +194,22 @@
215
194
  },
216
195
  "status": "passed",
217
196
  "attempts": 1,
218
- "maxRetries": 1
197
+ "maxRetries": 1,
198
+ "tddPhase": "green",
199
+ "verticalSlice": "Slice 2",
200
+ "testSeam": {
201
+ "entry": "admin audit panel UI behavior",
202
+ "behaviorAsserted": "admins can trigger a CSV download from the existing summary panel",
203
+ "specStyleTestName": "admins can trigger a CSV download from the existing summary panel",
204
+ "oneLogicalBehavior": true,
205
+ "publicVerificationPath": "Run the audit summary panel test and observe CSV export through visible rows",
206
+ "implementationDetailRisk": "low"
207
+ },
208
+ "feedbackLoop": {
209
+ "type": "automated-test",
210
+ "determinism": "deterministic",
211
+ "expectedFailure": ""
212
+ }
219
213
  },
220
214
  {
221
215
  "id": "T003",
@@ -271,7 +265,22 @@
271
265
  },
272
266
  "status": "passed",
273
267
  "attempts": 1,
274
- "maxRetries": 1
268
+ "maxRetries": 1,
269
+ "tddPhase": "evidence",
270
+ "verticalSlice": "Slice 3",
271
+ "testSeam": {
272
+ "entry": "admin audit panel UI behavior",
273
+ "behaviorAsserted": "fresh verification evidence exists for local handoff",
274
+ "specStyleTestName": "fresh verification evidence exists for local handoff",
275
+ "oneLogicalBehavior": true,
276
+ "publicVerificationPath": "Run the audit summary panel test and observe CSV export through visible rows",
277
+ "implementationDetailRisk": "low"
278
+ },
279
+ "feedbackLoop": {
280
+ "type": "automated-test",
281
+ "determinism": "deterministic",
282
+ "expectedFailure": ""
283
+ }
275
284
  }
276
285
  ],
277
286
  "metadata": {
@@ -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.5`
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 已完成