cc-devflow 4.5.6 → 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 (92) hide show
  1. package/.claude/skills/cc-act/CHANGELOG.md +6 -0
  2. package/.claude/skills/cc-act/PLAYBOOK.md +11 -2
  3. package/.claude/skills/cc-act/SKILL.md +17 -7
  4. package/.claude/skills/cc-act/references/closure-contract.md +4 -0
  5. package/.claude/skills/cc-act/scripts/{archive-requirement.sh → archive-change.sh} +7 -7
  6. package/.claude/skills/cc-act/scripts/detect-ship-target.sh +27 -0
  7. package/.claude/skills/cc-act/scripts/ensure-ship-branch.sh +93 -0
  8. package/.claude/skills/cc-act/scripts/generate-status-report.sh +6 -0
  9. package/.claude/skills/cc-act/scripts/render-pr-brief.sh +6 -0
  10. package/.claude/skills/cc-act/scripts/sync-act-docs.sh +14 -0
  11. package/.claude/skills/cc-dev/CHANGELOG.md +5 -0
  12. package/.claude/skills/cc-dev/PLAYBOOK.md +63 -0
  13. package/.claude/skills/cc-dev/SKILL.md +168 -0
  14. package/.claude/skills/cc-do/CHANGELOG.md +6 -0
  15. package/.claude/skills/cc-do/SKILL.md +23 -1
  16. package/.claude/skills/cc-investigate/CHANGELOG.md +5 -0
  17. package/.claude/skills/cc-investigate/SKILL.md +2 -2
  18. package/.claude/skills/cc-next/CHANGELOG.md +5 -0
  19. package/.claude/skills/cc-next/PLAYBOOK.md +52 -0
  20. package/.claude/skills/cc-next/SKILL.md +161 -0
  21. package/.claude/skills/cc-plan/CHANGELOG.md +28 -0
  22. package/.claude/skills/cc-plan/PLAYBOOK.md +20 -17
  23. package/.claude/skills/cc-plan/SKILL.md +135 -21
  24. package/.claude/skills/cc-plan/assets/DESIGN_TEMPLATE.md +42 -0
  25. package/.claude/skills/cc-plan/assets/TASKS_TEMPLATE.md +28 -0
  26. package/.claude/skills/cc-plan/assets/TASK_MANIFEST_TEMPLATE.json +84 -2
  27. package/.claude/skills/cc-plan/assets/TINY_DESIGN_TEMPLATE.md +30 -0
  28. package/.claude/skills/cc-plan/references/planning-contract.md +31 -15
  29. package/.claude/skills/cc-plan/scripts/next-change-key.sh +78 -0
  30. package/.claude/skills/cc-pr-land/CHANGELOG.md +5 -0
  31. package/.claude/skills/cc-pr-land/PLAYBOOK.md +45 -0
  32. package/.claude/skills/cc-pr-land/SKILL.md +157 -0
  33. package/.claude/skills/cc-pr-review/CHANGELOG.md +5 -0
  34. package/.claude/skills/cc-pr-review/PLAYBOOK.md +46 -0
  35. package/.claude/skills/cc-pr-review/SKILL.md +142 -0
  36. package/.claude/skills/cc-review/CHANGELOG.md +28 -0
  37. package/.claude/skills/cc-review/PLAYBOOK.md +108 -0
  38. package/.claude/skills/cc-review/SKILL.md +340 -0
  39. package/.claude/skills/cc-review/references/e2e-and-plugin-verification.md +85 -0
  40. package/.claude/skills/cc-review/references/implementation-review-branch.md +152 -0
  41. package/.claude/skills/cc-review/references/plan-review-branch.md +151 -0
  42. package/.claude/skills/cc-review/references/review-methods.md +221 -0
  43. package/.claude/skills/cc-review/scripts/collect-review-context.sh +80 -0
  44. package/.claude/skills/cc-roadmap/CHANGELOG.md +6 -0
  45. package/.claude/skills/cc-roadmap/SKILL.md +102 -8
  46. package/.claude/skills/cc-roadmap/assets/BACKLOG_TEMPLATE.md +3 -0
  47. package/.claude/skills/cc-roadmap/assets/ROADMAP_TEMPLATE.md +23 -0
  48. package/.claude/skills/cc-roadmap/assets/TRACKING_TEMPLATE.json +20 -1
  49. package/.claude/skills/cc-roadmap/references/roadmap-dialogue.md +28 -13
  50. package/.claude/skills/cc-roadmap/scripts/lib/roadmap-tracking/markdown.js +18 -0
  51. package/.claude/skills/cc-roadmap/scripts/lib/roadmap-tracking/schema.js +8 -0
  52. package/.claude/skills/cc-simplify/CHANGELOG.md +6 -0
  53. package/.claude/skills/cc-simplify/SKILL.md +19 -8
  54. package/CHANGELOG.md +16 -0
  55. package/README.md +58 -4
  56. package/README.zh-CN.md +58 -4
  57. package/bin/cc-devflow-cli.js +119 -0
  58. package/config/distributable-skills.json +10 -0
  59. package/docs/assets/cc-devflow-pr-harness-en.svg +153 -0
  60. package/docs/assets/cc-devflow-pr-harness-zh.svg +152 -0
  61. package/docs/assets/wechat-group-qr.jpg +0 -0
  62. package/docs/examples/example-bindings.json +11 -6
  63. package/docs/examples/full-design-blocked/BACKLOG.md +1 -1
  64. package/docs/examples/full-design-blocked/README.md +1 -1
  65. package/docs/examples/full-design-blocked/ROADMAP.md +16 -1
  66. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/design.md +36 -3
  67. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json +604 -76
  68. package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md +46 -1
  69. package/docs/examples/full-design-blocked/roadmap.json +18 -2
  70. package/docs/examples/local-handoff/BACKLOG.md +1 -1
  71. package/docs/examples/local-handoff/README.md +1 -1
  72. package/docs/examples/local-handoff/ROADMAP.md +16 -1
  73. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/design.md +27 -1
  74. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json +366 -44
  75. package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/tasks.md +36 -1
  76. package/docs/examples/local-handoff/roadmap.json +16 -2
  77. package/docs/examples/pdca-loop/BACKLOG.md +1 -1
  78. package/docs/examples/pdca-loop/README.md +1 -1
  79. package/docs/examples/pdca-loop/ROADMAP.md +16 -1
  80. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/design.md +27 -1
  81. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json +259 -14
  82. package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md +36 -1
  83. package/docs/examples/pdca-loop/roadmap.json +16 -2
  84. package/docs/examples/scripts/check-example-bindings.sh +21 -1
  85. package/docs/guides/getting-started.md +12 -9
  86. package/docs/guides/getting-started.zh-CN.md +12 -9
  87. package/lib/skill-runtime/__tests__/archive-change.test.js +124 -0
  88. package/lib/skill-runtime/__tests__/cli-bootstrap.integration.test.js +1 -0
  89. package/lib/skill-runtime/__tests__/paths.test.js +81 -1
  90. package/lib/skill-runtime/archive-change.js +64 -0
  91. package/lib/skill-runtime/paths.js +32 -0
  92. package/package.json +7 -1
@@ -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.7.7`
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
@@ -67,6 +67,30 @@
67
67
  - Risk: copied-state feedback may be too subtle for users
68
68
  - Mitigation: keep the first patch minimal and log a follow-up roadmap item if support friction remains
69
69
 
70
+ ## AI Leverage Decision Lens
71
+
72
+ - Real user / operator: workspace member sharing an invite
73
+ - Status quo workaround: manually select the visible invite URL
74
+ - Human-team effort for full scope: about half a day for one engineer including test and review
75
+ - CC / agent effort for full scope: about 20 minutes for a targeted UI patch plus test update
76
+ - AI compression ratio: roughly 10x for this bounded UI slice
77
+ - Complete-lake boundary: copy action, current invite URL source, copied-state feedback, and dialog behavior test
78
+ - Ocean boundary: invite generation, permissions, analytics, and clipboard fallback redesign
79
+ - Scope recommendation: `boil-lake`
80
+ - Cost model: low agent time, low human review time, targeted dialog test, no backend maintenance cost, reversible UI patch
81
+ - Verdict: `boil-lake`
82
+ - Missing evidence or pivot reason: none
83
+
84
+ ## External Best-Practice Validation
85
+
86
+ - Needed: No
87
+ - Decision status: not-needed
88
+ - Generalized search terms:
89
+ - Sources checked:
90
+ - Repo-fit verdict: skipped
91
+ - Changes to frozen design:
92
+ - Skipped reason: existing share-dialog behavior and repo tests are sufficient for the tiny design
93
+
70
94
  ## Review Gate
71
95
 
72
96
  - Placeholder scan: pass
@@ -75,6 +99,8 @@
75
99
  - Ambiguity scan: pass; execution does not need to re-decide button placement or clipboard source
76
100
  - Feasibility scan: pass; existing dialog and tests already cover the target surface
77
101
  - PRD brief scan: pass; problem, story, implementation decision, testing decision, and out-of-scope are durable
102
+ - AI Leverage Decision Lens scan: pass; bounded same-dialog lake is cheap enough to complete, not just render a happy-path button
103
+ - External best-practice scan: pass; not needed for a repo-local tiny design
78
104
  - Decision question scan: pass; `D1` approved the tiny-design copy-action boundary
79
105
  - Final recommendation: approved as `tiny-design`
80
106
 
@@ -9,7 +9,7 @@
9
9
  "sourceRoadmap": {
10
10
  "itemId": "RM-001",
11
11
  "roadmapVersion": "roadmap.v1",
12
- "roadmapSkillVersion": "5.0.0",
12
+ "roadmapSkillVersion": "5.2.0",
13
13
  "sourceStage": "Stage 1",
14
14
  "successSignal": "Users can copy the invite link with one click",
15
15
  "killSignal": "The patch requires backend or permission changes",
@@ -22,7 +22,7 @@
22
22
  ]
23
23
  },
24
24
  "planningMeta": {
25
- "reqPlanSkillVersion": "3.7.7",
25
+ "reqPlanSkillVersion": "3.8.2",
26
26
  "designVersion": "design.v1",
27
27
  "approvedAt": "2026-04-15T10:05:00.000Z",
28
28
  "approvedBy": "user",
@@ -30,27 +30,58 @@
30
30
  "requirementBrief": {
31
31
  "problemStatement": "Users can see the invite URL, but copying it still requires manual selection.",
32
32
  "solutionSummary": "Add a one-click copy action with lightweight confirmation inside the existing share dialog.",
33
- "actors": ["workspace member sharing an invite"],
33
+ "actors": [
34
+ "workspace member sharing an invite"
35
+ ],
34
36
  "userStories": [
35
37
  {
36
38
  "id": "US-001",
37
39
  "actor": "workspace member",
38
40
  "want": "copy the invite link with one click",
39
41
  "benefit": "share it without manually selecting text",
40
- "acceptance": ["Dialog behavior test proves the current invite URL is copied"]
42
+ "acceptance": [
43
+ "Dialog behavior test proves the current invite URL is copied"
44
+ ]
41
45
  }
42
46
  ],
43
47
  "edgeOrRecoveryStories": [],
44
- "implementationDecisions": ["Reuse the existing invite URL source and dialog props"],
45
- "testingDecisions": ["Test through the share dialog behavior, not an internal helper"],
46
- "outOfScope": ["invite generation", "role controls", "analytics", "clipboard fallback redesign"],
47
- "furtherNotes": ["Richer copied-state feedback is a separate UX requirement"]
48
+ "implementationDecisions": [
49
+ "Reuse the existing invite URL source and dialog props"
50
+ ],
51
+ "testingDecisions": [
52
+ "Test through the share dialog behavior, not an internal helper"
53
+ ],
54
+ "outOfScope": [
55
+ "invite generation",
56
+ "role controls",
57
+ "analytics",
58
+ "clipboard fallback redesign"
59
+ ],
60
+ "furtherNotes": [
61
+ "Richer copied-state feedback is a separate UX requirement"
62
+ ]
63
+ },
64
+ "externalBestPractice": {
65
+ "needed": false,
66
+ "decisionStatus": "not-needed",
67
+ "decisionQuestionId": "",
68
+ "privacyGuard": "generalized terms only; no project names, private requirements, customer names, secrets, logs, or proprietary concepts",
69
+ "generalizedSearchTerms": [],
70
+ "sourcesChecked": [],
71
+ "conventionalWisdom": "",
72
+ "currentDiscourse": "",
73
+ "repoFitVerdict": "skipped",
74
+ "designImpacts": [],
75
+ "skippedReason": "existing share-dialog behavior and repo tests are sufficient for the tiny design"
48
76
  },
49
77
  "decisionQuestions": [
50
78
  {
51
79
  "questionId": "D1",
52
80
  "gate": "approach-approval",
53
- "knownEvidence": ["Existing dialog already renders the invite URL", "The patch stays inside one UI/test surface"],
81
+ "knownEvidence": [
82
+ "Existing dialog already renders the invite URL",
83
+ "The patch stays inside one UI/test surface"
84
+ ],
54
85
  "recommendation": "Approve the tiny-design copy action",
55
86
  "options": [
56
87
  {
@@ -74,7 +105,28 @@
74
105
  "impact": "cc-do keeps implementation inside the share dialog and avoids backend or permission work",
75
106
  "status": "answered"
76
107
  }
77
- ]
108
+ ],
109
+ "aiLeverageDecisionLens": {
110
+ "realUserOrOperator": "workspace member sharing an invite",
111
+ "statusQuoWorkaround": "manual selection and copy of the visible invite URL",
112
+ "humanTeamEffortForFullScope": "about half a day for one engineer including test and review",
113
+ "ccAgentEffortForFullScope": "about 20 minutes for a targeted UI patch plus test update",
114
+ "aiCompressionRatio": "roughly 10x for this bounded UI slice",
115
+ "completeLakeBoundary": "copy action, current invite URL source, copied-state feedback, and dialog behavior test",
116
+ "oceanBoundary": "invite generation, permissions, analytics, or clipboard fallback redesign",
117
+ "scopeRecommendation": "boil-lake",
118
+ "costModel": {
119
+ "agentTime": "low",
120
+ "humanReviewTime": "low",
121
+ "verificationCost": "targeted dialog test",
122
+ "maintenanceCost": "low while scoped to the dialog",
123
+ "failureCost": "sharing friction remains",
124
+ "reversibility": "reversible UI patch"
125
+ },
126
+ "verdict": "boil-lake",
127
+ "missingEvidenceOrPivotReason": "",
128
+ "impactOnApprovedDirection": "cover the full same-dialog copy lake instead of only a happy-path button render"
129
+ }
78
130
  },
79
131
  "currentTaskId": null,
80
132
  "activePhase": null,
@@ -127,7 +179,60 @@
127
179
  },
128
180
  "status": "passed",
129
181
  "attempts": 1,
130
- "maxRetries": 1
182
+ "maxRetries": 1,
183
+ "tddPhase": "red",
184
+ "verticalSlice": "Slice 1",
185
+ "testSeam": {
186
+ "entry": "share dialog UI behavior",
187
+ "behaviorAsserted": "The missing copy action is reproduced as a failing test",
188
+ "specStyleTestName": "The missing copy action is reproduced as a failing test",
189
+ "oneLogicalBehavior": true,
190
+ "publicVerificationPath": "Run the share dialog test and observe the copy action through the rendered dialog",
191
+ "implementationDetailRisk": "low"
192
+ },
193
+ "feedbackLoop": {
194
+ "type": "automated-test",
195
+ "determinism": "deterministic",
196
+ "expectedFailure": "Fails before the behavior exists"
197
+ },
198
+ "allowedMocks": [
199
+ "clipboard boundary"
200
+ ],
201
+ "testQuality": {
202
+ "usesPublicInterface": true,
203
+ "describesBehavior": true,
204
+ "specStyleName": true,
205
+ "oneLogicalBehavior": true,
206
+ "verifiesThroughPublicPath": true,
207
+ "survivesInternalRefactor": true,
208
+ "mocksOnlySystemBoundaries": true,
209
+ "noBulkRed": true
210
+ },
211
+ "greenMinimality": {
212
+ "guard": "Keep the task scoped to its stated verification evidence",
213
+ "noSpeculativeBranches": true
214
+ },
215
+ "completion": {
216
+ "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/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json --tasks docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md --task T001",
217
+ "requiredBeforeCompletion": [
218
+ "verification evidence captured",
219
+ "checkpoint written",
220
+ "spec review gate recorded",
221
+ "code review gate recorded"
222
+ ],
223
+ "forbiddenShortcuts": [
224
+ "manual checkbox edit",
225
+ "manual manifest status edit",
226
+ "leaving currentTaskId stale"
227
+ ]
228
+ },
229
+ "refactorCandidates": [
230
+ "duplication",
231
+ "long method",
232
+ "primitive obsession",
233
+ "naming",
234
+ "more than three nested branches"
235
+ ]
131
236
  },
132
237
  {
133
238
  "id": "T002",
@@ -179,7 +284,60 @@
179
284
  },
180
285
  "status": "passed",
181
286
  "attempts": 1,
182
- "maxRetries": 1
287
+ "maxRetries": 1,
288
+ "tddPhase": "green",
289
+ "verticalSlice": "Slice 2",
290
+ "testSeam": {
291
+ "entry": "share dialog UI behavior",
292
+ "behaviorAsserted": "The dialog exposes a copy button and confirms the copied state",
293
+ "specStyleTestName": "The dialog exposes a copy button and confirms the copied state",
294
+ "oneLogicalBehavior": true,
295
+ "publicVerificationPath": "Run the share dialog test and observe the copy action through the rendered dialog",
296
+ "implementationDetailRisk": "low"
297
+ },
298
+ "feedbackLoop": {
299
+ "type": "automated-test",
300
+ "determinism": "deterministic",
301
+ "expectedFailure": ""
302
+ },
303
+ "allowedMocks": [
304
+ "clipboard boundary"
305
+ ],
306
+ "testQuality": {
307
+ "usesPublicInterface": true,
308
+ "describesBehavior": true,
309
+ "specStyleName": true,
310
+ "oneLogicalBehavior": true,
311
+ "verifiesThroughPublicPath": true,
312
+ "survivesInternalRefactor": true,
313
+ "mocksOnlySystemBoundaries": true,
314
+ "noBulkRed": true
315
+ },
316
+ "greenMinimality": {
317
+ "guard": "Implement only the code needed to pass the current red behavior",
318
+ "noSpeculativeBranches": true
319
+ },
320
+ "completion": {
321
+ "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/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json --tasks docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md --task T002",
322
+ "requiredBeforeCompletion": [
323
+ "verification evidence captured",
324
+ "checkpoint written",
325
+ "spec review gate recorded",
326
+ "code review gate recorded"
327
+ ],
328
+ "forbiddenShortcuts": [
329
+ "manual checkbox edit",
330
+ "manual manifest status edit",
331
+ "leaving currentTaskId stale"
332
+ ]
333
+ },
334
+ "refactorCandidates": [
335
+ "duplication",
336
+ "long method",
337
+ "primitive obsession",
338
+ "naming",
339
+ "more than three nested branches"
340
+ ]
183
341
  },
184
342
  {
185
343
  "id": "T003",
@@ -235,7 +393,60 @@
235
393
  },
236
394
  "status": "passed",
237
395
  "attempts": 1,
238
- "maxRetries": 1
396
+ "maxRetries": 1,
397
+ "tddPhase": "evidence",
398
+ "verticalSlice": "Slice 3",
399
+ "testSeam": {
400
+ "entry": "share dialog UI behavior",
401
+ "behaviorAsserted": "Fresh verification evidence is ready for cc-check",
402
+ "specStyleTestName": "Fresh verification evidence is ready for cc-check",
403
+ "oneLogicalBehavior": true,
404
+ "publicVerificationPath": "Run the share dialog test and observe the copy action through the rendered dialog",
405
+ "implementationDetailRisk": "low"
406
+ },
407
+ "feedbackLoop": {
408
+ "type": "automated-test",
409
+ "determinism": "deterministic",
410
+ "expectedFailure": ""
411
+ },
412
+ "allowedMocks": [
413
+ "clipboard boundary"
414
+ ],
415
+ "testQuality": {
416
+ "usesPublicInterface": true,
417
+ "describesBehavior": true,
418
+ "specStyleName": true,
419
+ "oneLogicalBehavior": true,
420
+ "verifiesThroughPublicPath": true,
421
+ "survivesInternalRefactor": true,
422
+ "mocksOnlySystemBoundaries": true,
423
+ "noBulkRed": true
424
+ },
425
+ "greenMinimality": {
426
+ "guard": "Keep the task scoped to its stated verification evidence",
427
+ "noSpeculativeBranches": true
428
+ },
429
+ "completion": {
430
+ "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/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json --tasks docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md --task T003",
431
+ "requiredBeforeCompletion": [
432
+ "verification evidence captured",
433
+ "checkpoint written",
434
+ "spec review gate recorded",
435
+ "code review gate recorded"
436
+ ],
437
+ "forbiddenShortcuts": [
438
+ "manual checkbox edit",
439
+ "manual manifest status edit",
440
+ "leaving currentTaskId stale"
441
+ ]
442
+ },
443
+ "refactorCandidates": [
444
+ "duplication",
445
+ "long method",
446
+ "primitive obsession",
447
+ "naming",
448
+ "more than three nested branches"
449
+ ]
239
450
  }
240
451
  ],
241
452
  "metadata": {
@@ -245,5 +456,39 @@
245
456
  },
246
457
  "deferredQuestions": [
247
458
  "If users still miss the copied-state confirmation, open RM-002 for richer feedback."
248
- ]
459
+ ],
460
+ "executionProtocol": {
461
+ "templateCompliance": {
462
+ "required": true,
463
+ "sourceTemplate": "assets/TASKS_TEMPLATE.md",
464
+ "taskBlockMustInclude": [
465
+ "Goal",
466
+ "TDD phase",
467
+ "Files",
468
+ "Read first",
469
+ "Verification",
470
+ "Evidence",
471
+ "Test seam",
472
+ "Public verification path",
473
+ "Allowed mocks",
474
+ "Completion"
475
+ ],
476
+ "titleOnlyTasks": "forbidden"
477
+ },
478
+ "selection": {
479
+ "sourceOfTruth": "planning/task-manifest.json.currentTaskId",
480
+ "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/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json"
481
+ },
482
+ "completion": {
483
+ "manualStatusEdit": "forbidden",
484
+ "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/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json --tasks docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md --task <task-id>",
485
+ "failurePolicy": "Do not hand-edit status; fix missing checkpoint, review gate, or dependency evidence and rerun the script.",
486
+ "updates": [
487
+ "planning/task-manifest.json.tasks[].status",
488
+ "planning/task-manifest.json.currentTaskId",
489
+ "planning/task-manifest.json.status",
490
+ "planning/tasks.md checkbox"
491
+ ]
492
+ }
493
+ }
249
494
  }
@@ -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.7.7`
7
+ - CC-Plan skill version: `3.8.2`
8
8
  - Source roadmap item: `RM-001`
9
9
  - Source roadmap version: `roadmap.v1`
10
10
 
@@ -23,6 +23,7 @@
23
23
  - Implementation decisions: reuse existing invite URL source and dialog props
24
24
  - Testing decisions: test through share dialog behavior
25
25
  - Out of scope: invite generation, role controls, analytics, clipboard fallback redesign
26
+ - AI Leverage Decision Lens: boil-lake; complete the bounded same-dialog copy lake instead of stopping at a happy-path button
26
27
  - Read first:
27
28
  - `design.md`
28
29
  - `src/features/share/ShareDialog.tsx`
@@ -38,34 +39,68 @@
38
39
 
39
40
  > 顶部 handoff 只保留执行者必须知道的现实,不重复讲背景故事。
40
41
 
42
+ ## Execution Protocol
43
+
44
+ ClaudeCode / Codex 执行本计划时,必须把本文件当成任务模板合同,而不是普通 TODO 列表。
45
+
46
+ - Template source: `assets/TASKS_TEMPLATE.md`
47
+ - Task selection: read `planning/task-manifest.json.currentTaskId`; if empty, run the ready-task selector before choosing work.
48
+ - Task block rule: read the full task block before coding; title-only execution is invalid.
49
+ - Completion rule: after verification and review gates pass, run the completion script; do not manually edit checkbox, status, or `currentTaskId`.
50
+ - 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.
51
+
52
+ ```bash
53
+ SCRIPT_ROOT=".claude/skills/cc-do/scripts"
54
+ if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then
55
+ SCRIPT_ROOT=".codex/skills/cc-do/scripts"
56
+ fi
57
+ bash "$SCRIPT_ROOT/select-ready-tasks.sh" --manifest docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json
58
+ bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json --tasks docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md --task <task-id>
59
+ ```
60
+
41
61
  ## Phase 1: Foundation
42
62
 
43
63
  - [x] T001 [TEST] Add a failing dialog test for the missing copy action (dependsOn:none) `src/features/share/ShareDialog.test.tsx`
44
64
  Goal: 证明当前 share dialog 还不能一键复制 invite link。
65
+ TDD phase: red
45
66
  Files: `src/features/share/ShareDialog.test.tsx`
46
67
  Read first: `design.md`, `src/features/share/ShareDialog.tsx`
47
68
  Verification: `npm test -- src/features/share/ShareDialog.test.tsx`
48
69
  Evidence: failing output that shows the missing button / action
70
+ 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/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json --tasks docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md --task T001`; do not hand-edit status.
71
+ Test seam: share dialog UI behavior
72
+ Public verification path: Run the share dialog test and observe the copy action through the rendered dialog
73
+ Allowed mocks: clipboard boundary
49
74
  Ready when: 没有上游依赖,且现有 dialog test 已可运行
50
75
 
51
76
  - [x] T002 [IMPL] Add the copy button and copied-state confirmation (dependsOn:T001) `src/features/share/ShareDialog.tsx`
52
77
  Goal: 用最小实现让 T001 转绿,并保持当前 share contract 不变。
78
+ TDD phase: green
53
79
  Files: `src/features/share/ShareDialog.tsx`
54
80
  Read first: `design.md`, `src/features/share/ShareDialog.test.tsx`
55
81
  Verification: `npm test -- src/features/share/ShareDialog.test.tsx`
56
82
  Evidence: passing output + checkpoint + review notes
83
+ 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/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json --tasks docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md --task T002`; do not hand-edit status.
84
+ Test seam: share dialog UI behavior
85
+ Public verification path: Run the share dialog test and observe the copy action through the rendered dialog
86
+ Allowed mocks: clipboard boundary
57
87
  Ready when: T001 已经见红,且当前 touched files 没有外部依赖阻塞
58
88
 
59
89
  ## Phase 2: Verify
60
90
 
61
91
  - [x] T003 Run targeted checks and collect fresh evidence (dependsOn:T002) `share dialog quality gates`
62
92
  Goal: 为 `cc-check` 准备本次实现的真实验证证据。
93
+ TDD phase: evidence
63
94
  Files: `src/features/share/ShareDialog.tsx`, `src/features/share/ShareDialog.test.tsx`
64
95
  Read first: `tasks.md`, `task-manifest.json`
65
96
  Verification:
66
97
  - `npm test -- src/features/share/ShareDialog.test.tsx`
67
98
  - `npm run lint -- src/features/share/ShareDialog.tsx`
68
99
  Evidence: passing test output + clean lint output
100
+ 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/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json --tasks docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md --task T003`; do not hand-edit status.
101
+ Test seam: share dialog UI behavior
102
+ Public verification path: Run the share dialog test and observe the copy action through the rendered dialog
103
+ Allowed mocks: clipboard boundary
69
104
  Ready when: T002 已完成,且 review gate 已可补齐
70
105
 
71
106
  > `[P]` 只表示“依赖满足后有资格并行”,不表示可以无脑同时开发。
@@ -5,7 +5,7 @@
5
5
  },
6
6
  "meta": {
7
7
  "roadmapVersion": "roadmap.v1",
8
- "skillVersion": "5.0.0",
8
+ "skillVersion": "5.2.0",
9
9
  "status": "active",
10
10
  "lastUpdated": "2026-04-19",
11
11
  "currentFocusStage": "Stage 1"
@@ -14,7 +14,21 @@
14
14
  "planningPosture": "",
15
15
  "evidenceMaturity": "",
16
16
  "canonicalTerms": [],
17
- "durableDecisionSources": []
17
+ "durableDecisionSources": [],
18
+ "aiLeverageRouteLens": {
19
+ "realUserOrOperator": "workspace member sharing an invite during beta onboarding",
20
+ "statusQuoWorkaround": "manual selection and copy of the visible invite URL",
21
+ "humanTeamEffortForFullScope": "about half a day for one engineer including test and review",
22
+ "ccAgentEffortForFullScope": "about 20 minutes for a targeted UI patch plus test update",
23
+ "aiCompressionRatio": "roughly 10x for this bounded UI slice",
24
+ "completeLakeBoundary": "copy action, current invite URL source, copied-state feedback, and dialog behavior test",
25
+ "oceanBoundary": "backend invite generation, permissions, analytics, and clipboard fallback redesign",
26
+ "scopeRecommendation": "boil-lake",
27
+ "firstSuccessSignal": "users copy the invite link without asking support",
28
+ "killSignal": "implementation requires backend or permission changes",
29
+ "verdict": "boil-lake",
30
+ "missingEvidence": []
31
+ }
18
32
  },
19
33
  "evidence": [],
20
34
  "route": {
@@ -35,17 +35,27 @@ assert_contains() {
35
35
  }
36
36
 
37
37
  ROADMAP_VERSION="$(skill_version cc-roadmap)"
38
+ NEXT_VERSION="$(skill_version cc-next)"
39
+ DEV_VERSION="$(skill_version cc-dev)"
38
40
  REQ_PLAN_VERSION="$(skill_version cc-plan)"
39
41
  INVESTIGATE_VERSION="$(skill_version cc-investigate)"
40
42
  REQ_DO_VERSION="$(skill_version cc-do)"
43
+ REQ_REVIEW_VERSION="$(skill_version cc-review)"
44
+ PR_REVIEW_VERSION="$(skill_version cc-pr-review)"
45
+ PR_LAND_VERSION="$(skill_version cc-pr-land)"
41
46
  REQ_CHECK_VERSION="$(skill_version cc-check)"
42
47
  REQ_ACT_VERSION="$(skill_version cc-act)"
43
48
 
44
49
  for pair in \
45
50
  "cc-roadmap:$ROADMAP_VERSION" \
51
+ "cc-next:$NEXT_VERSION" \
52
+ "cc-dev:$DEV_VERSION" \
46
53
  "cc-plan:$REQ_PLAN_VERSION" \
47
54
  "cc-investigate:$INVESTIGATE_VERSION" \
48
55
  "cc-do:$REQ_DO_VERSION" \
56
+ "cc-review:$REQ_REVIEW_VERSION" \
57
+ "cc-pr-review:$PR_REVIEW_VERSION" \
58
+ "cc-pr-land:$PR_LAND_VERSION" \
49
59
  "cc-check:$REQ_CHECK_VERSION" \
50
60
  "cc-act:$REQ_ACT_VERSION"
51
61
  do
@@ -91,9 +101,19 @@ while IFS= read -r encoded; do
91
101
 
92
102
  jq -er --arg roadmap "$ROADMAP_VERSION" --arg reqplan "$REQ_PLAN_VERSION" '
93
103
  (.sourceRoadmap.roadmapSkillVersion // $roadmap) == $roadmap and
94
- (.planningMeta.reqPlanSkillVersion // $reqplan) == $reqplan
104
+ (.planningMeta.reqPlanSkillVersion // $reqplan) == $reqplan and
105
+ .executionProtocol.templateCompliance.required == true and
106
+ .executionProtocol.completion.manualStatusEdit == "forbidden" and
107
+ (.executionProtocol.completion.commandTemplate | contains("mark-task-complete.sh")) and
108
+ all(.tasks[]; (.completion.command | contains("mark-task-complete.sh")) and (.tddPhase | type == "string") and (.testSeam.publicVerificationPath | type == "string"))
95
109
  ' "$planning_dir/task-manifest.json" >/dev/null
96
110
 
111
+ assert_contains "$planning_dir/tasks.md" "## Execution Protocol"
112
+ assert_contains "$planning_dir/tasks.md" "mark-task-complete.sh"
113
+ assert_contains "$planning_dir/tasks.md" "TDD phase:"
114
+ assert_contains "$planning_dir/tasks.md" "Completion:"
115
+ assert_contains "$planning_dir/tasks.md" "Public verification path:"
116
+
97
117
  assert_contains "$readme" "## Example Meta"
98
118
  assert_contains "$readme" "\`cc-roadmap@$ROADMAP_VERSION\`"
99
119
  assert_contains "$readme" "\`cc-plan@$REQ_PLAN_VERSION\`"
@@ -11,13 +11,13 @@ CC-DevFlow has two entry paths:
11
11
  - `cc-devflow init`: install the whole `.claude` pack into your project
12
12
  - `cc-devflow adapt`: generate platform outputs such as Codex rules
13
13
 
14
- The workflow itself is driven by six visible skills:
14
+ The core workflow is driven by six visible skills, with `cc-review` available as an optional deep review pass:
15
15
 
16
16
  ```text
17
17
  cc-roadmap
18
18
 
19
- PDCA: cc-plan -> cc-do -> cc-check -> cc-act
20
- IDCA: cc-investigate -> cc-do -> cc-check -> cc-act
19
+ PDCA: cc-plan -> [cc-review] -> cc-do -> [cc-review] -> cc-check -> cc-act
20
+ IDCA: cc-investigate -> [cc-review] -> cc-do -> [cc-review] -> cc-check -> cc-act
21
21
  ```
22
22
 
23
23
  The public skills are the visible harness. Each distributed `SKILL.md` now carries structured frontmatter plus a `Harness Contract`, and each `PLAYBOOK.md` carries the stage transition rules in a `Visible State Machine` section.
@@ -36,7 +36,7 @@ The public skills are the visible harness. Each distributed `SKILL.md` now carri
36
36
  npx cc-devflow init --dir /path/to/your/project
37
37
  ```
38
38
 
39
- The whole-pack install includes the six visible workflow skills plus `cc-spec-init` and `cc-simplify` as maintenance helpers.
39
+ The whole-pack install includes the six core workflow skills, optional `cc-review`, plus `cc-spec-init` and `cc-simplify` as maintenance helpers.
40
40
 
41
41
  ### Single Skill Install
42
42
 
@@ -75,10 +75,12 @@ Use the skills in this order:
75
75
  ```text
76
76
  1. cc-roadmap
77
77
  2. choose cc-plan or cc-investigate
78
- 3. cc-do
79
- 4. cc-check
80
- 5. cc-act
81
- 6. repeat
78
+ 3. optional cc-review for complex frozen plans or investigations
79
+ 4. cc-do
80
+ 5. optional cc-review for complex implementations
81
+ 6. cc-check
82
+ 7. cc-act
83
+ 8. repeat
82
84
  ```
83
85
 
84
86
  Typical outputs:
@@ -87,6 +89,7 @@ Typical outputs:
87
89
  - `cc-spec-init` writes `devflow/specs/INDEX.md`, capability specs, and `change-meta.json`
88
90
  - `cc-plan` writes `planning/design.md`, `planning/tasks.md`, `task-manifest.json`, and `change-meta.json`
89
91
  - `cc-investigate` writes `planning/analysis.md`, `planning/tasks.md`, `task-manifest.json`, and `change-meta.json`
92
+ - `cc-review` writes `cc-review-plan.md`, `cc-review-ledger.jsonl`, `cc-review-report.md`, optional `cc-review-agent-results.jsonl`, and optional structured findings for deep plan or implementation review
90
93
  - `cc-check` writes `report-card.json`
91
94
  - `cc-act` writes exactly one final handoff file: `handoff/pr-brief.md`, `handoff/resume-index.md`, or `handoff/release-note.md`
92
95
 
@@ -151,7 +154,7 @@ npx cc-devflow adapt --cwd /path/to/your/project --platform codex
151
154
 
152
155
  If your project has no optional `.claude/commands/` input, this is expected: the compiler will still generate the skills registry and mirror the distributed skill set for Codex.
153
156
 
154
- Codex mirrors the distributed skills from `.claude/skills/<skill>/` into `.codex/skills/<skill>/`. That set includes the six public workflow skills plus `cc-spec-init` and `cc-simplify`, and the mirror is additive-only: existing project-owned Codex skills are preserved instead of being deleted.
157
+ Codex mirrors the distributed skills from `.claude/skills/<skill>/` into `.codex/skills/<skill>/`. That set includes the six core workflow skills, optional `cc-review`, `cc-spec-init`, and `cc-simplify`, and the mirror is additive-only: existing project-owned Codex skills are preserved instead of being deleted.
155
158
 
156
159
  ### Keep skills and examples in sync
157
160