cc-devflow 4.5.7 → 4.5.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/skills/cc-act/CHANGELOG.md +6 -0
- package/.claude/skills/cc-act/PLAYBOOK.md +9 -0
- package/.claude/skills/cc-act/SKILL.md +15 -5
- package/.claude/skills/cc-act/references/closure-contract.md +4 -0
- package/.claude/skills/cc-act/scripts/detect-ship-target.sh +27 -0
- package/.claude/skills/cc-act/scripts/ensure-ship-branch.sh +93 -0
- package/.claude/skills/cc-act/scripts/generate-status-report.sh +6 -0
- package/.claude/skills/cc-act/scripts/render-pr-brief.sh +6 -0
- package/.claude/skills/cc-act/scripts/sync-act-docs.sh +14 -0
- package/.claude/skills/cc-dev/CHANGELOG.md +5 -0
- package/.claude/skills/cc-dev/PLAYBOOK.md +63 -0
- package/.claude/skills/cc-dev/SKILL.md +168 -0
- package/.claude/skills/cc-do/CHANGELOG.md +6 -0
- package/.claude/skills/cc-do/SKILL.md +23 -1
- package/.claude/skills/cc-next/CHANGELOG.md +5 -0
- package/.claude/skills/cc-next/PLAYBOOK.md +52 -0
- package/.claude/skills/cc-next/SKILL.md +161 -0
- package/.claude/skills/cc-plan/CHANGELOG.md +6 -0
- package/.claude/skills/cc-plan/SKILL.md +45 -3
- package/.claude/skills/cc-plan/assets/TASKS_TEMPLATE.md +26 -0
- package/.claude/skills/cc-plan/assets/TASK_MANIFEST_TEMPLATE.json +49 -1
- package/.claude/skills/cc-plan/references/planning-contract.md +11 -0
- package/.claude/skills/cc-pr-land/CHANGELOG.md +5 -0
- package/.claude/skills/cc-pr-land/PLAYBOOK.md +45 -0
- package/.claude/skills/cc-pr-land/SKILL.md +157 -0
- package/.claude/skills/cc-pr-review/CHANGELOG.md +5 -0
- package/.claude/skills/cc-pr-review/PLAYBOOK.md +46 -0
- package/.claude/skills/cc-pr-review/SKILL.md +142 -0
- package/.claude/skills/cc-review/CHANGELOG.md +21 -0
- package/.claude/skills/cc-review/PLAYBOOK.md +64 -10
- package/.claude/skills/cc-review/SKILL.md +185 -18
- package/.claude/skills/cc-review/references/e2e-and-plugin-verification.md +4 -0
- package/.claude/skills/cc-review/references/implementation-review-branch.md +37 -0
- package/.claude/skills/cc-review/references/plan-review-branch.md +36 -1
- package/.claude/skills/cc-review/references/review-methods.md +98 -3
- package/.claude/skills/cc-review/scripts/collect-review-context.sh +80 -0
- package/.claude/skills/cc-simplify/CHANGELOG.md +6 -0
- package/.claude/skills/cc-simplify/SKILL.md +19 -8
- package/CHANGELOG.md +8 -1
- package/README.md +52 -3
- package/README.zh-CN.md +52 -3
- package/config/distributable-skills.json +8 -0
- package/docs/assets/cc-devflow-pr-harness-en.svg +153 -0
- package/docs/assets/cc-devflow-pr-harness-zh.svg +152 -0
- package/docs/assets/wechat-group-qr.jpg +0 -0
- package/docs/examples/example-bindings.json +9 -5
- package/docs/examples/full-design-blocked/README.md +1 -1
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/design.md +1 -1
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json +310 -6
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md +45 -1
- package/docs/examples/local-handoff/README.md +1 -1
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/design.md +1 -1
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json +197 -4
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/tasks.md +35 -1
- package/docs/examples/pdca-loop/README.md +1 -1
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/design.md +1 -1
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json +198 -5
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md +35 -1
- package/docs/examples/scripts/check-example-bindings.sh +19 -1
- package/docs/guides/getting-started.md +1 -1
- package/docs/guides/getting-started.zh-CN.md +1 -1
- package/package.json +6 -1
package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
- Requirement version: `REQ-002.v2`
|
|
6
6
|
- Design version: `design.v2`
|
|
7
|
-
- CC-Plan skill version: `3.8.
|
|
7
|
+
- CC-Plan skill version: `3.8.2`
|
|
8
8
|
- Source roadmap item: `RM-010`
|
|
9
9
|
- Source roadmap version: `roadmap.v2`
|
|
10
10
|
|
|
@@ -37,50 +37,94 @@
|
|
|
37
37
|
- audit row-result contract
|
|
38
38
|
- Parallel boundaries: no parallel execution until row-outcome semantics are frozen
|
|
39
39
|
|
|
40
|
+
## Execution Protocol
|
|
41
|
+
|
|
42
|
+
ClaudeCode / Codex 执行本计划时,必须把本文件当成任务模板合同,而不是普通 TODO 列表。
|
|
43
|
+
|
|
44
|
+
- Template source: `assets/TASKS_TEMPLATE.md`
|
|
45
|
+
- Task selection: read `planning/task-manifest.json.currentTaskId`; if empty, run the ready-task selector before choosing work.
|
|
46
|
+
- Task block rule: read the full task block before coding; title-only execution is invalid.
|
|
47
|
+
- Completion rule: after verification and review gates pass, run the completion script; do not manually edit checkbox, status, or `currentTaskId`.
|
|
48
|
+
- Completion failure: if the script fails, fix the missing checkpoint / review / dependency evidence and rerun it. Do not bypass it by editing JSON or Markdown.
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
SCRIPT_ROOT=".claude/skills/cc-do/scripts"
|
|
52
|
+
if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then
|
|
53
|
+
SCRIPT_ROOT=".codex/skills/cc-do/scripts"
|
|
54
|
+
fi
|
|
55
|
+
bash "$SCRIPT_ROOT/select-ready-tasks.sh" --manifest docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json
|
|
56
|
+
bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json --tasks docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md --task <task-id>
|
|
57
|
+
```
|
|
58
|
+
|
|
40
59
|
## Phase 1: Rule Matrix
|
|
41
60
|
|
|
42
61
|
- [x] T001 [TEST] Add failing tests for duplicate and over-limit row outcomes (dependsOn:none) `src/invite/bulk-import.test.ts`
|
|
43
62
|
Goal: 先把最危险的 bulk invite 行为变成红灯。
|
|
63
|
+
TDD phase: red
|
|
44
64
|
Files: `src/invite/bulk-import.test.ts`
|
|
45
65
|
Read first: `design.md`, `src/invite/bulk-import.ts`
|
|
46
66
|
Verification: `npm test -- src/invite/bulk-import.test.ts`
|
|
47
67
|
Evidence: failing output
|
|
68
|
+
Completion: after verification evidence and required checkpoint/review records exist, run `SCRIPT_ROOT=".claude/skills/cc-do/scripts"; if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then SCRIPT_ROOT=".codex/skills/cc-do/scripts"; fi; bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json --tasks docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md --task T001`; do not hand-edit status.
|
|
69
|
+
Test seam: bulk invite rules and admin upload UI behavior
|
|
70
|
+
Public verification path: Run the bulk invite rule and admin panel tests through their public flows
|
|
71
|
+
Allowed mocks: file upload boundary / billing / seat limit boundary
|
|
48
72
|
Ready when: 当前规则文件已经可定位
|
|
49
73
|
|
|
50
74
|
- [x] T002 [IMPL] Implement the initial bulk invite row classification (dependsOn:T001) `src/invite/bulk-import.ts`
|
|
51
75
|
Goal: 给 duplicate / over-limit 行为一个最小实现。
|
|
76
|
+
TDD phase: green
|
|
52
77
|
Files: `src/invite/bulk-import.ts`
|
|
53
78
|
Read first: `design.md`, `src/invite/bulk-import.test.ts`
|
|
54
79
|
Verification: `npm test -- src/invite/bulk-import.test.ts`
|
|
55
80
|
Evidence: passing output + checkpoint
|
|
81
|
+
Completion: after verification evidence and required checkpoint/review records exist, run `SCRIPT_ROOT=".claude/skills/cc-do/scripts"; if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then SCRIPT_ROOT=".codex/skills/cc-do/scripts"; fi; bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json --tasks docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md --task T002`; do not hand-edit status.
|
|
82
|
+
Test seam: bulk invite rules and admin upload UI behavior
|
|
83
|
+
Public verification path: Run the bulk invite rule and admin panel tests through their public flows
|
|
84
|
+
Allowed mocks: file upload boundary / billing / seat limit boundary
|
|
56
85
|
Ready when: T001 已见红
|
|
57
86
|
|
|
58
87
|
## Phase 2: Surface Integration
|
|
59
88
|
|
|
60
89
|
- [x] T003 [TEST] Add failing admin panel tests for mixed CSV results (dependsOn:T002) `src/admin/BulkInvitePanel.test.tsx`
|
|
61
90
|
Goal: 在 UI 层看到 mixed row outcomes 的真实表现。
|
|
91
|
+
TDD phase: red
|
|
62
92
|
Files: `src/admin/BulkInvitePanel.test.tsx`
|
|
63
93
|
Read first: `design.md`, `src/admin/BulkInvitePanel.tsx`
|
|
64
94
|
Verification: `npm test -- src/admin/BulkInvitePanel.test.tsx`
|
|
65
95
|
Evidence: failing output
|
|
96
|
+
Completion: after verification evidence and required checkpoint/review records exist, run `SCRIPT_ROOT=".claude/skills/cc-do/scripts"; if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then SCRIPT_ROOT=".codex/skills/cc-do/scripts"; fi; bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json --tasks docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md --task T003`; do not hand-edit status.
|
|
97
|
+
Test seam: bulk invite rules and admin upload UI behavior
|
|
98
|
+
Public verification path: Run the bulk invite rule and admin panel tests through their public flows
|
|
99
|
+
Allowed mocks: file upload boundary / billing / seat limit boundary
|
|
66
100
|
Ready when: T002 已完成
|
|
67
101
|
|
|
68
102
|
- [x] T004 [IMPL] Render bulk invite results in the admin panel (dependsOn:T003) `src/admin/BulkInvitePanel.tsx`
|
|
69
103
|
Goal: 把 row outcomes 接进管理界面。
|
|
104
|
+
TDD phase: green
|
|
70
105
|
Files: `src/admin/BulkInvitePanel.tsx`
|
|
71
106
|
Read first: `design.md`, `src/admin/BulkInvitePanel.test.tsx`
|
|
72
107
|
Verification: `npm test -- src/admin/BulkInvitePanel.test.tsx`
|
|
73
108
|
Evidence: passing output + review notes
|
|
109
|
+
Completion: after verification evidence and required checkpoint/review records exist, run `SCRIPT_ROOT=".claude/skills/cc-do/scripts"; if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then SCRIPT_ROOT=".codex/skills/cc-do/scripts"; fi; bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json --tasks docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md --task T004`; do not hand-edit status.
|
|
110
|
+
Test seam: bulk invite rules and admin upload UI behavior
|
|
111
|
+
Public verification path: Run the bulk invite rule and admin panel tests through their public flows
|
|
112
|
+
Allowed mocks: file upload boundary / billing / seat limit boundary
|
|
74
113
|
Ready when: T003 已见红
|
|
75
114
|
|
|
76
115
|
## Phase 3: Verification
|
|
77
116
|
|
|
78
117
|
- [x] T005 Run mixed-surface checks and gather review evidence (dependsOn:T004) `bulk invite quality gates`
|
|
79
118
|
Goal: 为 `cc-check` 准备 bulk invite 的新鲜证据。
|
|
119
|
+
TDD phase: evidence
|
|
80
120
|
Files: `src/admin/BulkInvitePanel.tsx`, `src/invite/bulk-import.ts`
|
|
81
121
|
Read first: `tasks.md`, `task-manifest.json`
|
|
82
122
|
Verification:
|
|
83
123
|
- `npm test -- src/invite/bulk-import.test.ts`
|
|
84
124
|
- `npm test -- src/admin/BulkInvitePanel.test.tsx`
|
|
85
125
|
Evidence: passing output + review notes
|
|
126
|
+
Completion: after verification evidence and required checkpoint/review records exist, run `SCRIPT_ROOT=".claude/skills/cc-do/scripts"; if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then SCRIPT_ROOT=".codex/skills/cc-do/scripts"; fi; bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json --tasks docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md --task T005`; do not hand-edit status.
|
|
127
|
+
Test seam: bulk invite rules and admin upload UI behavior
|
|
128
|
+
Public verification path: Run the bulk invite rule and admin panel tests through their public flows
|
|
129
|
+
Allowed mocks: file upload boundary / billing / seat limit boundary
|
|
86
130
|
Ready when: T004 已完成
|
|
@@ -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.2.0`, `cc-plan@3.8.
|
|
7
|
+
- Bound skills: `cc-roadmap@5.2.0`, `cc-plan@3.8.2`, `cc-do@1.6.3`, `cc-check@1.10.1`, `cc-act@1.8.3`
|
|
8
8
|
|
|
9
9
|
This example shows verified work that is **ready to move forward**, but `cc-act` still chooses `local-handoff`.
|
|
10
10
|
|
|
@@ -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.8.
|
|
7
|
+
- CC-Plan skill version: `3.8.2`
|
|
8
8
|
- Requirement ID: `REQ-003`
|
|
9
9
|
- Design mode: `tiny-design`
|
|
10
10
|
- Why this stays `tiny-design`: the patch adds one export action inside the existing admin audit UI without changing data contracts
|
package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"requirementId": "REQ-003",
|
|
7
7
|
"requirementVersion": "REQ-003.v1",
|
|
8
8
|
"planningMeta": {
|
|
9
|
-
"reqPlanSkillVersion": "3.8.
|
|
9
|
+
"reqPlanSkillVersion": "3.8.2",
|
|
10
10
|
"designVersion": "design.v1",
|
|
11
11
|
"approvedAt": "2026-04-16T13:10:00.000Z",
|
|
12
12
|
"approvedBy": "user",
|
|
@@ -163,7 +163,60 @@
|
|
|
163
163
|
},
|
|
164
164
|
"status": "passed",
|
|
165
165
|
"attempts": 1,
|
|
166
|
-
"maxRetries": 1
|
|
166
|
+
"maxRetries": 1,
|
|
167
|
+
"tddPhase": "red",
|
|
168
|
+
"verticalSlice": "Slice 1",
|
|
169
|
+
"testSeam": {
|
|
170
|
+
"entry": "admin audit panel UI behavior",
|
|
171
|
+
"behaviorAsserted": "the missing download action is reproduced as a failing test",
|
|
172
|
+
"specStyleTestName": "the missing download action is reproduced as a failing test",
|
|
173
|
+
"oneLogicalBehavior": true,
|
|
174
|
+
"publicVerificationPath": "Run the audit summary panel test and observe CSV export through visible rows",
|
|
175
|
+
"implementationDetailRisk": "low"
|
|
176
|
+
},
|
|
177
|
+
"feedbackLoop": {
|
|
178
|
+
"type": "automated-test",
|
|
179
|
+
"determinism": "deterministic",
|
|
180
|
+
"expectedFailure": "Fails before the behavior exists"
|
|
181
|
+
},
|
|
182
|
+
"allowedMocks": [
|
|
183
|
+
"download / blob boundary"
|
|
184
|
+
],
|
|
185
|
+
"testQuality": {
|
|
186
|
+
"usesPublicInterface": true,
|
|
187
|
+
"describesBehavior": true,
|
|
188
|
+
"specStyleName": true,
|
|
189
|
+
"oneLogicalBehavior": true,
|
|
190
|
+
"verifiesThroughPublicPath": true,
|
|
191
|
+
"survivesInternalRefactor": true,
|
|
192
|
+
"mocksOnlySystemBoundaries": true,
|
|
193
|
+
"noBulkRed": true
|
|
194
|
+
},
|
|
195
|
+
"greenMinimality": {
|
|
196
|
+
"guard": "Keep the task scoped to its stated verification evidence",
|
|
197
|
+
"noSpeculativeBranches": true
|
|
198
|
+
},
|
|
199
|
+
"completion": {
|
|
200
|
+
"command": "SCRIPT_ROOT=\".claude/skills/cc-do/scripts\"; if [[ ! -d \"$SCRIPT_ROOT\" && -d \".codex/skills/cc-do/scripts\" ]]; then SCRIPT_ROOT=\".codex/skills/cc-do/scripts\"; fi; bash \"$SCRIPT_ROOT\"/mark-task-complete.sh --manifest docs/examples/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",
|
|
201
|
+
"requiredBeforeCompletion": [
|
|
202
|
+
"verification evidence captured",
|
|
203
|
+
"checkpoint written",
|
|
204
|
+
"spec review gate recorded",
|
|
205
|
+
"code review gate recorded"
|
|
206
|
+
],
|
|
207
|
+
"forbiddenShortcuts": [
|
|
208
|
+
"manual checkbox edit",
|
|
209
|
+
"manual manifest status edit",
|
|
210
|
+
"leaving currentTaskId stale"
|
|
211
|
+
]
|
|
212
|
+
},
|
|
213
|
+
"refactorCandidates": [
|
|
214
|
+
"duplication",
|
|
215
|
+
"long method",
|
|
216
|
+
"primitive obsession",
|
|
217
|
+
"naming",
|
|
218
|
+
"more than three nested branches"
|
|
219
|
+
]
|
|
167
220
|
},
|
|
168
221
|
{
|
|
169
222
|
"id": "T002",
|
|
@@ -215,7 +268,60 @@
|
|
|
215
268
|
},
|
|
216
269
|
"status": "passed",
|
|
217
270
|
"attempts": 1,
|
|
218
|
-
"maxRetries": 1
|
|
271
|
+
"maxRetries": 1,
|
|
272
|
+
"tddPhase": "green",
|
|
273
|
+
"verticalSlice": "Slice 2",
|
|
274
|
+
"testSeam": {
|
|
275
|
+
"entry": "admin audit panel UI behavior",
|
|
276
|
+
"behaviorAsserted": "admins can trigger a CSV download from the existing summary panel",
|
|
277
|
+
"specStyleTestName": "admins can trigger a CSV download from the existing summary panel",
|
|
278
|
+
"oneLogicalBehavior": true,
|
|
279
|
+
"publicVerificationPath": "Run the audit summary panel test and observe CSV export through visible rows",
|
|
280
|
+
"implementationDetailRisk": "low"
|
|
281
|
+
},
|
|
282
|
+
"feedbackLoop": {
|
|
283
|
+
"type": "automated-test",
|
|
284
|
+
"determinism": "deterministic",
|
|
285
|
+
"expectedFailure": ""
|
|
286
|
+
},
|
|
287
|
+
"allowedMocks": [
|
|
288
|
+
"download / blob boundary"
|
|
289
|
+
],
|
|
290
|
+
"testQuality": {
|
|
291
|
+
"usesPublicInterface": true,
|
|
292
|
+
"describesBehavior": true,
|
|
293
|
+
"specStyleName": true,
|
|
294
|
+
"oneLogicalBehavior": true,
|
|
295
|
+
"verifiesThroughPublicPath": true,
|
|
296
|
+
"survivesInternalRefactor": true,
|
|
297
|
+
"mocksOnlySystemBoundaries": true,
|
|
298
|
+
"noBulkRed": true
|
|
299
|
+
},
|
|
300
|
+
"greenMinimality": {
|
|
301
|
+
"guard": "Implement only the code needed to pass the current red behavior",
|
|
302
|
+
"noSpeculativeBranches": true
|
|
303
|
+
},
|
|
304
|
+
"completion": {
|
|
305
|
+
"command": "SCRIPT_ROOT=\".claude/skills/cc-do/scripts\"; if [[ ! -d \"$SCRIPT_ROOT\" && -d \".codex/skills/cc-do/scripts\" ]]; then SCRIPT_ROOT=\".codex/skills/cc-do/scripts\"; fi; bash \"$SCRIPT_ROOT\"/mark-task-complete.sh --manifest docs/examples/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",
|
|
306
|
+
"requiredBeforeCompletion": [
|
|
307
|
+
"verification evidence captured",
|
|
308
|
+
"checkpoint written",
|
|
309
|
+
"spec review gate recorded",
|
|
310
|
+
"code review gate recorded"
|
|
311
|
+
],
|
|
312
|
+
"forbiddenShortcuts": [
|
|
313
|
+
"manual checkbox edit",
|
|
314
|
+
"manual manifest status edit",
|
|
315
|
+
"leaving currentTaskId stale"
|
|
316
|
+
]
|
|
317
|
+
},
|
|
318
|
+
"refactorCandidates": [
|
|
319
|
+
"duplication",
|
|
320
|
+
"long method",
|
|
321
|
+
"primitive obsession",
|
|
322
|
+
"naming",
|
|
323
|
+
"more than three nested branches"
|
|
324
|
+
]
|
|
219
325
|
},
|
|
220
326
|
{
|
|
221
327
|
"id": "T003",
|
|
@@ -271,12 +377,99 @@
|
|
|
271
377
|
},
|
|
272
378
|
"status": "passed",
|
|
273
379
|
"attempts": 1,
|
|
274
|
-
"maxRetries": 1
|
|
380
|
+
"maxRetries": 1,
|
|
381
|
+
"tddPhase": "evidence",
|
|
382
|
+
"verticalSlice": "Slice 3",
|
|
383
|
+
"testSeam": {
|
|
384
|
+
"entry": "admin audit panel UI behavior",
|
|
385
|
+
"behaviorAsserted": "fresh verification evidence exists for local handoff",
|
|
386
|
+
"specStyleTestName": "fresh verification evidence exists for local handoff",
|
|
387
|
+
"oneLogicalBehavior": true,
|
|
388
|
+
"publicVerificationPath": "Run the audit summary panel test and observe CSV export through visible rows",
|
|
389
|
+
"implementationDetailRisk": "low"
|
|
390
|
+
},
|
|
391
|
+
"feedbackLoop": {
|
|
392
|
+
"type": "automated-test",
|
|
393
|
+
"determinism": "deterministic",
|
|
394
|
+
"expectedFailure": ""
|
|
395
|
+
},
|
|
396
|
+
"allowedMocks": [
|
|
397
|
+
"download / blob boundary"
|
|
398
|
+
],
|
|
399
|
+
"testQuality": {
|
|
400
|
+
"usesPublicInterface": true,
|
|
401
|
+
"describesBehavior": true,
|
|
402
|
+
"specStyleName": true,
|
|
403
|
+
"oneLogicalBehavior": true,
|
|
404
|
+
"verifiesThroughPublicPath": true,
|
|
405
|
+
"survivesInternalRefactor": true,
|
|
406
|
+
"mocksOnlySystemBoundaries": true,
|
|
407
|
+
"noBulkRed": true
|
|
408
|
+
},
|
|
409
|
+
"greenMinimality": {
|
|
410
|
+
"guard": "Keep the task scoped to its stated verification evidence",
|
|
411
|
+
"noSpeculativeBranches": true
|
|
412
|
+
},
|
|
413
|
+
"completion": {
|
|
414
|
+
"command": "SCRIPT_ROOT=\".claude/skills/cc-do/scripts\"; if [[ ! -d \"$SCRIPT_ROOT\" && -d \".codex/skills/cc-do/scripts\" ]]; then SCRIPT_ROOT=\".codex/skills/cc-do/scripts\"; fi; bash \"$SCRIPT_ROOT\"/mark-task-complete.sh --manifest docs/examples/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",
|
|
415
|
+
"requiredBeforeCompletion": [
|
|
416
|
+
"verification evidence captured",
|
|
417
|
+
"checkpoint written",
|
|
418
|
+
"spec review gate recorded",
|
|
419
|
+
"code review gate recorded"
|
|
420
|
+
],
|
|
421
|
+
"forbiddenShortcuts": [
|
|
422
|
+
"manual checkbox edit",
|
|
423
|
+
"manual manifest status edit",
|
|
424
|
+
"leaving currentTaskId stale"
|
|
425
|
+
]
|
|
426
|
+
},
|
|
427
|
+
"refactorCandidates": [
|
|
428
|
+
"duplication",
|
|
429
|
+
"long method",
|
|
430
|
+
"primitive obsession",
|
|
431
|
+
"naming",
|
|
432
|
+
"more than three nested branches"
|
|
433
|
+
]
|
|
275
434
|
}
|
|
276
435
|
],
|
|
277
436
|
"metadata": {
|
|
278
437
|
"source": "tasks.md",
|
|
279
438
|
"generatedBy": "docs-example",
|
|
280
439
|
"planVersion": 1
|
|
440
|
+
},
|
|
441
|
+
"executionProtocol": {
|
|
442
|
+
"templateCompliance": {
|
|
443
|
+
"required": true,
|
|
444
|
+
"sourceTemplate": "assets/TASKS_TEMPLATE.md",
|
|
445
|
+
"taskBlockMustInclude": [
|
|
446
|
+
"Goal",
|
|
447
|
+
"TDD phase",
|
|
448
|
+
"Files",
|
|
449
|
+
"Read first",
|
|
450
|
+
"Verification",
|
|
451
|
+
"Evidence",
|
|
452
|
+
"Test seam",
|
|
453
|
+
"Public verification path",
|
|
454
|
+
"Allowed mocks",
|
|
455
|
+
"Completion"
|
|
456
|
+
],
|
|
457
|
+
"titleOnlyTasks": "forbidden"
|
|
458
|
+
},
|
|
459
|
+
"selection": {
|
|
460
|
+
"sourceOfTruth": "planning/task-manifest.json.currentTaskId",
|
|
461
|
+
"commandTemplate": "SCRIPT_ROOT=\".claude/skills/cc-do/scripts\"; if [[ ! -d \"$SCRIPT_ROOT\" && -d \".codex/skills/cc-do/scripts\" ]]; then SCRIPT_ROOT=\".codex/skills/cc-do/scripts\"; fi; bash \"$SCRIPT_ROOT\"/select-ready-tasks.sh --manifest docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json"
|
|
462
|
+
},
|
|
463
|
+
"completion": {
|
|
464
|
+
"manualStatusEdit": "forbidden",
|
|
465
|
+
"commandTemplate": "SCRIPT_ROOT=\".claude/skills/cc-do/scripts\"; if [[ ! -d \"$SCRIPT_ROOT\" && -d \".codex/skills/cc-do/scripts\" ]]; then SCRIPT_ROOT=\".codex/skills/cc-do/scripts\"; fi; bash \"$SCRIPT_ROOT\"/mark-task-complete.sh --manifest docs/examples/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 <task-id>",
|
|
466
|
+
"failurePolicy": "Do not hand-edit status; fix missing checkpoint, review gate, or dependency evidence and rerun the script.",
|
|
467
|
+
"updates": [
|
|
468
|
+
"planning/task-manifest.json.tasks[].status",
|
|
469
|
+
"planning/task-manifest.json.currentTaskId",
|
|
470
|
+
"planning/task-manifest.json.status",
|
|
471
|
+
"planning/tasks.md checkbox"
|
|
472
|
+
]
|
|
473
|
+
}
|
|
281
474
|
}
|
|
282
475
|
}
|
|
@@ -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.8.
|
|
7
|
+
- CC-Plan skill version: `3.8.2`
|
|
8
8
|
- Source roadmap item: `RM-020`
|
|
9
9
|
- Source roadmap version: `roadmap.v3`
|
|
10
10
|
|
|
@@ -36,32 +36,66 @@
|
|
|
36
36
|
- panel placement
|
|
37
37
|
- Parallel boundaries: none
|
|
38
38
|
|
|
39
|
+
## Execution Protocol
|
|
40
|
+
|
|
41
|
+
ClaudeCode / Codex 执行本计划时,必须把本文件当成任务模板合同,而不是普通 TODO 列表。
|
|
42
|
+
|
|
43
|
+
- Template source: `assets/TASKS_TEMPLATE.md`
|
|
44
|
+
- Task selection: read `planning/task-manifest.json.currentTaskId`; if empty, run the ready-task selector before choosing work.
|
|
45
|
+
- Task block rule: read the full task block before coding; title-only execution is invalid.
|
|
46
|
+
- 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 checkpoint / review / dependency evidence and rerun it. Do not bypass it by editing JSON or Markdown.
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
SCRIPT_ROOT=".claude/skills/cc-do/scripts"
|
|
51
|
+
if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then
|
|
52
|
+
SCRIPT_ROOT=".codex/skills/cc-do/scripts"
|
|
53
|
+
fi
|
|
54
|
+
bash "$SCRIPT_ROOT/select-ready-tasks.sh" --manifest docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json
|
|
55
|
+
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 <task-id>
|
|
56
|
+
```
|
|
57
|
+
|
|
39
58
|
## Phase 1: Foundation
|
|
40
59
|
|
|
41
60
|
- [x] T001 [TEST] Add a failing test for the missing download action (dependsOn:none) `src/admin/AuditSummaryPanel.test.tsx`
|
|
42
61
|
Goal: 证明现在还没有可下载的 summary export。
|
|
62
|
+
TDD phase: red
|
|
43
63
|
Files: `src/admin/AuditSummaryPanel.test.tsx`
|
|
44
64
|
Read first: `design.md`, `src/admin/AuditSummaryPanel.tsx`
|
|
45
65
|
Verification: `npm test -- src/admin/AuditSummaryPanel.test.tsx`
|
|
46
66
|
Evidence: failing output
|
|
67
|
+
Completion: after verification evidence and required checkpoint/review records exist, run `SCRIPT_ROOT=".claude/skills/cc-do/scripts"; if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then SCRIPT_ROOT=".codex/skills/cc-do/scripts"; fi; bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/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
|
+
Test seam: admin audit panel UI behavior
|
|
69
|
+
Public verification path: Run the audit summary panel test and observe CSV export through visible rows
|
|
70
|
+
Allowed mocks: download / blob boundary
|
|
47
71
|
Ready when: 当前 audit summary test 已可运行
|
|
48
72
|
|
|
49
73
|
- [x] T002 [IMPL] Add the download summary action (dependsOn:T001) `src/admin/AuditSummaryPanel.tsx`
|
|
50
74
|
Goal: 用最小实现让 summary export 真的可用。
|
|
75
|
+
TDD phase: green
|
|
51
76
|
Files: `src/admin/AuditSummaryPanel.tsx`
|
|
52
77
|
Read first: `design.md`, `src/admin/AuditSummaryPanel.test.tsx`
|
|
53
78
|
Verification: `npm test -- src/admin/AuditSummaryPanel.test.tsx`
|
|
54
79
|
Evidence: passing output + checkpoint
|
|
80
|
+
Completion: after verification evidence and required checkpoint/review records exist, run `SCRIPT_ROOT=".claude/skills/cc-do/scripts"; if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then SCRIPT_ROOT=".codex/skills/cc-do/scripts"; fi; bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/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
|
+
Test seam: admin audit panel UI behavior
|
|
82
|
+
Public verification path: Run the audit summary panel test and observe CSV export through visible rows
|
|
83
|
+
Allowed mocks: download / blob boundary
|
|
55
84
|
Ready when: T001 已见红
|
|
56
85
|
|
|
57
86
|
## Phase 2: Verify
|
|
58
87
|
|
|
59
88
|
- [x] T003 Run targeted checks and collect handoff evidence (dependsOn:T002) `audit summary quality gates`
|
|
60
89
|
Goal: 为 `cc-check` 和 `cc-act` 留下这次导出改动的真实证据。
|
|
90
|
+
TDD phase: evidence
|
|
61
91
|
Files: `src/admin/AuditSummaryPanel.tsx`, `src/admin/AuditSummaryPanel.test.tsx`
|
|
62
92
|
Read first: `tasks.md`, `task-manifest.json`
|
|
63
93
|
Verification:
|
|
64
94
|
- `npm test -- src/admin/AuditSummaryPanel.test.tsx`
|
|
65
95
|
- `npm run lint -- src/admin/AuditSummaryPanel.tsx`
|
|
66
96
|
Evidence: passing output + clean lint output
|
|
97
|
+
Completion: after verification evidence and required checkpoint/review records exist, run `SCRIPT_ROOT=".claude/skills/cc-do/scripts"; if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then SCRIPT_ROOT=".codex/skills/cc-do/scripts"; fi; bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/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
|
+
Test seam: admin audit panel UI behavior
|
|
99
|
+
Public verification path: Run the audit summary panel test and observe CSV export through visible rows
|
|
100
|
+
Allowed mocks: download / blob boundary
|
|
67
101
|
Ready when: T002 已完成
|
|
@@ -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.2.0`, `cc-plan@3.8.
|
|
7
|
+
- Bound skills: `cc-roadmap@5.2.0`, `cc-plan@3.8.2`, `cc-do@1.6.3`, `cc-check@1.10.1`, `cc-act@1.8.3`
|
|
8
8
|
|
|
9
9
|
This folder shows one minimal but complete `cc-roadmap -> cc-plan -> cc-do -> cc-check -> cc-act` loop.
|
|
10
10
|
|
|
@@ -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.8.
|
|
7
|
+
- CC-Plan skill version: `3.8.2`
|
|
8
8
|
- Requirement ID: `REQ-001`
|
|
9
9
|
- Design mode: `tiny-design`
|
|
10
10
|
- Why this stays `tiny-design`: the patch is limited to an existing dialog and test file, with no API or data model changes
|