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
|
@@ -9,6 +9,14 @@
|
|
|
9
9
|
"itemId": "RM-001",
|
|
10
10
|
"roadmapVersion": "1.0",
|
|
11
11
|
"roadmapSkillVersion": "2.1.0",
|
|
12
|
+
"syncStatus": "pending",
|
|
13
|
+
"syncCommand": ".claude/skills/cc-roadmap/scripts/sync-roadmap-progress.sh --rm RM-001 --status Planned --req REQ-XXX --progress 0%",
|
|
14
|
+
"updatedFiles": [
|
|
15
|
+
"devflow/roadmap.json",
|
|
16
|
+
"devflow/ROADMAP.md",
|
|
17
|
+
"devflow/BACKLOG.md"
|
|
18
|
+
],
|
|
19
|
+
"noOpReason": "",
|
|
12
20
|
"sourceStage": "Stage 1",
|
|
13
21
|
"successSignal": "User can complete the new flow without manual workaround",
|
|
14
22
|
"killSignal": "Implementation requires reworking unrelated modules",
|
|
@@ -20,11 +28,30 @@
|
|
|
20
28
|
]
|
|
21
29
|
},
|
|
22
30
|
"planningMeta": {
|
|
23
|
-
"reqPlanSkillVersion": "3.7.
|
|
31
|
+
"reqPlanSkillVersion": "3.7.6",
|
|
24
32
|
"designVersion": "design.v1",
|
|
25
33
|
"approvedAt": "2026-04-15T12:00:00.000Z",
|
|
26
34
|
"approvedBy": "user",
|
|
27
35
|
"basedOnOption": "Option A",
|
|
36
|
+
"requirementBrief": {
|
|
37
|
+
"problemStatement": "The user-perspective problem this requirement solves.",
|
|
38
|
+
"solutionSummary": "The user-perspective solution after the requirement lands.",
|
|
39
|
+
"actors": [],
|
|
40
|
+
"userStories": [
|
|
41
|
+
{
|
|
42
|
+
"id": "US-001",
|
|
43
|
+
"actor": "",
|
|
44
|
+
"want": "",
|
|
45
|
+
"benefit": "",
|
|
46
|
+
"acceptance": []
|
|
47
|
+
}
|
|
48
|
+
],
|
|
49
|
+
"edgeOrRecoveryStories": [],
|
|
50
|
+
"implementationDecisions": [],
|
|
51
|
+
"testingDecisions": [],
|
|
52
|
+
"outOfScope": [],
|
|
53
|
+
"furtherNotes": []
|
|
54
|
+
},
|
|
28
55
|
"ambiguityGate": {
|
|
29
56
|
"whatScore": 0,
|
|
30
57
|
"whyScore": 0,
|
|
@@ -39,7 +66,36 @@
|
|
|
39
66
|
"repeatedConcernFingerprints": [],
|
|
40
67
|
"stallReason": "",
|
|
41
68
|
"rerouteIfStalled": "ask-user"
|
|
42
|
-
}
|
|
69
|
+
},
|
|
70
|
+
"decisionQuestions": [
|
|
71
|
+
{
|
|
72
|
+
"questionId": "D1",
|
|
73
|
+
"gate": "approach-approval",
|
|
74
|
+
"knownEvidence": [],
|
|
75
|
+
"recommendation": "Option A",
|
|
76
|
+
"options": [
|
|
77
|
+
{
|
|
78
|
+
"id": "A",
|
|
79
|
+
"label": "Minimal viable",
|
|
80
|
+
"recommended": true,
|
|
81
|
+
"completeness": "7/10",
|
|
82
|
+
"good": "",
|
|
83
|
+
"costRisk": ""
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"id": "B",
|
|
87
|
+
"label": "Ideal architecture",
|
|
88
|
+
"recommended": false,
|
|
89
|
+
"completeness": "10/10",
|
|
90
|
+
"good": "",
|
|
91
|
+
"costRisk": ""
|
|
92
|
+
}
|
|
93
|
+
],
|
|
94
|
+
"userChoice": "A",
|
|
95
|
+
"impact": "cc-do follows the approved implementation surface and task split",
|
|
96
|
+
"status": "answered"
|
|
97
|
+
}
|
|
98
|
+
]
|
|
43
99
|
},
|
|
44
100
|
"sourceEvidence": [
|
|
45
101
|
{
|
|
@@ -70,8 +126,13 @@
|
|
|
70
126
|
"testQualityPolicy": {
|
|
71
127
|
"publicInterfaceRequired": true,
|
|
72
128
|
"behaviorAssertionRequired": true,
|
|
129
|
+
"specStyleTestNameRequired": true,
|
|
130
|
+
"oneLogicalBehaviorPerRed": true,
|
|
131
|
+
"publicVerificationPathRequired": true,
|
|
73
132
|
"mockBoundary": "system-boundaries-only",
|
|
74
133
|
"implementationDetailTests": "blocked",
|
|
134
|
+
"bulkRedTests": "blocked",
|
|
135
|
+
"boundaryAdapterShape": "specific-operations-preferred",
|
|
75
136
|
"feedbackLoopPreference": [
|
|
76
137
|
"automated-test",
|
|
77
138
|
"http-curl",
|
|
@@ -125,6 +186,9 @@
|
|
|
125
186
|
"testSeam": {
|
|
126
187
|
"entry": "public interface / caller flow / CLI / API / UI / trace replay / harness",
|
|
127
188
|
"behaviorAsserted": "The user or caller observable behavior that should exist",
|
|
189
|
+
"specStyleTestName": "caller can observe the required behavior",
|
|
190
|
+
"oneLogicalBehavior": true,
|
|
191
|
+
"publicVerificationPath": "Read back through the same public interface or user-visible path",
|
|
128
192
|
"implementationDetailRisk": "low"
|
|
129
193
|
},
|
|
130
194
|
"feedbackLoop": {
|
|
@@ -138,9 +202,26 @@
|
|
|
138
202
|
"testQuality": {
|
|
139
203
|
"usesPublicInterface": true,
|
|
140
204
|
"describesBehavior": true,
|
|
205
|
+
"specStyleName": true,
|
|
206
|
+
"oneLogicalBehavior": true,
|
|
207
|
+
"verifiesThroughPublicPath": true,
|
|
141
208
|
"survivesInternalRefactor": true,
|
|
142
|
-
"mocksOnlySystemBoundaries": true
|
|
209
|
+
"mocksOnlySystemBoundaries": true,
|
|
210
|
+
"noBulkRed": true
|
|
143
211
|
},
|
|
212
|
+
"greenMinimality": {
|
|
213
|
+
"guard": "Implement only the code needed to pass this Red behavior",
|
|
214
|
+
"noSpeculativeBranches": true
|
|
215
|
+
},
|
|
216
|
+
"refactorCandidates": [
|
|
217
|
+
"duplication",
|
|
218
|
+
"long method",
|
|
219
|
+
"shallow module",
|
|
220
|
+
"feature envy",
|
|
221
|
+
"primitive obsession",
|
|
222
|
+
"naming",
|
|
223
|
+
"more than three nested branches"
|
|
224
|
+
],
|
|
144
225
|
"dependsOn": [],
|
|
145
226
|
"parallel": false,
|
|
146
227
|
"touches": [
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
- Approval status: `draft` | `in-review` | `approved`
|
|
13
13
|
- Source roadmap item:
|
|
14
14
|
- Source roadmap version:
|
|
15
|
+
- Roadmap sync status:
|
|
15
16
|
- Primary capability:
|
|
16
17
|
- Secondary capabilities:
|
|
17
18
|
|
|
@@ -74,6 +75,20 @@
|
|
|
74
75
|
|
|
75
76
|
> `tiny-design` 是短设计,不是免设计。没有明确批准状态、验证证据和升级触发条件,就不能继续拆任务。
|
|
76
77
|
|
|
78
|
+
## PRD-Grade Brief
|
|
79
|
+
|
|
80
|
+
- Problem statement:
|
|
81
|
+
- Solution summary:
|
|
82
|
+
- Actors / personas:
|
|
83
|
+
- User stories:
|
|
84
|
+
- US-001: As a `<actor>`, I want `<feature>`, so that `<benefit>`.
|
|
85
|
+
- Implementation decisions:
|
|
86
|
+
- Testing decisions:
|
|
87
|
+
- Out of scope:
|
|
88
|
+
- Further notes:
|
|
89
|
+
|
|
90
|
+
> 即使是 tiny-design,也要保留用户视角和验收口径。这里只写 durable 行为、契约和模块责任,不写易过期的行号或代码片段。
|
|
91
|
+
|
|
77
92
|
## Interface Shape
|
|
78
93
|
|
|
79
94
|
- Callers:
|
|
@@ -82,6 +97,14 @@
|
|
|
82
97
|
- Misuse risk:
|
|
83
98
|
- Why this stays simple:
|
|
84
99
|
|
|
100
|
+
## Interface Testability
|
|
101
|
+
|
|
102
|
+
- Dependency shape: injected / created internally
|
|
103
|
+
- Result shape: returned result / side effect
|
|
104
|
+
- Boundary adapter shape: specific operation / generic fetcher / N/A
|
|
105
|
+
- Test setup complexity: simple / conditional / brittle
|
|
106
|
+
- Decision:
|
|
107
|
+
|
|
85
108
|
## Implementation Surface Map
|
|
86
109
|
|
|
87
110
|
| Surface | Responsibility | Why here | Coupling risk |
|
|
@@ -93,16 +116,33 @@
|
|
|
93
116
|
- Test framework source:
|
|
94
117
|
- First failing test:
|
|
95
118
|
- Test seam / public interface:
|
|
119
|
+
- Spec-style test name:
|
|
120
|
+
- One logical behavior:
|
|
121
|
+
- Public verification path:
|
|
96
122
|
- Behavior asserted:
|
|
97
123
|
- Mock boundary:
|
|
124
|
+
- Boundary adapter shape:
|
|
98
125
|
- Feedback loop type:
|
|
99
126
|
- Tracer bullet order:
|
|
100
127
|
- Green implementation check:
|
|
128
|
+
- Green minimality guard:
|
|
101
129
|
- Refactor checkpoint:
|
|
130
|
+
- Refactor candidates:
|
|
102
131
|
- TDD exceptions:
|
|
103
132
|
- Regression test required:
|
|
104
133
|
- Primary check:
|
|
105
134
|
- Secondary checks:
|
|
135
|
+
|
|
136
|
+
## Roadmap Sync Gate
|
|
137
|
+
|
|
138
|
+
- Source RM:
|
|
139
|
+
- Locate command:
|
|
140
|
+
- Sync command:
|
|
141
|
+
- Updated files: `devflow/roadmap.json`, `devflow/ROADMAP.md`, optional `devflow/BACKLOG.md`
|
|
142
|
+
- Status after sync: `Planned` | `Split` | `Rerouted` | `No source RM`
|
|
143
|
+
- Progress after sync:
|
|
144
|
+
- No-op reason:
|
|
145
|
+
- Blocking mismatch:
|
|
106
146
|
- Evidence to collect:
|
|
107
147
|
|
|
108
148
|
## Conditional Design Checks
|
|
@@ -129,13 +169,18 @@
|
|
|
129
169
|
- Domain language scan:
|
|
130
170
|
- Implementation surface scan:
|
|
131
171
|
- Interface depth scan:
|
|
172
|
+
- Interface testability scan:
|
|
132
173
|
- Test framework / regression scan:
|
|
133
174
|
- Test seam / mock boundary scan:
|
|
175
|
+
- Public verification path scan:
|
|
134
176
|
- Tracer bullet scan:
|
|
177
|
+
- Green minimality / refactor candidate scan:
|
|
178
|
+
- PRD brief scan:
|
|
135
179
|
- Source trust boundary scan:
|
|
136
180
|
- External conflict scan:
|
|
137
181
|
- Ambiguity gate:
|
|
138
182
|
- Review loop status:
|
|
183
|
+
- Decision question scan:
|
|
139
184
|
- Test-first readiness:
|
|
140
185
|
- Review calibration:
|
|
141
186
|
- Final recommendation:
|
|
@@ -148,6 +193,12 @@
|
|
|
148
193
|
- Stall reason:
|
|
149
194
|
- Reroute if stalled:
|
|
150
195
|
|
|
196
|
+
## Decision Questions
|
|
197
|
+
|
|
198
|
+
| ID | Gate | Known evidence | Recommendation | User choice | Impact on `cc-do` | Status |
|
|
199
|
+
|----|------|----------------|----------------|-------------|-------------------|--------|
|
|
200
|
+
| D1 | planning-mode / ambiguity-blocker / approach-approval / taste-or-user-challenge / final-design-approval | | | | | asked / answered / auto-decided |
|
|
201
|
+
|
|
151
202
|
## Approval
|
|
152
203
|
|
|
153
204
|
- User approval status:
|
|
@@ -15,16 +15,21 @@
|
|
|
15
15
|
11. 每个计划必须先找 existing leverage,再决定新增实现;重复已有能力属于 planning 失败。
|
|
16
16
|
12. 同 blast radius 内的完整边界默认纳入,defer 必须写入 `NOT in scope` 和原因。
|
|
17
17
|
13. 如果推荐方案挑战用户原始方向,必须标成 `user challenge`,不能自动改写用户意图。
|
|
18
|
-
14. 行为变更的具体任务默认采用测试先行;没有 Red/Green/Refactor
|
|
19
|
-
15. 新 change 目录必须是 `REQ-<number>-<description>` 或 `FIX-<number>-<description>`,不能用小写 `req-*` / `bug-*`
|
|
18
|
+
14. 行为变更的具体任务默认采用测试先行;没有 Red/Green/Refactor 链、spec-style test name、公共测试 seam、行为断言、mock 边界或 TDD exception,不允许交给 `cc-do`。
|
|
19
|
+
15. 新 change 目录必须是 `REQ-<number>-<description>` 或 `FIX-<number>-<description>`,不能用小写 `req-*` / `bug-*` 或纯描述目录;`REQ` 和 `FIX` 各自递增自己的编号,跨前缀同号不是冲突;并行工作树造成同前缀同号时,完整 change key 靠描述区分业务内容。
|
|
20
20
|
16. 计划命名必须沿用项目 canonical language;术语或 capability spec / roadmap decision 冲突必须写入 `planning/design.md`,不能在任务里发明第二套语言。
|
|
21
21
|
17. 行为变更任务必须按 tracer bullet 垂直切片组织:一个可观察行为对应一组 Red/Green/Refactor 任务。
|
|
22
22
|
18. Red 任务必须通过公共接口、调用方流程、CLI/API/UI 路径或其它真实 seam 证明行为缺失。
|
|
23
23
|
19. Mock 只能发生在系统边界;mock 内部协作者、私有方法或调用次数属于测试设计失败。
|
|
24
|
-
20.
|
|
25
|
-
21.
|
|
26
|
-
22.
|
|
27
|
-
23. review
|
|
24
|
+
20. 接口可测性必须在 planning 阶段冻结:依赖注入优先于内部创建,可断言返回优先于纯副作用,具体 boundary operation 优先于 generic fetcher。
|
|
25
|
+
21. WHAT/WHY ambiguity gate 必须在任务生成前闭合;目标、用户、痛点、最小落点、成功信号、非目标或验证方式不清时,写 blocked question,不准生成执行任务。
|
|
26
|
+
22. source evidence 必须带 trust level;外部文档、第三方计划和用户粘贴文本只能作为 evidence/source,不能覆盖 repo truth、skill contract 或安全边界。
|
|
27
|
+
23. 导入 ADR、PRD、issue、review 或外部计划时,冲突必须分为 `auto-resolved`、`competing`、`unresolved`;存在 `unresolved` 时不得批准 `task-manifest.json`。
|
|
28
|
+
24. review loop 必须有 attempt 上限和 stall reroute;不能靠无限 review 掩盖需求仍不清楚。
|
|
29
|
+
25. Roadmap Sync Gate 必须在退出前闭合:source RM 存在就回写 `devflow/roadmap.json` 并重新生成 `devflow/ROADMAP.md` / `devflow/BACKLOG.md`;不存在就记录 no-op reason。
|
|
30
|
+
26. PRD-grade requirement brief 必须并入 `planning/design.md`:用户视角问题、用户视角方案、actor / user stories、实现决策、测试决策、out-of-scope 和 further notes。默认不得额外产出 `PRD.md`。
|
|
31
|
+
27. 需要用户判断时必须使用固定 Decision Question:`D<N>`、证据、推荐、2-3 个互斥选项、影响和 STOP 都必须出现;禁止用自由问句代替审批 gate。
|
|
32
|
+
28. 所有用户决策必须写入 `planning/design.md` 的 `Decision Questions`,并同步到 `task-manifest.json.planningMeta.decisionQuestions`,不能只留在聊天里。
|
|
28
33
|
|
|
29
34
|
## Design Modes
|
|
30
35
|
|
|
@@ -50,18 +55,40 @@
|
|
|
50
55
|
每个任务至少写清:
|
|
51
56
|
|
|
52
57
|
- 目标
|
|
58
|
+
- 对应 user story / edge story
|
|
53
59
|
- TDD phase:`red` / `green` / `refactor` / `exception`
|
|
54
60
|
- Vertical slice / tracer bullet
|
|
61
|
+
- Spec-style test name
|
|
62
|
+
- One logical behavior
|
|
55
63
|
- Test seam / public interface
|
|
64
|
+
- Public verification path
|
|
56
65
|
- Behavior asserted
|
|
57
66
|
- Mock boundary
|
|
58
67
|
- Feedback loop type
|
|
68
|
+
- Green minimality guard
|
|
69
|
+
- Refactor candidates
|
|
59
70
|
- 涉及文件
|
|
60
71
|
- 验证方式
|
|
61
72
|
- 完成证据
|
|
62
73
|
|
|
63
74
|
行为变更任务必须先有 `[TEST]` 红灯任务,再有 `[IMPL]` 绿灯任务,最后有 `[REFACTOR]` 或明确 refactor checkpoint。纯文档、纯配置、纯生成文件、throwaway prototype 可以例外,但必须写明原因、风险和替代验证。
|
|
64
75
|
不要把计划拆成水平层:一批测试、一批服务、一批 UI。每个切片完成后都应该能证明一个真实行为。
|
|
76
|
+
也不要把一批 Red 一次性写完再批量实现。每条 tracer bullet 只证明一个可观察行为,Green 只做当前红灯要求的最小实现;下一条 Red 可以吸收上一轮学到的事实,但不能越过冻结边界。
|
|
77
|
+
|
|
78
|
+
## Decision Question Fields
|
|
79
|
+
|
|
80
|
+
每个需要用户判断的 gate 至少记录:
|
|
81
|
+
|
|
82
|
+
- questionId:`D1` / `D2` / ...
|
|
83
|
+
- gate:`planning-mode` / `ambiguity-blocker` / `approach-approval` / `taste-or-user-challenge` / `final-design-approval`
|
|
84
|
+
- knownEvidence
|
|
85
|
+
- recommendation
|
|
86
|
+
- options
|
|
87
|
+
- userChoice
|
|
88
|
+
- impact
|
|
89
|
+
- status:`asked` / `answered` / `auto-decided`
|
|
90
|
+
|
|
91
|
+
如果选项不是覆盖度差异,completeness 使用 `different-kind`,并写清不能打分的原因。
|
|
65
92
|
|
|
66
93
|
## Review Gate
|
|
67
94
|
|
|
@@ -78,15 +105,20 @@
|
|
|
78
105
|
9. Test diagram and failure modes
|
|
79
106
|
10. Domain language / spec decision conflict scan
|
|
80
107
|
11. Interface depth scan
|
|
81
|
-
12.
|
|
82
|
-
13.
|
|
83
|
-
14.
|
|
84
|
-
15.
|
|
85
|
-
16.
|
|
86
|
-
17.
|
|
87
|
-
18.
|
|
88
|
-
19.
|
|
89
|
-
20.
|
|
108
|
+
12. Interface testability scan
|
|
109
|
+
13. Test seam / mock boundary scan
|
|
110
|
+
14. Public verification path scan
|
|
111
|
+
15. Tracer bullet scan
|
|
112
|
+
16. Green minimality / refactor candidate scan
|
|
113
|
+
17. PRD brief scan
|
|
114
|
+
18. Source trust boundary scan
|
|
115
|
+
19. External conflict scan
|
|
116
|
+
20. Ambiguity gate
|
|
117
|
+
21. Bounded review loop
|
|
118
|
+
22. NOT in scope
|
|
119
|
+
23. Test-first readiness
|
|
120
|
+
24. Decision questions recorded
|
|
121
|
+
25. Final recommendation
|
|
90
122
|
|
|
91
123
|
如有 UI scope,再补 design review 结论。
|
|
92
124
|
如有 developer-facing scope,再补 DX review 结论。
|
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Roadmap Skill Changelog
|
|
2
2
|
|
|
3
|
+
## v5.0.0 - 2026-05-01
|
|
4
|
+
|
|
5
|
+
- replace the roadmap/backlog/tracking split with `devflow/roadmap.json` as the single editable roadmap state
|
|
6
|
+
- render `devflow/ROADMAP.md` and deprecated `devflow/BACKLOG.md` projections from the same state, including data-driven Mermaid architecture
|
|
7
|
+
- make helper commands prefer `roadmap.json` while preserving legacy `roadmap-tracking.json` migration fallback
|
|
8
|
+
|
|
9
|
+
Migration note:
|
|
10
|
+
|
|
11
|
+
- edit `devflow/roadmap.json` for new roadmap work; treat `devflow/ROADMAP.md` and `devflow/BACKLOG.md` as generated views
|
|
12
|
+
- existing `devflow/roadmap-tracking.json` files are read as legacy input and upgraded into `roadmap.json` on render or sync
|
|
13
|
+
- `BACKLOG.md` remains generated for one compatibility release only and should not be used as durable truth
|
|
14
|
+
|
|
3
15
|
## v4.4.1 - 2026-04-28
|
|
4
16
|
|
|
5
17
|
- clarify that roadmap language and durable decisions come from cc-devflow native sources: `devflow/specs/`, roadmap/backlog, historical design/analysis, and change metadata
|
|
@@ -23,20 +23,20 @@
|
|
|
23
23
|
|
|
24
24
|
## Local Kit
|
|
25
25
|
|
|
26
|
-
-
|
|
27
|
-
- 需要结构化
|
|
26
|
+
- 生成骨架时先用 `assets/TRACKING_TEMPLATE.json` 写 `devflow/roadmap.json`,再渲染 `assets/ROADMAP_TEMPLATE.md` / `assets/BACKLOG_TEMPLATE.md` 形状
|
|
27
|
+
- 需要结构化 roadmap state 时用 `assets/TRACKING_TEMPLATE.json`
|
|
28
28
|
- 需要追问脚本时看 `references/roadmap-dialogue.md`
|
|
29
29
|
- 需要定位 / 回写条目时用 `scripts/locate-roadmap-item.sh` 和 `scripts/sync-roadmap-progress.sh`
|
|
30
|
-
- `scripts/locate-roadmap-item.sh` 先读 `roadmap
|
|
31
|
-
- 只想把
|
|
32
|
-
- `scripts/sync-roadmap-progress.sh` 会把 `roadmap
|
|
30
|
+
- `scripts/locate-roadmap-item.sh` 先读 `roadmap.json`,再回落到旧 `roadmap-tracking.json` 和 Markdown,避免定位依赖 markdown 列位或文案漂移
|
|
31
|
+
- 只想把 state 重渲染回 `ROADMAP.md` / `BACKLOG.md` 时,直接调用 `scripts/roadmap-tracking.js render`
|
|
32
|
+
- `scripts/sync-roadmap-progress.sh` 会把 `roadmap.json` 当真相源,再回渲染 `ROADMAP.md` 和 deprecated `BACKLOG.md`
|
|
33
33
|
- 变更版本时同步 `CHANGELOG.md`,必要时用 `scripts/bump-skill-version.sh`
|
|
34
34
|
|
|
35
35
|
## Context Sweep
|
|
36
36
|
|
|
37
37
|
进入 roadmap 对话前,至少摸清:
|
|
38
38
|
|
|
39
|
-
1. 现有 `devflow/ROADMAP.md` / `devflow/BACKLOG.md`
|
|
39
|
+
1. 现有 `devflow/roadmap.json` / `devflow/ROADMAP.md` / `devflow/BACKLOG.md`
|
|
40
40
|
2. `CLAUDE.md`、`README*`、`TODOS.md`
|
|
41
41
|
3. 项目语言和持久决策:`devflow/specs/INDEX.md`、相关 capability specs、当前 roadmap/backlog、历史 `planning/design.md` / `planning/analysis.md`、`change-meta.json`、长期 design decision
|
|
42
42
|
4. 最近相关 docs / specs / plans
|
|
@@ -116,6 +116,11 @@
|
|
|
116
116
|
|
|
117
117
|
## Output Contract
|
|
118
118
|
|
|
119
|
+
`devflow/roadmap.json`
|
|
120
|
+
- single editable roadmap state
|
|
121
|
+
- output policy, meta, context, evidence, route, stages, items, handoff, and architecture
|
|
122
|
+
- flat `architecture.nodes` / `architecture.edges` used to generate Mermaid
|
|
123
|
+
|
|
119
124
|
`devflow/ROADMAP.md`
|
|
120
125
|
- version / skill version / context snapshot / evidence ledger
|
|
121
126
|
- 1-3 个阶段
|
|
@@ -128,13 +133,14 @@
|
|
|
128
133
|
- 非目标
|
|
129
134
|
- `RM Dependency Graph`
|
|
130
135
|
- `Parallel waves`
|
|
131
|
-
- `Implementation Tracking` 由 `devflow/roadmap
|
|
136
|
+
- `Implementation Tracking` 和 `Technical Architecture` 由 `devflow/roadmap.json` 渲染,避免手改 markdown 表格或 Mermaid
|
|
132
137
|
|
|
133
138
|
`devflow/BACKLOG.md`
|
|
139
|
+
- deprecated compatibility projection; edit `devflow/roadmap.json` instead
|
|
134
140
|
- 只保留会真的进入下一轮 `cc-plan` 的事项
|
|
135
141
|
- 每项注明来源阶段、优先级、证据、`Depends On`、`Parallel With`、当前未知点、下一决策、是否 ready
|
|
136
142
|
- developer-facing / operator-facing 条目要带 target user、time to first value、magic moment 和 adoption bottleneck,方便 `cc-plan` 继续做 DX 设计
|
|
137
|
-
- `Backlog Meta`、`Queue`、`Dependency Handoff`、`Ready For Req-Plan`、`Parked`
|
|
143
|
+
- `Backlog Meta`、`Queue`、`Dependency Handoff`、`Ready For Req-Plan`、`Parked` 由 `devflow/roadmap.json` 回渲染,避免 roadmap truth 和 backlog handoff 分叉
|
|
138
144
|
|
|
139
145
|
## Review Loop
|
|
140
146
|
|
|
@@ -153,7 +159,7 @@
|
|
|
153
159
|
## Versioning
|
|
154
160
|
|
|
155
161
|
- `patch`: 文案澄清、模板说明、小修补
|
|
156
|
-
- `minor`: 上下文收集、评审、字段增强,且不破坏既有
|
|
162
|
+
- `minor`: 上下文收集、评审、字段增强,且不破坏既有 roadmap state 习惯
|
|
157
163
|
- `major`: 核心输出契约变化,需要 migration note
|
|
158
164
|
|
|
159
165
|
## Exit Rule
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: cc-roadmap
|
|
3
|
-
version:
|
|
3
|
+
version: 5.0.0
|
|
4
4
|
description: "Use when defining, resetting, or narrowing project direction, stage order, or backlog priority before a concrete requirement enters the PDCA loop."
|
|
5
5
|
triggers:
|
|
6
6
|
- "帮我定路线图"
|
|
@@ -19,16 +19,20 @@ reads:
|
|
|
19
19
|
- "assets/TRACKING_TEMPLATE.json"
|
|
20
20
|
- "references/roadmap-dialogue.md"
|
|
21
21
|
writes:
|
|
22
|
+
- path: "devflow/roadmap.json"
|
|
23
|
+
durability: "durable"
|
|
24
|
+
required: true
|
|
22
25
|
- path: "devflow/ROADMAP.md"
|
|
23
26
|
durability: "durable"
|
|
24
27
|
required: true
|
|
25
28
|
- path: "devflow/BACKLOG.md"
|
|
26
29
|
durability: "durable"
|
|
27
|
-
required:
|
|
30
|
+
required: false
|
|
31
|
+
when: "deprecated compatibility projection is generated for downstream readers"
|
|
28
32
|
- path: "devflow/roadmap-tracking.json"
|
|
29
33
|
durability: "durable"
|
|
30
34
|
required: false
|
|
31
|
-
when: "
|
|
35
|
+
when: "legacy projects are being migrated into devflow/roadmap.json"
|
|
32
36
|
entry_gate:
|
|
33
37
|
- "Read current roadmap, backlog, related capability specs, and surrounding repo context before proposing direction."
|
|
34
38
|
- "Load cc-devflow native language and durable-decision sources (`devflow/specs/`, current roadmap/backlog, prior `planning/design.md` or `planning/analysis.md`, and `change-meta.json`) before naming stages, capabilities, users, or backlog items."
|
|
@@ -68,7 +72,7 @@ tool_budget:
|
|
|
68
72
|
|
|
69
73
|
写入任何 durable Markdown 或 JSON metadata 前,先运行 `cc-devflow config resolve --format policy`。
|
|
70
74
|
|
|
71
|
-
- `Output language` 是机器约束,`devflow/
|
|
75
|
+
- `Output language` 是机器约束,`devflow/roadmap.json`、`devflow/ROADMAP.md` 和兼容投影必须记录并遵守它。
|
|
72
76
|
- `agent_preferences` 是用户偏好建议,只影响表达方式和结构选择,不覆盖本 Skill 的工作流边界。
|
|
73
77
|
- 如果配置解析失败,先修配置或向用户说明阻塞,不要用默认语言继续生成正式文档。
|
|
74
78
|
|
|
@@ -76,9 +80,10 @@ tool_budget:
|
|
|
76
80
|
|
|
77
81
|
1. `PLAYBOOK.md`
|
|
78
82
|
2. `CHANGELOG.md`
|
|
79
|
-
3. `assets/
|
|
80
|
-
4. `assets/
|
|
81
|
-
5. `
|
|
83
|
+
3. `assets/TRACKING_TEMPLATE.json`
|
|
84
|
+
4. `assets/ROADMAP_TEMPLATE.md`
|
|
85
|
+
5. `assets/BACKLOG_TEMPLATE.md`
|
|
86
|
+
6. `references/roadmap-dialogue.md`
|
|
82
87
|
|
|
83
88
|
## Use This Skill When
|
|
84
89
|
|
|
@@ -104,14 +109,14 @@ tool_budget:
|
|
|
104
109
|
|
|
105
110
|
## Harness Contract
|
|
106
111
|
|
|
107
|
-
- Allowed actions: read current strategy files, repo context, and recent reality; compare route shapes; decompose independent subsystems into stages and RM candidates; write `devflow/
|
|
112
|
+
- Allowed actions: read current strategy files, repo context, and recent reality; compare route shapes; decompose independent subsystems into stages and RM candidates; write `devflow/roadmap.json` as the editable roadmap state, then generate `devflow/ROADMAP.md` and the deprecated `devflow/BACKLOG.md` compatibility projection from that state.
|
|
108
113
|
- Forbidden actions: decompose implementation tasks, invent hidden context, or jump into `cc-plan` before the roadmap is approved.
|
|
109
114
|
- Required evidence: every stage and backlog item must point back to explicit repo facts, user constraints, or observed market signals.
|
|
110
115
|
- Reroute rule: once the conversation collapses to one concrete requirement, stop strategic expansion and hand off to `cc-plan`.
|
|
111
116
|
|
|
112
117
|
## Entry Gate
|
|
113
118
|
|
|
114
|
-
1. 如果 `devflow/ROADMAP.md`
|
|
119
|
+
1. 如果 `devflow/roadmap.json`、`devflow/ROADMAP.md`、`devflow/BACKLOG.md` 或旧 `devflow/roadmap-tracking.json` 已存在,先读现状再重写。
|
|
115
120
|
2. 先判断这是“项目方向问题”还是“单 requirement 执行问题”。
|
|
116
121
|
3. 如果输入是多个独立子系统的混合目标,先拆成阶段和 `RM` 候选;不要继续追问某个子系统的实现细节。
|
|
117
122
|
4. 先做一次上下文扫描,不能跳过现有事实直接写愿景。
|
|
@@ -232,7 +237,7 @@ tool_budget:
|
|
|
232
237
|
|
|
233
238
|
## Review Loop
|
|
234
239
|
|
|
235
|
-
写完 `devflow/ROADMAP.md` / `devflow/BACKLOG.md`
|
|
240
|
+
写完 `devflow/roadmap.json` 并生成 `devflow/ROADMAP.md` / `devflow/BACKLOG.md` 后,至少完成这些检查:
|
|
236
241
|
|
|
237
242
|
1. Placeholder scan:不能有 TBD、TODO、`[NEEDS CONTEXT]` 之类的逃避词。
|
|
238
243
|
2. Evidence scan:每个阶段是否都能指回某个现实证据,而不是空洞愿景。
|
|
@@ -250,8 +255,9 @@ tool_budget:
|
|
|
250
255
|
## Output
|
|
251
256
|
|
|
252
257
|
- `devflow/ROADMAP.md`
|
|
253
|
-
- `devflow/
|
|
254
|
-
- `devflow/
|
|
258
|
+
- `devflow/roadmap.json`
|
|
259
|
+
- `devflow/BACKLOG.md` as a deprecated compatibility projection
|
|
260
|
+
- `devflow/roadmap-tracking.json` only when migrating legacy projects
|
|
255
261
|
|
|
256
262
|
## Good Output
|
|
257
263
|
|
|
@@ -270,13 +276,13 @@ tool_budget:
|
|
|
270
276
|
|
|
271
277
|
- `patch`:措辞、模板字段说明、非契约性澄清
|
|
272
278
|
- `minor`:新增兼容字段、上下文收集规则、评审规则、输出结构增强
|
|
273
|
-
- `major`:改变 `devflow/
|
|
279
|
+
- `major`:改变 `devflow/roadmap.json`、生成投影、阶段模型或 handoff 预期
|
|
274
280
|
|
|
275
281
|
每次修改都必须:
|
|
276
282
|
|
|
277
283
|
1. 更新本文件 frontmatter 的 `version`
|
|
278
284
|
2. 更新 `CHANGELOG.md`
|
|
279
|
-
3. 如果会影响已有 `devflow/ROADMAP.md` / `devflow/BACKLOG.md` 使用方式,在 `CHANGELOG.md` 写清 migration note
|
|
285
|
+
3. 如果会影响已有 `devflow/ROADMAP.md` / `devflow/BACKLOG.md` / `devflow/roadmap-tracking.json` 使用方式,在 `CHANGELOG.md` 写清 migration note
|
|
280
286
|
|
|
281
287
|
## Bundled Resources
|
|
282
288
|
|
|
@@ -286,7 +292,7 @@ tool_budget:
|
|
|
286
292
|
- 结构化 tracking 模板:`assets/TRACKING_TEMPLATE.json`
|
|
287
293
|
- 对话骨架:`references/roadmap-dialogue.md`
|
|
288
294
|
- 条目定位:`scripts/locate-roadmap-item.sh`
|
|
289
|
-
-
|
|
295
|
+
- roadmap state 渲染器:`scripts/roadmap-tracking.js`
|
|
290
296
|
- 进度回写:`scripts/sync-roadmap-progress.sh`
|
|
291
297
|
- 版本递增:`scripts/bump-skill-version.sh`
|
|
292
298
|
|
|
@@ -302,7 +308,7 @@ tool_budget:
|
|
|
302
308
|
|
|
303
309
|
1. 先收上下文,再收意见。
|
|
304
310
|
2. 没有现实证据时必须明确写成 assumption,而不是偷偷当事实。
|
|
305
|
-
3. `devflow/ROADMAP.md`
|
|
311
|
+
3. `devflow/roadmap.json` 是唯一可编辑方向真相源,`devflow/ROADMAP.md` 和 `devflow/BACKLOG.md` 是生成投影。
|
|
306
312
|
4. 决策理由必须保留下来,方便以后重跑时比较版本差异。
|
|
307
313
|
5. 路线图里的术语必须沿用项目语言;没有 canonical term 时写 assumption,不要创造第二套概念系统。
|
|
308
314
|
6. 不要为了显得完整而写 6 个阶段,能打赢下一仗比画完整战争图更重要。
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# BACKLOG
|
|
2
2
|
|
|
3
|
+
> Deprecated projection. Edit `roadmap.json` instead.
|
|
4
|
+
|
|
3
5
|
## Backlog Meta
|
|
4
6
|
|
|
5
7
|
- Roadmap version:
|
|
@@ -7,7 +9,7 @@
|
|
|
7
9
|
- Output language:
|
|
8
10
|
- Last synced:
|
|
9
11
|
- Current focus stage:
|
|
10
|
-
-
|
|
12
|
+
- Roadmap state source: `devflow/roadmap.json`
|
|
11
13
|
|
|
12
14
|
## Queue
|
|
13
15
|
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
## Roadmap Meta
|
|
4
4
|
|
|
5
|
+
- Roadmap state source: `devflow/roadmap.json`
|
|
5
6
|
- Roadmap version:
|
|
6
7
|
- Skill version:
|
|
7
8
|
- Output language:
|
|
@@ -178,6 +179,15 @@ flowchart LR
|
|
|
178
179
|
- Serial spine:
|
|
179
180
|
- Parallel-ready branches:
|
|
180
181
|
|
|
182
|
+
## Technical Architecture
|
|
183
|
+
|
|
184
|
+
```mermaid
|
|
185
|
+
flowchart TD
|
|
186
|
+
roadmap_json["roadmap.json"] --> roadmap_md["ROADMAP.md"]
|
|
187
|
+
roadmap_json --> backlog_md["BACKLOG.md (deprecated)"]
|
|
188
|
+
roadmap_md --> cc_plan["cc-plan"]
|
|
189
|
+
```
|
|
190
|
+
|
|
181
191
|
## Parallel Waves
|
|
182
192
|
|
|
183
193
|
| Wave | Ready when | Items | Why parallel |
|
|
@@ -197,7 +207,7 @@ flowchart LR
|
|
|
197
207
|
|
|
198
208
|
## Implementation Tracking
|
|
199
209
|
|
|
200
|
-
-
|
|
210
|
+
- Roadmap state source: `devflow/roadmap.json`
|
|
201
211
|
|
|
202
212
|
<!-- roadmap-tracking:start -->
|
|
203
213
|
| RM-ID | Item | Stage | Priority | Primary Capability | Secondary Capabilities | Expected Spec Delta | Depends On | Status | REQ | Progress |
|