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/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
]
|
|
23
23
|
},
|
|
24
24
|
"planningMeta": {
|
|
25
|
-
"reqPlanSkillVersion": "3.8.
|
|
25
|
+
"reqPlanSkillVersion": "3.8.2",
|
|
26
26
|
"designVersion": "design.v1",
|
|
27
27
|
"approvedAt": "2026-04-15T10:05:00.000Z",
|
|
28
28
|
"approvedBy": "user",
|
|
@@ -179,7 +179,60 @@
|
|
|
179
179
|
},
|
|
180
180
|
"status": "passed",
|
|
181
181
|
"attempts": 1,
|
|
182
|
-
"maxRetries": 1
|
|
182
|
+
"maxRetries": 1,
|
|
183
|
+
"tddPhase": "red",
|
|
184
|
+
"verticalSlice": "Slice 1",
|
|
185
|
+
"testSeam": {
|
|
186
|
+
"entry": "share dialog UI behavior",
|
|
187
|
+
"behaviorAsserted": "The missing copy action is reproduced as a failing test",
|
|
188
|
+
"specStyleTestName": "The missing copy action is reproduced as a failing test",
|
|
189
|
+
"oneLogicalBehavior": true,
|
|
190
|
+
"publicVerificationPath": "Run the share dialog test and observe the copy action through the rendered dialog",
|
|
191
|
+
"implementationDetailRisk": "low"
|
|
192
|
+
},
|
|
193
|
+
"feedbackLoop": {
|
|
194
|
+
"type": "automated-test",
|
|
195
|
+
"determinism": "deterministic",
|
|
196
|
+
"expectedFailure": "Fails before the behavior exists"
|
|
197
|
+
},
|
|
198
|
+
"allowedMocks": [
|
|
199
|
+
"clipboard boundary"
|
|
200
|
+
],
|
|
201
|
+
"testQuality": {
|
|
202
|
+
"usesPublicInterface": true,
|
|
203
|
+
"describesBehavior": true,
|
|
204
|
+
"specStyleName": true,
|
|
205
|
+
"oneLogicalBehavior": true,
|
|
206
|
+
"verifiesThroughPublicPath": true,
|
|
207
|
+
"survivesInternalRefactor": true,
|
|
208
|
+
"mocksOnlySystemBoundaries": true,
|
|
209
|
+
"noBulkRed": true
|
|
210
|
+
},
|
|
211
|
+
"greenMinimality": {
|
|
212
|
+
"guard": "Keep the task scoped to its stated verification evidence",
|
|
213
|
+
"noSpeculativeBranches": true
|
|
214
|
+
},
|
|
215
|
+
"completion": {
|
|
216
|
+
"command": "SCRIPT_ROOT=\".claude/skills/cc-do/scripts\"; if [[ ! -d \"$SCRIPT_ROOT\" && -d \".codex/skills/cc-do/scripts\" ]]; then SCRIPT_ROOT=\".codex/skills/cc-do/scripts\"; fi; bash \"$SCRIPT_ROOT\"/mark-task-complete.sh --manifest docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json --tasks docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md --task T001",
|
|
217
|
+
"requiredBeforeCompletion": [
|
|
218
|
+
"verification evidence captured",
|
|
219
|
+
"checkpoint written",
|
|
220
|
+
"spec review gate recorded",
|
|
221
|
+
"code review gate recorded"
|
|
222
|
+
],
|
|
223
|
+
"forbiddenShortcuts": [
|
|
224
|
+
"manual checkbox edit",
|
|
225
|
+
"manual manifest status edit",
|
|
226
|
+
"leaving currentTaskId stale"
|
|
227
|
+
]
|
|
228
|
+
},
|
|
229
|
+
"refactorCandidates": [
|
|
230
|
+
"duplication",
|
|
231
|
+
"long method",
|
|
232
|
+
"primitive obsession",
|
|
233
|
+
"naming",
|
|
234
|
+
"more than three nested branches"
|
|
235
|
+
]
|
|
183
236
|
},
|
|
184
237
|
{
|
|
185
238
|
"id": "T002",
|
|
@@ -231,7 +284,60 @@
|
|
|
231
284
|
},
|
|
232
285
|
"status": "passed",
|
|
233
286
|
"attempts": 1,
|
|
234
|
-
"maxRetries": 1
|
|
287
|
+
"maxRetries": 1,
|
|
288
|
+
"tddPhase": "green",
|
|
289
|
+
"verticalSlice": "Slice 2",
|
|
290
|
+
"testSeam": {
|
|
291
|
+
"entry": "share dialog UI behavior",
|
|
292
|
+
"behaviorAsserted": "The dialog exposes a copy button and confirms the copied state",
|
|
293
|
+
"specStyleTestName": "The dialog exposes a copy button and confirms the copied state",
|
|
294
|
+
"oneLogicalBehavior": true,
|
|
295
|
+
"publicVerificationPath": "Run the share dialog test and observe the copy action through the rendered dialog",
|
|
296
|
+
"implementationDetailRisk": "low"
|
|
297
|
+
},
|
|
298
|
+
"feedbackLoop": {
|
|
299
|
+
"type": "automated-test",
|
|
300
|
+
"determinism": "deterministic",
|
|
301
|
+
"expectedFailure": ""
|
|
302
|
+
},
|
|
303
|
+
"allowedMocks": [
|
|
304
|
+
"clipboard boundary"
|
|
305
|
+
],
|
|
306
|
+
"testQuality": {
|
|
307
|
+
"usesPublicInterface": true,
|
|
308
|
+
"describesBehavior": true,
|
|
309
|
+
"specStyleName": true,
|
|
310
|
+
"oneLogicalBehavior": true,
|
|
311
|
+
"verifiesThroughPublicPath": true,
|
|
312
|
+
"survivesInternalRefactor": true,
|
|
313
|
+
"mocksOnlySystemBoundaries": true,
|
|
314
|
+
"noBulkRed": true
|
|
315
|
+
},
|
|
316
|
+
"greenMinimality": {
|
|
317
|
+
"guard": "Implement only the code needed to pass the current red behavior",
|
|
318
|
+
"noSpeculativeBranches": true
|
|
319
|
+
},
|
|
320
|
+
"completion": {
|
|
321
|
+
"command": "SCRIPT_ROOT=\".claude/skills/cc-do/scripts\"; if [[ ! -d \"$SCRIPT_ROOT\" && -d \".codex/skills/cc-do/scripts\" ]]; then SCRIPT_ROOT=\".codex/skills/cc-do/scripts\"; fi; bash \"$SCRIPT_ROOT\"/mark-task-complete.sh --manifest docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json --tasks docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md --task T002",
|
|
322
|
+
"requiredBeforeCompletion": [
|
|
323
|
+
"verification evidence captured",
|
|
324
|
+
"checkpoint written",
|
|
325
|
+
"spec review gate recorded",
|
|
326
|
+
"code review gate recorded"
|
|
327
|
+
],
|
|
328
|
+
"forbiddenShortcuts": [
|
|
329
|
+
"manual checkbox edit",
|
|
330
|
+
"manual manifest status edit",
|
|
331
|
+
"leaving currentTaskId stale"
|
|
332
|
+
]
|
|
333
|
+
},
|
|
334
|
+
"refactorCandidates": [
|
|
335
|
+
"duplication",
|
|
336
|
+
"long method",
|
|
337
|
+
"primitive obsession",
|
|
338
|
+
"naming",
|
|
339
|
+
"more than three nested branches"
|
|
340
|
+
]
|
|
235
341
|
},
|
|
236
342
|
{
|
|
237
343
|
"id": "T003",
|
|
@@ -287,7 +393,60 @@
|
|
|
287
393
|
},
|
|
288
394
|
"status": "passed",
|
|
289
395
|
"attempts": 1,
|
|
290
|
-
"maxRetries": 1
|
|
396
|
+
"maxRetries": 1,
|
|
397
|
+
"tddPhase": "evidence",
|
|
398
|
+
"verticalSlice": "Slice 3",
|
|
399
|
+
"testSeam": {
|
|
400
|
+
"entry": "share dialog UI behavior",
|
|
401
|
+
"behaviorAsserted": "Fresh verification evidence is ready for cc-check",
|
|
402
|
+
"specStyleTestName": "Fresh verification evidence is ready for cc-check",
|
|
403
|
+
"oneLogicalBehavior": true,
|
|
404
|
+
"publicVerificationPath": "Run the share dialog test and observe the copy action through the rendered dialog",
|
|
405
|
+
"implementationDetailRisk": "low"
|
|
406
|
+
},
|
|
407
|
+
"feedbackLoop": {
|
|
408
|
+
"type": "automated-test",
|
|
409
|
+
"determinism": "deterministic",
|
|
410
|
+
"expectedFailure": ""
|
|
411
|
+
},
|
|
412
|
+
"allowedMocks": [
|
|
413
|
+
"clipboard boundary"
|
|
414
|
+
],
|
|
415
|
+
"testQuality": {
|
|
416
|
+
"usesPublicInterface": true,
|
|
417
|
+
"describesBehavior": true,
|
|
418
|
+
"specStyleName": true,
|
|
419
|
+
"oneLogicalBehavior": true,
|
|
420
|
+
"verifiesThroughPublicPath": true,
|
|
421
|
+
"survivesInternalRefactor": true,
|
|
422
|
+
"mocksOnlySystemBoundaries": true,
|
|
423
|
+
"noBulkRed": true
|
|
424
|
+
},
|
|
425
|
+
"greenMinimality": {
|
|
426
|
+
"guard": "Keep the task scoped to its stated verification evidence",
|
|
427
|
+
"noSpeculativeBranches": true
|
|
428
|
+
},
|
|
429
|
+
"completion": {
|
|
430
|
+
"command": "SCRIPT_ROOT=\".claude/skills/cc-do/scripts\"; if [[ ! -d \"$SCRIPT_ROOT\" && -d \".codex/skills/cc-do/scripts\" ]]; then SCRIPT_ROOT=\".codex/skills/cc-do/scripts\"; fi; bash \"$SCRIPT_ROOT\"/mark-task-complete.sh --manifest docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json --tasks docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md --task T003",
|
|
431
|
+
"requiredBeforeCompletion": [
|
|
432
|
+
"verification evidence captured",
|
|
433
|
+
"checkpoint written",
|
|
434
|
+
"spec review gate recorded",
|
|
435
|
+
"code review gate recorded"
|
|
436
|
+
],
|
|
437
|
+
"forbiddenShortcuts": [
|
|
438
|
+
"manual checkbox edit",
|
|
439
|
+
"manual manifest status edit",
|
|
440
|
+
"leaving currentTaskId stale"
|
|
441
|
+
]
|
|
442
|
+
},
|
|
443
|
+
"refactorCandidates": [
|
|
444
|
+
"duplication",
|
|
445
|
+
"long method",
|
|
446
|
+
"primitive obsession",
|
|
447
|
+
"naming",
|
|
448
|
+
"more than three nested branches"
|
|
449
|
+
]
|
|
291
450
|
}
|
|
292
451
|
],
|
|
293
452
|
"metadata": {
|
|
@@ -297,5 +456,39 @@
|
|
|
297
456
|
},
|
|
298
457
|
"deferredQuestions": [
|
|
299
458
|
"If users still miss the copied-state confirmation, open RM-002 for richer feedback."
|
|
300
|
-
]
|
|
459
|
+
],
|
|
460
|
+
"executionProtocol": {
|
|
461
|
+
"templateCompliance": {
|
|
462
|
+
"required": true,
|
|
463
|
+
"sourceTemplate": "assets/TASKS_TEMPLATE.md",
|
|
464
|
+
"taskBlockMustInclude": [
|
|
465
|
+
"Goal",
|
|
466
|
+
"TDD phase",
|
|
467
|
+
"Files",
|
|
468
|
+
"Read first",
|
|
469
|
+
"Verification",
|
|
470
|
+
"Evidence",
|
|
471
|
+
"Test seam",
|
|
472
|
+
"Public verification path",
|
|
473
|
+
"Allowed mocks",
|
|
474
|
+
"Completion"
|
|
475
|
+
],
|
|
476
|
+
"titleOnlyTasks": "forbidden"
|
|
477
|
+
},
|
|
478
|
+
"selection": {
|
|
479
|
+
"sourceOfTruth": "planning/task-manifest.json.currentTaskId",
|
|
480
|
+
"commandTemplate": "SCRIPT_ROOT=\".claude/skills/cc-do/scripts\"; if [[ ! -d \"$SCRIPT_ROOT\" && -d \".codex/skills/cc-do/scripts\" ]]; then SCRIPT_ROOT=\".codex/skills/cc-do/scripts\"; fi; bash \"$SCRIPT_ROOT\"/select-ready-tasks.sh --manifest docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json"
|
|
481
|
+
},
|
|
482
|
+
"completion": {
|
|
483
|
+
"manualStatusEdit": "forbidden",
|
|
484
|
+
"commandTemplate": "SCRIPT_ROOT=\".claude/skills/cc-do/scripts\"; if [[ ! -d \"$SCRIPT_ROOT\" && -d \".codex/skills/cc-do/scripts\" ]]; then SCRIPT_ROOT=\".codex/skills/cc-do/scripts\"; fi; bash \"$SCRIPT_ROOT\"/mark-task-complete.sh --manifest docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json --tasks docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md --task <task-id>",
|
|
485
|
+
"failurePolicy": "Do not hand-edit status; fix missing checkpoint, review gate, or dependency evidence and rerun the script.",
|
|
486
|
+
"updates": [
|
|
487
|
+
"planning/task-manifest.json.tasks[].status",
|
|
488
|
+
"planning/task-manifest.json.currentTaskId",
|
|
489
|
+
"planning/task-manifest.json.status",
|
|
490
|
+
"planning/tasks.md checkbox"
|
|
491
|
+
]
|
|
492
|
+
}
|
|
493
|
+
}
|
|
301
494
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
- Requirement version: `REQ-001.v1`
|
|
6
6
|
- Design version: `design.v1`
|
|
7
|
-
- CC-Plan skill version: `3.8.
|
|
7
|
+
- CC-Plan skill version: `3.8.2`
|
|
8
8
|
- Source roadmap item: `RM-001`
|
|
9
9
|
- Source roadmap version: `roadmap.v1`
|
|
10
10
|
|
|
@@ -39,34 +39,68 @@
|
|
|
39
39
|
|
|
40
40
|
> 顶部 handoff 只保留执行者必须知道的现实,不重复讲背景故事。
|
|
41
41
|
|
|
42
|
+
## Execution Protocol
|
|
43
|
+
|
|
44
|
+
ClaudeCode / Codex 执行本计划时,必须把本文件当成任务模板合同,而不是普通 TODO 列表。
|
|
45
|
+
|
|
46
|
+
- Template source: `assets/TASKS_TEMPLATE.md`
|
|
47
|
+
- Task selection: read `planning/task-manifest.json.currentTaskId`; if empty, run the ready-task selector before choosing work.
|
|
48
|
+
- Task block rule: read the full task block before coding; title-only execution is invalid.
|
|
49
|
+
- Completion rule: after verification and review gates pass, run the completion script; do not manually edit checkbox, status, or `currentTaskId`.
|
|
50
|
+
- Completion failure: if the script fails, fix the missing checkpoint / review / dependency evidence and rerun it. Do not bypass it by editing JSON or Markdown.
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
SCRIPT_ROOT=".claude/skills/cc-do/scripts"
|
|
54
|
+
if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then
|
|
55
|
+
SCRIPT_ROOT=".codex/skills/cc-do/scripts"
|
|
56
|
+
fi
|
|
57
|
+
bash "$SCRIPT_ROOT/select-ready-tasks.sh" --manifest docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json
|
|
58
|
+
bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json --tasks docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md --task <task-id>
|
|
59
|
+
```
|
|
60
|
+
|
|
42
61
|
## Phase 1: Foundation
|
|
43
62
|
|
|
44
63
|
- [x] T001 [TEST] Add a failing dialog test for the missing copy action (dependsOn:none) `src/features/share/ShareDialog.test.tsx`
|
|
45
64
|
Goal: 证明当前 share dialog 还不能一键复制 invite link。
|
|
65
|
+
TDD phase: red
|
|
46
66
|
Files: `src/features/share/ShareDialog.test.tsx`
|
|
47
67
|
Read first: `design.md`, `src/features/share/ShareDialog.tsx`
|
|
48
68
|
Verification: `npm test -- src/features/share/ShareDialog.test.tsx`
|
|
49
69
|
Evidence: failing output that shows the missing button / action
|
|
70
|
+
Completion: after verification evidence and required checkpoint/review records exist, run `SCRIPT_ROOT=".claude/skills/cc-do/scripts"; if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then SCRIPT_ROOT=".codex/skills/cc-do/scripts"; fi; bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json --tasks docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md --task T001`; do not hand-edit status.
|
|
71
|
+
Test seam: share dialog UI behavior
|
|
72
|
+
Public verification path: Run the share dialog test and observe the copy action through the rendered dialog
|
|
73
|
+
Allowed mocks: clipboard boundary
|
|
50
74
|
Ready when: 没有上游依赖,且现有 dialog test 已可运行
|
|
51
75
|
|
|
52
76
|
- [x] T002 [IMPL] Add the copy button and copied-state confirmation (dependsOn:T001) `src/features/share/ShareDialog.tsx`
|
|
53
77
|
Goal: 用最小实现让 T001 转绿,并保持当前 share contract 不变。
|
|
78
|
+
TDD phase: green
|
|
54
79
|
Files: `src/features/share/ShareDialog.tsx`
|
|
55
80
|
Read first: `design.md`, `src/features/share/ShareDialog.test.tsx`
|
|
56
81
|
Verification: `npm test -- src/features/share/ShareDialog.test.tsx`
|
|
57
82
|
Evidence: passing output + checkpoint + review notes
|
|
83
|
+
Completion: after verification evidence and required checkpoint/review records exist, run `SCRIPT_ROOT=".claude/skills/cc-do/scripts"; if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then SCRIPT_ROOT=".codex/skills/cc-do/scripts"; fi; bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json --tasks docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md --task T002`; do not hand-edit status.
|
|
84
|
+
Test seam: share dialog UI behavior
|
|
85
|
+
Public verification path: Run the share dialog test and observe the copy action through the rendered dialog
|
|
86
|
+
Allowed mocks: clipboard boundary
|
|
58
87
|
Ready when: T001 已经见红,且当前 touched files 没有外部依赖阻塞
|
|
59
88
|
|
|
60
89
|
## Phase 2: Verify
|
|
61
90
|
|
|
62
91
|
- [x] T003 Run targeted checks and collect fresh evidence (dependsOn:T002) `share dialog quality gates`
|
|
63
92
|
Goal: 为 `cc-check` 准备本次实现的真实验证证据。
|
|
93
|
+
TDD phase: evidence
|
|
64
94
|
Files: `src/features/share/ShareDialog.tsx`, `src/features/share/ShareDialog.test.tsx`
|
|
65
95
|
Read first: `tasks.md`, `task-manifest.json`
|
|
66
96
|
Verification:
|
|
67
97
|
- `npm test -- src/features/share/ShareDialog.test.tsx`
|
|
68
98
|
- `npm run lint -- src/features/share/ShareDialog.tsx`
|
|
69
99
|
Evidence: passing test output + clean lint output
|
|
100
|
+
Completion: after verification evidence and required checkpoint/review records exist, run `SCRIPT_ROOT=".claude/skills/cc-do/scripts"; if [[ ! -d "$SCRIPT_ROOT" && -d ".codex/skills/cc-do/scripts" ]]; then SCRIPT_ROOT=".codex/skills/cc-do/scripts"; fi; bash "$SCRIPT_ROOT/mark-task-complete.sh" --manifest docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json --tasks docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md --task T003`; do not hand-edit status.
|
|
101
|
+
Test seam: share dialog UI behavior
|
|
102
|
+
Public verification path: Run the share dialog test and observe the copy action through the rendered dialog
|
|
103
|
+
Allowed mocks: clipboard boundary
|
|
70
104
|
Ready when: T002 已完成,且 review gate 已可补齐
|
|
71
105
|
|
|
72
106
|
> `[P]` 只表示“依赖满足后有资格并行”,不表示可以无脑同时开发。
|
|
@@ -35,19 +35,27 @@ assert_contains() {
|
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
ROADMAP_VERSION="$(skill_version cc-roadmap)"
|
|
38
|
+
NEXT_VERSION="$(skill_version cc-next)"
|
|
39
|
+
DEV_VERSION="$(skill_version cc-dev)"
|
|
38
40
|
REQ_PLAN_VERSION="$(skill_version cc-plan)"
|
|
39
41
|
INVESTIGATE_VERSION="$(skill_version cc-investigate)"
|
|
40
42
|
REQ_DO_VERSION="$(skill_version cc-do)"
|
|
41
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)"
|
|
42
46
|
REQ_CHECK_VERSION="$(skill_version cc-check)"
|
|
43
47
|
REQ_ACT_VERSION="$(skill_version cc-act)"
|
|
44
48
|
|
|
45
49
|
for pair in \
|
|
46
50
|
"cc-roadmap:$ROADMAP_VERSION" \
|
|
51
|
+
"cc-next:$NEXT_VERSION" \
|
|
52
|
+
"cc-dev:$DEV_VERSION" \
|
|
47
53
|
"cc-plan:$REQ_PLAN_VERSION" \
|
|
48
54
|
"cc-investigate:$INVESTIGATE_VERSION" \
|
|
49
55
|
"cc-do:$REQ_DO_VERSION" \
|
|
50
56
|
"cc-review:$REQ_REVIEW_VERSION" \
|
|
57
|
+
"cc-pr-review:$PR_REVIEW_VERSION" \
|
|
58
|
+
"cc-pr-land:$PR_LAND_VERSION" \
|
|
51
59
|
"cc-check:$REQ_CHECK_VERSION" \
|
|
52
60
|
"cc-act:$REQ_ACT_VERSION"
|
|
53
61
|
do
|
|
@@ -93,9 +101,19 @@ while IFS= read -r encoded; do
|
|
|
93
101
|
|
|
94
102
|
jq -er --arg roadmap "$ROADMAP_VERSION" --arg reqplan "$REQ_PLAN_VERSION" '
|
|
95
103
|
(.sourceRoadmap.roadmapSkillVersion // $roadmap) == $roadmap and
|
|
96
|
-
(.planningMeta.reqPlanSkillVersion // $reqplan) == $reqplan
|
|
104
|
+
(.planningMeta.reqPlanSkillVersion // $reqplan) == $reqplan and
|
|
105
|
+
.executionProtocol.templateCompliance.required == true and
|
|
106
|
+
.executionProtocol.completion.manualStatusEdit == "forbidden" and
|
|
107
|
+
(.executionProtocol.completion.commandTemplate | contains("mark-task-complete.sh")) and
|
|
108
|
+
all(.tasks[]; (.completion.command | contains("mark-task-complete.sh")) and (.tddPhase | type == "string") and (.testSeam.publicVerificationPath | type == "string"))
|
|
97
109
|
' "$planning_dir/task-manifest.json" >/dev/null
|
|
98
110
|
|
|
111
|
+
assert_contains "$planning_dir/tasks.md" "## Execution Protocol"
|
|
112
|
+
assert_contains "$planning_dir/tasks.md" "mark-task-complete.sh"
|
|
113
|
+
assert_contains "$planning_dir/tasks.md" "TDD phase:"
|
|
114
|
+
assert_contains "$planning_dir/tasks.md" "Completion:"
|
|
115
|
+
assert_contains "$planning_dir/tasks.md" "Public verification path:"
|
|
116
|
+
|
|
99
117
|
assert_contains "$readme" "## Example Meta"
|
|
100
118
|
assert_contains "$readme" "\`cc-roadmap@$ROADMAP_VERSION\`"
|
|
101
119
|
assert_contains "$readme" "\`cc-plan@$REQ_PLAN_VERSION\`"
|
|
@@ -89,7 +89,7 @@ Typical outputs:
|
|
|
89
89
|
- `cc-spec-init` writes `devflow/specs/INDEX.md`, capability specs, and `change-meta.json`
|
|
90
90
|
- `cc-plan` writes `planning/design.md`, `planning/tasks.md`, `task-manifest.json`, and `change-meta.json`
|
|
91
91
|
- `cc-investigate` writes `planning/analysis.md`, `planning/tasks.md`, `task-manifest.json`, and `change-meta.json`
|
|
92
|
-
- `cc-review` writes `cc-review-report.md` and optional structured findings for deep plan or implementation review
|
|
92
|
+
- `cc-review` writes `cc-review-plan.md`, `cc-review-ledger.jsonl`, `cc-review-report.md`, optional `cc-review-agent-results.jsonl`, and optional structured findings for deep plan or implementation review
|
|
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
|
|
|
@@ -89,7 +89,7 @@ find .codex/skills -mindepth 2 -maxdepth 2 -name SKILL.md | sort
|
|
|
89
89
|
- `cc-spec-init` 产出 `devflow/specs/INDEX.md`、capability spec 和 `change-meta.json`
|
|
90
90
|
- `cc-plan` 产出 `planning/design.md`、`planning/tasks.md`、`task-manifest.json` 和 `change-meta.json`
|
|
91
91
|
- `cc-investigate` 产出 `planning/analysis.md`、`planning/tasks.md`、`task-manifest.json` 和 `change-meta.json`
|
|
92
|
-
- `cc-review` 产出 `cc-review-report.md`,以及可选的结构化深度 Review findings
|
|
92
|
+
- `cc-review` 产出 `cc-review-plan.md`、`cc-review-ledger.jsonl`、`cc-review-report.md`、可选 `cc-review-agent-results.jsonl`,以及可选的结构化深度 Review findings
|
|
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
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cc-devflow",
|
|
3
|
-
"version": "4.5.
|
|
3
|
+
"version": "4.5.8",
|
|
4
4
|
"description": "Multi-platform CLI and skill pack for agent coding",
|
|
5
5
|
"main": "bin/cc-devflow.js",
|
|
6
6
|
"bin": {
|
|
@@ -10,11 +10,16 @@
|
|
|
10
10
|
"bin/",
|
|
11
11
|
"lib/",
|
|
12
12
|
"config/",
|
|
13
|
+
"docs/assets/",
|
|
13
14
|
".claude/skills/cc-roadmap/",
|
|
15
|
+
".claude/skills/cc-next/",
|
|
16
|
+
".claude/skills/cc-dev/",
|
|
14
17
|
".claude/skills/cc-plan/",
|
|
15
18
|
".claude/skills/cc-investigate/",
|
|
16
19
|
".claude/skills/cc-do/",
|
|
17
20
|
".claude/skills/cc-review/",
|
|
21
|
+
".claude/skills/cc-pr-review/",
|
|
22
|
+
".claude/skills/cc-pr-land/",
|
|
18
23
|
".claude/skills/cc-check/",
|
|
19
24
|
".claude/skills/cc-act/",
|
|
20
25
|
".claude/skills/cc-spec-init/",
|