cc-devflow 4.5.9 → 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 +6 -0
- package/.claude/skills/cc-act/SKILL.md +12 -10
- package/.claude/skills/cc-act/assets/PR_BRIEF_TEMPLATE.md +1 -1
- package/.claude/skills/cc-act/references/closure-contract.md +1 -1
- package/.claude/skills/cc-act/references/git-commit-guidelines.md +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 +12 -0
- package/.claude/skills/cc-do/PLAYBOOK.md +7 -7
- package/.claude/skills/cc-do/SKILL.md +35 -37
- package/.claude/skills/cc-do/references/execution-recovery.md +18 -13
- package/.claude/skills/cc-do/scripts/build-task-context.sh +4 -17
- 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 +17 -0
- package/.claude/skills/cc-investigate/PLAYBOOK.md +6 -5
- package/.claude/skills/cc-investigate/SKILL.md +56 -44
- package/.claude/skills/cc-investigate/assets/TASKS_TEMPLATE.md +48 -5
- package/.claude/skills/cc-investigate/assets/TASK_MANIFEST_TEMPLATE.json +4 -3
- package/.claude/skills/cc-investigate/assets/{ANALYSIS_TEMPLATE.md → legacy/ANALYSIS_TEMPLATE.md} +1 -0
- package/.claude/skills/cc-investigate/references/investigation-contract.md +2 -2
- package/.claude/skills/cc-investigate/scripts/bootstrap-analysis.sh +1 -1
- package/.claude/skills/cc-plan/CHANGELOG.md +19 -0
- package/.claude/skills/cc-plan/PLAYBOOK.md +55 -53
- package/.claude/skills/cc-plan/SKILL.md +101 -85
- package/.claude/skills/cc-plan/assets/TASKS_TEMPLATE.md +47 -14
- package/.claude/skills/cc-plan/assets/TASK_MANIFEST_TEMPLATE.json +4 -2
- package/.claude/skills/cc-plan/assets/{DESIGN_TEMPLATE.md → legacy/DESIGN_TEMPLATE.md} +1 -0
- package/.claude/skills/cc-plan/assets/{TINY_DESIGN_TEMPLATE.md → legacy/TINY_DESIGN_TEMPLATE.md} +1 -1
- package/.claude/skills/cc-plan/references/planning-contract.md +11 -10
- 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/CHANGELOG.md +16 -0
- package/CONTRIBUTING.md +40 -4
- package/CONTRIBUTING.zh-CN.md +40 -4
- package/README.md +20 -8
- package/README.zh-CN.md +20 -8
- package/bin/cc-devflow-cli.js +293 -36
- package/docs/examples/START-HERE.md +5 -4
- package/docs/examples/example-bindings.json +8 -8
- package/docs/examples/full-design-blocked/README.md +2 -2
- 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 +3 -2
- 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/local-handoff/README.md +2 -2
- 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 +3 -2
- 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/pdca-loop/README.md +2 -2
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/handoff/pr-brief.md +2 -2
- 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 +2 -1
- 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/scripts/check-example-bindings.sh +2 -0
- package/docs/get-shit-done-strategy-audit.md +22 -22
- package/docs/guides/artifact-contract.md +1 -1
- 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/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 +61 -0
- 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 +43 -0
- 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 +24 -11
- package/lib/skill-runtime/query-registry.js +2 -2
- package/lib/skill-runtime/query.js +15 -2
- package/lib/skill-runtime/review-records.js +123 -0
- package/lib/skill-runtime/review.js +246 -11
- package/lib/skill-runtime/schemas.js +174 -12
- 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/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json
CHANGED
|
@@ -6,8 +6,9 @@
|
|
|
6
6
|
"requirementId": "REQ-003",
|
|
7
7
|
"requirementVersion": "REQ-003.v1",
|
|
8
8
|
"planningMeta": {
|
|
9
|
-
"reqPlanSkillVersion": "3.
|
|
9
|
+
"reqPlanSkillVersion": "3.9.0",
|
|
10
10
|
"designVersion": "design.v1",
|
|
11
|
+
"workBranch": "REQ/003-audit-log-export",
|
|
11
12
|
"approvedAt": "2026-04-16T13:10:00.000Z",
|
|
12
13
|
"basedOnOption": "Tiny design card",
|
|
13
14
|
"aiLeverageDecisionLens": {
|
|
@@ -173,7 +174,7 @@
|
|
|
173
174
|
],
|
|
174
175
|
"evidence": [
|
|
175
176
|
"passing test output",
|
|
176
|
-
"
|
|
177
|
+
"CLI log summary"
|
|
177
178
|
],
|
|
178
179
|
"context": {
|
|
179
180
|
"readFiles": [
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
- Requirement version: `REQ-003.v1`
|
|
6
6
|
- Design version: `design.v1`
|
|
7
|
-
- CC-Plan skill version: `3.
|
|
7
|
+
- CC-Plan skill version: `3.9.0`
|
|
8
|
+
- Work branch: `REQ/003-audit-log-export`
|
|
8
9
|
- Source roadmap item: `RM-020`
|
|
9
10
|
- Source roadmap version: `roadmap.v3`
|
|
10
11
|
|
|
@@ -41,12 +42,14 @@
|
|
|
41
42
|
ClaudeCode / Codex 执行本计划时,必须把本文件当成任务模板合同,而不是普通 TODO 列表。
|
|
42
43
|
|
|
43
44
|
- Template source: `assets/TASKS_TEMPLATE.md`
|
|
45
|
+
- 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`.
|
|
44
46
|
- Task selection: read `planning/task-manifest.json.currentTaskId`; if empty, run the ready-task selector before choosing work.
|
|
45
47
|
- Task block rule: read the full task block before coding; title-only execution is invalid.
|
|
46
48
|
- Completion rule: after verification and review gates pass, run the completion script; do not manually edit checkbox, status, or `currentTaskId`.
|
|
47
|
-
- Completion failure: if the script fails, fix the missing
|
|
49
|
+
- Completion failure: if the script fails, fix the missing review / dependency evidence and rerun it. Do not bypass it by editing JSON or Markdown.
|
|
48
50
|
|
|
49
51
|
```bash
|
|
52
|
+
cc-devflow query workflow-context --change <changeId> --change-key <changeKey> --cwd <repo-root> --data-only --no-trace --compact
|
|
50
53
|
SCRIPT_ROOT=".claude/skills/cc-do/scripts"
|
|
51
54
|
if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then
|
|
52
55
|
SCRIPT_ROOT=".codex/skills/cc-do/scripts"
|
|
@@ -64,7 +67,7 @@ bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/local-handoff
|
|
|
64
67
|
Read first: `design.md`, `src/admin/AuditSummaryPanel.tsx`
|
|
65
68
|
Verification: `npm test -- src/admin/AuditSummaryPanel.test.tsx`
|
|
66
69
|
Evidence: failing output
|
|
67
|
-
Completion: after verification evidence and required
|
|
70
|
+
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/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json --tasks docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/tasks.md --task T001`; do not hand-edit status.
|
|
68
71
|
Test seam: admin audit panel UI behavior
|
|
69
72
|
Public verification path: Run the audit summary panel test and observe CSV export through visible rows
|
|
70
73
|
Allowed mocks: download / blob boundary
|
|
@@ -76,8 +79,8 @@ bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/local-handoff
|
|
|
76
79
|
Files: `src/admin/AuditSummaryPanel.tsx`
|
|
77
80
|
Read first: `design.md`, `src/admin/AuditSummaryPanel.test.tsx`
|
|
78
81
|
Verification: `npm test -- src/admin/AuditSummaryPanel.test.tsx`
|
|
79
|
-
Evidence: passing output +
|
|
80
|
-
Completion: after verification evidence and required
|
|
82
|
+
Evidence: passing output + Git diff
|
|
83
|
+
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/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json --tasks docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/tasks.md --task T002`; do not hand-edit status.
|
|
81
84
|
Test seam: admin audit panel UI behavior
|
|
82
85
|
Public verification path: Run the audit summary panel test and observe CSV export through visible rows
|
|
83
86
|
Allowed mocks: download / blob boundary
|
|
@@ -94,7 +97,7 @@ bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/local-handoff
|
|
|
94
97
|
- `npm test -- src/admin/AuditSummaryPanel.test.tsx`
|
|
95
98
|
- `npm run lint -- src/admin/AuditSummaryPanel.tsx`
|
|
96
99
|
Evidence: passing output + clean lint output
|
|
97
|
-
Completion: after verification evidence and required
|
|
100
|
+
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/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json --tasks docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/tasks.md --task T003`; do not hand-edit status.
|
|
98
101
|
Test seam: admin audit panel UI behavior
|
|
99
102
|
Public verification path: Run the audit summary panel test and observe CSV export through visible rows
|
|
100
103
|
Allowed mocks: download / blob boundary
|
package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/review/report-card.json
CHANGED
|
@@ -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": "audit log export summary view",
|
|
125
125
|
"reviewerContext": "requirement diff, plan completion, scope drift, docs staleness"
|
|
126
126
|
},
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
- Example version: `1.0.0`
|
|
6
6
|
- Last reviewed: `2026-04-17`
|
|
7
|
-
- Bound skills: `cc-roadmap@5.3.0`, `cc-plan@3.
|
|
7
|
+
- Bound skills: `cc-roadmap@5.3.0`, `cc-plan@3.9.0`, `cc-do@1.6.7`, `cc-check@1.11.1`, `cc-act@1.8.8`
|
|
8
8
|
|
|
9
9
|
This folder shows one minimal but complete `cc-roadmap -> cc-plan -> cc-do -> cc-check -> cc-act` loop.
|
|
10
10
|
|
|
@@ -30,8 +30,8 @@ The sample requirement is:
|
|
|
30
30
|
- `roadmap.json`: editable roadmap truth that renders the generated views
|
|
31
31
|
- `ROADMAP.md`: generated view of what `cc-roadmap` decided and why this item is first
|
|
32
32
|
- `BACKLOG.md`: deprecated capability-aware projection that makes `RM-001` ready for `cc-plan`
|
|
33
|
-
- `changes/REQ-001-copy-invite-link/planning/design.md`: approved tiny design
|
|
34
33
|
- `changes/REQ-001-copy-invite-link/planning/tasks.md`: executable task handoff
|
|
34
|
+
- `changes/REQ-001-copy-invite-link/planning/design.md`: legacy fallback sample for the approved tiny design
|
|
35
35
|
- `changes/REQ-001-copy-invite-link/planning/task-manifest.json`: machine-readable execution truth
|
|
36
36
|
- `changes/REQ-001-copy-invite-link/review/report-card.json`: `cc-check` proof and verdict
|
|
37
37
|
- `changes/REQ-001-copy-invite-link/handoff/pr-brief.md`: ship-ready PR handoff
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
|
|
29
29
|
- Reviewed base SHA: `example-base`
|
|
30
30
|
- Reviewed head SHA: `example-head`
|
|
31
|
-
- Review packet: `planning/tasks.md#
|
|
31
|
+
- Review packet: `planning/tasks.md#Contract Summary`; `planning/tasks.md#T001-T003`
|
|
32
32
|
- Finding triage: no findings
|
|
33
33
|
- QA / claim evidence: `qa=pass`, `tests-pass=pass`, `requirements-met=pass`
|
|
34
34
|
|
|
@@ -82,7 +82,7 @@
|
|
|
82
82
|
|
|
83
83
|
- Reviewed base SHA: `example-base`
|
|
84
84
|
- Reviewed head SHA: `example-head`
|
|
85
|
-
- Review packet: `planning/tasks.md#
|
|
85
|
+
- Review packet: `planning/tasks.md#Contract Summary`; `planning/tasks.md#T001-T003`
|
|
86
86
|
- Finding triage: no findings
|
|
87
87
|
- QA / claim evidence: `qa=pass`, `tests-pass=pass`, `requirements-met=pass`
|
|
88
88
|
- Readiness: review freshness=`fresh`; QA coverage has no gaps; browser QA intentionally skipped for this fixture.
|
|
@@ -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
|
- Requirement ID: `REQ-001`
|
|
9
10
|
- Design mode: `tiny-design`
|
|
10
11
|
- Why this stays `tiny-design`: the patch is limited to an existing dialog and test file, with no API or data model changes
|
package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json
CHANGED
|
@@ -6,8 +6,9 @@
|
|
|
6
6
|
"requirementId": "REQ-001",
|
|
7
7
|
"requirementVersion": "REQ-001.v1",
|
|
8
8
|
"planningMeta": {
|
|
9
|
-
"reqPlanSkillVersion": "3.
|
|
9
|
+
"reqPlanSkillVersion": "3.9.0",
|
|
10
10
|
"designVersion": "design.v1",
|
|
11
|
+
"workBranch": "REQ/001-copy-invite-link",
|
|
11
12
|
"approvedAt": "2026-04-15T10:05:00.000Z",
|
|
12
13
|
"basedOnOption": "Tiny design card",
|
|
13
14
|
"aiLeverageDecisionLens": {
|
|
@@ -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
|
},
|
|
@@ -113,6 +113,8 @@ while IFS= read -r encoded; do
|
|
|
113
113
|
' "$planning_dir/task-manifest.json" >/dev/null
|
|
114
114
|
|
|
115
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"
|
|
116
118
|
assert_contains "$planning_dir/tasks.md" "mark-task-complete.sh"
|
|
117
119
|
assert_contains "$planning_dir/tasks.md" "TDD phase:"
|
|
118
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 | `planning/
|
|
131
|
-
| External doc conflict buckets | `planning/
|
|
132
|
-
| Trust boundary | `planning/
|
|
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
|
|
@@ -20,7 +20,7 @@ If a field has no clear opener and no downstream consumer, remove it.
|
|
|
20
20
|
| Capability/spec sync state | `devflow/changes/<change-key>/change-meta.json` | `planning/tasks.md`, `review/report-card.json`, handoff summaries |
|
|
21
21
|
| Execution task status | `planning/task-manifest.json.tasks[].status` | `planning/tasks.md` checkboxes, recovery summaries |
|
|
22
22
|
| Ready task / phase | derived from `tasks[].status`, `tasks[].phase`, and `tasks[].dependsOn` | `currentTaskId` cache, ready-task selector output |
|
|
23
|
-
| Runtime
|
|
23
|
+
| Runtime event log | `execution/tasks/<task-id>/events.jsonl` only for debug/failed runs | recovery summaries |
|
|
24
24
|
| Review verdict | `review/report-card.json.verdict` | PR brief, release note, act gate |
|
|
25
25
|
| PR / remote queue truth | live GitHub API / `gh` output | local review notes and handoff summaries |
|
|
26
26
|
| Project postmortem facts and principles | `devflow/postmortems/` | planning recall, investigation hypotheses, task guardrails |
|
|
@@ -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)
|
|
@@ -11,10 +11,10 @@ CC-DevFlow 现在有两条入口:
|
|
|
11
11
|
- `cc-devflow init`:把整包 `.claude` 安装到你的项目里
|
|
12
12
|
- `cc-devflow adapt`:生成 Codex、Cursor、Qwen、Antigravity 等平台产物
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
核心工作流可以手动走 PDCA/IDCA Skill,也可以通过 PR harness Skill 自动推进:
|
|
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 @@ IDCA: cc-investigate -> [cc-review] -> cc-do -> [cc-review] -> cc-check -> cc-ac
|
|
|
36
36
|
npx cc-devflow init --dir /path/to/your/project
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
-
整包安装会带上
|
|
39
|
+
整包安装会带上 roadmap、next-work selection、autonomous dev、手动 PDCA/IDCA、可选 `cc-review`、PR review/landing,以及维护用的 `cc-spec-init` 和 `cc-simplify`。
|
|
40
40
|
|
|
41
41
|
### 单个 Skill 安装
|
|
42
42
|
|
|
@@ -87,9 +87,9 @@ find .codex/skills -mindepth 2 -maxdepth 2 -name SKILL.md | sort
|
|
|
87
87
|
|
|
88
88
|
- `cc-roadmap` 产出可编辑真相 `devflow/roadmap.json`,再生成 `devflow/ROADMAP.md` 和 deprecated `devflow/BACKLOG.md`
|
|
89
89
|
- `cc-spec-init` 产出 `devflow/specs/INDEX.md`、capability spec 和 `change-meta.json`
|
|
90
|
-
- `cc-plan` 产出 `planning/
|
|
91
|
-
- `cc-investigate` 产出 `planning/
|
|
92
|
-
- `cc-review` 产出 `
|
|
90
|
+
- `cc-plan` 产出 `planning/tasks.md#Contract Summary`、CLI 生成的 `task-manifest.json` 和 `change-meta.json`
|
|
91
|
+
- `cc-investigate` 产出 `planning/tasks.md#Root Cause Contract`、CLI 生成的 `task-manifest.json` 和 `change-meta.json`
|
|
92
|
+
- `cc-review` 产出 `review-ledger.jsonl`、可选 `review-findings.json`,Markdown 报告只在需要时按需渲染
|
|
93
93
|
- `cc-check` 产出 `report-card.json`
|
|
94
94
|
- `cc-act` 只产出一个最终 handoff 文件:`handoff/pr-brief.md`、`handoff/resume-index.md` 或 `handoff/release-note.md`
|
|
95
95
|
|
|
@@ -97,7 +97,8 @@ durable truth 分两层:
|
|
|
97
97
|
|
|
98
98
|
- `devflow/specs/`:capability 真相,保留 `INDEX.md` 与 `capabilities/*.md`
|
|
99
99
|
- 新 change 目录必须命名为 `REQ-<number>-<description>`(需求)或 `FIX-<number>-<description>`(修复);`REQ` 和 `FIX` 分别维护自己的递增编号,跨前缀同号不是冲突;并行工作树造成重复编号时,完整 change key 的描述负责区分业务内容,旧小写目录只作为历史兼容读取。
|
|
100
|
-
- `devflow/changes/<change>/`:变更真相,保留 `change-
|
|
100
|
+
- `devflow/changes/<change>/`:变更真相,保留 `change-meta.json`、`planning/tasks.md`、CLI 生成的 `task-manifest.json`、review ledger / findings 记录、debug / failed 的可选 CLI 日志、`report-card.json` 和唯一的最终 handoff 文件。不要生成任务级 `context.md`、`checkpoint.json` 或 AI 手写过程文件。
|
|
101
|
+
- 历史 `planning/design.md`、`planning/analysis.md` 和 `cc-review-*.md` 是旧 change 的可读 fallback,不再是新默认写入。
|
|
101
102
|
- worker prompt、journal、assignment、session log 统一放到 `devflow/workspaces/<change>/`,作为 ephemeral scratch。
|
|
102
103
|
|
|
103
104
|
进入实现前,planning handoff 应该先把证据写实:
|
|
@@ -153,7 +154,7 @@ npx cc-devflow adapt --cwd /path/to/your/project --platform codex
|
|
|
153
154
|
|
|
154
155
|
如果你的项目没有可选的 `.claude/commands/` 输入目录,这也是正常的;编译器仍然会生成 skills registry,并为 Codex 镜像正式分发 skill 集合。
|
|
155
156
|
|
|
156
|
-
Codex 现在会把正式分发的 skill 从 `.claude/skills/<skill>/` 镜像到 `.codex/skills/<skill
|
|
157
|
+
Codex 现在会把正式分发的 skill 从 `.claude/skills/<skill>/` 镜像到 `.codex/skills/<skill>/`。这套集合包含公开 workflow skill 和维护类 skill `cc-spec-init`、`cc-simplify`,并且镜像是纯增量的:项目里已有的自定义 Codex skill 不会被删除。
|
|
157
158
|
|
|
158
159
|
### 保持 skill 和样例同步
|
|
159
160
|
|
|
@@ -172,6 +173,7 @@ npm run verify:publish
|
|
|
172
173
|
- [CLI 与 Skill](../commands/README.zh-CN.md)
|
|
173
174
|
- [工作流详解](./workflow-guide.md)
|
|
174
175
|
- [最佳实践](./best-practices.md)
|
|
176
|
+
- [最小 Artifact 合同](./minimize-artifacts.md)
|
|
175
177
|
- [样例入口页](../examples/START-HERE.md)
|
|
176
178
|
- [简版样例列表](../examples/README.md)
|
|
177
179
|
- [项目 README](../../README.zh-CN.md)
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
# Minimized Workflow Artifacts
|
|
2
|
+
|
|
3
|
+
This guide describes the default artifact contract for new cc-devflow changes.
|
|
4
|
+
The goal is simple: keep durable workflow truth readable, small, and measurable.
|
|
5
|
+
|
|
6
|
+
## Default Shape
|
|
7
|
+
|
|
8
|
+
Each new change keeps durable truth under `devflow/changes/<change-key>/`.
|
|
9
|
+
|
|
10
|
+
Default human-authored Markdown:
|
|
11
|
+
|
|
12
|
+
- `planning/tasks.md`
|
|
13
|
+
|
|
14
|
+
Default machine-owned records:
|
|
15
|
+
|
|
16
|
+
- `change-meta.json`
|
|
17
|
+
- `planning/task-manifest.json`
|
|
18
|
+
- `review/review-ledger.jsonl`
|
|
19
|
+
- `review/review-findings.json` when findings exist
|
|
20
|
+
- `execution/tasks/<task-id>/checkpoint.json`
|
|
21
|
+
- `review/report-card.json`
|
|
22
|
+
- one final handoff file under `handoff/`
|
|
23
|
+
|
|
24
|
+
Runtime scratch, worker prompts, journals, assignments, and session logs belong
|
|
25
|
+
under `devflow/workspaces/<change-key>/`, not beside durable change truth.
|
|
26
|
+
|
|
27
|
+
## Feature Plans
|
|
28
|
+
|
|
29
|
+
Feature and scope changes use:
|
|
30
|
+
|
|
31
|
+
- `planning/tasks.md#Contract Summary`
|
|
32
|
+
- `planning/task-manifest.json`
|
|
33
|
+
- `change-meta.json`
|
|
34
|
+
|
|
35
|
+
`Contract Summary` owns the frozen human-readable plan: user story, non-negotiable
|
|
36
|
+
constraints, decisions that must not be reopened, task slices, and verification
|
|
37
|
+
expectations. The task manifest is generated or validated by CLI tooling and owns
|
|
38
|
+
machine-readable task status.
|
|
39
|
+
|
|
40
|
+
## Bug Investigations
|
|
41
|
+
|
|
42
|
+
Bug, regression, and unexpected-behavior work uses:
|
|
43
|
+
|
|
44
|
+
- `planning/tasks.md#Root Cause Contract`
|
|
45
|
+
- `planning/task-manifest.json`
|
|
46
|
+
- `change-meta.json`
|
|
47
|
+
|
|
48
|
+
`Root Cause Contract` owns the symptom, reproduction evidence, confirmed cause,
|
|
49
|
+
rejected near-causes, repair boundary, and task handoff. `cc-do` should implement
|
|
50
|
+
from that frozen contract instead of reopening investigation during execution.
|
|
51
|
+
|
|
52
|
+
## Review Records
|
|
53
|
+
|
|
54
|
+
`cc-review` writes structured lifecycle events first:
|
|
55
|
+
|
|
56
|
+
- `review/review-ledger.jsonl`
|
|
57
|
+
- optional `review/review-findings.json`
|
|
58
|
+
- optional rendered Markdown from `cc-devflow review render`
|
|
59
|
+
|
|
60
|
+
Markdown review reports are for human reading when needed. They are not the
|
|
61
|
+
default durable review source.
|
|
62
|
+
|
|
63
|
+
Useful commands:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
npx cc-devflow review start --change REQ-001 --change-key REQ-001-copy-invite-link --base-sha abc123 --head-sha def456
|
|
67
|
+
npx cc-devflow review record-node --change REQ-001 --change-key REQ-001-copy-invite-link --review-id <review-id> --node-id R001 --target planning/tasks.md --status checked --coverage contract --evidence-ref "cmd:npm run verify"
|
|
68
|
+
npx cc-devflow review add-finding --change REQ-001 --change-key REQ-001-copy-invite-link --review-id <review-id> --finding-id F001 --severity important --confidence 8 --display-tier blocking --fingerprint sha256:<hash> --scope "current change" --path planning/tasks.md --evidence "finding evidence" --recommendation "repair action" --route cc-do
|
|
69
|
+
npx cc-devflow review close --change REQ-001 --change-key REQ-001-copy-invite-link --review-id <review-id> --status clean --blocking-count 0 --warning-count 0 --next cc-check
|
|
70
|
+
npx cc-devflow review render --change REQ-001 --change-key REQ-001-copy-invite-link --review-id <review-id> --output review/review-report.md
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Legacy Fallback
|
|
74
|
+
|
|
75
|
+
Older changes may still contain:
|
|
76
|
+
|
|
77
|
+
- `planning/design.md`
|
|
78
|
+
- `planning/analysis.md`
|
|
79
|
+
- `review/cc-review-plan.md`
|
|
80
|
+
- `review/cc-review-report.md`
|
|
81
|
+
- `review/cc-review-agent-results.jsonl`
|
|
82
|
+
|
|
83
|
+
Those files remain readable compatibility inputs. New changes should not write
|
|
84
|
+
them by default. When migrating old work, fold feature-plan truth into
|
|
85
|
+
`planning/tasks.md#Contract Summary` and bug-investigation truth into
|
|
86
|
+
`planning/tasks.md#Root Cause Contract`.
|
|
87
|
+
|
|
88
|
+
## Validation Gates
|
|
89
|
+
|
|
90
|
+
Validate one change:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
npx cc-devflow task-contract validate --change REQ-001 --change-key REQ-001-copy-invite-link
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Validate the repository artifact contract:
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
npm run verify:artifacts
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Measure the contract:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
npm run benchmark:artifacts
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
The package-level verification command also includes artifact validation:
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
npm run verify
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## Authoring Rule
|
|
115
|
+
|
|
116
|
+
Before adding a durable file under `devflow/changes/<change-key>/`, answer:
|
|
117
|
+
|
|
118
|
+
1. Which downstream skill reads it by default?
|
|
119
|
+
2. Which state does it own that no existing artifact owns?
|
|
120
|
+
3. Which command fails if it drifts?
|
|
121
|
+
|
|
122
|
+
If those answers are unclear, keep the information in `planning/tasks.md`, a
|
|
123
|
+
machine record, or ephemeral workspace scratch instead.
|
|
@@ -159,9 +159,9 @@ describe('Skills Registry Generator', () => {
|
|
|
159
159
|
expect(execute.writes).toEqual(
|
|
160
160
|
expect.arrayContaining([
|
|
161
161
|
expect.objectContaining({
|
|
162
|
-
path: 'devflow/changes/<change-key>/execution/tasks/<task-id>/
|
|
162
|
+
path: 'devflow/changes/<change-key>/execution/tasks/<task-id>/events.jsonl',
|
|
163
163
|
durability: 'durable',
|
|
164
|
-
required:
|
|
164
|
+
required: false
|
|
165
165
|
})
|
|
166
166
|
])
|
|
167
167
|
);
|