cc-devflow 4.5.5 → 4.5.7
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/PLAYBOOK.md +2 -2
- package/.claude/skills/cc-act/SKILL.md +2 -2
- package/.claude/skills/cc-act/scripts/{archive-requirement.sh → archive-change.sh} +7 -7
- package/.claude/skills/cc-investigate/CHANGELOG.md +5 -0
- package/.claude/skills/cc-investigate/SKILL.md +2 -2
- package/.claude/skills/cc-plan/CHANGELOG.md +34 -0
- package/.claude/skills/cc-plan/PLAYBOOK.md +22 -17
- package/.claude/skills/cc-plan/SKILL.md +135 -12
- package/.claude/skills/cc-plan/assets/DESIGN_TEMPLATE.md +51 -0
- package/.claude/skills/cc-plan/assets/TASKS_TEMPLATE.md +2 -0
- package/.claude/skills/cc-plan/assets/TASK_MANIFEST_TEMPLATE.json +66 -3
- package/.claude/skills/cc-plan/assets/TINY_DESIGN_TEMPLATE.md +37 -0
- package/.claude/skills/cc-plan/references/planning-contract.md +33 -10
- package/.claude/skills/cc-plan/scripts/next-change-key.sh +78 -0
- package/.claude/skills/cc-review/CHANGELOG.md +7 -0
- package/.claude/skills/cc-review/PLAYBOOK.md +54 -0
- package/.claude/skills/cc-review/SKILL.md +173 -0
- package/.claude/skills/cc-review/references/e2e-and-plugin-verification.md +81 -0
- package/.claude/skills/cc-review/references/implementation-review-branch.md +115 -0
- package/.claude/skills/cc-review/references/plan-review-branch.md +116 -0
- package/.claude/skills/cc-review/references/review-methods.md +126 -0
- package/.claude/skills/cc-roadmap/CHANGELOG.md +6 -0
- package/.claude/skills/cc-roadmap/SKILL.md +102 -8
- package/.claude/skills/cc-roadmap/assets/BACKLOG_TEMPLATE.md +3 -0
- package/.claude/skills/cc-roadmap/assets/ROADMAP_TEMPLATE.md +23 -0
- package/.claude/skills/cc-roadmap/assets/TRACKING_TEMPLATE.json +20 -1
- package/.claude/skills/cc-roadmap/references/roadmap-dialogue.md +28 -13
- package/.claude/skills/cc-roadmap/scripts/lib/roadmap-tracking/markdown.js +18 -0
- package/.claude/skills/cc-roadmap/scripts/lib/roadmap-tracking/schema.js +8 -0
- package/CHANGELOG.md +21 -0
- package/README.md +10 -5
- package/README.zh-CN.md +10 -5
- package/bin/cc-devflow-cli.js +135 -2
- package/config/distributable-skills.json +2 -0
- package/docs/CLAUDE.md +1 -1
- package/docs/examples/example-bindings.json +5 -4
- 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 +16 -1
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/design.md +42 -1
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json +345 -65
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md +2 -1
- package/docs/examples/full-design-blocked/roadmap.json +18 -2
- 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 +16 -1
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/design.md +34 -1
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json +197 -39
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/tasks.md +2 -1
- package/docs/examples/local-handoff/roadmap.json +16 -2
- 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 +16 -1
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/design.md +34 -1
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json +89 -8
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md +2 -1
- package/docs/examples/pdca-loop/roadmap.json +16 -2
- package/docs/examples/scripts/check-example-bindings.sh +2 -0
- package/docs/guides/getting-started.md +13 -10
- package/docs/guides/getting-started.zh-CN.md +13 -10
- package/lib/skill-runtime/__tests__/archive-change.test.js +124 -0
- package/lib/skill-runtime/__tests__/autopilot.test.js +13 -10
- package/lib/skill-runtime/__tests__/cli-bootstrap.integration.test.js +1 -0
- package/lib/skill-runtime/__tests__/paths.test.js +106 -1
- package/lib/skill-runtime/__tests__/query.test.js +49 -0
- package/lib/skill-runtime/archive-change.js +64 -0
- package/lib/skill-runtime/artifacts.js +2 -2
- package/lib/skill-runtime/intent.js +14 -14
- package/lib/skill-runtime/operations/autopilot-shared.js +4 -4
- package/lib/skill-runtime/paths.js +60 -7
- package/lib/skill-runtime/query-registry.js +3 -3
- package/lib/skill-runtime/query.js +30 -30
- package/package.json +2 -1
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.
|
|
9
|
+
"reqPlanSkillVersion": "3.8.1",
|
|
10
10
|
"designVersion": "design.v1",
|
|
11
11
|
"approvedAt": "2026-04-16T13:10:00.000Z",
|
|
12
12
|
"approvedBy": "user",
|
|
@@ -14,21 +14,102 @@
|
|
|
14
14
|
"requirementBrief": {
|
|
15
15
|
"problemStatement": "Admins can review audit summary rows in the UI, but weekly reporting requires manual copying.",
|
|
16
16
|
"solutionSummary": "Add a CSV download action for the currently visible audit summary rows.",
|
|
17
|
-
"actors": [
|
|
17
|
+
"actors": [
|
|
18
|
+
"workspace admin reviewing weekly activity"
|
|
19
|
+
],
|
|
18
20
|
"userStories": [
|
|
19
21
|
{
|
|
20
22
|
"id": "US-001",
|
|
21
23
|
"actor": "workspace admin",
|
|
22
24
|
"want": "download visible audit summary rows as CSV",
|
|
23
25
|
"benefit": "include them in weekly reporting without manual copying",
|
|
24
|
-
"acceptance": [
|
|
26
|
+
"acceptance": [
|
|
27
|
+
"Panel behavior test proves the export action uses current summary rows"
|
|
28
|
+
]
|
|
25
29
|
}
|
|
26
30
|
],
|
|
27
31
|
"edgeOrRecoveryStories": [],
|
|
28
|
-
"implementationDecisions": [
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
+
"implementationDecisions": [
|
|
33
|
+
"Export only rows already visible in the panel",
|
|
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
|
+
]
|
|
47
|
+
},
|
|
48
|
+
"externalBestPractice": {
|
|
49
|
+
"needed": false,
|
|
50
|
+
"decisionStatus": "not-needed",
|
|
51
|
+
"decisionQuestionId": "",
|
|
52
|
+
"privacyGuard": "generalized terms only; no project names, private requirements, customer names, secrets, logs, or proprietary concepts",
|
|
53
|
+
"generalizedSearchTerms": [],
|
|
54
|
+
"sourcesChecked": [],
|
|
55
|
+
"conventionalWisdom": "",
|
|
56
|
+
"currentDiscourse": "",
|
|
57
|
+
"repoFitVerdict": "skipped",
|
|
58
|
+
"designImpacts": [],
|
|
59
|
+
"skippedReason": "the local handoff exports existing visible rows and does not introduce a new reporting standard"
|
|
60
|
+
},
|
|
61
|
+
"decisionQuestions": [
|
|
62
|
+
{
|
|
63
|
+
"questionId": "D1",
|
|
64
|
+
"gate": "approach-approval",
|
|
65
|
+
"knownEvidence": [
|
|
66
|
+
"Existing admin panel already owns the visible summary rows",
|
|
67
|
+
"No reporting backend is needed for the first useful export"
|
|
68
|
+
],
|
|
69
|
+
"recommendation": "Approve the tiny-design CSV export",
|
|
70
|
+
"options": [
|
|
71
|
+
{
|
|
72
|
+
"id": "A",
|
|
73
|
+
"label": "Tiny design CSV export",
|
|
74
|
+
"recommended": true,
|
|
75
|
+
"completeness": "8/10",
|
|
76
|
+
"good": "Solves weekly reporting friction with the current panel data",
|
|
77
|
+
"costRisk": "Does not handle JSON, scheduling, or shared reporting contracts"
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"id": "B",
|
|
81
|
+
"label": "Shared reporting pipeline",
|
|
82
|
+
"recommended": false,
|
|
83
|
+
"completeness": "10/10",
|
|
84
|
+
"good": "Could support more formats and future scheduled reports",
|
|
85
|
+
"costRisk": "Creates a larger platform surface before the local export is proven"
|
|
86
|
+
}
|
|
87
|
+
],
|
|
88
|
+
"userChoice": "A",
|
|
89
|
+
"impact": "cc-do exports only visible rows from the current panel and avoids new reporting contracts",
|
|
90
|
+
"status": "answered"
|
|
91
|
+
}
|
|
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"
|
|
32
113
|
}
|
|
33
114
|
},
|
|
34
115
|
"currentTaskId": null,
|
|
@@ -41,19 +122,45 @@
|
|
|
41
122
|
"phase": 1,
|
|
42
123
|
"parallel": false,
|
|
43
124
|
"dependsOn": [],
|
|
44
|
-
"touches": [
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
"
|
|
49
|
-
|
|
50
|
-
|
|
125
|
+
"touches": [
|
|
126
|
+
"audit-summary",
|
|
127
|
+
"tests"
|
|
128
|
+
],
|
|
129
|
+
"files": [
|
|
130
|
+
"src/admin/AuditSummaryPanel.test.tsx"
|
|
131
|
+
],
|
|
132
|
+
"run": [
|
|
133
|
+
"npm test -- src/admin/AuditSummaryPanel.test.tsx"
|
|
134
|
+
],
|
|
135
|
+
"checks": [
|
|
136
|
+
"test fails before implementation"
|
|
137
|
+
],
|
|
138
|
+
"acceptance": [
|
|
139
|
+
"the missing download action is reproduced as a failing test"
|
|
140
|
+
],
|
|
141
|
+
"verification": [
|
|
142
|
+
"npm test -- src/admin/AuditSummaryPanel.test.tsx"
|
|
143
|
+
],
|
|
144
|
+
"evidence": [
|
|
145
|
+
"failing test output"
|
|
146
|
+
],
|
|
51
147
|
"context": {
|
|
52
|
-
"readFiles": [
|
|
53
|
-
|
|
54
|
-
|
|
148
|
+
"readFiles": [
|
|
149
|
+
"design.md",
|
|
150
|
+
"tasks.md",
|
|
151
|
+
"src/admin/AuditSummaryPanel.tsx"
|
|
152
|
+
],
|
|
153
|
+
"commands": [
|
|
154
|
+
"npm test -- src/admin/AuditSummaryPanel.test.tsx"
|
|
155
|
+
],
|
|
156
|
+
"notes": [
|
|
157
|
+
"stay inside the current audit summary panel"
|
|
158
|
+
]
|
|
159
|
+
},
|
|
160
|
+
"reviews": {
|
|
161
|
+
"spec": "pass",
|
|
162
|
+
"code": "pass"
|
|
55
163
|
},
|
|
56
|
-
"reviews": { "spec": "pass", "code": "pass" },
|
|
57
164
|
"status": "passed",
|
|
58
165
|
"attempts": 1,
|
|
59
166
|
"maxRetries": 1
|
|
@@ -64,20 +171,48 @@
|
|
|
64
171
|
"type": "IMPL",
|
|
65
172
|
"phase": 1,
|
|
66
173
|
"parallel": false,
|
|
67
|
-
"dependsOn": [
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
"
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
"
|
|
74
|
-
|
|
174
|
+
"dependsOn": [
|
|
175
|
+
"T001"
|
|
176
|
+
],
|
|
177
|
+
"touches": [
|
|
178
|
+
"audit-summary"
|
|
179
|
+
],
|
|
180
|
+
"files": [
|
|
181
|
+
"src/admin/AuditSummaryPanel.tsx"
|
|
182
|
+
],
|
|
183
|
+
"run": [
|
|
184
|
+
"npm test -- src/admin/AuditSummaryPanel.test.tsx"
|
|
185
|
+
],
|
|
186
|
+
"checks": [
|
|
187
|
+
"panel test passes"
|
|
188
|
+
],
|
|
189
|
+
"acceptance": [
|
|
190
|
+
"admins can trigger a CSV download from the existing summary panel"
|
|
191
|
+
],
|
|
192
|
+
"verification": [
|
|
193
|
+
"npm test -- src/admin/AuditSummaryPanel.test.tsx"
|
|
194
|
+
],
|
|
195
|
+
"evidence": [
|
|
196
|
+
"passing test output",
|
|
197
|
+
"checkpoint summary"
|
|
198
|
+
],
|
|
75
199
|
"context": {
|
|
76
|
-
"readFiles": [
|
|
77
|
-
|
|
78
|
-
|
|
200
|
+
"readFiles": [
|
|
201
|
+
"design.md",
|
|
202
|
+
"tasks.md",
|
|
203
|
+
"src/admin/AuditSummaryPanel.test.tsx"
|
|
204
|
+
],
|
|
205
|
+
"commands": [
|
|
206
|
+
"npm test -- src/admin/AuditSummaryPanel.test.tsx"
|
|
207
|
+
],
|
|
208
|
+
"notes": [
|
|
209
|
+
"reuse visible summary rows as the export source"
|
|
210
|
+
]
|
|
211
|
+
},
|
|
212
|
+
"reviews": {
|
|
213
|
+
"spec": "pass",
|
|
214
|
+
"code": "pass"
|
|
79
215
|
},
|
|
80
|
-
"reviews": { "spec": "pass", "code": "pass" },
|
|
81
216
|
"status": "passed",
|
|
82
217
|
"attempts": 1,
|
|
83
218
|
"maxRetries": 1
|
|
@@ -88,29 +223,52 @@
|
|
|
88
223
|
"type": "OTHER",
|
|
89
224
|
"phase": 2,
|
|
90
225
|
"parallel": false,
|
|
91
|
-
"dependsOn": [
|
|
92
|
-
|
|
93
|
-
|
|
226
|
+
"dependsOn": [
|
|
227
|
+
"T002"
|
|
228
|
+
],
|
|
229
|
+
"touches": [
|
|
230
|
+
"quality-gates"
|
|
231
|
+
],
|
|
232
|
+
"files": [
|
|
233
|
+
"src/admin/AuditSummaryPanel.tsx",
|
|
234
|
+
"src/admin/AuditSummaryPanel.test.tsx"
|
|
235
|
+
],
|
|
94
236
|
"run": [
|
|
95
237
|
"npm test -- src/admin/AuditSummaryPanel.test.tsx",
|
|
96
238
|
"npm run lint -- src/admin/AuditSummaryPanel.tsx"
|
|
97
239
|
],
|
|
98
|
-
"checks": [
|
|
99
|
-
|
|
240
|
+
"checks": [
|
|
241
|
+
"targeted tests pass",
|
|
242
|
+
"lint passes"
|
|
243
|
+
],
|
|
244
|
+
"acceptance": [
|
|
245
|
+
"fresh verification evidence exists for local handoff"
|
|
246
|
+
],
|
|
100
247
|
"verification": [
|
|
101
248
|
"npm test -- src/admin/AuditSummaryPanel.test.tsx",
|
|
102
249
|
"npm run lint -- src/admin/AuditSummaryPanel.tsx"
|
|
103
250
|
],
|
|
104
|
-
"evidence": [
|
|
251
|
+
"evidence": [
|
|
252
|
+
"passing test output",
|
|
253
|
+
"clean lint output"
|
|
254
|
+
],
|
|
105
255
|
"context": {
|
|
106
|
-
"readFiles": [
|
|
256
|
+
"readFiles": [
|
|
257
|
+
"tasks.md",
|
|
258
|
+
"task-manifest.json"
|
|
259
|
+
],
|
|
107
260
|
"commands": [
|
|
108
261
|
"npm test -- src/admin/AuditSummaryPanel.test.tsx",
|
|
109
262
|
"npm run lint -- src/admin/AuditSummaryPanel.tsx"
|
|
110
263
|
],
|
|
111
|
-
"notes": [
|
|
264
|
+
"notes": [
|
|
265
|
+
"remote push is intentionally out of scope for this example"
|
|
266
|
+
]
|
|
267
|
+
},
|
|
268
|
+
"reviews": {
|
|
269
|
+
"spec": "pass",
|
|
270
|
+
"code": "pass"
|
|
112
271
|
},
|
|
113
|
-
"reviews": { "spec": "pass", "code": "pass" },
|
|
114
272
|
"status": "passed",
|
|
115
273
|
"attempts": 1,
|
|
116
274
|
"maxRetries": 1
|
|
@@ -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.8.1`
|
|
8
8
|
- Source roadmap item: `RM-020`
|
|
9
9
|
- Source roadmap version: `roadmap.v3`
|
|
10
10
|
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
- Implementation decisions: export visible rows only, CSV only
|
|
23
23
|
- Testing decisions: test through admin panel action and visible row data
|
|
24
24
|
- Out of scope: JSON export, scheduled reporting, shared reporting backend
|
|
25
|
+
- AI Leverage Decision Lens: boil-lake; complete visible-row CSV export while keeping reporting-platform work outside the lake
|
|
25
26
|
- Read first:
|
|
26
27
|
- `design.md`
|
|
27
28
|
- `src/admin/AuditSummaryPanel.tsx`
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
},
|
|
6
6
|
"meta": {
|
|
7
7
|
"roadmapVersion": "roadmap.v2",
|
|
8
|
-
"skillVersion": "5.
|
|
8
|
+
"skillVersion": "5.2.0",
|
|
9
9
|
"status": "active",
|
|
10
10
|
"lastUpdated": "2026-04-19",
|
|
11
11
|
"currentFocusStage": "Stage 2"
|
|
@@ -14,7 +14,21 @@
|
|
|
14
14
|
"planningPosture": "",
|
|
15
15
|
"evidenceMaturity": "",
|
|
16
16
|
"canonicalTerms": [],
|
|
17
|
-
"durableDecisionSources": []
|
|
17
|
+
"durableDecisionSources": [],
|
|
18
|
+
"aiLeverageRouteLens": {
|
|
19
|
+
"realUserOrOperator": "workspace admin preparing weekly activity review notes",
|
|
20
|
+
"statusQuoWorkaround": "manual copy of visible audit rows into an internal note",
|
|
21
|
+
"humanTeamEffortForFullScope": "about one day for an engineer to implement, test, and document the local export",
|
|
22
|
+
"ccAgentEffortForFullScope": "about 30 minutes for visible-row CSV export plus targeted test and lint",
|
|
23
|
+
"aiCompressionRatio": "roughly 10x for the bounded local export path",
|
|
24
|
+
"completeLakeBoundary": "visible-row CSV export, panel action, current data source, targeted panel test, and lint",
|
|
25
|
+
"oceanBoundary": "JSON export, scheduled reporting, shared reporting backend, and cross-panel reporting platform",
|
|
26
|
+
"scopeRecommendation": "boil-lake",
|
|
27
|
+
"firstSuccessSignal": "admins finish weekly review without manual row copying",
|
|
28
|
+
"killSignal": "implementation requires shared reporting pipeline redesign",
|
|
29
|
+
"verdict": "boil-lake",
|
|
30
|
+
"missingEvidence": []
|
|
31
|
+
}
|
|
18
32
|
},
|
|
19
33
|
"evidence": [],
|
|
20
34
|
"route": {
|
|
@@ -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.2.0`, `cc-plan@3.8.1`, `cc-do@1.6.2`, `cc-check@1.10.1`, `cc-act@1.8.2`
|
|
8
8
|
|
|
9
9
|
This folder shows one minimal but complete `cc-roadmap -> cc-plan -> cc-do -> cc-check -> cc-act` loop.
|
|
10
10
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
## Roadmap Meta
|
|
4
4
|
|
|
5
5
|
- Roadmap version: `roadmap.v1`
|
|
6
|
-
- Skill version: `5.
|
|
6
|
+
- Skill version: `5.2.0`
|
|
7
7
|
- Status: `active`
|
|
8
8
|
- Last updated: `2026-04-15`
|
|
9
9
|
- Owner / decider: `product-owner`
|
|
@@ -36,6 +36,21 @@
|
|
|
36
36
|
| Feasibility | Existing dialog already renders the URL and clipboard API is available | High | current UI behavior | This is a tiny patch, not a redesign |
|
|
37
37
|
| Distribution | Successful sharing unlocks more beta seats | Med | product notes | A smoother invite loop increases activation |
|
|
38
38
|
|
|
39
|
+
## AI Leverage Route Lens
|
|
40
|
+
|
|
41
|
+
- Real user / operator: workspace member sharing an invite during beta onboarding
|
|
42
|
+
- Status quo workaround: manually select and copy the visible invite URL
|
|
43
|
+
- Human-team effort for full scope: about half a day for one engineer including test and review
|
|
44
|
+
- CC / agent effort for full scope: about 20 minutes for a targeted UI patch plus test update
|
|
45
|
+
- AI compression ratio: roughly 10x for this bounded UI slice
|
|
46
|
+
- Complete-lake boundary: copy action, current invite URL source, copied-state feedback, and dialog behavior test
|
|
47
|
+
- Ocean boundary: backend invite generation, permissions, analytics, and clipboard fallback redesign
|
|
48
|
+
- Scope recommendation: `boil-lake`
|
|
49
|
+
- First success signal: users copy the invite link without asking support
|
|
50
|
+
- Kill signal: implementation requires backend or permission changes
|
|
51
|
+
- Verdict: `boil-lake`
|
|
52
|
+
- Missing evidence before ready-for-cc-plan: none
|
|
53
|
+
|
|
39
54
|
## Route Options
|
|
40
55
|
|
|
41
56
|
| Shape | Why this could work | Why this may fail | Decision |
|
|
@@ -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.8.1`
|
|
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
|
|
@@ -67,6 +67,30 @@
|
|
|
67
67
|
- Risk: copied-state feedback may be too subtle for users
|
|
68
68
|
- Mitigation: keep the first patch minimal and log a follow-up roadmap item if support friction remains
|
|
69
69
|
|
|
70
|
+
## AI Leverage Decision Lens
|
|
71
|
+
|
|
72
|
+
- Real user / operator: workspace member sharing an invite
|
|
73
|
+
- Status quo workaround: manually select the visible invite URL
|
|
74
|
+
- Human-team effort for full scope: about half a day for one engineer including test and review
|
|
75
|
+
- CC / agent effort for full scope: about 20 minutes for a targeted UI patch plus test update
|
|
76
|
+
- AI compression ratio: roughly 10x for this bounded UI slice
|
|
77
|
+
- Complete-lake boundary: copy action, current invite URL source, copied-state feedback, and dialog behavior test
|
|
78
|
+
- Ocean boundary: invite generation, permissions, analytics, and clipboard fallback redesign
|
|
79
|
+
- Scope recommendation: `boil-lake`
|
|
80
|
+
- Cost model: low agent time, low human review time, targeted dialog test, no backend maintenance cost, reversible UI patch
|
|
81
|
+
- Verdict: `boil-lake`
|
|
82
|
+
- Missing evidence or pivot reason: none
|
|
83
|
+
|
|
84
|
+
## External Best-Practice Validation
|
|
85
|
+
|
|
86
|
+
- Needed: No
|
|
87
|
+
- Decision status: not-needed
|
|
88
|
+
- Generalized search terms:
|
|
89
|
+
- Sources checked:
|
|
90
|
+
- Repo-fit verdict: skipped
|
|
91
|
+
- Changes to frozen design:
|
|
92
|
+
- Skipped reason: existing share-dialog behavior and repo tests are sufficient for the tiny design
|
|
93
|
+
|
|
70
94
|
## Review Gate
|
|
71
95
|
|
|
72
96
|
- Placeholder scan: pass
|
|
@@ -75,8 +99,17 @@
|
|
|
75
99
|
- Ambiguity scan: pass; execution does not need to re-decide button placement or clipboard source
|
|
76
100
|
- Feasibility scan: pass; existing dialog and tests already cover the target surface
|
|
77
101
|
- PRD brief scan: pass; problem, story, implementation decision, testing decision, and out-of-scope are durable
|
|
102
|
+
- AI Leverage Decision Lens scan: pass; bounded same-dialog lake is cheap enough to complete, not just render a happy-path button
|
|
103
|
+
- External best-practice scan: pass; not needed for a repo-local tiny design
|
|
104
|
+
- Decision question scan: pass; `D1` approved the tiny-design copy-action boundary
|
|
78
105
|
- Final recommendation: approved as `tiny-design`
|
|
79
106
|
|
|
107
|
+
## Decision Questions
|
|
108
|
+
|
|
109
|
+
| ID | Gate | Known evidence | Recommendation | User choice | Impact on `cc-do` | Status |
|
|
110
|
+
|----|------|----------------|----------------|-------------|-------------------|--------|
|
|
111
|
+
| D1 | approach-approval | Existing dialog already renders the invite URL and the change stays inside one UI/test surface | Approve the tiny-design copy action | Tiny design copy action | Keep implementation inside the share dialog; do not add backend or permission work | answered |
|
|
112
|
+
|
|
80
113
|
## Approval
|
|
81
114
|
|
|
82
115
|
- User approval status: approved
|
package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"sourceRoadmap": {
|
|
10
10
|
"itemId": "RM-001",
|
|
11
11
|
"roadmapVersion": "roadmap.v1",
|
|
12
|
-
"roadmapSkillVersion": "5.
|
|
12
|
+
"roadmapSkillVersion": "5.2.0",
|
|
13
13
|
"sourceStage": "Stage 1",
|
|
14
14
|
"successSignal": "Users can copy the invite link with one click",
|
|
15
15
|
"killSignal": "The patch requires backend or permission changes",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
]
|
|
23
23
|
},
|
|
24
24
|
"planningMeta": {
|
|
25
|
-
"reqPlanSkillVersion": "3.
|
|
25
|
+
"reqPlanSkillVersion": "3.8.1",
|
|
26
26
|
"designVersion": "design.v1",
|
|
27
27
|
"approvedAt": "2026-04-15T10:05:00.000Z",
|
|
28
28
|
"approvedBy": "user",
|
|
@@ -30,21 +30,102 @@
|
|
|
30
30
|
"requirementBrief": {
|
|
31
31
|
"problemStatement": "Users can see the invite URL, but copying it still requires manual selection.",
|
|
32
32
|
"solutionSummary": "Add a one-click copy action with lightweight confirmation inside the existing share dialog.",
|
|
33
|
-
"actors": [
|
|
33
|
+
"actors": [
|
|
34
|
+
"workspace member sharing an invite"
|
|
35
|
+
],
|
|
34
36
|
"userStories": [
|
|
35
37
|
{
|
|
36
38
|
"id": "US-001",
|
|
37
39
|
"actor": "workspace member",
|
|
38
40
|
"want": "copy the invite link with one click",
|
|
39
41
|
"benefit": "share it without manually selecting text",
|
|
40
|
-
"acceptance": [
|
|
42
|
+
"acceptance": [
|
|
43
|
+
"Dialog behavior test proves the current invite URL is copied"
|
|
44
|
+
]
|
|
41
45
|
}
|
|
42
46
|
],
|
|
43
47
|
"edgeOrRecoveryStories": [],
|
|
44
|
-
"implementationDecisions": [
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
"
|
|
48
|
+
"implementationDecisions": [
|
|
49
|
+
"Reuse the existing invite URL source and dialog props"
|
|
50
|
+
],
|
|
51
|
+
"testingDecisions": [
|
|
52
|
+
"Test through the share dialog behavior, not an internal helper"
|
|
53
|
+
],
|
|
54
|
+
"outOfScope": [
|
|
55
|
+
"invite generation",
|
|
56
|
+
"role controls",
|
|
57
|
+
"analytics",
|
|
58
|
+
"clipboard fallback redesign"
|
|
59
|
+
],
|
|
60
|
+
"furtherNotes": [
|
|
61
|
+
"Richer copied-state feedback is a separate UX requirement"
|
|
62
|
+
]
|
|
63
|
+
},
|
|
64
|
+
"externalBestPractice": {
|
|
65
|
+
"needed": false,
|
|
66
|
+
"decisionStatus": "not-needed",
|
|
67
|
+
"decisionQuestionId": "",
|
|
68
|
+
"privacyGuard": "generalized terms only; no project names, private requirements, customer names, secrets, logs, or proprietary concepts",
|
|
69
|
+
"generalizedSearchTerms": [],
|
|
70
|
+
"sourcesChecked": [],
|
|
71
|
+
"conventionalWisdom": "",
|
|
72
|
+
"currentDiscourse": "",
|
|
73
|
+
"repoFitVerdict": "skipped",
|
|
74
|
+
"designImpacts": [],
|
|
75
|
+
"skippedReason": "existing share-dialog behavior and repo tests are sufficient for the tiny design"
|
|
76
|
+
},
|
|
77
|
+
"decisionQuestions": [
|
|
78
|
+
{
|
|
79
|
+
"questionId": "D1",
|
|
80
|
+
"gate": "approach-approval",
|
|
81
|
+
"knownEvidence": [
|
|
82
|
+
"Existing dialog already renders the invite URL",
|
|
83
|
+
"The patch stays inside one UI/test surface"
|
|
84
|
+
],
|
|
85
|
+
"recommendation": "Approve the tiny-design copy action",
|
|
86
|
+
"options": [
|
|
87
|
+
{
|
|
88
|
+
"id": "A",
|
|
89
|
+
"label": "Tiny design copy action",
|
|
90
|
+
"recommended": true,
|
|
91
|
+
"completeness": "8/10",
|
|
92
|
+
"good": "Ships the visible user win with one dialog and one behavior test",
|
|
93
|
+
"costRisk": "Leaves richer feedback and clipboard fallback work for later"
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"id": "B",
|
|
97
|
+
"label": "Full share-flow redesign",
|
|
98
|
+
"recommended": false,
|
|
99
|
+
"completeness": "10/10",
|
|
100
|
+
"good": "Could solve broader invite UX issues in one larger pass",
|
|
101
|
+
"costRisk": "Expands beyond the roadmap wedge and touches unrelated share contracts"
|
|
102
|
+
}
|
|
103
|
+
],
|
|
104
|
+
"userChoice": "A",
|
|
105
|
+
"impact": "cc-do keeps implementation inside the share dialog and avoids backend or permission work",
|
|
106
|
+
"status": "answered"
|
|
107
|
+
}
|
|
108
|
+
],
|
|
109
|
+
"aiLeverageDecisionLens": {
|
|
110
|
+
"realUserOrOperator": "workspace member sharing an invite",
|
|
111
|
+
"statusQuoWorkaround": "manual selection and copy of the visible invite URL",
|
|
112
|
+
"humanTeamEffortForFullScope": "about half a day for one engineer including test and review",
|
|
113
|
+
"ccAgentEffortForFullScope": "about 20 minutes for a targeted UI patch plus test update",
|
|
114
|
+
"aiCompressionRatio": "roughly 10x for this bounded UI slice",
|
|
115
|
+
"completeLakeBoundary": "copy action, current invite URL source, copied-state feedback, and dialog behavior test",
|
|
116
|
+
"oceanBoundary": "invite generation, permissions, analytics, or clipboard fallback redesign",
|
|
117
|
+
"scopeRecommendation": "boil-lake",
|
|
118
|
+
"costModel": {
|
|
119
|
+
"agentTime": "low",
|
|
120
|
+
"humanReviewTime": "low",
|
|
121
|
+
"verificationCost": "targeted dialog test",
|
|
122
|
+
"maintenanceCost": "low while scoped to the dialog",
|
|
123
|
+
"failureCost": "sharing friction remains",
|
|
124
|
+
"reversibility": "reversible UI patch"
|
|
125
|
+
},
|
|
126
|
+
"verdict": "boil-lake",
|
|
127
|
+
"missingEvidenceOrPivotReason": "",
|
|
128
|
+
"impactOnApprovedDirection": "cover the full same-dialog copy lake instead of only a happy-path button render"
|
|
48
129
|
}
|
|
49
130
|
},
|
|
50
131
|
"currentTaskId": null,
|
|
@@ -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.8.1`
|
|
8
8
|
- Source roadmap item: `RM-001`
|
|
9
9
|
- Source roadmap version: `roadmap.v1`
|
|
10
10
|
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
- Implementation decisions: reuse existing invite URL source and dialog props
|
|
24
24
|
- Testing decisions: test through share dialog behavior
|
|
25
25
|
- Out of scope: invite generation, role controls, analytics, clipboard fallback redesign
|
|
26
|
+
- AI Leverage Decision Lens: boil-lake; complete the bounded same-dialog copy lake instead of stopping at a happy-path button
|
|
26
27
|
- Read first:
|
|
27
28
|
- `design.md`
|
|
28
29
|
- `src/features/share/ShareDialog.tsx`
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
},
|
|
6
6
|
"meta": {
|
|
7
7
|
"roadmapVersion": "roadmap.v1",
|
|
8
|
-
"skillVersion": "5.
|
|
8
|
+
"skillVersion": "5.2.0",
|
|
9
9
|
"status": "active",
|
|
10
10
|
"lastUpdated": "2026-04-19",
|
|
11
11
|
"currentFocusStage": "Stage 1"
|
|
@@ -14,7 +14,21 @@
|
|
|
14
14
|
"planningPosture": "",
|
|
15
15
|
"evidenceMaturity": "",
|
|
16
16
|
"canonicalTerms": [],
|
|
17
|
-
"durableDecisionSources": []
|
|
17
|
+
"durableDecisionSources": [],
|
|
18
|
+
"aiLeverageRouteLens": {
|
|
19
|
+
"realUserOrOperator": "workspace member sharing an invite during beta onboarding",
|
|
20
|
+
"statusQuoWorkaround": "manual selection and copy of the visible invite URL",
|
|
21
|
+
"humanTeamEffortForFullScope": "about half a day for one engineer including test and review",
|
|
22
|
+
"ccAgentEffortForFullScope": "about 20 minutes for a targeted UI patch plus test update",
|
|
23
|
+
"aiCompressionRatio": "roughly 10x for this bounded UI slice",
|
|
24
|
+
"completeLakeBoundary": "copy action, current invite URL source, copied-state feedback, and dialog behavior test",
|
|
25
|
+
"oceanBoundary": "backend invite generation, permissions, analytics, and clipboard fallback redesign",
|
|
26
|
+
"scopeRecommendation": "boil-lake",
|
|
27
|
+
"firstSuccessSignal": "users copy the invite link without asking support",
|
|
28
|
+
"killSignal": "implementation requires backend or permission changes",
|
|
29
|
+
"verdict": "boil-lake",
|
|
30
|
+
"missingEvidence": []
|
|
31
|
+
}
|
|
18
32
|
},
|
|
19
33
|
"evidence": [],
|
|
20
34
|
"route": {
|
|
@@ -38,6 +38,7 @@ ROADMAP_VERSION="$(skill_version cc-roadmap)"
|
|
|
38
38
|
REQ_PLAN_VERSION="$(skill_version cc-plan)"
|
|
39
39
|
INVESTIGATE_VERSION="$(skill_version cc-investigate)"
|
|
40
40
|
REQ_DO_VERSION="$(skill_version cc-do)"
|
|
41
|
+
REQ_REVIEW_VERSION="$(skill_version cc-review)"
|
|
41
42
|
REQ_CHECK_VERSION="$(skill_version cc-check)"
|
|
42
43
|
REQ_ACT_VERSION="$(skill_version cc-act)"
|
|
43
44
|
|
|
@@ -46,6 +47,7 @@ for pair in \
|
|
|
46
47
|
"cc-plan:$REQ_PLAN_VERSION" \
|
|
47
48
|
"cc-investigate:$INVESTIGATE_VERSION" \
|
|
48
49
|
"cc-do:$REQ_DO_VERSION" \
|
|
50
|
+
"cc-review:$REQ_REVIEW_VERSION" \
|
|
49
51
|
"cc-check:$REQ_CHECK_VERSION" \
|
|
50
52
|
"cc-act:$REQ_ACT_VERSION"
|
|
51
53
|
do
|