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.
- package/.claude/skills/cc-act/CHANGELOG.md +33 -0
- package/.claude/skills/cc-act/PLAYBOOK.md +9 -4
- package/.claude/skills/cc-act/SKILL.md +73 -12
- package/.claude/skills/cc-act/assets/PROJECT_POSTMORTEM_INDEX_TEMPLATE.md +30 -0
- package/.claude/skills/cc-act/assets/PROJECT_POSTMORTEM_PRINCIPLES_TEMPLATE.md +29 -0
- package/.claude/skills/cc-act/assets/PROJECT_POSTMORTEM_TEMPLATE.md +103 -0
- package/.claude/skills/cc-act/assets/PR_BRIEF_TEMPLATE.md +61 -5
- package/.claude/skills/cc-act/references/closure-contract.md +4 -1
- package/.claude/skills/cc-act/references/git-commit-guidelines.md +342 -37
- package/.claude/skills/cc-act/scripts/cc-act-common.sh +29 -1
- package/.claude/skills/cc-act/scripts/render-pr-brief.sh +164 -0
- package/.claude/skills/cc-act/scripts/sync-act-docs.sh +1 -1
- package/.claude/skills/cc-check/CHANGELOG.md +17 -0
- package/.claude/skills/cc-check/PLAYBOOK.md +1 -0
- package/.claude/skills/cc-check/SKILL.md +9 -5
- package/.claude/skills/cc-check/references/review-contract.md +7 -0
- package/.claude/skills/cc-check/scripts/render-report-card.js +6 -1
- package/.claude/skills/cc-dev/CHANGELOG.md +5 -0
- package/.claude/skills/cc-dev/SKILL.md +26 -1
- package/.claude/skills/cc-do/CHANGELOG.md +23 -0
- package/.claude/skills/cc-do/PLAYBOOK.md +7 -7
- package/.claude/skills/cc-do/SKILL.md +49 -45
- package/.claude/skills/cc-do/references/execution-recovery.md +18 -13
- package/.claude/skills/cc-do/scripts/build-task-context.sh +13 -22
- package/.claude/skills/cc-do/scripts/mark-task-complete.sh +0 -6
- package/.claude/skills/cc-do/scripts/record-review-decision.sh +4 -5
- package/.claude/skills/cc-do/scripts/recover-workflow.sh +9 -11
- package/.claude/skills/cc-do/scripts/verify-task-gates.sh +12 -10
- package/.claude/skills/cc-do/scripts/write-task-checkpoint.sh +7 -29
- package/.claude/skills/cc-investigate/CHANGELOG.md +34 -0
- package/.claude/skills/cc-investigate/PLAYBOOK.md +21 -5
- package/.claude/skills/cc-investigate/SKILL.md +97 -40
- package/.claude/skills/cc-investigate/assets/TASKS_TEMPLATE.md +66 -4
- package/.claude/skills/cc-investigate/assets/TASK_MANIFEST_TEMPLATE.json +30 -59
- package/.claude/skills/cc-investigate/assets/{ANALYSIS_TEMPLATE.md → legacy/ANALYSIS_TEMPLATE.md} +48 -0
- package/.claude/skills/cc-investigate/references/investigation-contract.md +16 -2
- package/.claude/skills/cc-investigate/scripts/bootstrap-analysis.sh +1 -1
- package/.claude/skills/cc-next/CHANGELOG.md +6 -0
- package/.claude/skills/cc-next/PLAYBOOK.md +26 -4
- package/.claude/skills/cc-next/SKILL.md +39 -4
- package/.claude/skills/cc-plan/CHANGELOG.md +38 -0
- package/.claude/skills/cc-plan/PLAYBOOK.md +60 -53
- package/.claude/skills/cc-plan/SKILL.md +164 -87
- package/.claude/skills/cc-plan/assets/TASKS_TEMPLATE.md +101 -9
- package/.claude/skills/cc-plan/assets/TASK_MANIFEST_TEMPLATE.json +58 -229
- package/.claude/skills/cc-plan/assets/{DESIGN_TEMPLATE.md → legacy/DESIGN_TEMPLATE.md} +68 -0
- package/.claude/skills/cc-plan/assets/{TINY_DESIGN_TEMPLATE.md → legacy/TINY_DESIGN_TEMPLATE.md} +47 -1
- package/.claude/skills/cc-plan/references/planning-contract.md +48 -33
- package/.claude/skills/cc-review/CHANGELOG.md +6 -0
- package/.claude/skills/cc-review/PLAYBOOK.md +9 -11
- package/.claude/skills/cc-review/SKILL.md +37 -61
- package/.claude/skills/cc-review/references/e2e-and-plugin-verification.md +1 -1
- package/.claude/skills/cc-review/references/implementation-review-branch.md +5 -5
- package/.claude/skills/cc-review/references/plan-review-branch.md +1 -1
- package/.claude/skills/cc-review/references/review-methods.md +4 -4
- package/.claude/skills/cc-review/scripts/collect-review-context.sh +14 -7
- package/.claude/skills/cc-roadmap/CHANGELOG.md +6 -0
- package/.claude/skills/cc-roadmap/PLAYBOOK.md +30 -0
- package/.claude/skills/cc-roadmap/SKILL.md +45 -8
- package/.claude/skills/cc-roadmap/assets/BACKLOG_TEMPLATE.md +8 -0
- package/.claude/skills/cc-roadmap/assets/ROADMAP_TEMPLATE.md +22 -0
- package/.claude/skills/cc-roadmap/assets/TRACKING_TEMPLATE.json +32 -1
- package/.claude/skills/cc-roadmap/references/roadmap-dialogue.md +14 -14
- package/CHANGELOG.md +28 -0
- package/CONTRIBUTING.md +40 -4
- package/CONTRIBUTING.zh-CN.md +40 -4
- package/README.md +57 -43
- package/README.zh-CN.md +57 -43
- package/bin/cc-devflow-cli.js +293 -36
- package/docs/examples/START-HERE.md +5 -4
- package/docs/examples/example-bindings.json +10 -10
- package/docs/examples/full-design-blocked/BACKLOG.md +1 -1
- package/docs/examples/full-design-blocked/README.md +2 -2
- package/docs/examples/full-design-blocked/ROADMAP.md +1 -1
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/design.md +2 -1
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json +29 -312
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md +11 -8
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/review/report-card.json +4 -4
- package/docs/examples/full-design-blocked/roadmap.json +1 -1
- package/docs/examples/local-handoff/BACKLOG.md +1 -1
- package/docs/examples/local-handoff/README.md +2 -2
- package/docs/examples/local-handoff/ROADMAP.md +1 -1
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/design.md +2 -1
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json +27 -210
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/tasks.md +9 -6
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/review/report-card.json +1 -1
- package/docs/examples/local-handoff/roadmap.json +1 -1
- package/docs/examples/pdca-loop/BACKLOG.md +1 -1
- package/docs/examples/pdca-loop/README.md +2 -2
- package/docs/examples/pdca-loop/ROADMAP.md +1 -1
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/handoff/pr-brief.md +65 -1
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/design.md +2 -1
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json +26 -228
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md +9 -6
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/review/report-card.json +1 -1
- package/docs/examples/pdca-loop/roadmap.json +1 -1
- package/docs/examples/scripts/check-example-bindings.sh +11 -5
- package/docs/get-shit-done-strategy-audit.md +22 -22
- package/docs/guides/artifact-contract.md +44 -0
- package/docs/guides/getting-started.md +10 -8
- package/docs/guides/getting-started.zh-CN.md +10 -8
- package/docs/guides/minimize-artifacts.md +123 -0
- package/docs/guides/project-postmortem.md +78 -0
- package/lib/compiler/__tests__/skills-registry.test.js +2 -2
- package/lib/skill-runtime/CLAUDE.md +1 -1
- package/lib/skill-runtime/__tests__/autopilot.test.js +42 -6
- package/lib/skill-runtime/__tests__/benchmark-artifacts.test.js +165 -0
- package/lib/skill-runtime/__tests__/cli-bootstrap.integration.test.js +2 -2
- package/lib/skill-runtime/__tests__/dispatch.test.js +8 -38
- package/lib/skill-runtime/__tests__/intent.test.js +4 -20
- package/lib/skill-runtime/__tests__/lifecycle.test.js +1 -1
- package/lib/skill-runtime/__tests__/paths.test.js +7 -1
- package/lib/skill-runtime/__tests__/planner.tdd.test.js +63 -2
- package/lib/skill-runtime/__tests__/prepare-pr.test.js +3 -16
- package/lib/skill-runtime/__tests__/query.test.js +388 -7
- package/lib/skill-runtime/__tests__/review-check-integration.test.js +148 -0
- package/lib/skill-runtime/__tests__/review-records.test.js +619 -0
- package/lib/skill-runtime/__tests__/runtime.integration.test.js +64 -23
- package/lib/skill-runtime/__tests__/schemas.test.js +76 -2
- package/lib/skill-runtime/__tests__/task-contract-migrate.test.js +137 -0
- package/lib/skill-runtime/__tests__/task-contract.test.js +783 -0
- package/lib/skill-runtime/__tests__/verify-artifacts.test.js +203 -0
- package/lib/skill-runtime/__tests__/worker-run.test.js +4 -11
- package/lib/skill-runtime/__tests__/workflow-context-legacy-fallback.test.js +31 -0
- package/lib/skill-runtime/__tests__/workflow-context.test.js +98 -0
- package/lib/skill-runtime/artifacts.js +0 -5
- package/lib/skill-runtime/context-index.js +545 -0
- package/lib/skill-runtime/intent.js +9 -33
- package/lib/skill-runtime/lifecycle.js +1 -1
- package/lib/skill-runtime/operations/CLAUDE.md +2 -2
- package/lib/skill-runtime/operations/dispatch.js +4 -42
- package/lib/skill-runtime/operations/init.js +2 -6
- package/lib/skill-runtime/operations/janitor.js +2 -18
- package/lib/skill-runtime/operations/resume.js +21 -38
- package/lib/skill-runtime/operations/review-records.js +265 -0
- package/lib/skill-runtime/operations/snapshot.js +1 -1
- package/lib/skill-runtime/operations/task-contract.js +524 -0
- package/lib/skill-runtime/operations/worker-run.js +2 -30
- package/lib/skill-runtime/paths.js +4 -4
- package/lib/skill-runtime/planner.js +25 -13
- package/lib/skill-runtime/query-registry.js +2 -2
- package/lib/skill-runtime/query.js +16 -3
- package/lib/skill-runtime/review-records.js +123 -0
- package/lib/skill-runtime/review.js +246 -11
- package/lib/skill-runtime/schemas.js +179 -15
- package/lib/skill-runtime/store.js +0 -10
- package/lib/skill-runtime/task-contract.js +187 -0
- package/lib/skill-runtime/workflow-context.js +748 -0
- package/package.json +7 -4
package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json
CHANGED
|
@@ -3,63 +3,34 @@
|
|
|
3
3
|
"goal": "Add a one-click copy action to the existing share dialog without changing backend contracts.",
|
|
4
4
|
"createdAt": "2026-04-15T10:00:00.000Z",
|
|
5
5
|
"updatedAt": "2026-04-15T11:10:00.000Z",
|
|
6
|
-
"status": "verified",
|
|
7
6
|
"requirementId": "REQ-001",
|
|
8
7
|
"requirementVersion": "REQ-001.v1",
|
|
9
|
-
"sourceRoadmap": {
|
|
10
|
-
"itemId": "RM-001",
|
|
11
|
-
"roadmapVersion": "roadmap.v1",
|
|
12
|
-
"roadmapSkillVersion": "5.2.0",
|
|
13
|
-
"sourceStage": "Stage 1",
|
|
14
|
-
"successSignal": "Users can copy the invite link with one click",
|
|
15
|
-
"killSignal": "The patch requires backend or permission changes",
|
|
16
|
-
"dependencies": [
|
|
17
|
-
"Existing share dialog stays intact"
|
|
18
|
-
],
|
|
19
|
-
"nonGoals": [
|
|
20
|
-
"No invite role redesign",
|
|
21
|
-
"No share analytics"
|
|
22
|
-
]
|
|
23
|
-
},
|
|
24
8
|
"planningMeta": {
|
|
25
|
-
"reqPlanSkillVersion": "3.
|
|
9
|
+
"reqPlanSkillVersion": "3.9.0",
|
|
26
10
|
"designVersion": "design.v1",
|
|
11
|
+
"workBranch": "REQ/001-copy-invite-link",
|
|
27
12
|
"approvedAt": "2026-04-15T10:05:00.000Z",
|
|
28
|
-
"approvedBy": "user",
|
|
29
13
|
"basedOnOption": "Tiny design card",
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
"
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
"
|
|
48
|
-
"
|
|
49
|
-
|
|
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
|
-
]
|
|
14
|
+
"aiLeverageDecisionLens": {
|
|
15
|
+
"realUserOrOperator": "workspace member sharing an invite",
|
|
16
|
+
"statusQuoWorkaround": "manual selection and copy of the visible invite URL",
|
|
17
|
+
"humanTeamEffortForFullScope": "about half a day for one engineer including test and review",
|
|
18
|
+
"ccAgentEffortForFullScope": "about 20 minutes for a targeted UI patch plus test update",
|
|
19
|
+
"aiCompressionRatio": "roughly 10x for this bounded UI slice",
|
|
20
|
+
"completeLakeBoundary": "copy action, current invite URL source, copied-state feedback, and dialog behavior test",
|
|
21
|
+
"oceanBoundary": "invite generation, permissions, analytics, or clipboard fallback redesign",
|
|
22
|
+
"scopeRecommendation": "boil-lake",
|
|
23
|
+
"costModel": {
|
|
24
|
+
"agentTime": "low",
|
|
25
|
+
"humanReviewTime": "low",
|
|
26
|
+
"verificationCost": "targeted dialog test",
|
|
27
|
+
"maintenanceCost": "low while scoped to the dialog",
|
|
28
|
+
"failureCost": "sharing friction remains",
|
|
29
|
+
"reversibility": "reversible UI patch"
|
|
30
|
+
},
|
|
31
|
+
"verdict": "boil-lake",
|
|
32
|
+
"missingEvidenceOrPivotReason": "",
|
|
33
|
+
"impactOnApprovedDirection": "cover the full same-dialog copy lake instead of only a happy-path button render"
|
|
63
34
|
},
|
|
64
35
|
"externalBestPractice": {
|
|
65
36
|
"needed": false,
|
|
@@ -105,31 +76,9 @@
|
|
|
105
76
|
"impact": "cc-do keeps implementation inside the share dialog and avoids backend or permission work",
|
|
106
77
|
"status": "answered"
|
|
107
78
|
}
|
|
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
|
-
}
|
|
79
|
+
]
|
|
130
80
|
},
|
|
131
81
|
"currentTaskId": null,
|
|
132
|
-
"activePhase": null,
|
|
133
82
|
"tasks": [
|
|
134
83
|
{
|
|
135
84
|
"id": "T001",
|
|
@@ -194,45 +143,7 @@
|
|
|
194
143
|
"type": "automated-test",
|
|
195
144
|
"determinism": "deterministic",
|
|
196
145
|
"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
|
-
]
|
|
146
|
+
}
|
|
236
147
|
},
|
|
237
148
|
{
|
|
238
149
|
"id": "T002",
|
|
@@ -299,45 +210,7 @@
|
|
|
299
210
|
"type": "automated-test",
|
|
300
211
|
"determinism": "deterministic",
|
|
301
212
|
"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
|
-
]
|
|
213
|
+
}
|
|
341
214
|
},
|
|
342
215
|
{
|
|
343
216
|
"id": "T003",
|
|
@@ -408,87 +281,12 @@
|
|
|
408
281
|
"type": "automated-test",
|
|
409
282
|
"determinism": "deterministic",
|
|
410
283
|
"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
|
-
]
|
|
284
|
+
}
|
|
450
285
|
}
|
|
451
286
|
],
|
|
452
287
|
"metadata": {
|
|
453
288
|
"source": "tasks.md",
|
|
454
289
|
"generatedBy": "docs-example",
|
|
455
290
|
"planVersion": 1
|
|
456
|
-
},
|
|
457
|
-
"deferredQuestions": [
|
|
458
|
-
"If users still miss the copied-state confirmation, open RM-002 for richer feedback."
|
|
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
291
|
}
|
|
494
292
|
}
|
|
@@ -4,7 +4,8 @@
|
|
|
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.9.0`
|
|
8
|
+
- Work branch: `REQ/001-copy-invite-link`
|
|
8
9
|
- Source roadmap item: `RM-001`
|
|
9
10
|
- Source roadmap version: `roadmap.v1`
|
|
10
11
|
|
|
@@ -44,12 +45,14 @@
|
|
|
44
45
|
ClaudeCode / Codex 执行本计划时,必须把本文件当成任务模板合同,而不是普通 TODO 列表。
|
|
45
46
|
|
|
46
47
|
- Template source: `assets/TASKS_TEMPLATE.md`
|
|
48
|
+
- 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`.
|
|
47
49
|
- Task selection: read `planning/task-manifest.json.currentTaskId`; if empty, run the ready-task selector before choosing work.
|
|
48
50
|
- Task block rule: read the full task block before coding; title-only execution is invalid.
|
|
49
51
|
- 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
|
|
52
|
+
- Completion failure: if the script fails, fix the missing review / dependency evidence and rerun it. Do not bypass it by editing JSON or Markdown.
|
|
51
53
|
|
|
52
54
|
```bash
|
|
55
|
+
cc-devflow query workflow-context --change <changeId> --change-key <changeKey> --cwd <repo-root> --data-only --no-trace --compact
|
|
53
56
|
SCRIPT_ROOT=".claude/skills/cc-do/scripts"
|
|
54
57
|
if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then
|
|
55
58
|
SCRIPT_ROOT=".codex/skills/cc-do/scripts"
|
|
@@ -67,7 +70,7 @@ bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/pdca-loop/cha
|
|
|
67
70
|
Read first: `design.md`, `src/features/share/ShareDialog.tsx`
|
|
68
71
|
Verification: `npm test -- src/features/share/ShareDialog.test.tsx`
|
|
69
72
|
Evidence: failing output that shows the missing button / action
|
|
70
|
-
Completion: after verification evidence and required
|
|
73
|
+
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/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
74
|
Test seam: share dialog UI behavior
|
|
72
75
|
Public verification path: Run the share dialog test and observe the copy action through the rendered dialog
|
|
73
76
|
Allowed mocks: clipboard boundary
|
|
@@ -79,8 +82,8 @@ bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/pdca-loop/cha
|
|
|
79
82
|
Files: `src/features/share/ShareDialog.tsx`
|
|
80
83
|
Read first: `design.md`, `src/features/share/ShareDialog.test.tsx`
|
|
81
84
|
Verification: `npm test -- src/features/share/ShareDialog.test.tsx`
|
|
82
|
-
Evidence: passing output +
|
|
83
|
-
Completion: after verification evidence and required
|
|
85
|
+
Evidence: passing output + review notes
|
|
86
|
+
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/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
87
|
Test seam: share dialog UI behavior
|
|
85
88
|
Public verification path: Run the share dialog test and observe the copy action through the rendered dialog
|
|
86
89
|
Allowed mocks: clipboard boundary
|
|
@@ -97,7 +100,7 @@ bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/pdca-loop/cha
|
|
|
97
100
|
- `npm test -- src/features/share/ShareDialog.test.tsx`
|
|
98
101
|
- `npm run lint -- src/features/share/ShareDialog.tsx`
|
|
99
102
|
Evidence: passing test output + clean lint output
|
|
100
|
-
Completion: after verification evidence and required
|
|
103
|
+
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/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
104
|
Test seam: share dialog UI behavior
|
|
102
105
|
Public verification path: Run the share dialog test and observe the copy action through the rendered dialog
|
|
103
106
|
Allowed mocks: clipboard boundary
|
|
@@ -120,7 +120,7 @@
|
|
|
120
120
|
"reviewPacket": {
|
|
121
121
|
"baseSha": "example-base",
|
|
122
122
|
"headSha": "example-head",
|
|
123
|
-
"requirements": "planning/
|
|
123
|
+
"requirements": "planning/tasks.md#Contract Summary",
|
|
124
124
|
"implemented": "copy invite link workflow",
|
|
125
125
|
"reviewerContext": "requirement diff, plan completion, scope drift, docs staleness"
|
|
126
126
|
},
|
|
@@ -100,15 +100,21 @@ while IFS= read -r encoded; do
|
|
|
100
100
|
assert_contains "$planning_dir/tasks.md" "- CC-Plan skill version: \`$REQ_PLAN_VERSION\`"
|
|
101
101
|
|
|
102
102
|
jq -er --arg roadmap "$ROADMAP_VERSION" --arg reqplan "$REQ_PLAN_VERSION" '
|
|
103
|
-
(.sourceRoadmap.roadmapSkillVersion // $roadmap) == $roadmap and
|
|
104
103
|
(.planningMeta.reqPlanSkillVersion // $reqplan) == $reqplan and
|
|
105
|
-
.
|
|
106
|
-
.
|
|
107
|
-
(.
|
|
108
|
-
|
|
104
|
+
(.status? == null) and
|
|
105
|
+
(.activePhase? == null) and
|
|
106
|
+
(.sourceRoadmap? == null) and
|
|
107
|
+
(.spec? == null) and
|
|
108
|
+
(.executionProtocol? == null) and
|
|
109
|
+
(.planningMeta.requirementBrief? == null) and
|
|
110
|
+
(.planningMeta.ambiguityGate? == null) and
|
|
111
|
+
(.planningMeta.reviewLoop? == null) and
|
|
112
|
+
all(.tasks[]; (.completion? == null) and (.tddPhase | type == "string") and (.testSeam.publicVerificationPath | type == "string"))
|
|
109
113
|
' "$planning_dir/task-manifest.json" >/dev/null
|
|
110
114
|
|
|
111
115
|
assert_contains "$planning_dir/tasks.md" "## Execution Protocol"
|
|
116
|
+
assert_contains "$planning_dir/tasks.md" "cc-devflow query workflow-context"
|
|
117
|
+
assert_contains "$planning_dir/tasks.md" "--data-only --no-trace --compact"
|
|
112
118
|
assert_contains "$planning_dir/tasks.md" "mark-task-complete.sh"
|
|
113
119
|
assert_contains "$planning_dir/tasks.md" "TDD phase:"
|
|
114
120
|
assert_contains "$planning_dir/tasks.md" "Completion:"
|
|
@@ -68,7 +68,7 @@ lib/skill-runtime
|
|
|
68
68
|
|
|
|
69
69
|
v
|
|
70
70
|
durable artifacts
|
|
71
|
-
task-manifest.json / report-card.json / change-
|
|
71
|
+
planning/tasks.md / task-manifest.json / report-card.json / change-meta.json
|
|
72
72
|
```
|
|
73
73
|
|
|
74
74
|
SKILL/PLAYBOOK 拥有 workflow 语义。`lib/skill-runtime` 只拥有 typed reads、
|
|
@@ -125,11 +125,11 @@ Codebase Map 七件套只作为按需缓存:
|
|
|
125
125
|
|
|
126
126
|
| Contract | Artifact owner | Gate | Tests |
|
|
127
127
|
| --- | --- | --- | --- |
|
|
128
|
-
| WHAT/WHY ambiguity score | `task-manifest.json.planningMeta` + `planning/
|
|
129
|
-
| Assumptions preview | `planning/
|
|
130
|
-
| Bounded review loop | `
|
|
131
|
-
| External doc conflict buckets | `
|
|
132
|
-
| Trust boundary | `
|
|
128
|
+
| WHAT/WHY ambiguity score | `task-manifest.json.planningMeta` + `planning/tasks.md#Contract Summary` | score above threshold blocks task manifest approval | unit fixture: ambiguous input blocks; clear input passes |
|
|
129
|
+
| Assumptions preview | `planning/tasks.md#Contract Summary` decision log | user-visible assumptions before approval | fixture: hidden assumption fails review |
|
|
130
|
+
| Bounded review loop | `planning/tasks.md#Contract Summary` | max attempts and stall detection reroute to `cc-roadmap` or user question | hostile fixture: repeated issue count blocks |
|
|
131
|
+
| External doc conflict buckets | `planning/tasks.md#Contract Summary` | imported docs classified as auto-resolved, competing, unresolved | fixture: conflicting ADR/PRD creates blocker |
|
|
132
|
+
| Trust boundary | `planning/tasks.md#Contract Summary` | external text is evidence/source only, never instruction | hostile fixture: prompt injection remains evidence-only |
|
|
133
133
|
|
|
134
134
|
`cc-plan` must keep design decisions readable in Markdown and machine truth in JSON.
|
|
135
135
|
No separate GSD-style `.planning/` tree.
|
|
@@ -140,20 +140,20 @@ No separate GSD-style `.planning/` tree.
|
|
|
140
140
|
| --- | --- | --- | --- |
|
|
141
141
|
| Wave scheduling | `task-manifest.json.tasks[].phase/parallel/dependsOn/touches` | parallel only when dependencies and touches do not conflict | schema fixture: shared touches rejected |
|
|
142
142
|
| Submodule-aware worktree gate | `task-manifest.json.tasks[].touches` + runtime submodule scan | only tasks touching submodule paths lose isolation | hostile fixture: repo with `.gitmodules` but unrelated touches still parallel |
|
|
143
|
-
| Quick lane mini manifest | `task-manifest.json.metadata.lane=quick` | small work still has
|
|
144
|
-
| Thread/pause/resume | `change-
|
|
143
|
+
| Quick lane mini manifest | `task-manifest.json.metadata.lane=quick` | small work still has task-state truth, verification, handoff | fixture: quick lane without verification blocks |
|
|
144
|
+
| Thread/pause/resume | `change-meta.json`, manifest task state, optional CLI logs, and one final handoff file | resume query returns stable next action | integration: stale manifest state restores to pending |
|
|
145
145
|
|
|
146
|
-
`cc-do` should not invent new task state outside `task-manifest.json
|
|
146
|
+
`cc-do` should not invent new task state outside `task-manifest.json`.
|
|
147
147
|
|
|
148
148
|
### `cc-investigate`
|
|
149
149
|
|
|
150
150
|
| Contract | Artifact owner | Gate | Tests |
|
|
151
151
|
| --- | --- | --- | --- |
|
|
152
|
-
| Persistent debug session | `planning/
|
|
153
|
-
| Diagnose-only report | `planning/
|
|
154
|
-
| Workflow forensics | `planning/
|
|
152
|
+
| Persistent debug session | `planning/tasks.md#Root Cause Contract`, optional machine summary in `task-manifest.json` | hypotheses, probes, symptom match, cleanup recorded | fixture: missing cleanup blocks freeze |
|
|
153
|
+
| Diagnose-only report | `planning/tasks.md#Root Cause Contract` | no code edits required; root cause and next action explicit | fixture: diagnose-only does not mark implementation complete |
|
|
154
|
+
| Workflow forensics | `planning/tasks.md#Root Cause Contract` + trace refs | git/artifact/state failures classified before fixes | hostile fixture: corrupt manifest produces named failure |
|
|
155
155
|
|
|
156
|
-
Prefer extending `planning/
|
|
156
|
+
Prefer extending `planning/tasks.md#Root Cause Contract` over adding `planning/debug-session.md`.
|
|
157
157
|
Only add a new file if the debug transcript becomes too large and has a single owner.
|
|
158
158
|
|
|
159
159
|
### `cc-check`
|
|
@@ -208,11 +208,11 @@ default planning path.
|
|
|
208
208
|
|
|
209
209
|
| Data | Owner | Human view | Machine truth |
|
|
210
210
|
| --- | --- | --- | --- |
|
|
211
|
-
| Ambiguity and assumptions | `cc-plan` | `planning/
|
|
212
|
-
| Imported doc trust classification | `cc-plan` | `planning/
|
|
211
|
+
| Ambiguity and assumptions | `cc-plan` | `planning/tasks.md#Contract Summary` | `task-manifest.json.planningMeta` |
|
|
212
|
+
| Imported doc trust classification | `cc-plan` | `planning/tasks.md#Contract Summary` | `planning/tasks.md` |
|
|
213
213
|
| Task graph and waves | `cc-plan` / `cc-do` | `planning/tasks.md` | `task-manifest.json.tasks[]` |
|
|
214
|
-
| Quick lane state | `cc-do` |
|
|
215
|
-
| Debug hypotheses and probes | `cc-investigate` | `planning/
|
|
214
|
+
| Quick lane state | `cc-do` | task-state summary | `task-manifest.json.metadata`, `planning/tasks.md` |
|
|
215
|
+
| Debug hypotheses and probes | `cc-investigate` | `planning/tasks.md#Root Cause Contract` | optional `task-manifest.json.investigation` |
|
|
216
216
|
| Verification/UAT/facets | `cc-check` | review summary | `report-card.json` |
|
|
217
217
|
| Runtime failures | `cc-check` | review summary | `report-card.json.runtime.failureOwnership[]` |
|
|
218
218
|
| Ship target and rollback | `cc-act` | `handoff/pr-brief.md` / `release-note.md` | structured preflight output |
|
|
@@ -243,7 +243,7 @@ owner skill, and next action.
|
|
|
243
243
|
| --- | --- | --- | --- | --- | --- | --- |
|
|
244
244
|
| external docs -> `cc-plan` | block with missing source | skip with reason | `TrustBoundaryError` | conflict bucket | mark stale source | partial import warning |
|
|
245
245
|
| `tasks.md` -> `task-manifest.json` | block | block | schema error | dependency conflict | plan version mismatch | no manifest approval |
|
|
246
|
-
| manifest -> wave scheduling | block | no runnable task | `InvalidTaskGraphError` | serialize or block | stale
|
|
246
|
+
| manifest -> wave scheduling | block | no runnable task | `InvalidTaskGraphError` | serialize or block | stale manifest state rejected | reroute resume |
|
|
247
247
|
| debug session -> analysis | block freeze | require note | schema/narrative mismatch | competing hypotheses | stale symptom | diagnose-only |
|
|
248
248
|
| query registry -> next action | `MissingArtifactError` | no next action with reason | named parse/schema error | blocked graph | stale state warning | degraded output |
|
|
249
249
|
| inventory -> publish gate | missing inventory blocks | empty inventory blocks | schema error | drift blocks | stale hash blocks | publish blocked |
|
|
@@ -320,7 +320,7 @@ Large-file guardrails:
|
|
|
320
320
|
|
|
321
321
|
### Phase 3: `cc-investigate` debug session and forensics
|
|
322
322
|
|
|
323
|
-
- Extend `planning/
|
|
323
|
+
- Extend `planning/tasks.md#Root Cause Contract` and optional machine summary.
|
|
324
324
|
- Required proof: diagnose-only and missing cleanup fixtures.
|
|
325
325
|
|
|
326
326
|
### Phase 4: `cc-check` and `cc-act` consumers
|
|
@@ -354,7 +354,7 @@ These rules protect cc-devflow's identity:
|
|
|
354
354
|
| Existing cc-devflow asset | Reuse |
|
|
355
355
|
| --- | --- |
|
|
356
356
|
| `lib/skill-runtime/query.js` | current progress/next/full-state facade |
|
|
357
|
-
| `lib/skill-runtime/schemas.js` | manifest/report/
|
|
357
|
+
| `lib/skill-runtime/schemas.js` | manifest/report/runtime schema boundary |
|
|
358
358
|
| `lib/skill-runtime/config.js` | layered config and doctor pattern |
|
|
359
359
|
| `lib/compiler/manifest.js` | hash and drift detection foundation |
|
|
360
360
|
| `scripts/validate-publish.js` | publish validation orchestrator |
|
|
@@ -404,7 +404,7 @@ not the cc-devflow implementation order.
|
|
|
404
404
|
| `ship` | structured ship preflight |
|
|
405
405
|
| `next` | runtime query `route.next-action` |
|
|
406
406
|
| `fast` | TDD exception / quick lane rule |
|
|
407
|
-
| `quick` | mini manifest +
|
|
407
|
+
| `quick` | mini manifest + task-state truth |
|
|
408
408
|
| `ui-review` | conditional frontend `cc-check` facet |
|
|
409
409
|
| `code-review` | finding schema |
|
|
410
410
|
| `code-review-fix` | fix loop and return to `cc-check` |
|
|
@@ -433,7 +433,7 @@ not the cc-devflow implementation order.
|
|
|
433
433
|
| `cleanup` | low priority cleanup |
|
|
434
434
|
| `manager` | skip UI |
|
|
435
435
|
| `workstreams` | active pointer only |
|
|
436
|
-
| `autonomous` | smart-discuss/
|
|
436
|
+
| `autonomous` | smart-discuss/task-state guard only |
|
|
437
437
|
| `undo` | rollback guard |
|
|
438
438
|
|
|
439
439
|
### Session And Navigation
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Artifact Contract
|
|
2
|
+
|
|
3
|
+
cc-devflow artifacts follow two rules: progressive disclosure and one state owner.
|
|
4
|
+
|
|
5
|
+
## Progressive Disclosure
|
|
6
|
+
|
|
7
|
+
Every skill output should have a default path and deeper layers.
|
|
8
|
+
|
|
9
|
+
- Default layer: the next actor can see the current state, next action, and proof source quickly.
|
|
10
|
+
- Conditional layer: open only when scope, dependency, review, or conflict questions arise.
|
|
11
|
+
- Deep layer: full evidence, reasoning, or historical review, opened only for audit or recovery.
|
|
12
|
+
|
|
13
|
+
If a field has no clear opener and no downstream consumer, remove it.
|
|
14
|
+
|
|
15
|
+
## State Owners
|
|
16
|
+
|
|
17
|
+
| State | Owner artifact | Projection / derived readers |
|
|
18
|
+
| --- | --- | --- |
|
|
19
|
+
| Roadmap item status and progress | `devflow/roadmap.json` | `devflow/ROADMAP.md`, `devflow/BACKLOG.md`, handoff summaries |
|
|
20
|
+
| Capability/spec sync state | `devflow/changes/<change-key>/change-meta.json` | `planning/tasks.md`, `review/report-card.json`, handoff summaries |
|
|
21
|
+
| Execution task status | `planning/task-manifest.json.tasks[].status` | `planning/tasks.md` checkboxes, recovery summaries |
|
|
22
|
+
| Ready task / phase | derived from `tasks[].status`, `tasks[].phase`, and `tasks[].dependsOn` | `currentTaskId` cache, ready-task selector output |
|
|
23
|
+
| Runtime event log | `execution/tasks/<task-id>/events.jsonl` only for debug/failed runs | recovery summaries |
|
|
24
|
+
| Review verdict | `review/report-card.json.verdict` | PR brief, release note, act gate |
|
|
25
|
+
| PR / remote queue truth | live GitHub API / `gh` output | local review notes and handoff summaries |
|
|
26
|
+
| Project postmortem facts and principles | `devflow/postmortems/` | planning recall, investigation hypotheses, task guardrails |
|
|
27
|
+
|
|
28
|
+
## Duplication Rules
|
|
29
|
+
|
|
30
|
+
- Machine artifacts may reference another owner by id or path, but must not copy its status lifecycle.
|
|
31
|
+
- Markdown projections must state their source instead of becoming editable truth.
|
|
32
|
+
- Derived fields must be described as derived/cache and must be recomputable.
|
|
33
|
+
- A skill must not create a new status field unless it also names the owner, lifecycle, projection readers, and validation gate.
|
|
34
|
+
- Task manifests must not duplicate PRD narrative, review-loop prose, source-trust details, completion shell commands, roadmap progress, or spec sync status.
|
|
35
|
+
- Project postmortems must cite stronger owner artifacts and Git evidence; they do not own roadmap progress, task status, review verdicts, or spec sync state.
|
|
36
|
+
|
|
37
|
+
## Required Check
|
|
38
|
+
|
|
39
|
+
Before changing any skill output, answer:
|
|
40
|
+
|
|
41
|
+
1. Who owns this state?
|
|
42
|
+
2. Is this field consumed directly, or is it a projection?
|
|
43
|
+
3. Can it be recomputed from a stronger source?
|
|
44
|
+
4. What validation fails if this state diverges?
|
|
@@ -11,10 +11,10 @@ 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 core workflow
|
|
14
|
+
The core workflow can run manually through PDCA/IDCA skills or automatically through the PR harness skills:
|
|
15
15
|
|
|
16
16
|
```text
|
|
17
|
-
cc-roadmap
|
|
17
|
+
cc-roadmap -> cc-next -> cc-dev
|
|
18
18
|
|
|
19
19
|
PDCA: cc-plan -> [cc-review] -> cc-do -> [cc-review] -> cc-check -> cc-act
|
|
20
20
|
IDCA: cc-investigate -> [cc-review] -> cc-do -> [cc-review] -> cc-check -> cc-act
|
|
@@ -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
|
|
39
|
+
The whole-pack install includes roadmap, next-work selection, autonomous dev, manual PDCA/IDCA, optional `cc-review`, PR review/landing, plus `cc-spec-init` and `cc-simplify` as maintenance helpers.
|
|
40
40
|
|
|
41
41
|
### Single Skill Install
|
|
42
42
|
|
|
@@ -87,9 +87,9 @@ Typical outputs:
|
|
|
87
87
|
|
|
88
88
|
- `cc-roadmap` writes `devflow/roadmap.json` as the editable roadmap truth, then generates `devflow/ROADMAP.md` and deprecated `devflow/BACKLOG.md`
|
|
89
89
|
- `cc-spec-init` writes `devflow/specs/INDEX.md`, capability specs, and `change-meta.json`
|
|
90
|
-
- `cc-plan` writes `planning/
|
|
91
|
-
- `cc-investigate` writes `planning/
|
|
92
|
-
- `cc-review` writes `
|
|
90
|
+
- `cc-plan` writes `planning/tasks.md#Contract Summary`, CLI-generated `task-manifest.json`, and `change-meta.json`
|
|
91
|
+
- `cc-investigate` writes `planning/tasks.md#Root Cause Contract`, CLI-generated `task-manifest.json`, and `change-meta.json`
|
|
92
|
+
- `cc-review` writes `review-ledger.jsonl`, optional `review-findings.json`, and Markdown reports only when rendered on demand
|
|
93
93
|
- `cc-check` writes `report-card.json`
|
|
94
94
|
- `cc-act` writes exactly one final handoff file: `handoff/pr-brief.md`, `handoff/resume-index.md`, or `handoff/release-note.md`
|
|
95
95
|
|
|
@@ -98,7 +98,8 @@ Change truth lives in `devflow/changes/<change>/`.
|
|
|
98
98
|
|
|
99
99
|
- Keep `INDEX.md` plus capability markdown under `devflow/specs/`.
|
|
100
100
|
- Name new change directories as `REQ-<number>-<description>` for requirements or `FIX-<number>-<description>` for bug fixes. `REQ` and `FIX` advance as separate local sequences, so cross-prefix duplicates are valid. Parallel worktrees may still repeat numbers; the full change key, especially the description, distinguishes the work. Old lowercase directories are compatibility reads only.
|
|
101
|
-
- Keep `change-
|
|
101
|
+
- Keep `change-meta.json`, `planning/tasks.md`, CLI-generated `task-manifest.json`, review ledger/findings records, optional CLI logs for debug/failure, `report-card.json`, and one final handoff file under each `devflow/changes/<change>/`. Do not generate task `context.md`, `checkpoint.json`, or AI-written process files.
|
|
102
|
+
- Legacy `planning/design.md`, `planning/analysis.md`, and `cc-review-*.md` are readable fallback inputs for older changes, not new default writes.
|
|
102
103
|
- Worker prompts, journals, assignments, and session logs belong under `devflow/workspaces/<change>/` as ephemeral scratch.
|
|
103
104
|
|
|
104
105
|
Planning handoffs should be evidence-rich before implementation starts:
|
|
@@ -154,7 +155,7 @@ npx cc-devflow adapt --cwd /path/to/your/project --platform codex
|
|
|
154
155
|
|
|
155
156
|
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.
|
|
156
157
|
|
|
157
|
-
Codex mirrors the distributed skills from `.claude/skills/<skill>/` into `.codex/skills/<skill>/`. That set includes the
|
|
158
|
+
Codex mirrors the distributed skills from `.claude/skills/<skill>/` into `.codex/skills/<skill>/`. That set includes the public workflow skills plus maintenance skills `cc-spec-init` and `cc-simplify`, and the mirror is additive-only: existing project-owned Codex skills are preserved instead of being deleted.
|
|
158
159
|
|
|
159
160
|
### Keep skills and examples in sync
|
|
160
161
|
|
|
@@ -173,6 +174,7 @@ npm run verify:publish
|
|
|
173
174
|
- [CLI And Skills](../commands/README.md)
|
|
174
175
|
- [Workflow Guide](./workflow-guide.md)
|
|
175
176
|
- [Best Practices](./best-practices.md)
|
|
177
|
+
- [Minimized Artifact Contract](./minimize-artifacts.md)
|
|
176
178
|
- [Example Entry Page](../examples/START-HERE.md)
|
|
177
179
|
- [Compact Example List](../examples/README.md)
|
|
178
180
|
- [Project README](../../README.md)
|