cc-devflow 1.0.2 → 2.4.0

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.
Files changed (43) hide show
  1. package/.claude/CLAUDE.md +123 -4
  2. package/.claude/agents/code-quality-reviewer.md +205 -0
  3. package/.claude/agents/spec-reviewer.md +221 -0
  4. package/.claude/commands/cancel-ralph.md +59 -0
  5. package/.claude/commands/flow-dev.md +202 -21
  6. package/.claude/commands/flow-epic.md +33 -0
  7. package/.claude/commands/flow-fix.md +138 -20
  8. package/.claude/commands/flow-init.md +104 -15
  9. package/.claude/commands/flow-new.md +84 -35
  10. package/.claude/commands/flow-prd.md +16 -3
  11. package/.claude/commands/flow-release.md +33 -0
  12. package/.claude/commands/flow-review.md +257 -0
  13. package/.claude/docs/templates/ATTEMPT_TEMPLATE.md +156 -0
  14. package/.claude/docs/templates/BRAINSTORM_TEMPLATE.md +148 -0
  15. package/.claude/docs/templates/ERROR_LOG_TEMPLATE.md +80 -0
  16. package/.claude/docs/templates/INIT_FLOW_TEMPLATE.md +22 -14
  17. package/.claude/guides/workflow-guides/flow-orchestrator.md +2 -2
  18. package/.claude/hooks/hooks.json +15 -0
  19. package/.claude/hooks/ralph-stop-hook.sh +190 -0
  20. package/.claude/rules/devflow-conventions.md +3 -1
  21. package/.claude/rules/project-constitution.md +256 -2
  22. package/.claude/rules/rationalization-library.md +282 -0
  23. package/.claude/scripts/create-requirement.sh +19 -6
  24. package/.claude/scripts/setup-ralph-loop.sh +155 -0
  25. package/.claude/scripts/verify-gate.sh +269 -0
  26. package/.claude/skills/cc-devflow-orchestrator/SKILL.md +70 -20
  27. package/.claude/skills/file-header-guardian/SKILL.md +56 -0
  28. package/.claude/skills/flow-attention-refresh/SKILL.md +170 -0
  29. package/.claude/skills/flow-brainstorming/SKILL.md +161 -0
  30. package/.claude/skills/flow-debugging/SKILL.md +221 -0
  31. package/.claude/skills/flow-finishing-branch/SKILL.md +189 -0
  32. package/.claude/skills/flow-receiving-review/SKILL.md +153 -0
  33. package/.claude/skills/flow-tdd/SKILL.md +218 -0
  34. package/.claude/skills/fractal-docs-generator/SKILL.md +45 -0
  35. package/.claude/skills/skill-rules.json +75 -0
  36. package/.claude/skills/verification-before-completion/SKILL.md +158 -0
  37. package/.claude/tsc-cache/777aa1de-497e-411b-a40f-13b74efcec58/edited-files.log +2 -1
  38. package/README.md +104 -19
  39. package/README.zh-CN.md +79 -1
  40. package/docs/commands/flow-init.md +3 -1
  41. package/docs/commands/flow-init.zh-CN.md +3 -1
  42. package/package.json +2 -2
  43. package/.claude/tsc-cache/777aa1de-497e-411b-a40f-13b74efcec58/affected-repos.txt +0 -1
@@ -0,0 +1,257 @@
1
+ ---
2
+ name: flow-review
3
+ description: 'Two-Stage Code Review. Usage: /flow-review "REQ-123" or /flow-review'
4
+ agents:
5
+ spec: .claude/agents/spec-reviewer.md
6
+ quality: .claude/agents/code-reviewer.md
7
+ skills:
8
+ verification: .claude/skills/verification-before-completion/SKILL.md
9
+ receiving: .claude/skills/flow-receiving-review/SKILL.md
10
+ ---
11
+
12
+ # Flow-Review - 两阶段代码审查
13
+
14
+ ## User Input
15
+
16
+ ```text
17
+ $ARGUMENTS = "REQ_ID" 或 空 (自动检测当前分支)
18
+ ```
19
+
20
+ **示例**:
21
+ ```
22
+ /flow-review "REQ-123"
23
+ /flow-review # 自动从分支名提取 REQ-ID
24
+ ```
25
+
26
+ ---
27
+
28
+ ## 核心理念
29
+
30
+ ### Two-Stage Review
31
+
32
+ ```
33
+ Stage 1: SPEC COMPLIANCE (先)
34
+ ┌─────────────────────────────────────────┐
35
+ │ • 加载 PRD, EPIC, TASKS, BRAINSTORM │
36
+ │ • 创建需求清单 │
37
+ │ • 逐项验证(不信任实现者报告) │
38
+ │ • 检查超范围(scope creep) │
39
+ │ • 输出: SPEC_REVIEW.md │
40
+ └─────────────────────────────────────────┘
41
+ ↓ Pass?
42
+ Stage 2: CODE QUALITY (后)
43
+ ┌─────────────────────────────────────────┐
44
+ │ • 代码清晰度、结构、命名 │
45
+ │ • 测试质量和覆盖率 │
46
+ │ • Constitution 合规 │
47
+ │ • 性能和安全 │
48
+ │ • 输出: CODE_QUALITY_REVIEW.md │
49
+ └─────────────────────────────────────────┘
50
+ ```
51
+
52
+ **关键**: Stage 2 只在 Stage 1 通过后执行。
53
+
54
+ ---
55
+
56
+ ## 执行流程
57
+
58
+ ### Stage 0: Entry Gate
59
+
60
+ ```yaml
61
+ 1. 解析 REQ_ID
62
+ → 从参数获取,或从分支名提取 (feature/REQ-123-xxx)
63
+
64
+ 2. 验证需求目录存在
65
+ → devflow/requirements/${REQ_ID}/
66
+
67
+ 3. 加载必需文档
68
+ → PRD.md, EPIC.md, TASKS.md, BRAINSTORM.md
69
+
70
+ 4. 检查实现状态
71
+ → TASKS.md 中所有任务标记为完成
72
+ ```
73
+
74
+ ---
75
+
76
+ ### Stage 1: Spec Compliance Review
77
+
78
+ **调用**: `{AGENT:spec}` (spec-reviewer)
79
+
80
+ ```yaml
81
+ 执行:
82
+ 1. 构建需求清单
83
+ → 从 PRD 提取验收标准
84
+ → 从 TASKS 提取预期结果
85
+
86
+ 2. 代码验证 (不信任报告)
87
+ → 读取实际代码
88
+ → 逐项验证实现
89
+ → 标记: ✅ 实现 | ❌ 缺失 | ⚠️ 部分 | 🚫 超范围
90
+
91
+ 3. Scope Creep 检测
92
+ → 扫描未在规格中的功能
93
+ → 每个额外功能 = 缺陷
94
+
95
+ 4. BRAINSTORM 对齐检查
96
+ → 是否解决原始问题
97
+ → 是否遵循选定方案
98
+
99
+ 输出: devflow/requirements/${REQ_ID}/SPEC_REVIEW.md
100
+ ```
101
+
102
+ **通过条件**:
103
+ - 所有需求项标记为 ✅
104
+ - 无 Scope Creep (🚫)
105
+ - BRAINSTORM 对齐
106
+
107
+ **失败处理**:
108
+ ```yaml
109
+ 如果 Stage 1 失败:
110
+ → 输出 SPEC_REVIEW.md 包含失败项
111
+ → 列出必需修复项
112
+ → 停止,不进入 Stage 2
113
+ → 返回给开发者修复
114
+ ```
115
+
116
+ ---
117
+
118
+ ### Stage 2: Code Quality Review
119
+
120
+ **前置**: Stage 1 必须通过
121
+
122
+ **调用**: `{AGENT:quality}` (code-reviewer)
123
+
124
+ ```yaml
125
+ 执行:
126
+ 1. 代码清晰度
127
+ → 命名是否清晰
128
+ → 结构是否合理
129
+ → 注释是否必要且有用
130
+
131
+ 2. 测试质量
132
+ → 覆盖率 ≥ 80%
133
+ → 测试是否有意义 (非 cheater tests)
134
+ → 边界情况是否覆盖
135
+
136
+ 3. Constitution 合规
137
+ → Article I: 完整实现
138
+ → Article II: 无重复代码
139
+ → Article III: 无硬编码密钥
140
+ → Article IV: 无资源泄漏
141
+ → Article V: 无死代码
142
+ → Article VI: TDD 顺序
143
+
144
+ 4. 性能和安全
145
+ → 无明显性能问题
146
+ → 无安全漏洞
147
+
148
+ 输出: devflow/requirements/${REQ_ID}/CODE_QUALITY_REVIEW.md
149
+ ```
150
+
151
+ ---
152
+
153
+ ### Stage 3: Exit Gate
154
+
155
+ ```yaml
156
+ 验证:
157
+ 1. SPEC_REVIEW.md 状态 = PASS
158
+ 2. CODE_QUALITY_REVIEW.md 状态 = PASS
159
+ 3. 所有阻塞问题已解决
160
+
161
+ 输出:
162
+ → 更新 orchestration_status.json
163
+ → 记录到 EXECUTION_LOG.md
164
+ ```
165
+
166
+ ---
167
+
168
+ ## 输出产物
169
+
170
+ ```
171
+ devflow/requirements/${REQ_ID}/
172
+ ├── SPEC_REVIEW.md # Stage 1 输出
173
+ ├── CODE_QUALITY_REVIEW.md # Stage 2 输出
174
+ └── EXECUTION_LOG.md # 更新
175
+ ```
176
+
177
+ ---
178
+
179
+ ## 收到审查反馈后
180
+
181
+ 当收到审查反馈时,使用 `{SKILL:receiving}` 原则:
182
+
183
+ ```yaml
184
+ 处理反馈:
185
+ 1. 不盲目同意
186
+ → 反馈可能有误
187
+ → 技术上可疑?先验证
188
+
189
+ 2. 不清楚?提问澄清
190
+ → "这个建议的具体原因是什么?"
191
+ → "能否提供示例?"
192
+
193
+ 3. 验证后再实现
194
+ → 确认建议正确
195
+ → 然后实施修改
196
+ ```
197
+
198
+ ---
199
+
200
+ ## Rationalization Prevention
201
+
202
+ | Excuse | Reality |
203
+ |--------|---------|
204
+ | "实现者说完成了" | 读代码验证。不信任报告。 |
205
+ | "测试通过了" | 测试可能不覆盖所有需求。 |
206
+ | "差不多就行" | 差不多 ≠ 正确。规格是契约。 |
207
+ | "额外功能是好事" | 额外 = scope creep = 缺陷。 |
208
+ | "Stage 1 太严格" | 严格是为了质量。不妥协。 |
209
+
210
+ ---
211
+
212
+ ## 错误处理
213
+
214
+ ### Stage 1 失败
215
+
216
+ ```yaml
217
+ 输出:
218
+ - SPEC_REVIEW.md (包含失败项)
219
+ - 必需修复清单
220
+
221
+ 下一步:
222
+ - 开发者修复缺失/超范围项
223
+ - 重新运行 /flow-review
224
+ ```
225
+
226
+ ### Stage 2 失败
227
+
228
+ ```yaml
229
+ 输出:
230
+ - CODE_QUALITY_REVIEW.md (包含问题)
231
+ - 改进建议
232
+
233
+ 下一步:
234
+ - 开发者修复质量问题
235
+ - 重新运行 /flow-review
236
+ ```
237
+
238
+ ---
239
+
240
+ ## Next Step
241
+
242
+ ```
243
+ /flow-qa "${REQ_ID}"
244
+ ```
245
+
246
+ 进入 QA 测试阶段
247
+
248
+ ---
249
+
250
+ **Related Documentation**:
251
+ - [spec-reviewer.md](../.claude/agents/spec-reviewer.md) - Stage 1 Agent
252
+ - [code-reviewer.md](../.claude/agents/code-reviewer.md) - Stage 2 Agent
253
+ - [verification-before-completion](../.claude/skills/verification-before-completion/SKILL.md) - 验证技能
254
+
255
+ ---
256
+
257
+ **[PROTOCOL]**: 变更时更新此头部,然后检查 CLAUDE.md
@@ -0,0 +1,156 @@
1
+ # Research Attempt Template
2
+
3
+ > 本模板用于记录研究阶段的失败尝试。失败是学习数据,记录下来避免重复错误。
4
+
5
+ ---
6
+
7
+ ## 文件命名规范
8
+
9
+ ```
10
+ research/attempts/NNN-descriptive-name.md
11
+ ```
12
+
13
+ **示例**:
14
+ - `001-graphql-approach.md` - 尝试 GraphQL,因性能问题放弃
15
+ - `002-rest-pagination.md` - 尝试偏移分页,改用游标分页
16
+ - `003-redis-cache.md` - 尝试 Redis 缓存,因成本放弃
17
+
18
+ ---
19
+
20
+ ## 模板内容
21
+
22
+ ```markdown
23
+ # Attempt: [方案名]
24
+
25
+ **Date**: YYYY-MM-DD
26
+ **Context**: 解决 [什么问题]
27
+
28
+ ## Approach
29
+
30
+ [描述尝试的方案]
31
+
32
+ ## Result
33
+
34
+ ❌ 失败 / ⚠️ 部分成功 / 🔄 放弃
35
+
36
+ ## Reason
37
+
38
+ [为什么不行]
39
+
40
+ ## Learning
41
+
42
+ [下次应该注意什么]
43
+
44
+ ## References
45
+
46
+ - [相关文档链接]
47
+ - [相关代码片段]
48
+ ```
49
+
50
+ ---
51
+
52
+ ## 示例 1: 放弃 GraphQL
53
+
54
+ ```markdown
55
+ # Attempt: GraphQL API Architecture
56
+
57
+ **Date**: 2026-01-08
58
+ **Context**: 解决前后端 API 通信,考虑使用 GraphQL 代替 REST
59
+
60
+ ## Approach
61
+
62
+ 使用 Apollo Server + GraphQL Schema 定义 API:
63
+ - 单一端点 /graphql
64
+ - 客户端按需查询字段
65
+ - 减少 over-fetching 和 under-fetching
66
+
67
+ ## Result
68
+
69
+ 🔄 放弃
70
+
71
+ ## Reason
72
+
73
+ 1. **学习曲线**: 团队对 GraphQL 不熟悉,估计学习时间 2 周
74
+ 2. **工具链复杂**: 需要 Apollo Client, Codegen, Schema Stitching
75
+ 3. **Overkill**: 当前需求只有 5 个简单 CRUD 端点,REST 足够
76
+ 4. **成本**: GraphQL 服务器性能优化成本高(N+1 查询问题)
77
+
78
+ ## Learning
79
+
80
+ - **YAGNI**: GraphQL 解决的问题(灵活查询、版本管理)当前不存在
81
+ - **下次应该**: 先用 REST,等到真正需要灵活查询时再迁移
82
+ - **决策原则**: 技术选型看当前需求,不为未来需求过度设计
83
+
84
+ ## References
85
+
86
+ - [Apollo Server 官方文档](https://www.apollographql.com/docs/apollo-server/)
87
+ - [GraphQL N+1 问题分析](https://example.com/graphql-n-plus-1)
88
+ ```
89
+
90
+ ---
91
+
92
+ ## 示例 2: 偏移分页改用游标分页
93
+
94
+ ```markdown
95
+ # Attempt: Offset-based Pagination
96
+
97
+ **Date**: 2026-01-08
98
+ **Context**: 实现用户列表分页,最初选择偏移分页(offset/limit)
99
+
100
+ ## Approach
101
+
102
+ 使用 SQL OFFSET/LIMIT:
103
+ ```sql
104
+ SELECT * FROM users
105
+ ORDER BY created_at DESC
106
+ LIMIT 20 OFFSET 40
107
+ ```
108
+
109
+ ## Result
110
+
111
+ ⚠️ 部分成功(实现了但性能差)
112
+
113
+ ## Reason
114
+
115
+ 1. **性能问题**: OFFSET 40000 时查询时间 >2 秒(需扫描前 40000 行)
116
+ 2. **数据不一致**: 翻页时有新数据插入,导致重复或遗漏
117
+ 3. **数据库负载**: 大 OFFSET 导致 CPU 使用率飙升
118
+
119
+ ## Learning
120
+
121
+ - **游标分页更适合**: 使用 `WHERE id > last_id` 替代 OFFSET
122
+ - **性能对比**: 游标分页查询时间稳定在 50ms,与页数无关
123
+ - **决策**: 对于大数据集,始终用游标分页
124
+
125
+ ## References
126
+
127
+ - [PostgreSQL OFFSET Performance](https://example.com/postgres-offset)
128
+ - [Cursor-based Pagination Best Practices](https://example.com/cursor-pagination)
129
+ ```
130
+
131
+ ---
132
+
133
+ ## 何时记录尝试
134
+
135
+ | 情况 | 是否记录 |
136
+ |------|---------|
137
+ | 方案调研后决定不采用 | ✅ 记录 |
138
+ | 实现了但发现性能问题,放弃 | ✅ 记录 |
139
+ | 简单方案 A vs B 对比,选 A | ❌ 不记录(在 research.md Decisions 记录即可) |
140
+ | 重大架构决策放弃 | ✅ 记录 |
141
+ | 技术选型放弃 | ✅ 记录 |
142
+
143
+ ---
144
+
145
+ ## 与 ERROR_LOG.md 的区别
146
+
147
+ | | research/attempts/ | ERROR_LOG.md |
148
+ |--|-------------------|--------------|
149
+ | 阶段 | 研究阶段(Phase 0) | 执行阶段(flow-dev, flow-qa) |
150
+ | 内容 | 方案尝试与放弃 | 代码错误与修复 |
151
+ | 格式 | Markdown 文件 | 结构化错误日志 |
152
+ | 目的 | 避免重复研究 | 避免重复错误 |
153
+
154
+ ---
155
+
156
+ **[PROTOCOL]**: 变更时更新此头部,然后检查 CLAUDE.md
@@ -0,0 +1,148 @@
1
+ ---
2
+ req_id: "{REQ_ID}"
3
+ title: "{TITLE}"
4
+ created_at: "{ISO8601_TIMESTAMP}"
5
+ brainstorm_version: "1.0"
6
+ status: "draft"
7
+ ---
8
+
9
+ # {REQ_ID} Brainstorm Record
10
+
11
+ > **[PROTOCOL]**: 后续所有开发必须与本文档保持一致。如有偏离,需更新本文档并说明原因。
12
+
13
+ ## 原始需求(用户原话)
14
+
15
+ > {用户的原始描述,一字不改,保留所有细节}
16
+
17
+ ## 核心问题定义
18
+
19
+ ### 解决什么问题?
20
+
21
+ {一句话定义核心问题,例如:"用户无法在移动端完成支付"}
22
+
23
+ ### 为谁解决?
24
+
25
+ {用户画像,例如:"日均活跃用户 10,000+,年龄 25-45,移动端为主"}
26
+
27
+ ### 现状痛点
28
+
29
+ - {痛点1:具体描述,包含数据或用户反馈}
30
+ - {痛点2}
31
+ - {痛点3}
32
+
33
+ ## 成功标准
34
+
35
+ ### 如何判断需求完成?(验收标准)
36
+
37
+ - [ ] {可度量的标准1,例如:"支付成功率 ≥ 95%"}
38
+ - [ ] {可度量的标准2}
39
+ - [ ] {可度量的标准3}
40
+
41
+ ### 如何判断需求成功?(业务指标)
42
+
43
+ - {业务指标1,例如:"订单转化率提升 10%"}
44
+ - {业务指标2}
45
+
46
+ ## 约束条件
47
+
48
+ | 类型 | 约束 | 原因 |
49
+ |------|------|------|
50
+ | 技术 | {约束,例如:"必须兼容 iOS 12+"} | {原因} |
51
+ | 时间 | {约束,例如:"2 周内上线"} | {原因} |
52
+ | 资源 | {约束,例如:"1 前端 + 1 后端"} | {原因} |
53
+ | 安全 | {约束,例如:"敏感数据需加密"} | {原因} |
54
+ | 法规 | {约束,例如:"符合 GDPR"} | {原因} |
55
+
56
+ ## 方案探索
57
+
58
+ ### 方案 A: {名称} ⭐ 推荐
59
+
60
+ **描述**:
61
+ {方案概述,100-200 字}
62
+
63
+ **优势**:
64
+ - {优势1}
65
+ - {优势2}
66
+
67
+ **劣势**:
68
+ - {劣势1}
69
+ - {劣势2}
70
+
71
+ **适用场景**:
72
+ {何时选择这个方案}
73
+
74
+ **实现要点**:
75
+ 1. {关键步骤1}
76
+ 2. {关键步骤2}
77
+
78
+ ---
79
+
80
+ ### 方案 B: {名称}
81
+
82
+ **描述**:
83
+ {方案概述}
84
+
85
+ **优势**:
86
+ - {优势1}
87
+
88
+ **劣势**:
89
+ - {劣势1}
90
+
91
+ **适用场景**:
92
+ {何时选择这个方案}
93
+
94
+ ---
95
+
96
+ ### 方案 C: {名称}
97
+
98
+ **描述**:
99
+ {方案概述}
100
+
101
+ **优势**:
102
+ - {优势1}
103
+
104
+ **劣势**:
105
+ - {劣势1}
106
+
107
+ **适用场景**:
108
+ {何时选择这个方案}
109
+
110
+ ## 最终决策
111
+
112
+ **选定方案**: 方案 {X}
113
+
114
+ **选择理由**:
115
+ {为什么选这个方案,而非其他方案}
116
+
117
+ **否决理由**:
118
+ - 方案 {Y}: {为什么不选}
119
+ - 方案 {Z}: {为什么不选}
120
+
121
+ ## 关键决策记录
122
+
123
+ | 决策点 | 决策 | 理由 | 日期 |
124
+ |--------|------|------|------|
125
+ | {问题1} | {选择} | {为什么} | {YYYY-MM-DD} |
126
+ | {问题2} | {选择} | {为什么} | {YYYY-MM-DD} |
127
+
128
+ ## 风险识别
129
+
130
+ | 风险 | 概率 | 影响 | 缓解策略 |
131
+ |------|------|------|----------|
132
+ | {风险1} | 高/中/低 | 高/中/低 | {应对措施} |
133
+ | {风险2} | 高/中/低 | 高/中/低 | {应对措施} |
134
+
135
+ ## 变更历史
136
+
137
+ | 版本 | 日期 | 变更内容 | 变更原因 |
138
+ |------|------|----------|----------|
139
+ | 1.0 | {YYYY-MM-DD} | 初始版本 | 头脑风暴完成 |
140
+
141
+ ---
142
+
143
+ **⚠️ 追溯声明**:
144
+ 本文档是 {REQ_ID} 的「北极星」。后续 PRD、EPIC、TASKS、实现都必须与本文档保持一致。
145
+ 如发现偏离,必须:
146
+ 1. 确认偏离原因
147
+ 2. 更新本文档
148
+ 3. 记录变更历史
@@ -0,0 +1,80 @@
1
+ # Error Log: ${REQ_ID}
2
+
3
+ > 本文件记录需求开发过程中遇到的所有错误及解决方案。
4
+ > **[PROTOCOL]**: 遇到错误时立即追加,不要等到最后。
5
+
6
+ ---
7
+
8
+ ## 错误记录格式
9
+
10
+ 每条错误记录遵循以下结构:
11
+
12
+ ```markdown
13
+ ## [TIMESTAMP] E###: TITLE
14
+
15
+ **Phase**: flow-dev / T### 或 flow-qa / 测试名
16
+ **Error Type**: Test Failure | Build Error | Runtime Error | Type Error | Lint Error
17
+ **Error Message**:
18
+ \`\`\`
19
+ 完整错误信息
20
+ \`\`\`
21
+
22
+ **Root Cause**: 根因分析(解决后填写)
23
+ **Resolution**: 解决方案(解决后填写)
24
+ **Prevention**: 预防措施(可选,防止再犯)
25
+ ```
26
+
27
+ ---
28
+
29
+ ## 示例记录
30
+
31
+ ## [2026-01-08T10:30:00] E001: Test Failure - Email Validation
32
+
33
+ **Phase**: flow-dev / T003
34
+ **Error Type**: Test Failure
35
+ **Error Message**:
36
+ ```
37
+ FAIL src/auth/login.test.ts
38
+ × should validate email format
39
+ Expected: true
40
+ Received: false
41
+
42
+ at Object.<anonymous> (src/auth/login.test.ts:25:20)
43
+ ```
44
+
45
+ **Root Cause**: 正则表达式未处理 + 号邮箱(如 user+tag@example.com)
46
+ **Resolution**: 更新正则为 `/^[^\s@]+@[^\s@]+\.[^\s@]+$/`
47
+ **Prevention**: 添加 + 号邮箱到测试用例,扩充边界测试
48
+
49
+ ---
50
+
51
+ ## [2026-01-08T11:15:00] E002: Build Error - Missing Import
52
+
53
+ **Phase**: flow-dev / T005
54
+ **Error Type**: Build Error
55
+ **Error Message**:
56
+ ```
57
+ ERROR in src/components/UserProfile.tsx
58
+ Module not found: Can't resolve '@/utils/formatDate'
59
+ ```
60
+
61
+ **Root Cause**: formatDate 函数移动到 @/utils/date 但未更新 import
62
+ **Resolution**: 更新 import 路径为 `@/utils/date`
63
+ **Prevention**: 使用 IDE 重构功能移动文件,自动更新引用
64
+
65
+ ---
66
+
67
+ ## 统计信息
68
+
69
+ | 指标 | 值 |
70
+ |------|-----|
71
+ | 总错误数 | 0 |
72
+ | 已解决 | 0 |
73
+ | 待解决 | 0 |
74
+ | 最常见类型 | - |
75
+
76
+ > 注:此统计在开发结束时手动更新
77
+
78
+ ---
79
+
80
+ **[PROTOCOL]**: 变更时更新此头部,然后检查 CLAUDE.md
@@ -36,6 +36,9 @@ scripts:
36
36
  ```bash
37
37
  # 1. 解析参数
38
38
  REQ_ID|TITLE|PLAN_URLS → 验证 REQ_ID 格式: ^(REQ|BUG)-[0-9]+$
39
+ → 若 TITLE 含中文/非ASCII,使用模型意译生成 BRANCH_TITLE_EN(英文语义翻译,禁止拼音/音译)
40
+ → BRANCH_TITLE_EN 仅用于分支名,文档标题仍使用原始 TITLE
41
+ → 若意译不确定或未生成 ASCII 结果,向用户确认英文分支标题
39
42
 
40
43
  # 2. 前置条件检查
41
44
  bash {SCRIPT:prereq} --json --paths-only
@@ -47,6 +50,19 @@ bash {SCRIPT:prereq} --json --paths-only
47
50
 
48
51
  ---
49
52
 
53
+ ## Stage 1.2: Git Branch Creation
54
+
55
+ ```bash
56
+ # 创建功能分支
57
+ Requirements: feature/${REQ_ID}-${slug(BRANCH_TITLE_EN)}
58
+ Bug Fixes: bugfix/${BUG_ID}-${slug(BRANCH_TITLE_EN)}
59
+
60
+ # BRANCH_TITLE_EN = TITLE 的英文意译 (语义为准,非拼音,使用模型意译)
61
+ # slug() = lowercase, replace spaces/special chars with hyphens
62
+ ```
63
+
64
+ ---
65
+
50
66
  ## Stage 1.5: Context Loading (路线图与架构)
51
67
 
52
68
  **目标**: 理解需求在项目中的位置
@@ -63,7 +79,9 @@ bash {SCRIPT:prereq} --json --paths-only
63
79
 
64
80
  ```bash
65
81
  # 创建需求目录
66
- bash {SCRIPT:create} "${REQ_ID}" --title "${TITLE}" --json
82
+ bash {SCRIPT:create} "${REQ_ID}" --title "${TITLE}" --branch-title "${BRANCH_TITLE_EN}" --json
83
+
84
+ → 若未生成 BRANCH_TITLE_EN,则省略 --branch-title
67
85
 
68
86
  # 生成文件
69
87
  devflow/requirements/${REQ_ID}/
@@ -127,19 +145,9 @@ orchestration_status.json.phase0_complete = true
127
145
 
128
146
  ---
129
147
 
130
- ## Stage 3: Git Branch Creation
131
-
132
- ```bash
133
- # 创建功能分支
134
- Requirements: feature/${REQ_ID}-${slug(title)}
135
- Bug Fixes: bugfix/${BUG_ID}-${slug(title)}
136
-
137
- # slug() = lowercase, replace spaces/special chars with hyphens
138
- ```
139
148
 
140
- ---
141
149
 
142
- ## Stage 4: README Generation
150
+ ## Stage 3: README Generation
143
151
 
144
152
  ```bash
145
153
  # 生成工作流指南
@@ -149,7 +157,7 @@ Bug Fixes: bugfix/${BUG_ID}-${slug(title)}
149
157
 
150
158
  ---
151
159
 
152
- ## Stage 5: Exit Gate (5-Level Quality Check)
160
+ ## Stage 4: Exit Gate (5-Level Quality Check)
153
161
 
154
162
  ### Level 1: File Existence Check
155
163
  ```bash
@@ -204,7 +212,7 @@ devflow/requirements/${REQ_ID}/
204
212
  ```
205
213
 
206
214
  **Git**:
207
- - Branch: `feature/${REQ_ID}-${slug(title)}`
215
+ - Branch: `feature/${REQ_ID}-${slug(BRANCH_TITLE_EN)}`
208
216
  - Status: orchestration_status.json.status = "initialized"
209
217
  - Phase: orchestration_status.json.phase = "planning"
210
218