cc-devflow 4.5.8 → 4.5.9
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 +27 -0
- package/.claude/skills/cc-act/PLAYBOOK.md +9 -4
- package/.claude/skills/cc-act/SKILL.md +62 -3
- package/.claude/skills/cc-act/assets/PROJECT_POSTMORTEM_INDEX_TEMPLATE.md +30 -0
- package/.claude/skills/cc-act/assets/PROJECT_POSTMORTEM_PRINCIPLES_TEMPLATE.md +29 -0
- package/.claude/skills/cc-act/assets/PROJECT_POSTMORTEM_TEMPLATE.md +103 -0
- package/.claude/skills/cc-act/assets/PR_BRIEF_TEMPLATE.md +60 -4
- package/.claude/skills/cc-act/references/closure-contract.md +3 -0
- package/.claude/skills/cc-act/references/git-commit-guidelines.md +342 -37
- package/.claude/skills/cc-act/scripts/cc-act-common.sh +29 -1
- package/.claude/skills/cc-act/scripts/render-pr-brief.sh +164 -0
- package/.claude/skills/cc-act/scripts/sync-act-docs.sh +1 -1
- package/.claude/skills/cc-do/CHANGELOG.md +11 -0
- package/.claude/skills/cc-do/SKILL.md +19 -13
- package/.claude/skills/cc-do/scripts/build-task-context.sh +9 -5
- package/.claude/skills/cc-do/scripts/mark-task-complete.sh +0 -6
- package/.claude/skills/cc-investigate/CHANGELOG.md +17 -0
- package/.claude/skills/cc-investigate/PLAYBOOK.md +15 -0
- package/.claude/skills/cc-investigate/SKILL.md +46 -1
- package/.claude/skills/cc-investigate/assets/ANALYSIS_TEMPLATE.md +47 -0
- package/.claude/skills/cc-investigate/assets/TASKS_TEMPLATE.md +21 -2
- package/.claude/skills/cc-investigate/assets/TASK_MANIFEST_TEMPLATE.json +28 -58
- package/.claude/skills/cc-investigate/references/investigation-contract.md +14 -0
- package/.claude/skills/cc-next/CHANGELOG.md +6 -0
- package/.claude/skills/cc-next/PLAYBOOK.md +26 -4
- package/.claude/skills/cc-next/SKILL.md +39 -4
- package/.claude/skills/cc-plan/CHANGELOG.md +19 -0
- package/.claude/skills/cc-plan/PLAYBOOK.md +25 -20
- package/.claude/skills/cc-plan/SKILL.md +83 -22
- package/.claude/skills/cc-plan/assets/DESIGN_TEMPLATE.md +67 -0
- package/.claude/skills/cc-plan/assets/TASKS_TEMPLATE.md +59 -0
- package/.claude/skills/cc-plan/assets/TASK_MANIFEST_TEMPLATE.json +55 -228
- package/.claude/skills/cc-plan/assets/TINY_DESIGN_TEMPLATE.md +46 -0
- package/.claude/skills/cc-plan/references/planning-contract.md +41 -27
- package/.claude/skills/cc-roadmap/CHANGELOG.md +6 -0
- package/.claude/skills/cc-roadmap/PLAYBOOK.md +30 -0
- package/.claude/skills/cc-roadmap/SKILL.md +45 -8
- package/.claude/skills/cc-roadmap/assets/BACKLOG_TEMPLATE.md +8 -0
- package/.claude/skills/cc-roadmap/assets/ROADMAP_TEMPLATE.md +22 -0
- package/.claude/skills/cc-roadmap/assets/TRACKING_TEMPLATE.json +32 -1
- package/.claude/skills/cc-roadmap/references/roadmap-dialogue.md +14 -14
- package/CHANGELOG.md +12 -0
- package/README.md +37 -35
- package/README.zh-CN.md +37 -35
- package/docs/examples/example-bindings.json +7 -7
- package/docs/examples/full-design-blocked/BACKLOG.md +1 -1
- package/docs/examples/full-design-blocked/README.md +1 -1
- package/docs/examples/full-design-blocked/ROADMAP.md +1 -1
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/design.md +1 -1
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json +27 -311
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md +1 -1
- package/docs/examples/full-design-blocked/roadmap.json +1 -1
- package/docs/examples/local-handoff/BACKLOG.md +1 -1
- package/docs/examples/local-handoff/README.md +1 -1
- package/docs/examples/local-handoff/ROADMAP.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 +25 -209
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/tasks.md +1 -1
- package/docs/examples/local-handoff/roadmap.json +1 -1
- package/docs/examples/pdca-loop/BACKLOG.md +1 -1
- package/docs/examples/pdca-loop/README.md +1 -1
- package/docs/examples/pdca-loop/ROADMAP.md +1 -1
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/handoff/pr-brief.md +64 -0
- 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 +25 -228
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md +1 -1
- package/docs/examples/pdca-loop/roadmap.json +1 -1
- package/docs/examples/scripts/check-example-bindings.sh +9 -5
- package/docs/get-shit-done-strategy-audit.md +4 -4
- package/docs/guides/artifact-contract.md +44 -0
- package/docs/guides/project-postmortem.md +78 -0
- package/lib/skill-runtime/__tests__/planner.tdd.test.js +2 -2
- package/lib/skill-runtime/__tests__/schemas.test.js +33 -2
- package/lib/skill-runtime/planner.js +1 -2
- package/lib/skill-runtime/query.js +1 -1
- package/lib/skill-runtime/schemas.js +5 -3
- package/package.json +1 -1
package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json
CHANGED
|
@@ -6,44 +6,30 @@
|
|
|
6
6
|
"requirementId": "REQ-003",
|
|
7
7
|
"requirementVersion": "REQ-003.v1",
|
|
8
8
|
"planningMeta": {
|
|
9
|
-
"reqPlanSkillVersion": "3.8.
|
|
9
|
+
"reqPlanSkillVersion": "3.8.5",
|
|
10
10
|
"designVersion": "design.v1",
|
|
11
11
|
"approvedAt": "2026-04-16T13:10:00.000Z",
|
|
12
|
-
"approvedBy": "user",
|
|
13
12
|
"basedOnOption": "Tiny design card",
|
|
14
|
-
"
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
"
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
|
|
34
|
-
"Keep CSV as the only output format"
|
|
35
|
-
],
|
|
36
|
-
"testingDecisions": [
|
|
37
|
-
"Test through the admin panel action and visible row data"
|
|
38
|
-
],
|
|
39
|
-
"outOfScope": [
|
|
40
|
-
"JSON export",
|
|
41
|
-
"scheduled reporting",
|
|
42
|
-
"shared reporting backend"
|
|
43
|
-
],
|
|
44
|
-
"furtherNotes": [
|
|
45
|
-
"Richer machine-readable exports should become a separate requirement"
|
|
46
|
-
]
|
|
13
|
+
"aiLeverageDecisionLens": {
|
|
14
|
+
"realUserOrOperator": "workspace admin preparing weekly review notes",
|
|
15
|
+
"statusQuoWorkaround": "manual copy of visible audit rows",
|
|
16
|
+
"humanTeamEffortForFullScope": "about one day for an engineer to implement, test, and document the local export",
|
|
17
|
+
"ccAgentEffortForFullScope": "about 30 minutes for visible-row CSV export plus targeted test and lint",
|
|
18
|
+
"aiCompressionRatio": "roughly 10x for the bounded local export path",
|
|
19
|
+
"completeLakeBoundary": "visible-row CSV export, panel action, current data source, targeted panel test, and lint",
|
|
20
|
+
"oceanBoundary": "JSON export, scheduled reporting, shared reporting backend, and cross-panel reporting platform",
|
|
21
|
+
"scopeRecommendation": "boil-lake",
|
|
22
|
+
"costModel": {
|
|
23
|
+
"agentTime": "low",
|
|
24
|
+
"humanReviewTime": "low",
|
|
25
|
+
"verificationCost": "targeted panel test plus lint",
|
|
26
|
+
"maintenanceCost": "low while scoped to visible rows",
|
|
27
|
+
"failureCost": "admins keep copying rows manually",
|
|
28
|
+
"reversibility": "reversible UI action"
|
|
29
|
+
},
|
|
30
|
+
"verdict": "boil-lake",
|
|
31
|
+
"missingEvidenceOrPivotReason": "",
|
|
32
|
+
"impactOnApprovedDirection": "complete the local visible-row export lake while deferring reporting platform work"
|
|
47
33
|
},
|
|
48
34
|
"externalBestPractice": {
|
|
49
35
|
"needed": false,
|
|
@@ -89,31 +75,9 @@
|
|
|
89
75
|
"impact": "cc-do exports only visible rows from the current panel and avoids new reporting contracts",
|
|
90
76
|
"status": "answered"
|
|
91
77
|
}
|
|
92
|
-
]
|
|
93
|
-
"aiLeverageDecisionLens": {
|
|
94
|
-
"realUserOrOperator": "workspace admin preparing weekly review notes",
|
|
95
|
-
"statusQuoWorkaround": "manual copy of visible audit rows",
|
|
96
|
-
"humanTeamEffortForFullScope": "about one day for an engineer to implement, test, and document the local export",
|
|
97
|
-
"ccAgentEffortForFullScope": "about 30 minutes for visible-row CSV export plus targeted test and lint",
|
|
98
|
-
"aiCompressionRatio": "roughly 10x for the bounded local export path",
|
|
99
|
-
"completeLakeBoundary": "visible-row CSV export, panel action, current data source, targeted panel test, and lint",
|
|
100
|
-
"oceanBoundary": "JSON export, scheduled reporting, shared reporting backend, and cross-panel reporting platform",
|
|
101
|
-
"scopeRecommendation": "boil-lake",
|
|
102
|
-
"costModel": {
|
|
103
|
-
"agentTime": "low",
|
|
104
|
-
"humanReviewTime": "low",
|
|
105
|
-
"verificationCost": "targeted panel test plus lint",
|
|
106
|
-
"maintenanceCost": "low while scoped to visible rows",
|
|
107
|
-
"failureCost": "admins keep copying rows manually",
|
|
108
|
-
"reversibility": "reversible UI action"
|
|
109
|
-
},
|
|
110
|
-
"verdict": "boil-lake",
|
|
111
|
-
"missingEvidenceOrPivotReason": "",
|
|
112
|
-
"impactOnApprovedDirection": "complete the local visible-row export lake while deferring reporting platform work"
|
|
113
|
-
}
|
|
78
|
+
]
|
|
114
79
|
},
|
|
115
80
|
"currentTaskId": null,
|
|
116
|
-
"activePhase": null,
|
|
117
81
|
"tasks": [
|
|
118
82
|
{
|
|
119
83
|
"id": "T001",
|
|
@@ -178,45 +142,7 @@
|
|
|
178
142
|
"type": "automated-test",
|
|
179
143
|
"determinism": "deterministic",
|
|
180
144
|
"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
|
-
]
|
|
145
|
+
}
|
|
220
146
|
},
|
|
221
147
|
{
|
|
222
148
|
"id": "T002",
|
|
@@ -283,45 +209,7 @@
|
|
|
283
209
|
"type": "automated-test",
|
|
284
210
|
"determinism": "deterministic",
|
|
285
211
|
"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
|
-
]
|
|
212
|
+
}
|
|
325
213
|
},
|
|
326
214
|
{
|
|
327
215
|
"id": "T003",
|
|
@@ -392,84 +280,12 @@
|
|
|
392
280
|
"type": "automated-test",
|
|
393
281
|
"determinism": "deterministic",
|
|
394
282
|
"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
|
-
]
|
|
283
|
+
}
|
|
434
284
|
}
|
|
435
285
|
],
|
|
436
286
|
"metadata": {
|
|
437
287
|
"source": "tasks.md",
|
|
438
288
|
"generatedBy": "docs-example",
|
|
439
289
|
"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
|
-
}
|
|
474
290
|
}
|
|
475
291
|
}
|
|
@@ -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.
|
|
7
|
+
- Bound skills: `cc-roadmap@5.3.0`, `cc-plan@3.8.5`, `cc-do@1.6.5`, `cc-check@1.10.1`, `cc-act@1.8.7`
|
|
8
8
|
|
|
9
9
|
This folder shows one minimal but complete `cc-roadmap -> cc-plan -> cc-do -> cc-check -> cc-act` loop.
|
|
10
10
|
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# PR Brief
|
|
2
2
|
|
|
3
|
+
## Document Meta
|
|
4
|
+
|
|
5
|
+
- Output language: en
|
|
6
|
+
|
|
3
7
|
## Decision
|
|
4
8
|
|
|
5
9
|
- Recommended mode: `create-pr`
|
|
@@ -39,6 +43,66 @@
|
|
|
39
43
|
- Documentation release: README and CLAUDE unchanged for this scoped example
|
|
40
44
|
- PR body accuracy: regenerate the PR body from this brief, current report-card, and current diff
|
|
41
45
|
|
|
46
|
+
## Pull Request Body Contract
|
|
47
|
+
|
|
48
|
+
- Language source: `Output language: en`
|
|
49
|
+
- PR body language: English
|
|
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 `review/report-card.json`, doc sync output, and roadmap/backlog writeback.
|
|
52
|
+
- Required sections: summary, problem, changes, validation, review/gate evidence, risk/rollback, docs/writeback, and follow-ups.
|
|
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
|
+
|
|
55
|
+
## Pull Request Body Draft
|
|
56
|
+
|
|
57
|
+
```markdown
|
|
58
|
+
## Summary
|
|
59
|
+
|
|
60
|
+
- removes a small but visible sharing friction in the beta flow
|
|
61
|
+
- keeps the patch inside the approved `tiny-design` boundary
|
|
62
|
+
- ships with fresh test, lint, and review proof
|
|
63
|
+
|
|
64
|
+
## Problem
|
|
65
|
+
|
|
66
|
+
- Requirement: `RM-001` / `REQ-001`
|
|
67
|
+
- User-visible gap: users can see the invite URL but cannot copy it with one click from the share dialog.
|
|
68
|
+
|
|
69
|
+
## Changes
|
|
70
|
+
|
|
71
|
+
- adds a `Copy invite link` action beside the existing invite URL
|
|
72
|
+
- reuses the current invite link source of truth
|
|
73
|
+
- adds copied-state confirmation without redesigning the dialog
|
|
74
|
+
|
|
75
|
+
## Validation
|
|
76
|
+
|
|
77
|
+
- `report-card.json` verdict: `pass`
|
|
78
|
+
- `npm test -- src/features/share/ShareDialog.test.tsx`
|
|
79
|
+
- `npm run lint -- src/features/share/ShareDialog.tsx`
|
|
80
|
+
|
|
81
|
+
## Review / Gate Evidence
|
|
82
|
+
|
|
83
|
+
- Reviewed base SHA: `example-base`
|
|
84
|
+
- Reviewed head SHA: `example-head`
|
|
85
|
+
- Review packet: `planning/tasks.md#T001-T003`; `planning/design.md`
|
|
86
|
+
- Finding triage: no findings
|
|
87
|
+
- QA / claim evidence: `qa=pass`, `tests-pass=pass`, `requirements-met=pass`
|
|
88
|
+
- Readiness: review freshness=`fresh`; QA coverage has no gaps; browser QA intentionally skipped for this fixture.
|
|
89
|
+
|
|
90
|
+
## Risk And Rollback
|
|
91
|
+
|
|
92
|
+
- Main risk: copied-state feedback may still be too subtle for some users.
|
|
93
|
+
- Rollback boundary: revert the share-dialog change and targeted test in one commit; no data migration or external side effect is involved.
|
|
94
|
+
|
|
95
|
+
## Docs And Writeback
|
|
96
|
+
|
|
97
|
+
- `CLAUDE.md`: unchanged
|
|
98
|
+
- `README.md`: unchanged
|
|
99
|
+
- Roadmap progress: `RM-001` is ready for PR review after this create-pr handoff.
|
|
100
|
+
|
|
101
|
+
## Follow-ups
|
|
102
|
+
|
|
103
|
+
- If users still miss the feedback, lift `RM-002` into the next requirement.
|
|
104
|
+
```
|
|
105
|
+
|
|
42
106
|
## Summary
|
|
43
107
|
|
|
44
108
|
- removes a small but visible sharing friction in the beta flow
|
|
@@ -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.5`
|
|
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
|