cc-devflow 4.5.10 → 4.5.12
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 +23 -0
- package/.claude/skills/cc-act/PLAYBOOK.md +17 -269
- package/.claude/skills/cc-act/SKILL.md +38 -418
- package/.claude/skills/cc-act/assets/PROJECT_POSTMORTEM_INDEX_TEMPLATE.md +2 -13
- package/.claude/skills/cc-act/assets/PROJECT_POSTMORTEM_TEMPLATE.md +1 -9
- package/.claude/skills/cc-act/assets/PR_BRIEF_TEMPLATE.md +21 -177
- package/.claude/skills/cc-act/references/closure-contract.md +12 -63
- package/.claude/skills/cc-act/references/git-commit-guidelines.md +5 -5
- package/.claude/skills/cc-act/scripts/cc-act-common.sh +5 -322
- package/.claude/skills/cc-act/scripts/detect-ship-target.sh +11 -2
- package/.claude/skills/cc-act/scripts/inspect-git-index.sh +58 -0
- package/.claude/skills/cc-act/scripts/render-pr-brief.sh +40 -440
- package/.claude/skills/cc-act/scripts/verify-act-gate.sh +10 -50
- package/.claude/skills/cc-check/CHANGELOG.md +24 -0
- package/.claude/skills/cc-check/PLAYBOOK.md +19 -273
- package/.claude/skills/cc-check/SKILL.md +33 -454
- package/.claude/skills/cc-check/references/review-contract.md +12 -147
- package/.claude/skills/cc-dev/CHANGELOG.md +20 -0
- package/.claude/skills/cc-dev/PLAYBOOK.md +1 -1
- package/.claude/skills/cc-dev/SKILL.md +52 -130
- package/.claude/skills/cc-dev/scripts/resolve-cc-devflow.sh +181 -0
- package/.claude/skills/cc-do/CHANGELOG.md +17 -0
- package/.claude/skills/cc-do/PLAYBOOK.md +19 -113
- package/.claude/skills/cc-do/SKILL.md +39 -236
- package/.claude/skills/cc-do/references/execution-recovery.md +15 -109
- package/.claude/skills/cc-do/scripts/cc-do-common.sh +5 -57
- package/.claude/skills/cc-do/scripts/check-task-status.sh +35 -65
- package/.claude/skills/cc-do/scripts/mark-task-complete.sh +9 -46
- package/.claude/skills/cc-do/scripts/select-ready-tasks.sh +29 -97
- package/.claude/skills/cc-investigate/CHANGELOG.md +23 -0
- package/.claude/skills/cc-investigate/PLAYBOOK.md +20 -180
- package/.claude/skills/cc-investigate/SKILL.md +65 -513
- package/.claude/skills/cc-investigate/assets/TASKS_TEMPLATE.md +48 -95
- package/.claude/skills/cc-investigate/references/investigation-contract.md +14 -217
- package/.claude/skills/cc-next/CHANGELOG.md +6 -0
- package/.claude/skills/cc-next/PLAYBOOK.md +12 -8
- package/.claude/skills/cc-next/SKILL.md +34 -140
- package/.claude/skills/cc-plan/CHANGELOG.md +29 -0
- package/.claude/skills/cc-plan/PLAYBOOK.md +22 -161
- package/.claude/skills/cc-plan/SKILL.md +47 -640
- package/.claude/skills/cc-plan/assets/TASKS_TEMPLATE.md +30 -225
- package/.claude/skills/cc-plan/references/planning-contract.md +24 -160
- package/.claude/skills/cc-plan/scripts/next-change-key.sh +8 -44
- package/.claude/skills/cc-plan/scripts/parse-task-dependencies.js +2 -2
- package/.claude/skills/cc-plan/scripts/validate-scope.sh +1 -1
- package/.claude/skills/cc-pr-land/SKILL.md +14 -114
- package/.claude/skills/cc-pr-review/CHANGELOG.md +4 -0
- package/.claude/skills/cc-pr-review/SKILL.md +20 -103
- package/.claude/skills/cc-review/CHANGELOG.md +17 -0
- package/.claude/skills/cc-review/PLAYBOOK.md +13 -86
- package/.claude/skills/cc-review/SKILL.md +53 -241
- package/.claude/skills/cc-review/references/e2e-and-plugin-verification.md +2 -2
- package/.claude/skills/cc-review/references/implementation-review-branch.md +7 -147
- package/.claude/skills/cc-review/references/plan-review-branch.md +5 -147
- package/.claude/skills/cc-review/references/review-methods.md +10 -218
- package/.claude/skills/cc-review/scripts/collect-review-context.sh +4 -63
- package/.claude/skills/cc-roadmap/PLAYBOOK.md +1 -1
- package/.claude/skills/cc-roadmap/SKILL.md +3 -3
- package/.claude/skills/cc-simplify/CHANGELOG.md +7 -0
- package/.claude/skills/cc-simplify/SKILL.md +26 -21
- package/.claude/skills/cc-spec-init/PLAYBOOK.md +12 -48
- package/.claude/skills/cc-spec-init/SKILL.md +29 -132
- package/.claude/skills/cc-spec-init/references/spec-contract.md +8 -17
- package/CHANGELOG.md +27 -0
- package/README.md +5 -3
- package/README.zh-CN.md +5 -3
- package/bin/cc-devflow-cli.js +20 -260
- package/bin/cc-devflow.js +44 -7
- package/docs/commands/README.md +1 -1
- package/docs/commands/README.zh-CN.md +1 -1
- package/docs/examples/README.md +1 -1
- package/docs/examples/START-HERE.md +14 -14
- package/docs/examples/example-bindings.json +11 -11
- package/docs/examples/full-design-blocked/README.md +4 -6
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/{planning/tasks.md → task.md} +20 -15
- package/docs/examples/local-handoff/README.md +8 -11
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/handoff/pr-brief.md +31 -0
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/{planning/tasks.md → task.md} +18 -13
- package/docs/examples/pdca-loop/README.md +6 -9
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/handoff/pr-brief.md +9 -11
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/{planning/tasks.md → task.md} +18 -13
- package/docs/examples/scripts/check-example-bindings.sh +11 -62
- package/docs/guides/artifact-contract.md +10 -36
- package/docs/guides/getting-started.md +8 -7
- package/docs/guides/getting-started.zh-CN.md +8 -7
- package/docs/guides/minimize-artifacts.md +16 -116
- package/docs/guides/project-postmortem.md +14 -71
- package/lib/compiler/__tests__/skills-registry.test.js +9 -8
- package/lib/compiler/resource-copier.js +29 -0
- package/lib/skill-runtime/__tests__/archive-change.test.js +2 -2
- package/lib/skill-runtime/__tests__/benchmark-skills.test.js +109 -0
- package/lib/skill-runtime/__tests__/cli-bootstrap.integration.test.js +14 -4
- package/lib/skill-runtime/errors.js +3 -3
- package/lib/skill-runtime/index.js +5 -23
- package/lib/skill-runtime/paths.js +5 -52
- package/lib/skill-runtime/query-registry.js +4 -4
- package/lib/skill-runtime/query.js +89 -201
- package/lib/skill-runtime/store.js +4 -40
- package/lib/skill-runtime/trace.js +2 -2
- package/package.json +5 -7
- package/.claude/skills/cc-act/assets/PROJECT_POSTMORTEM_PRINCIPLES_TEMPLATE.md +0 -29
- package/.claude/skills/cc-act/assets/RELEASE_NOTE_TEMPLATE.md +0 -54
- package/.claude/skills/cc-act/scripts/generate-status-report.sh +0 -92
- package/.claude/skills/cc-act/scripts/sync-act-docs.sh +0 -355
- package/.claude/skills/cc-check/assets/REPORT_CARD_TEMPLATE.json +0 -234
- package/.claude/skills/cc-check/scripts/render-report-card.js +0 -438
- package/.claude/skills/cc-check/scripts/verify-gate.sh +0 -85
- package/.claude/skills/cc-do/scripts/build-task-context.sh +0 -175
- package/.claude/skills/cc-do/scripts/record-review-decision.sh +0 -88
- package/.claude/skills/cc-do/scripts/recover-workflow.sh +0 -82
- package/.claude/skills/cc-do/scripts/run-problem-analysis.sh +0 -70
- package/.claude/skills/cc-do/scripts/verify-task-gates.sh +0 -109
- package/.claude/skills/cc-do/scripts/write-task-checkpoint.sh +0 -92
- package/.claude/skills/cc-investigate/assets/TASK_MANIFEST_TEMPLATE.json +0 -225
- package/.claude/skills/cc-plan/assets/TASK_MANIFEST_TEMPLATE.json +0 -179
- package/.claude/skills/cc-spec-init/assets/CHANGE_META_TEMPLATE.json +0 -28
- package/.claude/skills/cc-spec-init/scripts/validate-spec-links.sh +0 -45
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/design.md +0 -234
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json +0 -488
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/review/report-card.json +0 -189
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/handoff/resume-index.md +0 -39
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/handoff/status.md +0 -29
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/design.md +0 -123
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json +0 -292
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/review/report-card.json +0 -136
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/handoff/status.md +0 -29
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/design.md +0 -124
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json +0 -292
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/review/report-card.json +0 -136
- package/docs/get-shit-done-strategy-audit.md +0 -518
- package/docs/skill-runtime-migration.md +0 -46
- package/lib/skill-runtime/__tests__/approve.test.js +0 -92
- package/lib/skill-runtime/__tests__/autopilot.test.js +0 -253
- package/lib/skill-runtime/__tests__/benchmark-artifacts.test.js +0 -165
- package/lib/skill-runtime/__tests__/delegation.test.js +0 -97
- package/lib/skill-runtime/__tests__/dispatch.test.js +0 -237
- package/lib/skill-runtime/__tests__/intent.test.js +0 -203
- package/lib/skill-runtime/__tests__/lifecycle.test.js +0 -169
- package/lib/skill-runtime/__tests__/planner.tdd.test.js +0 -331
- package/lib/skill-runtime/__tests__/prepare-pr.test.js +0 -126
- package/lib/skill-runtime/__tests__/query.test.js +0 -860
- package/lib/skill-runtime/__tests__/readiness.test.js +0 -53
- package/lib/skill-runtime/__tests__/release.test.js +0 -85
- package/lib/skill-runtime/__tests__/review-check-integration.test.js +0 -148
- package/lib/skill-runtime/__tests__/review-records.test.js +0 -619
- package/lib/skill-runtime/__tests__/runtime.integration.test.js +0 -351
- package/lib/skill-runtime/__tests__/schemas.test.js +0 -337
- package/lib/skill-runtime/__tests__/task-contract-migrate.test.js +0 -137
- package/lib/skill-runtime/__tests__/task-contract.test.js +0 -783
- package/lib/skill-runtime/__tests__/team-state.test.js +0 -51
- package/lib/skill-runtime/__tests__/verify-artifacts.test.js +0 -203
- package/lib/skill-runtime/__tests__/worker-run.test.js +0 -275
- package/lib/skill-runtime/__tests__/worker.test.js +0 -56
- package/lib/skill-runtime/__tests__/workflow-context-legacy-fallback.test.js +0 -31
- package/lib/skill-runtime/__tests__/workflow-context.test.js +0 -98
- package/lib/skill-runtime/artifacts.js +0 -88
- package/lib/skill-runtime/context-index.js +0 -545
- package/lib/skill-runtime/delegation.js +0 -533
- package/lib/skill-runtime/intent.js +0 -309
- package/lib/skill-runtime/lifecycle.js +0 -294
- package/lib/skill-runtime/operations/CLAUDE.md +0 -19
- package/lib/skill-runtime/operations/approve.js +0 -81
- package/lib/skill-runtime/operations/autopilot-core.js +0 -337
- package/lib/skill-runtime/operations/autopilot-execution.js +0 -307
- package/lib/skill-runtime/operations/autopilot-shared.js +0 -48
- package/lib/skill-runtime/operations/autopilot.js +0 -163
- package/lib/skill-runtime/operations/dispatch.js +0 -416
- package/lib/skill-runtime/operations/init.js +0 -60
- package/lib/skill-runtime/operations/janitor.js +0 -61
- package/lib/skill-runtime/operations/plan.js +0 -59
- package/lib/skill-runtime/operations/prepare-pr.js +0 -25
- package/lib/skill-runtime/operations/release.js +0 -99
- package/lib/skill-runtime/operations/resume.js +0 -126
- package/lib/skill-runtime/operations/review-records.js +0 -265
- package/lib/skill-runtime/operations/snapshot.js +0 -45
- package/lib/skill-runtime/operations/task-contract.js +0 -524
- package/lib/skill-runtime/operations/verify.js +0 -170
- package/lib/skill-runtime/operations/worker-run.js +0 -531
- package/lib/skill-runtime/operations/worker.js +0 -33
- package/lib/skill-runtime/planner.js +0 -539
- package/lib/skill-runtime/readiness.js +0 -84
- package/lib/skill-runtime/review-records.js +0 -123
- package/lib/skill-runtime/review.js +0 -855
- package/lib/skill-runtime/schemas.js +0 -746
- package/lib/skill-runtime/task-contract.js +0 -187
- package/lib/skill-runtime/team-state.js +0 -122
- package/lib/skill-runtime/workflow-context.js +0 -748
|
@@ -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.10.1`, `cc-do@1.7.1`, `cc-check@1.12.1`, `cc-act@1.9.1`
|
|
8
8
|
|
|
9
9
|
This example shows verified work that is **ready to move forward**, but `cc-act` still chooses `local-handoff`.
|
|
10
10
|
|
|
@@ -32,25 +32,22 @@ But the current environment is local-only:
|
|
|
32
32
|
|
|
33
33
|
1. Why `cc-check` is `pass`
|
|
34
34
|
2. Why `cc-act` still does not choose `create-pr`
|
|
35
|
-
3. How `
|
|
35
|
+
3. How `handoff/pr-brief.md` becomes the only final handoff file
|
|
36
36
|
|
|
37
37
|
## Artifact Map
|
|
38
38
|
|
|
39
39
|
- `roadmap.json` (editable roadmap truth)
|
|
40
40
|
- `ROADMAP.md` (generated view)
|
|
41
41
|
- `BACKLOG.md` (deprecated projection)
|
|
42
|
-
- `changes/REQ-003-audit-log-export/
|
|
43
|
-
- `changes/REQ-003-audit-log-export/
|
|
44
|
-
- `changes/REQ-003-audit-log-export/planning/task-manifest.json`
|
|
45
|
-
- `changes/REQ-003-audit-log-export/review/report-card.json`
|
|
46
|
-
- `changes/REQ-003-audit-log-export/handoff/resume-index.md`
|
|
42
|
+
- `changes/REQ-003-audit-log-export/task.md`
|
|
43
|
+
- `changes/REQ-003-audit-log-export/handoff/pr-brief.md`
|
|
47
44
|
|
|
48
|
-
## Why There Is
|
|
45
|
+
## Why There Is A Local `pr-brief.md`
|
|
49
46
|
|
|
50
47
|
This sample intentionally chooses `local-handoff`.
|
|
51
48
|
|
|
52
|
-
That mode needs:
|
|
49
|
+
That mode still needs one durable PR/handoff file:
|
|
53
50
|
|
|
54
|
-
- `
|
|
51
|
+
- `handoff/pr-brief.md`
|
|
55
52
|
|
|
56
|
-
It does **not** require
|
|
53
|
+
It does **not** require process files.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# PR Brief
|
|
2
|
+
|
|
3
|
+
## Change
|
|
4
|
+
|
|
5
|
+
- Change key: REQ-003-audit-log-export
|
|
6
|
+
- Branch: REQ/003-audit-log-export
|
|
7
|
+
|
|
8
|
+
## Task Summary
|
|
9
|
+
|
|
10
|
+
- Done: audit log export handoff example
|
|
11
|
+
|
|
12
|
+
## Validation
|
|
13
|
+
|
|
14
|
+
- Command: example binding check
|
|
15
|
+
- Result: pass
|
|
16
|
+
|
|
17
|
+
## PR Body Draft
|
|
18
|
+
|
|
19
|
+
```markdown
|
|
20
|
+
## Summary
|
|
21
|
+
|
|
22
|
+
- Demonstrates local handoff with `task.md` and this PR brief.
|
|
23
|
+
|
|
24
|
+
## Validation
|
|
25
|
+
|
|
26
|
+
- Example files are checked by `docs/examples/scripts/check-example-bindings.sh`.
|
|
27
|
+
|
|
28
|
+
## Risk / Rollback
|
|
29
|
+
|
|
30
|
+
- Documentation-only example.
|
|
31
|
+
```
|
package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/{planning/tasks.md → task.md}
RENAMED
|
@@ -4,7 +4,7 @@
|
|
|
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.10.1`
|
|
8
8
|
- Work branch: `REQ/003-audit-log-export`
|
|
9
9
|
- Source roadmap item: `RM-020`
|
|
10
10
|
- Source roadmap version: `roadmap.v3`
|
|
@@ -42,20 +42,25 @@
|
|
|
42
42
|
ClaudeCode / Codex 执行本计划时,必须把本文件当成任务模板合同,而不是普通 TODO 列表。
|
|
43
43
|
|
|
44
44
|
- Template source: `assets/TASKS_TEMPLATE.md`
|
|
45
|
-
-
|
|
46
|
-
-
|
|
45
|
+
- CLI resolver: all workflow commands must run through `.claude/skills/cc-dev/scripts/resolve-cc-devflow.sh` or `.codex/skills/cc-dev/scripts/resolve-cc-devflow.sh`; if it cannot prove `query workflow-context` and `next-change-key`, stop blocked.
|
|
46
|
+
- Context first: run resolved CLI `query workflow-context --change <changeId> --change-key <changeKey> --cwd <repo-root> --data-only --no-trace --compact` before opening deep sections.
|
|
47
|
+
- Task selection: use `scripts/select-ready-tasks.sh --tasks devflow/changes/<change-key>/task.md`.
|
|
47
48
|
- Task block rule: read the full task block before coding; title-only execution is invalid.
|
|
48
|
-
- Completion rule: after verification and review gates pass, run
|
|
49
|
-
-
|
|
49
|
+
- Completion rule: after verification and review gates pass, run `scripts/mark-task-complete.sh --tasks devflow/changes/<change-key>/task.md --task <task-id>`.
|
|
50
|
+
- Runtime file ban: do not generate process files beyond this `task.md`.
|
|
50
51
|
|
|
51
52
|
```bash
|
|
52
|
-
cc-
|
|
53
|
-
|
|
53
|
+
DEVFLOW=".claude/skills/cc-dev/scripts/resolve-cc-devflow.sh"
|
|
54
|
+
if [[ ! -f "$DEVFLOW" && -f ".codex/skills/cc-dev/scripts/resolve-cc-devflow.sh" ]]; then
|
|
55
|
+
DEVFLOW=".codex/skills/cc-dev/scripts/resolve-cc-devflow.sh"
|
|
56
|
+
fi
|
|
57
|
+
bash "$DEVFLOW" require query workflow-context next-change-key
|
|
58
|
+
bash "$DEVFLOW" query workflow-context --change <changeId> --change-key <changeKey> --cwd <repo-root> --data-only --no-trace --compactSCRIPT_ROOT=".claude/skills/cc-do/scripts"
|
|
54
59
|
if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then
|
|
55
60
|
SCRIPT_ROOT=".codex/skills/cc-do/scripts"
|
|
56
61
|
fi
|
|
57
|
-
bash "$SCRIPT_ROOT/select-ready-tasks.sh" --manifest docs/examples/local-handoff/changes/REQ-003-audit-log-export/
|
|
58
|
-
bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/local-handoff/changes/REQ-003-audit-log-export/
|
|
62
|
+
bash "$SCRIPT_ROOT/select-ready-tasks.sh" --manifest docs/examples/local-handoff/changes/REQ-003-audit-log-export/
|
|
63
|
+
bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/local-handoff/changes/REQ-003-audit-log-export/ --tasks docs/examples/local-handoff/changes/REQ-003-audit-log-export/task.md --task <task-id>
|
|
59
64
|
```
|
|
60
65
|
|
|
61
66
|
## Phase 1: Foundation
|
|
@@ -67,7 +72,7 @@ bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/local-handoff
|
|
|
67
72
|
Read first: `design.md`, `src/admin/AuditSummaryPanel.tsx`
|
|
68
73
|
Verification: `npm test -- src/admin/AuditSummaryPanel.test.tsx`
|
|
69
74
|
Evidence: failing output
|
|
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/
|
|
75
|
+
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/ --tasks docs/examples/local-handoff/changes/REQ-003-audit-log-export/task.md --task T001`; do not hand-edit status.
|
|
71
76
|
Test seam: admin audit panel UI behavior
|
|
72
77
|
Public verification path: Run the audit summary panel test and observe CSV export through visible rows
|
|
73
78
|
Allowed mocks: download / blob boundary
|
|
@@ -80,7 +85,7 @@ bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/local-handoff
|
|
|
80
85
|
Read first: `design.md`, `src/admin/AuditSummaryPanel.test.tsx`
|
|
81
86
|
Verification: `npm test -- src/admin/AuditSummaryPanel.test.tsx`
|
|
82
87
|
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/
|
|
88
|
+
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/ --tasks docs/examples/local-handoff/changes/REQ-003-audit-log-export/task.md --task T002`; do not hand-edit status.
|
|
84
89
|
Test seam: admin audit panel UI behavior
|
|
85
90
|
Public verification path: Run the audit summary panel test and observe CSV export through visible rows
|
|
86
91
|
Allowed mocks: download / blob boundary
|
|
@@ -92,12 +97,12 @@ bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/local-handoff
|
|
|
92
97
|
Goal: 为 `cc-check` 和 `cc-act` 留下这次导出改动的真实证据。
|
|
93
98
|
TDD phase: evidence
|
|
94
99
|
Files: `src/admin/AuditSummaryPanel.tsx`, `src/admin/AuditSummaryPanel.test.tsx`
|
|
95
|
-
Read first: `
|
|
100
|
+
Read first: `task.md`
|
|
96
101
|
Verification:
|
|
97
102
|
- `npm test -- src/admin/AuditSummaryPanel.test.tsx`
|
|
98
103
|
- `npm run lint -- src/admin/AuditSummaryPanel.tsx`
|
|
99
104
|
Evidence: passing output + clean lint output
|
|
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/
|
|
105
|
+
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/ --tasks docs/examples/local-handoff/changes/REQ-003-audit-log-export/task.md --task T003`; do not hand-edit status.
|
|
101
106
|
Test seam: admin audit panel UI behavior
|
|
102
107
|
Public verification path: Run the audit summary panel test and observe CSV export through visible rows
|
|
103
108
|
Allowed mocks: download / blob boundary
|
|
@@ -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.10.1`, `cc-do@1.7.1`, `cc-check@1.12.1`, `cc-act@1.9.1`
|
|
8
8
|
|
|
9
9
|
This folder shows one minimal but complete `cc-roadmap -> cc-plan -> cc-do -> cc-check -> cc-act` loop.
|
|
10
10
|
|
|
@@ -13,7 +13,7 @@ The example is intentionally small:
|
|
|
13
13
|
- product context is fake
|
|
14
14
|
- requirement scope is real enough to feel concrete
|
|
15
15
|
- the chosen ship mode is `create-pr`
|
|
16
|
-
-
|
|
16
|
+
- process files are intentionally omitted
|
|
17
17
|
|
|
18
18
|
## Scenario
|
|
19
19
|
|
|
@@ -30,13 +30,10 @@ 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/
|
|
34
|
-
- `changes/REQ-001-copy-invite-link/planning/design.md`: legacy fallback sample for the approved tiny design
|
|
35
|
-
- `changes/REQ-001-copy-invite-link/planning/task-manifest.json`: machine-readable execution truth
|
|
36
|
-
- `changes/REQ-001-copy-invite-link/review/report-card.json`: `cc-check` proof and verdict
|
|
33
|
+
- `changes/REQ-001-copy-invite-link/task.md`: executable task handoff
|
|
37
34
|
- `changes/REQ-001-copy-invite-link/handoff/pr-brief.md`: ship-ready PR handoff
|
|
38
35
|
|
|
39
|
-
## Why There
|
|
36
|
+
## Why There Are No Process Files
|
|
40
37
|
|
|
41
38
|
This sample chooses `create-pr`.
|
|
42
39
|
|
|
@@ -45,7 +42,7 @@ That mode needs:
|
|
|
45
42
|
- `pr-brief.md`
|
|
46
43
|
- synced docs if behavior changed
|
|
47
44
|
|
|
48
|
-
It does **not** need
|
|
45
|
+
It does **not** need process files, so the example intentionally stops there.
|
|
49
46
|
|
|
50
47
|
## What To Look For
|
|
51
48
|
|
|
@@ -55,4 +52,4 @@ When reading the sample, check whether you can answer these in under a minute:
|
|
|
55
52
|
2. Why does the requirement stay `tiny-design` instead of `full-design`?
|
|
56
53
|
3. Which task proved the missing behavior first?
|
|
57
54
|
4. What fresh evidence let `cc-check` say `pass`?
|
|
58
|
-
5. Why does `cc-act` choose `create-pr` and omit
|
|
55
|
+
5. Why does `cc-act` choose `create-pr` and omit process files?
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
|
|
29
29
|
- Reviewed base SHA: `example-base`
|
|
30
30
|
- Reviewed head SHA: `example-head`
|
|
31
|
-
- Review packet: `
|
|
31
|
+
- Review packet: `task.md#Contract Summary`; `task.md#T001-T003`
|
|
32
32
|
- Finding triage: no findings
|
|
33
33
|
- QA / claim evidence: `qa=pass`, `tests-pass=pass`, `requirements-met=pass`
|
|
34
34
|
|
|
@@ -41,14 +41,14 @@
|
|
|
41
41
|
- Browser QA: `skipped`, example fixture uses targeted component evidence instead of a live browser
|
|
42
42
|
- Failure ownership: no open failures recorded
|
|
43
43
|
- Documentation release: README and CLAUDE unchanged for this scoped example
|
|
44
|
-
- PR body accuracy: regenerate the PR body from this brief, current
|
|
44
|
+
- PR body accuracy: regenerate the PR body from this brief, current validation evidence, and current diff
|
|
45
45
|
|
|
46
46
|
## Pull Request Body Contract
|
|
47
47
|
|
|
48
48
|
- Language source: `Output language: en`
|
|
49
49
|
- PR body language: English
|
|
50
50
|
- Title rule: use English after the Conventional Commits `type(scope)` prefix; keep identifiers, paths, commands, and issue keys unchanged.
|
|
51
|
-
- Body source: current `pr-brief.md`, current diff, current
|
|
51
|
+
- Body source: current `pr-brief.md`, current diff, current verification response, and roadmap/backlog writeback.
|
|
52
52
|
- Required sections: summary, problem, changes, validation, review/gate evidence, risk/rollback, docs/writeback, and follow-ups.
|
|
53
53
|
- Completeness gate: no empty headings, no stale inherited PR body, no generic "tests passed" without commands or evidence, and no `<placeholder>` text before `gh pr create`.
|
|
54
54
|
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
|
|
75
75
|
## Validation
|
|
76
76
|
|
|
77
|
-
-
|
|
77
|
+
- Verification verdict: `pass`
|
|
78
78
|
- `npm test -- src/features/share/ShareDialog.test.tsx`
|
|
79
79
|
- `npm run lint -- src/features/share/ShareDialog.tsx`
|
|
80
80
|
|
|
@@ -82,7 +82,7 @@
|
|
|
82
82
|
|
|
83
83
|
- Reviewed base SHA: `example-base`
|
|
84
84
|
- Reviewed head SHA: `example-head`
|
|
85
|
-
- Review packet: `
|
|
85
|
+
- Review packet: `task.md#Contract Summary`; `task.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.
|
|
@@ -117,7 +117,7 @@
|
|
|
117
117
|
|
|
118
118
|
## Verification Evidence
|
|
119
119
|
|
|
120
|
-
-
|
|
120
|
+
- Verification verdict: `pass`
|
|
121
121
|
- Merged-result verification: not applicable before merge
|
|
122
122
|
- Fresh evidence:
|
|
123
123
|
- `npm test -- src/features/share/ShareDialog.test.tsx`
|
|
@@ -127,17 +127,15 @@
|
|
|
127
127
|
|
|
128
128
|
- `CLAUDE.md`: unchanged
|
|
129
129
|
- `README.md`: unchanged
|
|
130
|
-
-
|
|
131
|
-
- `resume-index.md`: not needed because the change is ready for PR handoff
|
|
130
|
+
- process files: intentionally omitted
|
|
132
131
|
|
|
133
132
|
## Minimum Landing Pack
|
|
134
133
|
|
|
135
134
|
- Required for this mode:
|
|
136
135
|
- `pr-brief.md`
|
|
137
|
-
- fresh
|
|
136
|
+
- fresh verification response
|
|
138
137
|
- Intentionally omitted:
|
|
139
|
-
-
|
|
140
|
-
- `resume-index.md`
|
|
138
|
+
- process files
|
|
141
139
|
|
|
142
140
|
## How To Verify
|
|
143
141
|
|
package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/{planning/tasks.md → task.md}
RENAMED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
- Requirement version: `REQ-001.v1`
|
|
6
6
|
- Design version: `design.v1`
|
|
7
|
-
- CC-Plan skill version: `3.
|
|
7
|
+
- CC-Plan skill version: `3.10.1`
|
|
8
8
|
- Work branch: `REQ/001-copy-invite-link`
|
|
9
9
|
- Source roadmap item: `RM-001`
|
|
10
10
|
- Source roadmap version: `roadmap.v1`
|
|
@@ -45,20 +45,25 @@
|
|
|
45
45
|
ClaudeCode / Codex 执行本计划时,必须把本文件当成任务模板合同,而不是普通 TODO 列表。
|
|
46
46
|
|
|
47
47
|
- Template source: `assets/TASKS_TEMPLATE.md`
|
|
48
|
-
-
|
|
49
|
-
-
|
|
48
|
+
- CLI resolver: all workflow commands must run through `.claude/skills/cc-dev/scripts/resolve-cc-devflow.sh` or `.codex/skills/cc-dev/scripts/resolve-cc-devflow.sh`; if it cannot prove `query workflow-context` and `next-change-key`, stop blocked.
|
|
49
|
+
- Context first: run resolved CLI `query workflow-context --change <changeId> --change-key <changeKey> --cwd <repo-root> --data-only --no-trace --compact` before opening deep sections.
|
|
50
|
+
- Task selection: use `scripts/select-ready-tasks.sh --tasks devflow/changes/<change-key>/task.md`.
|
|
50
51
|
- Task block rule: read the full task block before coding; title-only execution is invalid.
|
|
51
|
-
- Completion rule: after verification and review gates pass, run
|
|
52
|
-
-
|
|
52
|
+
- Completion rule: after verification and review gates pass, run `scripts/mark-task-complete.sh --tasks devflow/changes/<change-key>/task.md --task <task-id>`.
|
|
53
|
+
- Runtime file ban: do not generate process files beyond this `task.md`.
|
|
53
54
|
|
|
54
55
|
```bash
|
|
55
|
-
cc-
|
|
56
|
-
|
|
56
|
+
DEVFLOW=".claude/skills/cc-dev/scripts/resolve-cc-devflow.sh"
|
|
57
|
+
if [[ ! -f "$DEVFLOW" && -f ".codex/skills/cc-dev/scripts/resolve-cc-devflow.sh" ]]; then
|
|
58
|
+
DEVFLOW=".codex/skills/cc-dev/scripts/resolve-cc-devflow.sh"
|
|
59
|
+
fi
|
|
60
|
+
bash "$DEVFLOW" require query workflow-context next-change-key
|
|
61
|
+
bash "$DEVFLOW" query workflow-context --change <changeId> --change-key <changeKey> --cwd <repo-root> --data-only --no-trace --compactSCRIPT_ROOT=".claude/skills/cc-do/scripts"
|
|
57
62
|
if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then
|
|
58
63
|
SCRIPT_ROOT=".codex/skills/cc-do/scripts"
|
|
59
64
|
fi
|
|
60
|
-
bash "$SCRIPT_ROOT/select-ready-tasks.sh" --manifest docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/
|
|
61
|
-
bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/
|
|
65
|
+
bash "$SCRIPT_ROOT/select-ready-tasks.sh" --manifest docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/
|
|
66
|
+
bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/ --tasks docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/task.md --task <task-id>
|
|
62
67
|
```
|
|
63
68
|
|
|
64
69
|
## Phase 1: Foundation
|
|
@@ -70,7 +75,7 @@ bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/pdca-loop/cha
|
|
|
70
75
|
Read first: `design.md`, `src/features/share/ShareDialog.tsx`
|
|
71
76
|
Verification: `npm test -- src/features/share/ShareDialog.test.tsx`
|
|
72
77
|
Evidence: failing output that shows the missing button / action
|
|
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/
|
|
78
|
+
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/ --tasks docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/task.md --task T001`; do not hand-edit status.
|
|
74
79
|
Test seam: share dialog UI behavior
|
|
75
80
|
Public verification path: Run the share dialog test and observe the copy action through the rendered dialog
|
|
76
81
|
Allowed mocks: clipboard boundary
|
|
@@ -83,7 +88,7 @@ bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/pdca-loop/cha
|
|
|
83
88
|
Read first: `design.md`, `src/features/share/ShareDialog.test.tsx`
|
|
84
89
|
Verification: `npm test -- src/features/share/ShareDialog.test.tsx`
|
|
85
90
|
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/
|
|
91
|
+
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/ --tasks docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/task.md --task T002`; do not hand-edit status.
|
|
87
92
|
Test seam: share dialog UI behavior
|
|
88
93
|
Public verification path: Run the share dialog test and observe the copy action through the rendered dialog
|
|
89
94
|
Allowed mocks: clipboard boundary
|
|
@@ -95,12 +100,12 @@ bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/pdca-loop/cha
|
|
|
95
100
|
Goal: 为 `cc-check` 准备本次实现的真实验证证据。
|
|
96
101
|
TDD phase: evidence
|
|
97
102
|
Files: `src/features/share/ShareDialog.tsx`, `src/features/share/ShareDialog.test.tsx`
|
|
98
|
-
Read first: `
|
|
103
|
+
Read first: `task.md`
|
|
99
104
|
Verification:
|
|
100
105
|
- `npm test -- src/features/share/ShareDialog.test.tsx`
|
|
101
106
|
- `npm run lint -- src/features/share/ShareDialog.tsx`
|
|
102
107
|
Evidence: passing test output + clean lint output
|
|
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/
|
|
108
|
+
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/ --tasks docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/task.md --task T003`; do not hand-edit status.
|
|
104
109
|
Test seam: share dialog UI behavior
|
|
105
110
|
Public verification path: Run the share dialog test and observe the copy action through the rendered dialog
|
|
106
111
|
Allowed mocks: clipboard boundary
|
|
@@ -17,11 +17,6 @@ fi
|
|
|
17
17
|
skill_version() {
|
|
18
18
|
local skill="$1"
|
|
19
19
|
local file="$ROOT_DIR/.claude/skills/$skill/SKILL.md"
|
|
20
|
-
if [[ ! -f "$file" ]]; then
|
|
21
|
-
echo "Missing skill file: $file" >&2
|
|
22
|
-
exit 1
|
|
23
|
-
fi
|
|
24
|
-
|
|
25
20
|
sed -n 's/^version: //p' "$file" | head -n 1
|
|
26
21
|
}
|
|
27
22
|
|
|
@@ -35,27 +30,15 @@ assert_contains() {
|
|
|
35
30
|
}
|
|
36
31
|
|
|
37
32
|
ROADMAP_VERSION="$(skill_version cc-roadmap)"
|
|
38
|
-
NEXT_VERSION="$(skill_version cc-next)"
|
|
39
|
-
DEV_VERSION="$(skill_version cc-dev)"
|
|
40
33
|
REQ_PLAN_VERSION="$(skill_version cc-plan)"
|
|
41
|
-
INVESTIGATE_VERSION="$(skill_version cc-investigate)"
|
|
42
34
|
REQ_DO_VERSION="$(skill_version cc-do)"
|
|
43
|
-
REQ_REVIEW_VERSION="$(skill_version cc-review)"
|
|
44
|
-
PR_REVIEW_VERSION="$(skill_version cc-pr-review)"
|
|
45
|
-
PR_LAND_VERSION="$(skill_version cc-pr-land)"
|
|
46
35
|
REQ_CHECK_VERSION="$(skill_version cc-check)"
|
|
47
36
|
REQ_ACT_VERSION="$(skill_version cc-act)"
|
|
48
37
|
|
|
49
38
|
for pair in \
|
|
50
39
|
"cc-roadmap:$ROADMAP_VERSION" \
|
|
51
|
-
"cc-next:$NEXT_VERSION" \
|
|
52
|
-
"cc-dev:$DEV_VERSION" \
|
|
53
40
|
"cc-plan:$REQ_PLAN_VERSION" \
|
|
54
|
-
"cc-investigate:$INVESTIGATE_VERSION" \
|
|
55
41
|
"cc-do:$REQ_DO_VERSION" \
|
|
56
|
-
"cc-review:$REQ_REVIEW_VERSION" \
|
|
57
|
-
"cc-pr-review:$PR_REVIEW_VERSION" \
|
|
58
|
-
"cc-pr-land:$PR_LAND_VERSION" \
|
|
59
42
|
"cc-check:$REQ_CHECK_VERSION" \
|
|
60
43
|
"cc-act:$REQ_ACT_VERSION"
|
|
61
44
|
do
|
|
@@ -73,11 +56,10 @@ while IFS= read -r encoded; do
|
|
|
73
56
|
readme="$ROOT_DIR/$(jq -r '.readme' <<<"$encoded")"
|
|
74
57
|
root="$ROOT_DIR/$(jq -r '.root' <<<"$encoded")"
|
|
75
58
|
change_dir="$ROOT_DIR/$(jq -r '.changeDir' <<<"$encoded")"
|
|
76
|
-
|
|
77
|
-
review_dir="$change_dir/review"
|
|
59
|
+
task_file="$change_dir/task.md"
|
|
78
60
|
handoff_dir="$change_dir/handoff"
|
|
79
61
|
|
|
80
|
-
for file in "$readme" "$root/ROADMAP.md" "$root/BACKLOG.md" "$root/roadmap.json" "$
|
|
62
|
+
for file in "$readme" "$root/ROADMAP.md" "$root/BACKLOG.md" "$root/roadmap.json" "$task_file"; do
|
|
81
63
|
if [[ ! -f "$file" ]]; then
|
|
82
64
|
echo "Example $example_id is missing required file: $file" >&2
|
|
83
65
|
exit 1
|
|
@@ -85,40 +67,14 @@ while IFS= read -r encoded; do
|
|
|
85
67
|
done
|
|
86
68
|
|
|
87
69
|
assert_contains "$root/ROADMAP.md" "- Skill version: \`$ROADMAP_VERSION\`"
|
|
88
|
-
assert_contains "$root/ROADMAP.md" "- Roadmap state source: \`roadmap.json\`"
|
|
89
|
-
assert_contains "$root/ROADMAP.md" "## Technical Architecture"
|
|
90
|
-
assert_contains "$root/ROADMAP.md" "\`\`\`mermaid"
|
|
91
70
|
assert_contains "$root/BACKLOG.md" "- Skill version: \`$ROADMAP_VERSION\`"
|
|
92
|
-
assert_contains "$
|
|
93
|
-
assert_contains "$
|
|
94
|
-
assert_contains "$
|
|
95
|
-
assert_contains "$
|
|
96
|
-
assert_contains "$
|
|
97
|
-
assert_contains "$
|
|
98
|
-
|
|
99
|
-
assert_contains "$planning_dir/design.md" "- CC-Plan skill version: \`$REQ_PLAN_VERSION\`"
|
|
100
|
-
assert_contains "$planning_dir/tasks.md" "- CC-Plan skill version: \`$REQ_PLAN_VERSION\`"
|
|
101
|
-
|
|
102
|
-
jq -er --arg roadmap "$ROADMAP_VERSION" --arg reqplan "$REQ_PLAN_VERSION" '
|
|
103
|
-
(.planningMeta.reqPlanSkillVersion // $reqplan) == $reqplan and
|
|
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"))
|
|
113
|
-
' "$planning_dir/task-manifest.json" >/dev/null
|
|
114
|
-
|
|
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"
|
|
118
|
-
assert_contains "$planning_dir/tasks.md" "mark-task-complete.sh"
|
|
119
|
-
assert_contains "$planning_dir/tasks.md" "TDD phase:"
|
|
120
|
-
assert_contains "$planning_dir/tasks.md" "Completion:"
|
|
121
|
-
assert_contains "$planning_dir/tasks.md" "Public verification path:"
|
|
71
|
+
assert_contains "$task_file" "- CC-Plan skill version: \`$REQ_PLAN_VERSION\`"
|
|
72
|
+
assert_contains "$task_file" "## Execution Protocol"
|
|
73
|
+
assert_contains "$task_file" "task.md"
|
|
74
|
+
assert_contains "$task_file" "mark-task-complete.sh"
|
|
75
|
+
assert_contains "$task_file" "TDD phase:"
|
|
76
|
+
assert_contains "$task_file" "Completion:"
|
|
77
|
+
assert_contains "$task_file" "Public verification path:"
|
|
122
78
|
|
|
123
79
|
assert_contains "$readme" "## Example Meta"
|
|
124
80
|
assert_contains "$readme" "\`cc-roadmap@$ROADMAP_VERSION\`"
|
|
@@ -128,15 +84,8 @@ while IFS= read -r encoded; do
|
|
|
128
84
|
|
|
129
85
|
if jq -e '.covers | index("cc-act")' <<<"$encoded" >/dev/null; then
|
|
130
86
|
assert_contains "$readme" "\`cc-act@$REQ_ACT_VERSION\`"
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
if [[ -f "$review_dir/report-card.json" ]]; then
|
|
134
|
-
"$ROOT_DIR/.claude/skills/cc-check/scripts/verify-gate.sh" --report "$review_dir/report-card.json" >/dev/null
|
|
135
|
-
fi
|
|
136
|
-
|
|
137
|
-
if jq -e '.covers | index("cc-act")' <<<"$encoded" >/dev/null; then
|
|
138
|
-
if [[ ! -f "$handoff_dir/pr-brief.md" && ! -f "$handoff_dir/resume-index.md" && ! -f "$handoff_dir/release-note.md" && ! -f "$handoff_dir/status.md" ]]; then
|
|
139
|
-
echo "Example $example_id is missing a final handoff file under $handoff_dir" >&2
|
|
87
|
+
if [[ ! -f "$handoff_dir/pr-brief.md" ]]; then
|
|
88
|
+
echo "Example $example_id is missing PR file: $handoff_dir/pr-brief.md" >&2
|
|
140
89
|
exit 1
|
|
141
90
|
fi
|
|
142
91
|
fi
|
|
@@ -1,44 +1,18 @@
|
|
|
1
1
|
# Artifact Contract
|
|
2
2
|
|
|
3
|
-
cc-devflow
|
|
3
|
+
cc-devflow keeps the workflow surface intentionally small.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Durable Files
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
- `devflow/changes/<change-key>/task.md`
|
|
8
|
+
- `devflow/changes/<change-key>/handoff/pr-brief.md` when PR or local handoff needs it
|
|
9
|
+
- `devflow/postmortems/incidents/<date>-<change-key>.md` when a FIX or recurring failure needs a postmortem
|
|
10
|
+
- `devflow/postmortems/INDEX.md` as the postmortem index
|
|
8
11
|
|
|
9
|
-
|
|
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
|
+
## State Source
|
|
12
13
|
|
|
13
|
-
|
|
14
|
+
Git records process history. Commit after each completed PDCA or IDCA environment/stage.
|
|
14
15
|
|
|
15
|
-
##
|
|
16
|
+
## Retired Surface
|
|
16
17
|
|
|
17
|
-
|
|
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?
|
|
18
|
+
Do not create process JSON, review ledgers, report cards, status files, resume files, release notes, or principle files.
|
|
@@ -86,19 +86,20 @@ Use the skills in this order:
|
|
|
86
86
|
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
|
-
- `cc-spec-init` writes `devflow/specs/INDEX.md
|
|
90
|
-
- `cc-plan` writes `
|
|
91
|
-
- `cc-investigate` writes `
|
|
92
|
-
- `cc-review`
|
|
93
|
-
- `cc-check`
|
|
94
|
-
- `cc-act` writes exactly one final
|
|
89
|
+
- `cc-spec-init` writes `devflow/specs/INDEX.md` and capability specs
|
|
90
|
+
- `cc-plan` writes `task.md#Contract Summary`
|
|
91
|
+
- `cc-investigate` writes `task.md#Root Cause Contract`
|
|
92
|
+
- `cc-review` reports concrete findings in the response; it does not write review process files
|
|
93
|
+
- `cc-check` reports verification facts in the response, PR brief, or Git commit
|
|
94
|
+
- `cc-act` writes exactly one final PR file, `handoff/pr-brief.md`, or incident postmortem files when a real incident needs a corpse report
|
|
95
95
|
|
|
96
96
|
Capability truth lives in `devflow/specs/`.
|
|
97
97
|
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 `
|
|
101
|
+
- Keep `task.md`, optional `handoff/pr-brief.md`, and incident postmortem files under each `devflow/changes/<change>/`. Do not generate task `context.md`, `checkpoint.json`, review ledgers, status/resume files, release notes, principle files, or AI-written process files.
|
|
102
|
+
- Workflow state is Git-owned: keep `task.md`, commit each completed stage, and do not create process JSON.
|
|
102
103
|
- Legacy `planning/design.md`, `planning/analysis.md`, and `cc-review-*.md` are readable fallback inputs for older changes, not new default writes.
|
|
103
104
|
- Worker prompts, journals, assignments, and session logs belong under `devflow/workspaces/<change>/` as ephemeral scratch.
|
|
104
105
|
|
|
@@ -86,18 +86,19 @@ find .codex/skills -mindepth 2 -maxdepth 2 -name SKILL.md | sort
|
|
|
86
86
|
常见产物:
|
|
87
87
|
|
|
88
88
|
- `cc-roadmap` 产出可编辑真相 `devflow/roadmap.json`,再生成 `devflow/ROADMAP.md` 和 deprecated `devflow/BACKLOG.md`
|
|
89
|
-
- `cc-spec-init` 产出 `devflow/specs/INDEX.md
|
|
90
|
-
- `cc-plan` 产出 `
|
|
91
|
-
- `cc-investigate` 产出 `
|
|
92
|
-
- `cc-review`
|
|
93
|
-
- `cc-check`
|
|
94
|
-
- `cc-act`
|
|
89
|
+
- `cc-spec-init` 产出 `devflow/specs/INDEX.md` 和 capability spec
|
|
90
|
+
- `cc-plan` 产出 `task.md#Contract Summary`
|
|
91
|
+
- `cc-investigate` 产出 `task.md#Root Cause Contract`
|
|
92
|
+
- `cc-review` 在当前回复里报告具体问题,不写 review 过程文件
|
|
93
|
+
- `cc-check` 在当前回复、PR 文件或 Git commit 里记录验证事实
|
|
94
|
+
- `cc-act` 只产出最终 PR 文件 `handoff/pr-brief.md`;真实事故需要尸检时才产出 incident postmortem 文件
|
|
95
95
|
|
|
96
96
|
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
|
|
100
|
+
- `devflow/changes/<change>/`:变更真相,只保留 `task.md`、可选 `handoff/pr-brief.md`,以及真实事故需要的尸检文件。不要生成任务级 `context.md`、`checkpoint.json`、review ledger、status/resume 文件、release note、principles 或 AI 手写过程文件。
|
|
101
|
+
- 流程状态归 Git:保留 `task.md`,每个完成阶段提交 commit,不创建过程 JSON。
|
|
101
102
|
- 历史 `planning/design.md`、`planning/analysis.md` 和 `cc-review-*.md` 是旧 change 的可读 fallback,不再是新默认写入。
|
|
102
103
|
- worker prompt、journal、assignment、session log 统一放到 `devflow/workspaces/<change>/`,作为 ephemeral scratch。
|
|
103
104
|
|