cc-devflow 4.5.4 → 4.5.6
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 +21 -5
- package/.claude/skills/cc-act/SKILL.md +21 -11
- package/.claude/skills/cc-act/assets/PR_BRIEF_TEMPLATE.md +10 -0
- package/.claude/skills/cc-act/assets/RELEASE_NOTE_TEMPLATE.md +8 -0
- package/.claude/skills/cc-act/references/closure-contract.md +3 -0
- package/.claude/skills/cc-act/scripts/cc-act-common.sh +48 -0
- package/.claude/skills/cc-act/scripts/generate-status-report.sh +3 -0
- package/.claude/skills/cc-act/scripts/render-pr-brief.sh +6 -0
- package/.claude/skills/cc-act/scripts/sync-act-docs.sh +13 -0
- package/.claude/skills/cc-do/CHANGELOG.md +6 -0
- package/.claude/skills/cc-do/PLAYBOOK.md +7 -6
- package/.claude/skills/cc-do/SKILL.md +27 -12
- package/.claude/skills/cc-do/references/execution-recovery.md +9 -0
- package/.claude/skills/cc-investigate/CHANGELOG.md +6 -0
- package/.claude/skills/cc-investigate/PLAYBOOK.md +5 -1
- package/.claude/skills/cc-investigate/SKILL.md +22 -5
- package/.claude/skills/cc-investigate/assets/ANALYSIS_TEMPLATE.md +14 -0
- package/.claude/skills/cc-investigate/assets/TASKS_TEMPLATE.md +1 -0
- package/.claude/skills/cc-investigate/assets/TASK_MANIFEST_TEMPLATE.json +9 -1
- package/.claude/skills/cc-investigate/references/investigation-contract.md +2 -0
- package/.claude/skills/cc-plan/CHANGELOG.md +35 -0
- package/.claude/skills/cc-plan/PLAYBOOK.md +41 -19
- package/.claude/skills/cc-plan/SKILL.md +132 -47
- package/.claude/skills/cc-plan/assets/DESIGN_TEMPLATE.md +77 -3
- package/.claude/skills/cc-plan/assets/TASKS_TEMPLATE.md +28 -5
- package/.claude/skills/cc-plan/assets/TASK_MANIFEST_TEMPLATE.json +84 -3
- package/.claude/skills/cc-plan/assets/TINY_DESIGN_TEMPLATE.md +51 -0
- package/.claude/skills/cc-plan/references/planning-contract.md +47 -15
- package/.claude/skills/cc-roadmap/CHANGELOG.md +12 -0
- package/.claude/skills/cc-roadmap/PLAYBOOK.md +15 -9
- package/.claude/skills/cc-roadmap/SKILL.md +22 -16
- package/.claude/skills/cc-roadmap/assets/BACKLOG_TEMPLATE.md +3 -1
- package/.claude/skills/cc-roadmap/assets/ROADMAP_TEMPLATE.md +11 -1
- package/.claude/skills/cc-roadmap/assets/TRACKING_TEMPLATE.json +57 -10
- package/.claude/skills/cc-roadmap/scripts/lib/roadmap-tracking/markdown.js +68 -3
- package/.claude/skills/cc-roadmap/scripts/lib/roadmap-tracking/schema.js +120 -0
- package/.claude/skills/cc-roadmap/scripts/lib/roadmap-tracking/store.js +25 -1
- package/.claude/skills/cc-roadmap/scripts/locate-roadmap-item.sh +13 -5
- package/.claude/skills/cc-roadmap/scripts/roadmap-tracking.js +3 -3
- package/.claude/skills/cc-roadmap/scripts/sync-roadmap-progress.sh +3 -3
- package/CHANGELOG.md +19 -0
- package/README.md +5 -5
- package/README.zh-CN.md +5 -5
- package/bin/cc-devflow-cli.js +16 -2
- package/docs/CLAUDE.md +1 -1
- package/docs/examples/START-HERE.md +3 -3
- package/docs/examples/example-bindings.json +26 -9
- package/docs/examples/full-design-blocked/BACKLOG.md +4 -2
- package/docs/examples/full-design-blocked/README.md +4 -4
- package/docs/examples/full-design-blocked/ROADMAP.md +16 -2
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/design.md +47 -1
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json +97 -0
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md +8 -1
- package/docs/examples/full-design-blocked/roadmap.json +123 -0
- package/docs/examples/local-handoff/BACKLOG.md +4 -2
- package/docs/examples/local-handoff/README.md +4 -4
- package/docs/examples/local-handoff/ROADMAP.md +16 -2
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/design.md +26 -1
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json +55 -0
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/tasks.md +8 -1
- package/docs/examples/local-handoff/roadmap.json +121 -0
- package/docs/examples/pdca-loop/BACKLOG.md +4 -2
- package/docs/examples/pdca-loop/README.md +4 -4
- package/docs/examples/pdca-loop/ROADMAP.md +16 -2
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/design.md +26 -1
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json +51 -3
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md +8 -1
- package/docs/examples/pdca-loop/roadmap.json +191 -0
- package/docs/examples/scripts/check-example-bindings.sh +7 -4
- package/docs/guides/getting-started.md +2 -2
- package/docs/guides/getting-started.zh-CN.md +2 -2
- package/lib/compiler/__tests__/skills-registry.test.js +17 -3
- package/lib/skill-runtime/__tests__/autopilot.test.js +13 -10
- package/lib/skill-runtime/__tests__/cli-bootstrap.integration.test.js +9 -1
- package/lib/skill-runtime/__tests__/paths.test.js +25 -0
- package/lib/skill-runtime/__tests__/query.test.js +49 -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 +28 -7
- package/lib/skill-runtime/query-registry.js +3 -3
- package/lib/skill-runtime/query.js +30 -30
- package/package.json +1 -1
|
@@ -64,9 +64,9 @@ Use this when the only thing you know is the file in front of you.
|
|
|
64
64
|
|
|
65
65
|
| If the main file you have is... | You are probably here | Read this first |
|
|
66
66
|
| --- | --- | --- |
|
|
67
|
-
| `
|
|
68
|
-
| `
|
|
69
|
-
| `BACKLOG.md` | `cc-roadmap` -> `cc-plan`
|
|
67
|
+
| `roadmap.json` | `cc-roadmap` editable machine truth source | [pdca-loop/roadmap.json](./pdca-loop/roadmap.json) |
|
|
68
|
+
| `ROADMAP.md` | `cc-roadmap` generated human view | [pdca-loop/ROADMAP.md](./pdca-loop/ROADMAP.md) |
|
|
69
|
+
| `BACKLOG.md` | deprecated `cc-roadmap` -> `cc-plan` projection | [pdca-loop/BACKLOG.md](./pdca-loop/BACKLOG.md) |
|
|
70
70
|
| `design.md` | `cc-plan` | [pdca-loop/design.md](./pdca-loop/changes/REQ-001-copy-invite-link/planning/design.md) or [full-design-blocked/design.md](./full-design-blocked/changes/REQ-002-bulk-invite-import/planning/design.md) |
|
|
71
71
|
| `tasks.md` | `cc-plan` or `cc-do` | [pdca-loop/tasks.md](./pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md) |
|
|
72
72
|
| `task-manifest.json` | `cc-do` | [pdca-loop/task-manifest.json](./pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json) |
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
|
-
"updatedAt": "2026-
|
|
2
|
+
"updatedAt": "2026-05-06",
|
|
3
3
|
"skills": {
|
|
4
|
-
"cc-roadmap": "
|
|
5
|
-
"cc-plan": "3.7.
|
|
6
|
-
"cc-investigate": "1.2.
|
|
7
|
-
"cc-do": "1.6.
|
|
4
|
+
"cc-roadmap": "5.0.0",
|
|
5
|
+
"cc-plan": "3.7.7",
|
|
6
|
+
"cc-investigate": "1.2.2",
|
|
7
|
+
"cc-do": "1.6.2",
|
|
8
8
|
"cc-check": "1.10.1",
|
|
9
|
-
"cc-act": "1.8.
|
|
9
|
+
"cc-act": "1.8.2",
|
|
10
10
|
"cc-spec-init": "1.1.0"
|
|
11
11
|
},
|
|
12
12
|
"examples": [
|
|
@@ -15,7 +15,13 @@
|
|
|
15
15
|
"readme": "docs/examples/pdca-loop/README.md",
|
|
16
16
|
"root": "docs/examples/pdca-loop",
|
|
17
17
|
"changeDir": "docs/examples/pdca-loop/changes/REQ-001-copy-invite-link",
|
|
18
|
-
"covers": [
|
|
18
|
+
"covers": [
|
|
19
|
+
"cc-roadmap",
|
|
20
|
+
"cc-plan",
|
|
21
|
+
"cc-do",
|
|
22
|
+
"cc-check",
|
|
23
|
+
"cc-act"
|
|
24
|
+
],
|
|
19
25
|
"expectedShipMode": "create-pr"
|
|
20
26
|
},
|
|
21
27
|
{
|
|
@@ -23,7 +29,12 @@
|
|
|
23
29
|
"readme": "docs/examples/full-design-blocked/README.md",
|
|
24
30
|
"root": "docs/examples/full-design-blocked",
|
|
25
31
|
"changeDir": "docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import",
|
|
26
|
-
"covers": [
|
|
32
|
+
"covers": [
|
|
33
|
+
"cc-roadmap",
|
|
34
|
+
"cc-plan",
|
|
35
|
+
"cc-do",
|
|
36
|
+
"cc-check"
|
|
37
|
+
],
|
|
27
38
|
"expectedShipMode": "none"
|
|
28
39
|
},
|
|
29
40
|
{
|
|
@@ -31,7 +42,13 @@
|
|
|
31
42
|
"readme": "docs/examples/local-handoff/README.md",
|
|
32
43
|
"root": "docs/examples/local-handoff",
|
|
33
44
|
"changeDir": "docs/examples/local-handoff/changes/REQ-003-audit-log-export",
|
|
34
|
-
"covers": [
|
|
45
|
+
"covers": [
|
|
46
|
+
"cc-roadmap",
|
|
47
|
+
"cc-plan",
|
|
48
|
+
"cc-do",
|
|
49
|
+
"cc-check",
|
|
50
|
+
"cc-act"
|
|
51
|
+
],
|
|
35
52
|
"expectedShipMode": "local-handoff"
|
|
36
53
|
}
|
|
37
54
|
]
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
# BACKLOG
|
|
2
2
|
|
|
3
|
+
> Deprecated projection. Edit `roadmap.json` instead.
|
|
4
|
+
|
|
3
5
|
## Backlog Meta
|
|
4
6
|
|
|
5
7
|
- Roadmap version: `roadmap.v2`
|
|
6
|
-
- Skill version: `
|
|
8
|
+
- Skill version: `5.0.0`
|
|
7
9
|
- Last synced: `2026-04-19`
|
|
8
10
|
- Current focus stage: `Stage 2`
|
|
9
|
-
-
|
|
11
|
+
- Roadmap state source: `roadmap.json`
|
|
10
12
|
|
|
11
13
|
## Queue
|
|
12
14
|
|
|
@@ -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@
|
|
7
|
+
- Bound skills: `cc-roadmap@5.0.0`, `cc-plan@3.7.7`, `cc-do@1.6.2`, `cc-check@1.10.1`
|
|
8
8
|
|
|
9
9
|
This example shows a requirement that **looked executable**, but `cc-check` correctly stopped it and sent it back to `cc-plan`.
|
|
10
10
|
|
|
@@ -40,9 +40,9 @@ The sample shows what happens when implementation moved before the integration d
|
|
|
40
40
|
|
|
41
41
|
## Artifact Map
|
|
42
42
|
|
|
43
|
-
- `
|
|
44
|
-
- `
|
|
45
|
-
- `BACKLOG.md`
|
|
43
|
+
- `roadmap.json` (editable roadmap truth)
|
|
44
|
+
- `ROADMAP.md` (generated view)
|
|
45
|
+
- `BACKLOG.md` (deprecated projection)
|
|
46
46
|
- `changes/REQ-002-bulk-invite-import/planning/design.md`
|
|
47
47
|
- `changes/REQ-002-bulk-invite-import/planning/tasks.md`
|
|
48
48
|
- `changes/REQ-002-bulk-invite-import/planning/task-manifest.json`
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
## Roadmap Meta
|
|
4
4
|
|
|
5
5
|
- Roadmap version: `roadmap.v2`
|
|
6
|
-
- Skill version: `
|
|
6
|
+
- Skill version: `5.0.0`
|
|
7
7
|
- Status: `active`
|
|
8
8
|
- Last updated: `2026-04-16`
|
|
9
9
|
- Owner / decider: `product-owner`
|
|
@@ -44,10 +44,24 @@
|
|
|
44
44
|
- Kill signal / stop condition: if the team cannot specify bulk invite semantics before implementation starts
|
|
45
45
|
|
|
46
46
|
## Implementation Tracking
|
|
47
|
-
-
|
|
47
|
+
- Roadmap state source: `roadmap.json`
|
|
48
48
|
|
|
49
49
|
<!-- roadmap-tracking:start -->
|
|
50
50
|
| RM-ID | Item | Stage | Priority | Primary Capability | Secondary Capabilities | Expected Spec Delta | Depends On | Status | REQ | Progress |
|
|
51
51
|
|------|------|------|------|------|------|------|------|------|------|------|
|
|
52
52
|
| RM-010 | Add CSV bulk invite import for admins | Stage 2 | P1 | cap-bulk-invite-import | cap-workspace-membership | define import semantics before widening current truth | - | Verification blocked | REQ-002 | 80% |
|
|
53
53
|
<!-- roadmap-tracking:end -->
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
## Technical Architecture
|
|
57
|
+
|
|
58
|
+
```mermaid
|
|
59
|
+
flowchart TD
|
|
60
|
+
roadmap_json["roadmap.json"]
|
|
61
|
+
roadmap_md["ROADMAP.md"]
|
|
62
|
+
backlog_md["BACKLOG.md (deprecated)"]
|
|
63
|
+
cc_plan["cc-plan"]
|
|
64
|
+
roadmap_json -->|renders| roadmap_md
|
|
65
|
+
roadmap_json -->|projects| backlog_md
|
|
66
|
+
roadmap_md -->|hands off| cc_plan
|
|
67
|
+
```
|
package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/design.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.7.
|
|
7
|
+
- CC-Plan skill version: `3.7.7`
|
|
8
8
|
- Requirement ID: `REQ-002`
|
|
9
9
|
- Design mode: `full-design`
|
|
10
10
|
- Why not `tiny-design`: the feature crosses import parsing, invite rules, billing limits, duplicate handling, and audit logging
|
|
@@ -42,6 +42,43 @@
|
|
|
42
42
|
- enterprise SCIM provisioning
|
|
43
43
|
- background retry orchestration
|
|
44
44
|
|
|
45
|
+
## PRD-Grade Requirement Brief
|
|
46
|
+
|
|
47
|
+
- Problem statement: admins onboarding larger teams spend too much time sending individual invites, and they cannot predict how duplicates, invalid rows, and seat limits will resolve in bulk.
|
|
48
|
+
- Solution summary: admins upload a CSV and receive deterministic row outcomes before the invite flow can be trusted for execution.
|
|
49
|
+
- Actors / personas:
|
|
50
|
+
- workspace admin onboarding 20-200 collaborators
|
|
51
|
+
- support operator explaining invite outcomes
|
|
52
|
+
- Primary user stories:
|
|
53
|
+
|
|
54
|
+
| ID | Actor | Wants | Benefit | Acceptance / evidence |
|
|
55
|
+
|----|-------|-------|---------|-----------------------|
|
|
56
|
+
| US-001 | Workspace admin | upload a CSV of invite emails | invite many collaborators without one-by-one entry | mixed valid rows produce visible accepted outcomes |
|
|
57
|
+
| US-002 | Workspace admin | see duplicate, invalid, and over-limit row states | understand what happened without support help | every skipped or rejected row has a reason |
|
|
58
|
+
| US-003 | Support operator | trust the audit trail for each row outcome | explain invite history consistently | audit entries match visible row outcomes |
|
|
59
|
+
|
|
60
|
+
- Edge / recovery stories:
|
|
61
|
+
|
|
62
|
+
| ID | Actor | Failure / boundary | Desired outcome | Acceptance / evidence |
|
|
63
|
+
|----|-------|--------------------|-----------------|-----------------------|
|
|
64
|
+
| US-EDGE-001 | Workspace admin | CSV contains duplicates and invalid emails | safe rows can proceed while bad rows are explained | rule matrix covers duplicate and invalid cases |
|
|
65
|
+
| US-EDGE-002 | Workspace admin | upload exceeds seat limits | over-limit rows are rejected consistently | billing-seat tests match UI summary |
|
|
66
|
+
|
|
67
|
+
- Implementation decisions:
|
|
68
|
+
- Freeze one row-outcome matrix before execution resumes.
|
|
69
|
+
- Reuse the existing invite engine, billing seat checks, and audit log contract.
|
|
70
|
+
- Keep enterprise provisioning and background retry orchestration outside this requirement.
|
|
71
|
+
- Testing decisions:
|
|
72
|
+
- Test row semantics through bulk-import rules and the admin upload flow.
|
|
73
|
+
- Verify audit mapping against visible row outcomes.
|
|
74
|
+
- Use existing invite and admin panel tests as prior art.
|
|
75
|
+
- Out of scope:
|
|
76
|
+
- enterprise SCIM provisioning
|
|
77
|
+
- background job redesign
|
|
78
|
+
- rollback wizard for partial success
|
|
79
|
+
- Further notes:
|
|
80
|
+
- This design remains blocked until duplicate and seat-limit semantics are approved.
|
|
81
|
+
|
|
45
82
|
## Success Criteria
|
|
46
83
|
|
|
47
84
|
- Observable success signals:
|
|
@@ -83,6 +120,13 @@
|
|
|
83
120
|
- Deferred questions:
|
|
84
121
|
- whether partial success needs an explicit rollback option
|
|
85
122
|
|
|
123
|
+
## Decision Questions
|
|
124
|
+
|
|
125
|
+
| ID | Gate | Known evidence | Recommendation | User choice | Impact on `cc-do` | Status |
|
|
126
|
+
|----|------|----------------|----------------|-------------|-------------------|--------|
|
|
127
|
+
| D1 | approach-approval | Best-effort upload would let duplicate, invalid, and seat-limit semantics drift during execution | Choose Option B and freeze a rule matrix first | Option B | Keep execution blocked until row outcomes are modeled | answered |
|
|
128
|
+
| D2 | ambiguity-blocker | Duplicate and seat-limit outcomes are still not explicit enough for tests or audit mapping | Answer the row-outcome matrix before task generation | pending | `cc-do` must not start implementation until this is answered | asked |
|
|
129
|
+
|
|
86
130
|
## Design
|
|
87
131
|
|
|
88
132
|
- Modules touched:
|
|
@@ -131,6 +175,8 @@
|
|
|
131
175
|
- Ambiguity scan: blocked; duplicate + seat-limit semantics still need sharper wording
|
|
132
176
|
- Feasibility scan: pass
|
|
133
177
|
- Source alignment: pass; roadmap still prioritizes trust over speed
|
|
178
|
+
- PRD brief scan: pass for actors and stories; blocked on duplicate and seat-limit semantics
|
|
179
|
+
- Decision question scan: blocked; `D2` is still unanswered
|
|
134
180
|
- UI / interaction review summary: result states are acceptable if semantics are frozen first
|
|
135
181
|
- DX review summary: execution still needs a single row-outcome matrix
|
|
136
182
|
- Auto-decided items:
|
|
@@ -5,6 +5,103 @@
|
|
|
5
5
|
"updatedAt": "2026-04-16T12:00:00.000Z",
|
|
6
6
|
"requirementId": "REQ-002",
|
|
7
7
|
"requirementVersion": "REQ-002.v2",
|
|
8
|
+
"planningMeta": {
|
|
9
|
+
"reqPlanSkillVersion": "3.7.7",
|
|
10
|
+
"designVersion": "design.v2",
|
|
11
|
+
"approvedAt": null,
|
|
12
|
+
"approvedBy": null,
|
|
13
|
+
"basedOnOption": "Option B",
|
|
14
|
+
"requirementBrief": {
|
|
15
|
+
"problemStatement": "Admins onboarding larger teams need predictable bulk invite behavior for duplicates, invalid rows, and seat limits.",
|
|
16
|
+
"solutionSummary": "Freeze deterministic CSV row outcomes before executing the bulk invite flow.",
|
|
17
|
+
"actors": ["workspace admin", "support operator"],
|
|
18
|
+
"userStories": [
|
|
19
|
+
{
|
|
20
|
+
"id": "US-001",
|
|
21
|
+
"actor": "workspace admin",
|
|
22
|
+
"want": "upload a CSV of invite emails",
|
|
23
|
+
"benefit": "invite many collaborators without one-by-one entry",
|
|
24
|
+
"acceptance": ["Mixed valid rows produce visible accepted outcomes"]
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"id": "US-002",
|
|
28
|
+
"actor": "workspace admin",
|
|
29
|
+
"want": "see duplicate, invalid, and over-limit row states",
|
|
30
|
+
"benefit": "understand what happened without support help",
|
|
31
|
+
"acceptance": ["Every skipped or rejected row has a reason"]
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
"edgeOrRecoveryStories": [
|
|
35
|
+
{
|
|
36
|
+
"id": "US-EDGE-001",
|
|
37
|
+
"actor": "workspace admin",
|
|
38
|
+
"boundary": "CSV contains duplicates, invalid emails, or over-limit rows",
|
|
39
|
+
"desiredOutcome": "safe rows can proceed while bad rows are explained",
|
|
40
|
+
"acceptance": ["Rule matrix covers duplicate, invalid, and seat-limit cases"]
|
|
41
|
+
}
|
|
42
|
+
],
|
|
43
|
+
"implementationDecisions": ["Freeze one row-outcome matrix before execution resumes"],
|
|
44
|
+
"testingDecisions": ["Test row semantics through bulk-import rules and the admin upload flow"],
|
|
45
|
+
"outOfScope": ["enterprise SCIM provisioning", "background job redesign", "rollback wizard for partial success"],
|
|
46
|
+
"furtherNotes": ["Design remains blocked until duplicate and seat-limit semantics are approved"]
|
|
47
|
+
},
|
|
48
|
+
"decisionQuestions": [
|
|
49
|
+
{
|
|
50
|
+
"questionId": "D1",
|
|
51
|
+
"gate": "approach-approval",
|
|
52
|
+
"knownEvidence": ["Best-effort upload would hide duplicate, invalid, and seat-limit semantics", "Audit mapping depends on deterministic row outcomes"],
|
|
53
|
+
"recommendation": "Choose Option B and freeze a rule matrix first",
|
|
54
|
+
"options": [
|
|
55
|
+
{
|
|
56
|
+
"id": "A",
|
|
57
|
+
"label": "Front-end-only CSV upload",
|
|
58
|
+
"recommended": false,
|
|
59
|
+
"completeness": "5/10",
|
|
60
|
+
"good": "Fastest prototype and reuses the existing single-invite API",
|
|
61
|
+
"costRisk": "Lets hidden backend edge cases define user-visible semantics"
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"id": "B",
|
|
65
|
+
"label": "Rule matrix first",
|
|
66
|
+
"recommended": true,
|
|
67
|
+
"completeness": "9/10",
|
|
68
|
+
"good": "Makes billing, duplicate, invalid, and audit behavior reviewable",
|
|
69
|
+
"costRisk": "Requires one more planning pass before execution can start"
|
|
70
|
+
}
|
|
71
|
+
],
|
|
72
|
+
"userChoice": "B",
|
|
73
|
+
"impact": "cc-do stays blocked until row outcomes are modeled",
|
|
74
|
+
"status": "answered"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"questionId": "D2",
|
|
78
|
+
"gate": "ambiguity-blocker",
|
|
79
|
+
"knownEvidence": ["Duplicate and seat-limit outcomes are still not explicit enough for tests", "Audit entries must match visible row outcomes"],
|
|
80
|
+
"recommendation": "Answer the row-outcome matrix before task generation",
|
|
81
|
+
"options": [
|
|
82
|
+
{
|
|
83
|
+
"id": "A",
|
|
84
|
+
"label": "Block execution until matrix is explicit",
|
|
85
|
+
"recommended": true,
|
|
86
|
+
"completeness": "10/10",
|
|
87
|
+
"good": "Prevents cc-do from inventing semantics during implementation",
|
|
88
|
+
"costRisk": "Requires user/product input before coding can continue"
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"id": "B",
|
|
92
|
+
"label": "Let implementation choose defaults",
|
|
93
|
+
"recommended": false,
|
|
94
|
+
"completeness": "4/10",
|
|
95
|
+
"good": "Starts coding sooner with fewer planning minutes",
|
|
96
|
+
"costRisk": "Creates invisible product decisions inside implementation tasks"
|
|
97
|
+
}
|
|
98
|
+
],
|
|
99
|
+
"userChoice": null,
|
|
100
|
+
"impact": "No executable task manifest should be approved until this is answered",
|
|
101
|
+
"status": "asked"
|
|
102
|
+
}
|
|
103
|
+
]
|
|
104
|
+
},
|
|
8
105
|
"currentTaskId": null,
|
|
9
106
|
"activePhase": null,
|
|
10
107
|
"tasks": [
|
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.7.
|
|
7
|
+
- CC-Plan skill version: `3.7.7`
|
|
8
8
|
- Source roadmap item: `RM-010`
|
|
9
9
|
- Source roadmap version: `roadmap.v2`
|
|
10
10
|
|
|
@@ -15,6 +15,13 @@
|
|
|
15
15
|
- Frozen decisions:
|
|
16
16
|
- bulk invite results must classify each row
|
|
17
17
|
- audit behavior must match visible results
|
|
18
|
+
- PRD brief:
|
|
19
|
+
- Problem statement: admins need predictable CSV invite outcomes for duplicates, invalid rows, and seat limits
|
|
20
|
+
- Solution summary: freeze deterministic row outcomes before executing the bulk invite flow
|
|
21
|
+
- User stories covered: `US-001`, `US-002`, `US-003`, `US-EDGE-001`, `US-EDGE-002`
|
|
22
|
+
- Implementation decisions: reuse invite engine, billing checks, and audit contract after the row-outcome matrix is approved
|
|
23
|
+
- Testing decisions: test bulk-import rules, admin upload flow, and audit mapping
|
|
24
|
+
- Out of scope: SCIM provisioning, background jobs, rollback wizard
|
|
18
25
|
- Read first:
|
|
19
26
|
- `design.md`
|
|
20
27
|
- `src/admin/BulkInvitePanel.tsx`
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"outputPolicy": {
|
|
4
|
+
"documentLanguage": "en"
|
|
5
|
+
},
|
|
6
|
+
"meta": {
|
|
7
|
+
"roadmapVersion": "roadmap.v2",
|
|
8
|
+
"skillVersion": "5.0.0",
|
|
9
|
+
"status": "active",
|
|
10
|
+
"lastUpdated": "2026-04-19",
|
|
11
|
+
"currentFocusStage": "Stage 2"
|
|
12
|
+
},
|
|
13
|
+
"context": {
|
|
14
|
+
"planningPosture": "",
|
|
15
|
+
"evidenceMaturity": "",
|
|
16
|
+
"canonicalTerms": [],
|
|
17
|
+
"durableDecisionSources": []
|
|
18
|
+
},
|
|
19
|
+
"evidence": [],
|
|
20
|
+
"route": {
|
|
21
|
+
"recommended": "",
|
|
22
|
+
"whyThisWinsNow": "",
|
|
23
|
+
"rejectedRoutes": [],
|
|
24
|
+
"firstSignal": "",
|
|
25
|
+
"killSignal": ""
|
|
26
|
+
},
|
|
27
|
+
"stages": [],
|
|
28
|
+
"items": [
|
|
29
|
+
{
|
|
30
|
+
"rmId": "RM-010",
|
|
31
|
+
"item": "Add CSV bulk invite import for admins",
|
|
32
|
+
"stage": "Stage 2",
|
|
33
|
+
"priority": "P1",
|
|
34
|
+
"primaryCapability": "cap-bulk-invite-import",
|
|
35
|
+
"secondaryCapabilities": [
|
|
36
|
+
"cap-workspace-membership"
|
|
37
|
+
],
|
|
38
|
+
"expectedSpecDelta": "define import semantics before widening current truth",
|
|
39
|
+
"dependsOn": [],
|
|
40
|
+
"status": "Verification blocked",
|
|
41
|
+
"req": "REQ-002",
|
|
42
|
+
"progress": "80%",
|
|
43
|
+
"backlog": {
|
|
44
|
+
"capabilityGap": "admins can invite one user at a time but cannot safely import invite batches",
|
|
45
|
+
"evidence": "sales onboarding asks for spreadsheet-scale invites",
|
|
46
|
+
"parallelWith": [],
|
|
47
|
+
"unknowns": "duplicate-email policy, seat enforcement, audit fan-out",
|
|
48
|
+
"nextDecision": "reroute to full design before more execution work",
|
|
49
|
+
"ready": true,
|
|
50
|
+
"whyNow": "demand is real, but the contract is too wide to keep improvising in code",
|
|
51
|
+
"successSignal": "the capability has a trusted import contract before implementation resumes",
|
|
52
|
+
"entryConstraints": "must freeze limits, duplicates, warnings, and audit behavior first",
|
|
53
|
+
"openRisks": "another partial implementation pass would deepen the semantic drift",
|
|
54
|
+
"firstPlanningQuestion": "which subflows share one import contract and which need explicit splits?",
|
|
55
|
+
"requiredContextToLoad": "invite limits, billing rules, duplicate handling, audit logging",
|
|
56
|
+
"whyReadyNow": "the blocker is design truth, not implementation effort",
|
|
57
|
+
"parked": false,
|
|
58
|
+
"parkedReason": "",
|
|
59
|
+
"triggerToReopen": "",
|
|
60
|
+
"missingEvidence": ""
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
],
|
|
64
|
+
"handoff": {
|
|
65
|
+
"readyForCcPlan": [
|
|
66
|
+
"RM-010"
|
|
67
|
+
],
|
|
68
|
+
"parked": [],
|
|
69
|
+
"serialSpine": [
|
|
70
|
+
"RM-010"
|
|
71
|
+
],
|
|
72
|
+
"parallelWaves": []
|
|
73
|
+
},
|
|
74
|
+
"architecture": {
|
|
75
|
+
"diagramType": "flowchart",
|
|
76
|
+
"nodes": [
|
|
77
|
+
{
|
|
78
|
+
"id": "roadmap_json",
|
|
79
|
+
"label": "roadmap.json"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"id": "roadmap_md",
|
|
83
|
+
"label": "ROADMAP.md"
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"id": "backlog_md",
|
|
87
|
+
"label": "BACKLOG.md (deprecated)"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"id": "cc_plan",
|
|
91
|
+
"label": "cc-plan"
|
|
92
|
+
}
|
|
93
|
+
],
|
|
94
|
+
"edges": [
|
|
95
|
+
{
|
|
96
|
+
"from": "roadmap_json",
|
|
97
|
+
"to": "roadmap_md",
|
|
98
|
+
"label": "renders"
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"from": "roadmap_json",
|
|
102
|
+
"to": "backlog_md",
|
|
103
|
+
"label": "projects"
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"from": "roadmap_md",
|
|
107
|
+
"to": "cc_plan",
|
|
108
|
+
"label": "hands off"
|
|
109
|
+
}
|
|
110
|
+
]
|
|
111
|
+
},
|
|
112
|
+
"backlogMeta": {
|
|
113
|
+
"roadmapVersion": "roadmap.v2",
|
|
114
|
+
"skillVersion": "4.4.1",
|
|
115
|
+
"currentFocusStage": "Stage 2"
|
|
116
|
+
},
|
|
117
|
+
"dependencyHandoff": {
|
|
118
|
+
"serialSpine": "RM-010",
|
|
119
|
+
"parallelReadyNextWave": "-",
|
|
120
|
+
"notesOnBlockers": "verification is blocked until the import contract covers limits, duplicates, billing, and audit consistency"
|
|
121
|
+
},
|
|
122
|
+
"lastSyncedAt": "2026-04-19"
|
|
123
|
+
}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
# BACKLOG
|
|
2
2
|
|
|
3
|
+
> Deprecated projection. Edit `roadmap.json` instead.
|
|
4
|
+
|
|
3
5
|
## Backlog Meta
|
|
4
6
|
|
|
5
7
|
- Roadmap version: `roadmap.v2`
|
|
6
|
-
- Skill version: `
|
|
8
|
+
- Skill version: `5.0.0`
|
|
7
9
|
- Last synced: `2026-04-19`
|
|
8
10
|
- Current focus stage: `Stage 2`
|
|
9
|
-
-
|
|
11
|
+
- Roadmap state source: `roadmap.json`
|
|
10
12
|
|
|
11
13
|
## Queue
|
|
12
14
|
|
|
@@ -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@
|
|
7
|
+
- Bound skills: `cc-roadmap@5.0.0`, `cc-plan@3.7.7`, `cc-do@1.6.2`, `cc-check@1.10.1`, `cc-act@1.8.2`
|
|
8
8
|
|
|
9
9
|
This example shows verified work that is **ready to move forward**, but `cc-act` still chooses `local-handoff`.
|
|
10
10
|
|
|
@@ -36,9 +36,9 @@ But the current environment is local-only:
|
|
|
36
36
|
|
|
37
37
|
## Artifact Map
|
|
38
38
|
|
|
39
|
-
- `
|
|
40
|
-
- `
|
|
41
|
-
- `BACKLOG.md`
|
|
39
|
+
- `roadmap.json` (editable roadmap truth)
|
|
40
|
+
- `ROADMAP.md` (generated view)
|
|
41
|
+
- `BACKLOG.md` (deprecated projection)
|
|
42
42
|
- `changes/REQ-003-audit-log-export/planning/design.md`
|
|
43
43
|
- `changes/REQ-003-audit-log-export/planning/tasks.md`
|
|
44
44
|
- `changes/REQ-003-audit-log-export/planning/task-manifest.json`
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
## Roadmap Meta
|
|
4
4
|
|
|
5
5
|
- Roadmap version: `roadmap.v3`
|
|
6
|
-
- Skill version: `
|
|
6
|
+
- Skill version: `5.0.0`
|
|
7
7
|
- Status: `active`
|
|
8
8
|
- Last updated: `2026-04-16`
|
|
9
9
|
- Owner / decider: `product-owner`
|
|
@@ -36,10 +36,24 @@
|
|
|
36
36
|
- Kill signal / stop condition: if export requires a shared reporting pipeline redesign
|
|
37
37
|
|
|
38
38
|
## Implementation Tracking
|
|
39
|
-
-
|
|
39
|
+
- Roadmap state source: `roadmap.json`
|
|
40
40
|
|
|
41
41
|
<!-- roadmap-tracking:start -->
|
|
42
42
|
| RM-ID | Item | Stage | Priority | Primary Capability | Secondary Capabilities | Expected Spec Delta | Depends On | Status | REQ | Progress |
|
|
43
43
|
|------|------|------|------|------|------|------|------|------|------|------|
|
|
44
44
|
| RM-020 | Add an audit-log export summary download | Stage 2 | P1 | cap-audit-log-export | - | codify local export summary truth | - | Local handoff | REQ-003 | 100% |
|
|
45
45
|
<!-- roadmap-tracking:end -->
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
## Technical Architecture
|
|
49
|
+
|
|
50
|
+
```mermaid
|
|
51
|
+
flowchart TD
|
|
52
|
+
roadmap_json["roadmap.json"]
|
|
53
|
+
roadmap_md["ROADMAP.md"]
|
|
54
|
+
backlog_md["BACKLOG.md (deprecated)"]
|
|
55
|
+
cc_plan["cc-plan"]
|
|
56
|
+
roadmap_json -->|renders| roadmap_md
|
|
57
|
+
roadmap_json -->|projects| backlog_md
|
|
58
|
+
roadmap_md -->|hands off| cc_plan
|
|
59
|
+
```
|
|
@@ -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.
|
|
7
|
+
- CC-Plan skill version: `3.7.7`
|
|
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
|
|
@@ -34,6 +34,23 @@
|
|
|
34
34
|
- keep the action inside the current admin panel
|
|
35
35
|
- Upgrade trigger to `full-design`: if export needs background generation or new reporting contracts
|
|
36
36
|
|
|
37
|
+
## PRD-Grade Brief
|
|
38
|
+
|
|
39
|
+
- Problem statement: admins can review audit summary rows in the UI, but taking them into weekly reports requires manual copying.
|
|
40
|
+
- Solution summary: admins can download the currently visible audit summary rows as a CSV from the existing admin panel.
|
|
41
|
+
- Actors / personas:
|
|
42
|
+
- workspace admin reviewing weekly activity
|
|
43
|
+
- User stories:
|
|
44
|
+
- US-001: As a workspace admin, I want to download visible audit summary rows as CSV, so that I can include them in weekly reporting without manual copying.
|
|
45
|
+
- Implementation decisions:
|
|
46
|
+
- Export only the rows already visible in the panel.
|
|
47
|
+
- Keep CSV as the only output format.
|
|
48
|
+
- Testing decisions:
|
|
49
|
+
- Test through the admin panel action and visible row data.
|
|
50
|
+
- Existing audit summary panel tests are the prior art.
|
|
51
|
+
- Out of scope: JSON export, scheduled reporting, and shared reporting backend work.
|
|
52
|
+
- Further notes: richer machine-readable exports should become a separate requirement.
|
|
53
|
+
|
|
37
54
|
## Validation
|
|
38
55
|
|
|
39
56
|
- Primary check: targeted panel test proves the export action is available and uses current summary rows
|
|
@@ -56,8 +73,16 @@
|
|
|
56
73
|
- Scope scan: pass
|
|
57
74
|
- Ambiguity scan: pass
|
|
58
75
|
- Feasibility scan: pass
|
|
76
|
+
- PRD brief scan: pass; the export story and scope boundaries are explicit
|
|
77
|
+
- Decision question scan: pass; `D1` approved the tiny-design CSV-export boundary
|
|
59
78
|
- Final recommendation: approved as `tiny-design`
|
|
60
79
|
|
|
80
|
+
## Decision Questions
|
|
81
|
+
|
|
82
|
+
| ID | Gate | Known evidence | Recommendation | User choice | Impact on `cc-do` | Status |
|
|
83
|
+
|----|------|----------------|----------------|-------------|-------------------|--------|
|
|
84
|
+
| D1 | approach-approval | Existing admin panel already owns visible summary rows and the change does not need a reporting backend | Approve the tiny-design CSV export | Tiny design CSV export | Export only visible rows from the current panel; do not create reporting contracts | answered |
|
|
85
|
+
|
|
61
86
|
## Approval
|
|
62
87
|
|
|
63
88
|
- User approval status: approved
|
package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json
CHANGED
|
@@ -5,6 +5,61 @@
|
|
|
5
5
|
"updatedAt": "2026-04-16T14:20:00.000Z",
|
|
6
6
|
"requirementId": "REQ-003",
|
|
7
7
|
"requirementVersion": "REQ-003.v1",
|
|
8
|
+
"planningMeta": {
|
|
9
|
+
"reqPlanSkillVersion": "3.7.7",
|
|
10
|
+
"designVersion": "design.v1",
|
|
11
|
+
"approvedAt": "2026-04-16T13:10:00.000Z",
|
|
12
|
+
"approvedBy": "user",
|
|
13
|
+
"basedOnOption": "Tiny design card",
|
|
14
|
+
"requirementBrief": {
|
|
15
|
+
"problemStatement": "Admins can review audit summary rows in the UI, but weekly reporting requires manual copying.",
|
|
16
|
+
"solutionSummary": "Add a CSV download action for the currently visible audit summary rows.",
|
|
17
|
+
"actors": ["workspace admin reviewing weekly activity"],
|
|
18
|
+
"userStories": [
|
|
19
|
+
{
|
|
20
|
+
"id": "US-001",
|
|
21
|
+
"actor": "workspace admin",
|
|
22
|
+
"want": "download visible audit summary rows as CSV",
|
|
23
|
+
"benefit": "include them in weekly reporting without manual copying",
|
|
24
|
+
"acceptance": ["Panel behavior test proves the export action uses current summary rows"]
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"edgeOrRecoveryStories": [],
|
|
28
|
+
"implementationDecisions": ["Export only rows already visible in the panel", "Keep CSV as the only output format"],
|
|
29
|
+
"testingDecisions": ["Test through the admin panel action and visible row data"],
|
|
30
|
+
"outOfScope": ["JSON export", "scheduled reporting", "shared reporting backend"],
|
|
31
|
+
"furtherNotes": ["Richer machine-readable exports should become a separate requirement"]
|
|
32
|
+
},
|
|
33
|
+
"decisionQuestions": [
|
|
34
|
+
{
|
|
35
|
+
"questionId": "D1",
|
|
36
|
+
"gate": "approach-approval",
|
|
37
|
+
"knownEvidence": ["Existing admin panel already owns the visible summary rows", "No reporting backend is needed for the first useful export"],
|
|
38
|
+
"recommendation": "Approve the tiny-design CSV export",
|
|
39
|
+
"options": [
|
|
40
|
+
{
|
|
41
|
+
"id": "A",
|
|
42
|
+
"label": "Tiny design CSV export",
|
|
43
|
+
"recommended": true,
|
|
44
|
+
"completeness": "8/10",
|
|
45
|
+
"good": "Solves weekly reporting friction with the current panel data",
|
|
46
|
+
"costRisk": "Does not handle JSON, scheduling, or shared reporting contracts"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"id": "B",
|
|
50
|
+
"label": "Shared reporting pipeline",
|
|
51
|
+
"recommended": false,
|
|
52
|
+
"completeness": "10/10",
|
|
53
|
+
"good": "Could support more formats and future scheduled reports",
|
|
54
|
+
"costRisk": "Creates a larger platform surface before the local export is proven"
|
|
55
|
+
}
|
|
56
|
+
],
|
|
57
|
+
"userChoice": "A",
|
|
58
|
+
"impact": "cc-do exports only visible rows from the current panel and avoids new reporting contracts",
|
|
59
|
+
"status": "answered"
|
|
60
|
+
}
|
|
61
|
+
]
|
|
62
|
+
},
|
|
8
63
|
"currentTaskId": null,
|
|
9
64
|
"activePhase": null,
|
|
10
65
|
"tasks": [
|