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.
- package/.claude/skills/cc-act/CHANGELOG.md +6 -0
- package/.claude/skills/cc-act/PLAYBOOK.md +11 -2
- package/.claude/skills/cc-act/SKILL.md +17 -7
- package/.claude/skills/cc-act/references/closure-contract.md +4 -0
- package/.claude/skills/cc-act/scripts/{archive-requirement.sh → archive-change.sh} +7 -7
- package/.claude/skills/cc-act/scripts/detect-ship-target.sh +27 -0
- package/.claude/skills/cc-act/scripts/ensure-ship-branch.sh +93 -0
- package/.claude/skills/cc-act/scripts/generate-status-report.sh +6 -0
- package/.claude/skills/cc-act/scripts/render-pr-brief.sh +6 -0
- package/.claude/skills/cc-act/scripts/sync-act-docs.sh +14 -0
- package/.claude/skills/cc-dev/CHANGELOG.md +5 -0
- package/.claude/skills/cc-dev/PLAYBOOK.md +63 -0
- package/.claude/skills/cc-dev/SKILL.md +168 -0
- package/.claude/skills/cc-do/CHANGELOG.md +6 -0
- package/.claude/skills/cc-do/SKILL.md +23 -1
- package/.claude/skills/cc-investigate/CHANGELOG.md +5 -0
- package/.claude/skills/cc-investigate/SKILL.md +2 -2
- package/.claude/skills/cc-next/CHANGELOG.md +5 -0
- package/.claude/skills/cc-next/PLAYBOOK.md +52 -0
- package/.claude/skills/cc-next/SKILL.md +161 -0
- package/.claude/skills/cc-plan/CHANGELOG.md +28 -0
- package/.claude/skills/cc-plan/PLAYBOOK.md +20 -17
- package/.claude/skills/cc-plan/SKILL.md +135 -21
- package/.claude/skills/cc-plan/assets/DESIGN_TEMPLATE.md +42 -0
- package/.claude/skills/cc-plan/assets/TASKS_TEMPLATE.md +28 -0
- package/.claude/skills/cc-plan/assets/TASK_MANIFEST_TEMPLATE.json +84 -2
- package/.claude/skills/cc-plan/assets/TINY_DESIGN_TEMPLATE.md +30 -0
- package/.claude/skills/cc-plan/references/planning-contract.md +31 -15
- package/.claude/skills/cc-plan/scripts/next-change-key.sh +78 -0
- package/.claude/skills/cc-pr-land/CHANGELOG.md +5 -0
- package/.claude/skills/cc-pr-land/PLAYBOOK.md +45 -0
- package/.claude/skills/cc-pr-land/SKILL.md +157 -0
- package/.claude/skills/cc-pr-review/CHANGELOG.md +5 -0
- package/.claude/skills/cc-pr-review/PLAYBOOK.md +46 -0
- package/.claude/skills/cc-pr-review/SKILL.md +142 -0
- package/.claude/skills/cc-review/CHANGELOG.md +28 -0
- package/.claude/skills/cc-review/PLAYBOOK.md +108 -0
- package/.claude/skills/cc-review/SKILL.md +340 -0
- package/.claude/skills/cc-review/references/e2e-and-plugin-verification.md +85 -0
- package/.claude/skills/cc-review/references/implementation-review-branch.md +152 -0
- package/.claude/skills/cc-review/references/plan-review-branch.md +151 -0
- package/.claude/skills/cc-review/references/review-methods.md +221 -0
- package/.claude/skills/cc-review/scripts/collect-review-context.sh +80 -0
- package/.claude/skills/cc-roadmap/CHANGELOG.md +6 -0
- package/.claude/skills/cc-roadmap/SKILL.md +102 -8
- package/.claude/skills/cc-roadmap/assets/BACKLOG_TEMPLATE.md +3 -0
- package/.claude/skills/cc-roadmap/assets/ROADMAP_TEMPLATE.md +23 -0
- package/.claude/skills/cc-roadmap/assets/TRACKING_TEMPLATE.json +20 -1
- package/.claude/skills/cc-roadmap/references/roadmap-dialogue.md +28 -13
- package/.claude/skills/cc-roadmap/scripts/lib/roadmap-tracking/markdown.js +18 -0
- package/.claude/skills/cc-roadmap/scripts/lib/roadmap-tracking/schema.js +8 -0
- package/.claude/skills/cc-simplify/CHANGELOG.md +6 -0
- package/.claude/skills/cc-simplify/SKILL.md +19 -8
- package/CHANGELOG.md +16 -0
- package/README.md +58 -4
- package/README.zh-CN.md +58 -4
- package/bin/cc-devflow-cli.js +119 -0
- package/config/distributable-skills.json +10 -0
- package/docs/assets/cc-devflow-pr-harness-en.svg +153 -0
- package/docs/assets/cc-devflow-pr-harness-zh.svg +152 -0
- package/docs/assets/wechat-group-qr.jpg +0 -0
- package/docs/examples/example-bindings.json +11 -6
- package/docs/examples/full-design-blocked/BACKLOG.md +1 -1
- package/docs/examples/full-design-blocked/README.md +1 -1
- package/docs/examples/full-design-blocked/ROADMAP.md +16 -1
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/design.md +36 -3
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json +604 -76
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md +46 -1
- package/docs/examples/full-design-blocked/roadmap.json +18 -2
- package/docs/examples/local-handoff/BACKLOG.md +1 -1
- package/docs/examples/local-handoff/README.md +1 -1
- package/docs/examples/local-handoff/ROADMAP.md +16 -1
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/design.md +27 -1
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json +366 -44
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/tasks.md +36 -1
- package/docs/examples/local-handoff/roadmap.json +16 -2
- package/docs/examples/pdca-loop/BACKLOG.md +1 -1
- package/docs/examples/pdca-loop/README.md +1 -1
- package/docs/examples/pdca-loop/ROADMAP.md +16 -1
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/design.md +27 -1
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json +259 -14
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md +36 -1
- package/docs/examples/pdca-loop/roadmap.json +16 -2
- package/docs/examples/scripts/check-example-bindings.sh +21 -1
- package/docs/guides/getting-started.md +12 -9
- package/docs/guides/getting-started.zh-CN.md +12 -9
- package/lib/skill-runtime/__tests__/archive-change.test.js +124 -0
- package/lib/skill-runtime/__tests__/cli-bootstrap.integration.test.js +1 -0
- package/lib/skill-runtime/__tests__/paths.test.js +81 -1
- package/lib/skill-runtime/archive-change.js +64 -0
- package/lib/skill-runtime/paths.js +32 -0
- 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
|
+
- 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
|
|
package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"sourceRoadmap": {
|
|
10
10
|
"itemId": "RM-001",
|
|
11
11
|
"roadmapVersion": "roadmap.v1",
|
|
12
|
-
"roadmapSkillVersion": "5.
|
|
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.
|
|
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": [
|
|
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": [
|
|
42
|
+
"acceptance": [
|
|
43
|
+
"Dialog behavior test proves the current invite URL is copied"
|
|
44
|
+
]
|
|
41
45
|
}
|
|
42
46
|
],
|
|
43
47
|
"edgeOrRecoveryStories": [],
|
|
44
|
-
"implementationDecisions": [
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
"
|
|
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": [
|
|
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
|
+
- 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.
|
|
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
|
|
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
|
|
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-
|
|
79
|
-
4. cc-
|
|
80
|
-
5. cc-
|
|
81
|
-
6.
|
|
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
|
|
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
|
|