cc-devflow 4.5.8 → 4.5.10

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 (149) hide show
  1. package/.claude/skills/cc-act/CHANGELOG.md +33 -0
  2. package/.claude/skills/cc-act/PLAYBOOK.md +9 -4
  3. package/.claude/skills/cc-act/SKILL.md +73 -12
  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 +61 -5
  8. package/.claude/skills/cc-act/references/closure-contract.md +4 -1
  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/render-pr-brief.sh +164 -0
  12. package/.claude/skills/cc-act/scripts/sync-act-docs.sh +1 -1
  13. package/.claude/skills/cc-check/CHANGELOG.md +17 -0
  14. package/.claude/skills/cc-check/PLAYBOOK.md +1 -0
  15. package/.claude/skills/cc-check/SKILL.md +9 -5
  16. package/.claude/skills/cc-check/references/review-contract.md +7 -0
  17. package/.claude/skills/cc-check/scripts/render-report-card.js +6 -1
  18. package/.claude/skills/cc-dev/CHANGELOG.md +5 -0
  19. package/.claude/skills/cc-dev/SKILL.md +26 -1
  20. package/.claude/skills/cc-do/CHANGELOG.md +23 -0
  21. package/.claude/skills/cc-do/PLAYBOOK.md +7 -7
  22. package/.claude/skills/cc-do/SKILL.md +49 -45
  23. package/.claude/skills/cc-do/references/execution-recovery.md +18 -13
  24. package/.claude/skills/cc-do/scripts/build-task-context.sh +13 -22
  25. package/.claude/skills/cc-do/scripts/mark-task-complete.sh +0 -6
  26. package/.claude/skills/cc-do/scripts/record-review-decision.sh +4 -5
  27. package/.claude/skills/cc-do/scripts/recover-workflow.sh +9 -11
  28. package/.claude/skills/cc-do/scripts/verify-task-gates.sh +12 -10
  29. package/.claude/skills/cc-do/scripts/write-task-checkpoint.sh +7 -29
  30. package/.claude/skills/cc-investigate/CHANGELOG.md +34 -0
  31. package/.claude/skills/cc-investigate/PLAYBOOK.md +21 -5
  32. package/.claude/skills/cc-investigate/SKILL.md +97 -40
  33. package/.claude/skills/cc-investigate/assets/TASKS_TEMPLATE.md +66 -4
  34. package/.claude/skills/cc-investigate/assets/TASK_MANIFEST_TEMPLATE.json +30 -59
  35. package/.claude/skills/cc-investigate/assets/{ANALYSIS_TEMPLATE.md → legacy/ANALYSIS_TEMPLATE.md} +48 -0
  36. package/.claude/skills/cc-investigate/references/investigation-contract.md +16 -2
  37. package/.claude/skills/cc-investigate/scripts/bootstrap-analysis.sh +1 -1
  38. package/.claude/skills/cc-next/CHANGELOG.md +6 -0
  39. package/.claude/skills/cc-next/PLAYBOOK.md +26 -4
  40. package/.claude/skills/cc-next/SKILL.md +39 -4
  41. package/.claude/skills/cc-plan/CHANGELOG.md +38 -0
  42. package/.claude/skills/cc-plan/PLAYBOOK.md +60 -53
  43. package/.claude/skills/cc-plan/SKILL.md +164 -87
  44. package/.claude/skills/cc-plan/assets/TASKS_TEMPLATE.md +101 -9
  45. package/.claude/skills/cc-plan/assets/TASK_MANIFEST_TEMPLATE.json +58 -229
  46. package/.claude/skills/cc-plan/assets/{DESIGN_TEMPLATE.md → legacy/DESIGN_TEMPLATE.md} +68 -0
  47. package/.claude/skills/cc-plan/assets/{TINY_DESIGN_TEMPLATE.md → legacy/TINY_DESIGN_TEMPLATE.md} +47 -1
  48. package/.claude/skills/cc-plan/references/planning-contract.md +48 -33
  49. package/.claude/skills/cc-review/CHANGELOG.md +6 -0
  50. package/.claude/skills/cc-review/PLAYBOOK.md +9 -11
  51. package/.claude/skills/cc-review/SKILL.md +37 -61
  52. package/.claude/skills/cc-review/references/e2e-and-plugin-verification.md +1 -1
  53. package/.claude/skills/cc-review/references/implementation-review-branch.md +5 -5
  54. package/.claude/skills/cc-review/references/plan-review-branch.md +1 -1
  55. package/.claude/skills/cc-review/references/review-methods.md +4 -4
  56. package/.claude/skills/cc-review/scripts/collect-review-context.sh +14 -7
  57. package/.claude/skills/cc-roadmap/CHANGELOG.md +6 -0
  58. package/.claude/skills/cc-roadmap/PLAYBOOK.md +30 -0
  59. package/.claude/skills/cc-roadmap/SKILL.md +45 -8
  60. package/.claude/skills/cc-roadmap/assets/BACKLOG_TEMPLATE.md +8 -0
  61. package/.claude/skills/cc-roadmap/assets/ROADMAP_TEMPLATE.md +22 -0
  62. package/.claude/skills/cc-roadmap/assets/TRACKING_TEMPLATE.json +32 -1
  63. package/.claude/skills/cc-roadmap/references/roadmap-dialogue.md +14 -14
  64. package/CHANGELOG.md +28 -0
  65. package/CONTRIBUTING.md +40 -4
  66. package/CONTRIBUTING.zh-CN.md +40 -4
  67. package/README.md +57 -43
  68. package/README.zh-CN.md +57 -43
  69. package/bin/cc-devflow-cli.js +293 -36
  70. package/docs/examples/START-HERE.md +5 -4
  71. package/docs/examples/example-bindings.json +10 -10
  72. package/docs/examples/full-design-blocked/BACKLOG.md +1 -1
  73. package/docs/examples/full-design-blocked/README.md +2 -2
  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 +2 -1
  76. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json +29 -312
  77. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md +11 -8
  78. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/review/report-card.json +4 -4
  79. package/docs/examples/full-design-blocked/roadmap.json +1 -1
  80. package/docs/examples/local-handoff/BACKLOG.md +1 -1
  81. package/docs/examples/local-handoff/README.md +2 -2
  82. package/docs/examples/local-handoff/ROADMAP.md +1 -1
  83. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/design.md +2 -1
  84. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json +27 -210
  85. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/tasks.md +9 -6
  86. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/review/report-card.json +1 -1
  87. package/docs/examples/local-handoff/roadmap.json +1 -1
  88. package/docs/examples/pdca-loop/BACKLOG.md +1 -1
  89. package/docs/examples/pdca-loop/README.md +2 -2
  90. package/docs/examples/pdca-loop/ROADMAP.md +1 -1
  91. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/handoff/pr-brief.md +65 -1
  92. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/design.md +2 -1
  93. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json +26 -228
  94. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md +9 -6
  95. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/review/report-card.json +1 -1
  96. package/docs/examples/pdca-loop/roadmap.json +1 -1
  97. package/docs/examples/scripts/check-example-bindings.sh +11 -5
  98. package/docs/get-shit-done-strategy-audit.md +22 -22
  99. package/docs/guides/artifact-contract.md +44 -0
  100. package/docs/guides/getting-started.md +10 -8
  101. package/docs/guides/getting-started.zh-CN.md +10 -8
  102. package/docs/guides/minimize-artifacts.md +123 -0
  103. package/docs/guides/project-postmortem.md +78 -0
  104. package/lib/compiler/__tests__/skills-registry.test.js +2 -2
  105. package/lib/skill-runtime/CLAUDE.md +1 -1
  106. package/lib/skill-runtime/__tests__/autopilot.test.js +42 -6
  107. package/lib/skill-runtime/__tests__/benchmark-artifacts.test.js +165 -0
  108. package/lib/skill-runtime/__tests__/cli-bootstrap.integration.test.js +2 -2
  109. package/lib/skill-runtime/__tests__/dispatch.test.js +8 -38
  110. package/lib/skill-runtime/__tests__/intent.test.js +4 -20
  111. package/lib/skill-runtime/__tests__/lifecycle.test.js +1 -1
  112. package/lib/skill-runtime/__tests__/paths.test.js +7 -1
  113. package/lib/skill-runtime/__tests__/planner.tdd.test.js +63 -2
  114. package/lib/skill-runtime/__tests__/prepare-pr.test.js +3 -16
  115. package/lib/skill-runtime/__tests__/query.test.js +388 -7
  116. package/lib/skill-runtime/__tests__/review-check-integration.test.js +148 -0
  117. package/lib/skill-runtime/__tests__/review-records.test.js +619 -0
  118. package/lib/skill-runtime/__tests__/runtime.integration.test.js +64 -23
  119. package/lib/skill-runtime/__tests__/schemas.test.js +76 -2
  120. package/lib/skill-runtime/__tests__/task-contract-migrate.test.js +137 -0
  121. package/lib/skill-runtime/__tests__/task-contract.test.js +783 -0
  122. package/lib/skill-runtime/__tests__/verify-artifacts.test.js +203 -0
  123. package/lib/skill-runtime/__tests__/worker-run.test.js +4 -11
  124. package/lib/skill-runtime/__tests__/workflow-context-legacy-fallback.test.js +31 -0
  125. package/lib/skill-runtime/__tests__/workflow-context.test.js +98 -0
  126. package/lib/skill-runtime/artifacts.js +0 -5
  127. package/lib/skill-runtime/context-index.js +545 -0
  128. package/lib/skill-runtime/intent.js +9 -33
  129. package/lib/skill-runtime/lifecycle.js +1 -1
  130. package/lib/skill-runtime/operations/CLAUDE.md +2 -2
  131. package/lib/skill-runtime/operations/dispatch.js +4 -42
  132. package/lib/skill-runtime/operations/init.js +2 -6
  133. package/lib/skill-runtime/operations/janitor.js +2 -18
  134. package/lib/skill-runtime/operations/resume.js +21 -38
  135. package/lib/skill-runtime/operations/review-records.js +265 -0
  136. package/lib/skill-runtime/operations/snapshot.js +1 -1
  137. package/lib/skill-runtime/operations/task-contract.js +524 -0
  138. package/lib/skill-runtime/operations/worker-run.js +2 -30
  139. package/lib/skill-runtime/paths.js +4 -4
  140. package/lib/skill-runtime/planner.js +25 -13
  141. package/lib/skill-runtime/query-registry.js +2 -2
  142. package/lib/skill-runtime/query.js +16 -3
  143. package/lib/skill-runtime/review-records.js +123 -0
  144. package/lib/skill-runtime/review.js +246 -11
  145. package/lib/skill-runtime/schemas.js +179 -15
  146. package/lib/skill-runtime/store.js +0 -10
  147. package/lib/skill-runtime/task-contract.js +187 -0
  148. package/lib/skill-runtime/workflow-context.js +748 -0
  149. package/package.json +7 -4
@@ -6,63 +6,31 @@
6
6
  "requirementId": "REQ-002",
7
7
  "requirementVersion": "REQ-002.v2",
8
8
  "planningMeta": {
9
- "reqPlanSkillVersion": "3.8.2",
9
+ "reqPlanSkillVersion": "3.9.0",
10
10
  "designVersion": "design.v2",
11
+ "workBranch": "REQ/002-bulk-invite-import",
11
12
  "approvedAt": null,
12
- "approvedBy": null,
13
13
  "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
- ]
14
+ "aiLeverageDecisionLens": {
15
+ "realUserOrOperator": "workspace admin onboarding larger teams",
16
+ "statusQuoWorkaround": "paste invite emails one by one or track them in spreadsheets",
17
+ "humanTeamEffortForFullScope": "multiple weeks across product, engineering, billing, and support review",
18
+ "ccAgentEffortForFullScope": "several hours once row semantics are approved, but unbounded before that",
19
+ "aiCompressionRatio": "high after semantics freeze, low while the product contract is ambiguous",
20
+ "completeLakeBoundary": "row classification, admin upload flow, billing-seat checks, and audit mapping after rule approval",
21
+ "oceanBoundary": "SCIM, background retries, rollback wizard, and unspecified billing semantics",
22
+ "scopeRecommendation": "sharp-wedge",
23
+ "costModel": {
24
+ "agentTime": "medium after rule approval",
25
+ "humanReviewTime": "high until semantics are approved",
26
+ "verificationCost": "bulk rules, admin flow, billing, and audit tests",
27
+ "maintenanceCost": "medium after semantics freeze",
28
+ "failureCost": "high if billing or audit outcomes drift",
29
+ "reversibility": "limited once execution semantics ship"
30
+ },
31
+ "verdict": "sharp-wedge",
32
+ "missingEvidenceOrPivotReason": "none at plan approval; cc-check later reopened duplicate, invalid-row, partial-success, and seat-limit semantics before retry or cc-act",
33
+ "impactOnApprovedDirection": "allow bounded import-path execution, then block final proof if review finds row semantics drift"
66
34
  },
67
35
  "externalBestPractice": {
68
36
  "needed": true,
@@ -172,31 +140,9 @@
172
140
  "impact": "cc-do retry and cc-act must stay blocked until this is answered",
173
141
  "status": "asked"
174
142
  }
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
- }
143
+ ]
197
144
  },
198
145
  "currentTaskId": null,
199
- "activePhase": null,
200
146
  "tasks": [
201
147
  {
202
148
  "id": "T001",
@@ -260,46 +206,7 @@
260
206
  "type": "automated-test",
261
207
  "determinism": "deterministic",
262
208
  "expectedFailure": "Fails before the behavior exists"
263
- },
264
- "allowedMocks": [
265
- "file upload boundary",
266
- "billing / seat limit boundary"
267
- ],
268
- "testQuality": {
269
- "usesPublicInterface": true,
270
- "describesBehavior": true,
271
- "specStyleName": true,
272
- "oneLogicalBehavior": true,
273
- "verifiesThroughPublicPath": true,
274
- "survivesInternalRefactor": true,
275
- "mocksOnlySystemBoundaries": true,
276
- "noBulkRed": true
277
- },
278
- "greenMinimality": {
279
- "guard": "Keep the task scoped to its stated verification evidence",
280
- "noSpeculativeBranches": true
281
- },
282
- "completion": {
283
- "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/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",
284
- "requiredBeforeCompletion": [
285
- "verification evidence captured",
286
- "checkpoint written",
287
- "spec review gate recorded",
288
- "code review gate recorded"
289
- ],
290
- "forbiddenShortcuts": [
291
- "manual checkbox edit",
292
- "manual manifest status edit",
293
- "leaving currentTaskId stale"
294
- ]
295
- },
296
- "refactorCandidates": [
297
- "duplication",
298
- "long method",
299
- "primitive obsession",
300
- "naming",
301
- "more than three nested branches"
302
- ]
209
+ }
303
210
  },
304
211
  {
305
212
  "id": "T002",
@@ -330,7 +237,7 @@
330
237
  ],
331
238
  "evidence": [
332
239
  "passing test output",
333
- "checkpoint summary"
240
+ "CLI log summary"
334
241
  ],
335
242
  "context": {
336
243
  "readFiles": [
@@ -366,46 +273,7 @@
366
273
  "type": "automated-test",
367
274
  "determinism": "deterministic",
368
275
  "expectedFailure": ""
369
- },
370
- "allowedMocks": [
371
- "file upload boundary",
372
- "billing / seat limit boundary"
373
- ],
374
- "testQuality": {
375
- "usesPublicInterface": true,
376
- "describesBehavior": true,
377
- "specStyleName": true,
378
- "oneLogicalBehavior": true,
379
- "verifiesThroughPublicPath": true,
380
- "survivesInternalRefactor": true,
381
- "mocksOnlySystemBoundaries": true,
382
- "noBulkRed": true
383
- },
384
- "greenMinimality": {
385
- "guard": "Implement only the code needed to pass the current red behavior",
386
- "noSpeculativeBranches": true
387
- },
388
- "completion": {
389
- "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/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",
390
- "requiredBeforeCompletion": [
391
- "verification evidence captured",
392
- "checkpoint written",
393
- "spec review gate recorded",
394
- "code review gate recorded"
395
- ],
396
- "forbiddenShortcuts": [
397
- "manual checkbox edit",
398
- "manual manifest status edit",
399
- "leaving currentTaskId stale"
400
- ]
401
- },
402
- "refactorCandidates": [
403
- "duplication",
404
- "long method",
405
- "primitive obsession",
406
- "naming",
407
- "more than three nested branches"
408
- ]
276
+ }
409
277
  },
410
278
  {
411
279
  "id": "T003",
@@ -471,46 +339,7 @@
471
339
  "type": "automated-test",
472
340
  "determinism": "deterministic",
473
341
  "expectedFailure": "Fails before the behavior exists"
474
- },
475
- "allowedMocks": [
476
- "file upload boundary",
477
- "billing / seat limit boundary"
478
- ],
479
- "testQuality": {
480
- "usesPublicInterface": true,
481
- "describesBehavior": true,
482
- "specStyleName": true,
483
- "oneLogicalBehavior": true,
484
- "verifiesThroughPublicPath": true,
485
- "survivesInternalRefactor": true,
486
- "mocksOnlySystemBoundaries": true,
487
- "noBulkRed": true
488
- },
489
- "greenMinimality": {
490
- "guard": "Keep the task scoped to its stated verification evidence",
491
- "noSpeculativeBranches": true
492
- },
493
- "completion": {
494
- "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/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",
495
- "requiredBeforeCompletion": [
496
- "verification evidence captured",
497
- "checkpoint written",
498
- "spec review gate recorded",
499
- "code review gate recorded"
500
- ],
501
- "forbiddenShortcuts": [
502
- "manual checkbox edit",
503
- "manual manifest status edit",
504
- "leaving currentTaskId stale"
505
- ]
506
- },
507
- "refactorCandidates": [
508
- "duplication",
509
- "long method",
510
- "primitive obsession",
511
- "naming",
512
- "more than three nested branches"
513
- ]
342
+ }
514
343
  },
515
344
  {
516
345
  "id": "T004",
@@ -577,46 +406,7 @@
577
406
  "type": "automated-test",
578
407
  "determinism": "deterministic",
579
408
  "expectedFailure": ""
580
- },
581
- "allowedMocks": [
582
- "file upload boundary",
583
- "billing / seat limit boundary"
584
- ],
585
- "testQuality": {
586
- "usesPublicInterface": true,
587
- "describesBehavior": true,
588
- "specStyleName": true,
589
- "oneLogicalBehavior": true,
590
- "verifiesThroughPublicPath": true,
591
- "survivesInternalRefactor": true,
592
- "mocksOnlySystemBoundaries": true,
593
- "noBulkRed": true
594
- },
595
- "greenMinimality": {
596
- "guard": "Implement only the code needed to pass the current red behavior",
597
- "noSpeculativeBranches": true
598
- },
599
- "completion": {
600
- "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/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",
601
- "requiredBeforeCompletion": [
602
- "verification evidence captured",
603
- "checkpoint written",
604
- "spec review gate recorded",
605
- "code review gate recorded"
606
- ],
607
- "forbiddenShortcuts": [
608
- "manual checkbox edit",
609
- "manual manifest status edit",
610
- "leaving currentTaskId stale"
611
- ]
612
- },
613
- "refactorCandidates": [
614
- "duplication",
615
- "long method",
616
- "primitive obsession",
617
- "naming",
618
- "more than three nested branches"
619
- ]
409
+ }
620
410
  },
621
411
  {
622
412
  "id": "T005",
@@ -687,85 +477,12 @@
687
477
  "type": "automated-test",
688
478
  "determinism": "deterministic",
689
479
  "expectedFailure": ""
690
- },
691
- "allowedMocks": [
692
- "file upload boundary",
693
- "billing / seat limit boundary"
694
- ],
695
- "testQuality": {
696
- "usesPublicInterface": true,
697
- "describesBehavior": true,
698
- "specStyleName": true,
699
- "oneLogicalBehavior": true,
700
- "verifiesThroughPublicPath": true,
701
- "survivesInternalRefactor": true,
702
- "mocksOnlySystemBoundaries": true,
703
- "noBulkRed": true
704
- },
705
- "greenMinimality": {
706
- "guard": "Keep the task scoped to its stated verification evidence",
707
- "noSpeculativeBranches": true
708
- },
709
- "completion": {
710
- "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/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",
711
- "requiredBeforeCompletion": [
712
- "verification evidence captured",
713
- "checkpoint written",
714
- "spec review gate recorded",
715
- "code review gate recorded"
716
- ],
717
- "forbiddenShortcuts": [
718
- "manual checkbox edit",
719
- "manual manifest status edit",
720
- "leaving currentTaskId stale"
721
- ]
722
- },
723
- "refactorCandidates": [
724
- "duplication",
725
- "long method",
726
- "primitive obsession",
727
- "naming",
728
- "more than three nested branches"
729
- ]
480
+ }
730
481
  }
731
482
  ],
732
483
  "metadata": {
733
484
  "source": "tasks.md",
734
485
  "generatedBy": "docs-example",
735
486
  "planVersion": 1
736
- },
737
- "executionProtocol": {
738
- "templateCompliance": {
739
- "required": true,
740
- "sourceTemplate": "assets/TASKS_TEMPLATE.md",
741
- "taskBlockMustInclude": [
742
- "Goal",
743
- "TDD phase",
744
- "Files",
745
- "Read first",
746
- "Verification",
747
- "Evidence",
748
- "Test seam",
749
- "Public verification path",
750
- "Allowed mocks",
751
- "Completion"
752
- ],
753
- "titleOnlyTasks": "forbidden"
754
- },
755
- "selection": {
756
- "sourceOfTruth": "planning/task-manifest.json.currentTaskId",
757
- "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/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json"
758
- },
759
- "completion": {
760
- "manualStatusEdit": "forbidden",
761
- "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/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>",
762
- "failurePolicy": "Do not hand-edit status; fix missing checkpoint, review gate, or dependency evidence and rerun the script.",
763
- "updates": [
764
- "planning/task-manifest.json.tasks[].status",
765
- "planning/task-manifest.json.currentTaskId",
766
- "planning/task-manifest.json.status",
767
- "planning/tasks.md checkbox"
768
- ]
769
- }
770
487
  }
771
488
  }
@@ -4,7 +4,8 @@
4
4
 
5
5
  - Requirement version: `REQ-002.v2`
6
6
  - Design version: `design.v2`
7
- - CC-Plan skill version: `3.8.2`
7
+ - CC-Plan skill version: `3.9.0`
8
+ - Work branch: `REQ/002-bulk-invite-import`
8
9
  - Source roadmap item: `RM-010`
9
10
  - Source roadmap version: `roadmap.v2`
10
11
 
@@ -42,12 +43,14 @@
42
43
  ClaudeCode / Codex 执行本计划时,必须把本文件当成任务模板合同,而不是普通 TODO 列表。
43
44
 
44
45
  - Template source: `assets/TASKS_TEMPLATE.md`
46
+ - 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`.
45
47
  - Task selection: read `planning/task-manifest.json.currentTaskId`; if empty, run the ready-task selector before choosing work.
46
48
  - Task block rule: read the full task block before coding; title-only execution is invalid.
47
49
  - 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.
50
+ - 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
51
 
50
52
  ```bash
53
+ cc-devflow query workflow-context --change <changeId> --change-key <changeKey> --cwd <repo-root> --data-only --no-trace --compact
51
54
  SCRIPT_ROOT=".claude/skills/cc-do/scripts"
52
55
  if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then
53
56
  SCRIPT_ROOT=".codex/skills/cc-do/scripts"
@@ -65,7 +68,7 @@ bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/full-design-b
65
68
  Read first: `design.md`, `src/invite/bulk-import.ts`
66
69
  Verification: `npm test -- src/invite/bulk-import.test.ts`
67
70
  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.
71
+ 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/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
72
  Test seam: bulk invite rules and admin upload UI behavior
70
73
  Public verification path: Run the bulk invite rule and admin panel tests through their public flows
71
74
  Allowed mocks: file upload boundary / billing / seat limit boundary
@@ -77,8 +80,8 @@ bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/full-design-b
77
80
  Files: `src/invite/bulk-import.ts`
78
81
  Read first: `design.md`, `src/invite/bulk-import.test.ts`
79
82
  Verification: `npm test -- src/invite/bulk-import.test.ts`
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.
83
+ Evidence: passing output + Git diff
84
+ 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/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
85
  Test seam: bulk invite rules and admin upload UI behavior
83
86
  Public verification path: Run the bulk invite rule and admin panel tests through their public flows
84
87
  Allowed mocks: file upload boundary / billing / seat limit boundary
@@ -93,7 +96,7 @@ bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/full-design-b
93
96
  Read first: `design.md`, `src/admin/BulkInvitePanel.tsx`
94
97
  Verification: `npm test -- src/admin/BulkInvitePanel.test.tsx`
95
98
  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.
99
+ 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/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
100
  Test seam: bulk invite rules and admin upload UI behavior
98
101
  Public verification path: Run the bulk invite rule and admin panel tests through their public flows
99
102
  Allowed mocks: file upload boundary / billing / seat limit boundary
@@ -106,7 +109,7 @@ bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/full-design-b
106
109
  Read first: `design.md`, `src/admin/BulkInvitePanel.test.tsx`
107
110
  Verification: `npm test -- src/admin/BulkInvitePanel.test.tsx`
108
111
  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.
112
+ 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/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
113
  Test seam: bulk invite rules and admin upload UI behavior
111
114
  Public verification path: Run the bulk invite rule and admin panel tests through their public flows
112
115
  Allowed mocks: file upload boundary / billing / seat limit boundary
@@ -123,7 +126,7 @@ bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/full-design-b
123
126
  - `npm test -- src/invite/bulk-import.test.ts`
124
127
  - `npm test -- src/admin/BulkInvitePanel.test.tsx`
125
128
  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.
129
+ 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/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
130
  Test seam: bulk invite rules and admin upload UI behavior
128
131
  Public verification path: Run the bulk invite rule and admin panel tests through their public flows
129
132
  Allowed mocks: file upload boundary / billing / seat limit boundary
@@ -31,7 +31,7 @@
31
31
  {
32
32
  "claim": "requirements-met",
33
33
  "requiredProof": "line-by-line planning/tasks.md and task-manifest.json checklist",
34
- "commandOrArtifact": "planning/design.md + planning/task-manifest.json",
34
+ "commandOrArtifact": "planning/tasks.md#Contract Summary + planning/task-manifest.json",
35
35
  "exitStatus": null,
36
36
  "keyObservation": "duplicate-email and seat-limit semantics are still underspecified",
37
37
  "status": "blocked"
@@ -129,7 +129,7 @@
129
129
  "reviewPacket": {
130
130
  "baseSha": "example-base",
131
131
  "headSha": "example-head",
132
- "requirements": "planning/design.md",
132
+ "requirements": "planning/tasks.md#Contract Summary",
133
133
  "implemented": "bulk invite import implementation",
134
134
  "reviewerContext": "requirement diff, plan completion, scope drift, docs staleness"
135
135
  },
@@ -140,7 +140,7 @@
140
140
  "confidence": "high",
141
141
  "source": "diff-review",
142
142
  "summary": "duplicate-email behavior is still underspecified",
143
- "evidence": "planning/design.md does not freeze row-level duplicate semantics",
143
+ "evidence": "planning/tasks.md#Contract Summary does not freeze row-level duplicate semantics",
144
144
  "action": "reroute-cc-plan",
145
145
  "triageStatus": "clarification-needed",
146
146
  "confidenceScore": 9,
@@ -153,7 +153,7 @@
153
153
  "confidence": "high",
154
154
  "source": "diff-review",
155
155
  "summary": "seat-limit partial-failure semantics are not frozen in design.md",
156
- "evidence": "planning/design.md lacks accepted row-outcome matrix",
156
+ "evidence": "planning/tasks.md#Contract Summary lacks accepted row-outcome matrix",
157
157
  "action": "reroute-cc-plan",
158
158
  "triageStatus": "clarification-needed",
159
159
  "confidenceScore": 9,
@@ -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.2`, `cc-do@1.6.3`, `cc-check@1.10.1`, `cc-act@1.8.3`
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`
8
8
 
9
9
  This example shows verified work that is **ready to move forward**, but `cc-act` still chooses `local-handoff`.
10
10
 
@@ -39,8 +39,8 @@ But the current environment is local-only:
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/design.md`
43
42
  - `changes/REQ-003-audit-log-export/planning/tasks.md`
43
+ - `changes/REQ-003-audit-log-export/planning/design.md` (legacy fallback sample)
44
44
  - `changes/REQ-003-audit-log-export/planning/task-manifest.json`
45
45
  - `changes/REQ-003-audit-log-export/review/report-card.json`
46
46
  - `changes/REQ-003-audit-log-export/handoff/resume-index.md`
@@ -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,8 @@
4
4
 
5
5
  - Requirement version: `REQ-003.v1`
6
6
  - Design version: `design.v1`
7
- - CC-Plan skill version: `3.8.2`
7
+ - CC-Plan skill version: `3.9.0`
8
+ - Work branch: `REQ/003-audit-log-export`
8
9
  - Requirement ID: `REQ-003`
9
10
  - Design mode: `tiny-design`
10
11
  - Why this stays `tiny-design`: the patch adds one export action inside the existing admin audit UI without changing data contracts