create-vibe-workflow 0.1.0 → 0.2.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 (120) hide show
  1. package/README.md +248 -57
  2. package/dist/adapters/next-only/skills.recommend.json +1 -0
  3. package/dist/adapters/node-api/skills.recommend.json +1 -0
  4. package/dist/cli.js +163 -5
  5. package/dist/cli.js.map +1 -1
  6. package/dist/generator.d.ts.map +1 -1
  7. package/dist/generator.js +255 -44
  8. package/dist/generator.js.map +1 -1
  9. package/dist/questions.d.ts +11 -1
  10. package/dist/questions.d.ts.map +1 -1
  11. package/dist/questions.js +103 -16
  12. package/dist/questions.js.map +1 -1
  13. package/dist/templates/claude-md/CLAUDE.zh-CN.md +51 -46
  14. package/dist/templates/claude-md/next-only/CLAUDE.zh-CN.md +46 -0
  15. package/dist/templates/claude-md/node-api/CLAUDE.zh-CN.md +47 -0
  16. package/dist/templates/commands/gstack/cso.md.ejs +213 -0
  17. package/dist/templates/commands/gstack/office-hours.md.ejs +109 -0
  18. package/dist/templates/commands/gstack/review.md.ejs +192 -0
  19. package/dist/templates/commands/gstack/ship.md.ejs +256 -0
  20. package/dist/templates/commands/opsx/apply.md.ejs +106 -0
  21. package/dist/templates/commands/opsx/archive.md.ejs +88 -0
  22. package/dist/templates/commands/opsx/explore.md.ejs +84 -0
  23. package/dist/templates/commands/opsx/propose.md.ejs +185 -0
  24. package/dist/templates/commands/superpowers/brainstorm.md.ejs +240 -0
  25. package/dist/templates/commands/superpowers/tdd.md.ejs +230 -0
  26. package/dist/templates/commands/superpowers/verify.md.ejs +211 -0
  27. package/dist/templates/commands/workflow/plan.md.ejs +219 -0
  28. package/dist/templates/hooks/check-deps.mjs +66 -65
  29. package/dist/templates/memory/.gitkeep +0 -0
  30. package/dist/templates/memory/MEMORY.md.ejs +88 -0
  31. package/dist/templates/memory/dev-notes.md.ejs +61 -0
  32. package/dist/templates/memory/troubleshooting.md.ejs +30 -0
  33. package/dist/templates/rules/agents.md +49 -49
  34. package/dist/templates/rules/coding-style.md +156 -117
  35. package/dist/templates/rules/development-workflow.md +103 -50
  36. package/dist/templates/rules/git-workflow.md +103 -47
  37. package/dist/templates/rules/hooks.md +159 -0
  38. package/dist/templates/rules/hooks.md.ejs +159 -0
  39. package/dist/templates/rules/memory.md +106 -0
  40. package/dist/templates/rules/memory.md.ejs +106 -0
  41. package/dist/templates/rules/patterns.md +117 -48
  42. package/dist/templates/rules/performance.md +108 -0
  43. package/dist/templates/rules/performance.md.ejs +108 -0
  44. package/dist/templates/rules/security.md +52 -37
  45. package/dist/templates/rules/testing.md +83 -30
  46. package/dist/templates/settings/settings.template.json +18 -2
  47. package/dist/templates/skills/advanced/caveman/SKILL.md.ejs +144 -0
  48. package/dist/templates/skills/advanced/diagnose/SKILL.md.ejs +159 -0
  49. package/dist/templates/skills/advanced/grill-with-docs/SKILL.md.ejs +154 -0
  50. package/dist/templates/skills/advanced/improve-codebase-architecture/SKILL.md.ejs +172 -0
  51. package/dist/templates/skills/backend/backend-patterns/SKILL.md.ejs +263 -0
  52. package/dist/templates/skills/database/database-migrations/SKILL.md.ejs +202 -0
  53. package/dist/templates/skills/database/postgres-patterns/SKILL.md.ejs +235 -0
  54. package/dist/templates/skills/devops/deployment-patterns/SKILL.md.ejs +228 -0
  55. package/dist/templates/skills/devops/docker-patterns/SKILL.md.ejs +215 -0
  56. package/dist/templates/skills/frontend/frontend-patterns/SKILL.md.ejs +195 -0
  57. package/dist/templates/skills/skill-manifest.json +59 -0
  58. package/dist/templates/skills/skills-lock.template.json +12 -0
  59. package/dist/templates/skills/testing/e2e-testing/SKILL.md.ejs +224 -0
  60. package/dist/templates/skills/workflow/coding-standards/SKILL.md.ejs +143 -0
  61. package/dist/templates/skills/workflow/search-first/SKILL.md.ejs +103 -0
  62. package/dist/templates/skills/workflow/security-review/SKILL.md.ejs +146 -0
  63. package/dist/templates/skills/workflow/strategic-compact/SKILL.md.ejs +108 -0
  64. package/dist/templates/skills/workflow/tdd-workflow/SKILL.md.ejs +104 -0
  65. package/dist/templates/skills/workflow/verification-loop/SKILL.md.ejs +144 -0
  66. package/dist/utils.d.ts +40 -0
  67. package/dist/utils.d.ts.map +1 -0
  68. package/dist/utils.js +110 -0
  69. package/dist/utils.js.map +1 -0
  70. package/package.json +2 -2
  71. package/templates/claude-md/CLAUDE.zh-CN.md +51 -46
  72. package/templates/claude-md/next-only/CLAUDE.zh-CN.md +46 -0
  73. package/templates/claude-md/node-api/CLAUDE.zh-CN.md +47 -0
  74. package/templates/commands/gstack/cso.md.ejs +213 -0
  75. package/templates/commands/gstack/office-hours.md.ejs +109 -0
  76. package/templates/commands/gstack/review.md.ejs +192 -0
  77. package/templates/commands/gstack/ship.md.ejs +256 -0
  78. package/templates/commands/opsx/apply.md.ejs +106 -0
  79. package/templates/commands/opsx/archive.md.ejs +88 -0
  80. package/templates/commands/opsx/explore.md.ejs +84 -0
  81. package/templates/commands/opsx/propose.md.ejs +185 -0
  82. package/templates/commands/superpowers/brainstorm.md.ejs +240 -0
  83. package/templates/commands/superpowers/tdd.md.ejs +230 -0
  84. package/templates/commands/superpowers/verify.md.ejs +211 -0
  85. package/templates/commands/workflow/plan.md.ejs +219 -0
  86. package/templates/hooks/check-deps.mjs +66 -65
  87. package/templates/memory/.gitkeep +0 -0
  88. package/templates/memory/MEMORY.md.ejs +88 -0
  89. package/templates/memory/dev-notes.md.ejs +61 -0
  90. package/templates/memory/troubleshooting.md.ejs +30 -0
  91. package/templates/rules/agents.md +49 -49
  92. package/templates/rules/coding-style.md +156 -117
  93. package/templates/rules/development-workflow.md +103 -50
  94. package/templates/rules/git-workflow.md +103 -47
  95. package/templates/rules/hooks.md +159 -0
  96. package/templates/rules/memory.md +106 -0
  97. package/templates/rules/patterns.md +117 -48
  98. package/templates/rules/performance.md +108 -0
  99. package/templates/rules/security.md +52 -37
  100. package/templates/rules/testing.md +83 -30
  101. package/templates/settings/settings.template.json +18 -2
  102. package/templates/skills/advanced/caveman/SKILL.md.ejs +144 -0
  103. package/templates/skills/advanced/diagnose/SKILL.md.ejs +159 -0
  104. package/templates/skills/advanced/grill-with-docs/SKILL.md.ejs +154 -0
  105. package/templates/skills/advanced/improve-codebase-architecture/SKILL.md.ejs +172 -0
  106. package/templates/skills/backend/backend-patterns/SKILL.md.ejs +263 -0
  107. package/templates/skills/database/database-migrations/SKILL.md.ejs +202 -0
  108. package/templates/skills/database/postgres-patterns/SKILL.md.ejs +235 -0
  109. package/templates/skills/devops/deployment-patterns/SKILL.md.ejs +228 -0
  110. package/templates/skills/devops/docker-patterns/SKILL.md.ejs +215 -0
  111. package/templates/skills/frontend/frontend-patterns/SKILL.md.ejs +195 -0
  112. package/templates/skills/skill-manifest.json +59 -0
  113. package/templates/skills/skills-lock.template.json +12 -0
  114. package/templates/skills/testing/e2e-testing/SKILL.md.ejs +224 -0
  115. package/templates/skills/workflow/coding-standards/SKILL.md.ejs +143 -0
  116. package/templates/skills/workflow/search-first/SKILL.md.ejs +103 -0
  117. package/templates/skills/workflow/security-review/SKILL.md.ejs +146 -0
  118. package/templates/skills/workflow/strategic-compact/SKILL.md.ejs +108 -0
  119. package/templates/skills/workflow/tdd-workflow/SKILL.md.ejs +104 -0
  120. package/templates/skills/workflow/verification-loop/SKILL.md.ejs +144 -0
@@ -0,0 +1,230 @@
1
+ ---
2
+ name: "TDD"
3
+ description: "强制执行测试驱动开发纪律 — RED → GREEN → REFACTOR 循环,覆盖率 ≥80%"
4
+ category: "Development"
5
+ tags: ["TDD", "测试", "开发", "Superpowers"]
6
+ ---
7
+
8
+ # TDD
9
+
10
+ ## 职责
11
+
12
+ 强制执行 Test-Driven Development(测试驱动开发)纪律:**先写测试,再写实现**。
13
+
14
+ ## TDD 铁律
15
+
16
+ ```
17
+ ┌─────────────────────────────────────────────────────────┐
18
+ │ ① RED ── 写一个失败的测试(先写!) │
19
+ │ ② GREEN ── 写最简实现让测试通过 │
20
+ │ ③ REFACTOR ── 重构代码,保持测试通过 │
21
+ │ ④ LOOP ── 回到 ①,直到功能完成 │
22
+ └─────────────────────────────────────────────────────────┘
23
+ ```
24
+
25
+ **不可跳过的阶段:RED → GREEN → REFACTOR 必须严格按顺序执行。**
26
+
27
+ ## 工作模式
28
+
29
+ <%= USER_LEVEL === 'vibe-coder' ? `
30
+ ### 面向非专业编程人员(Vibe Coder)
31
+
32
+ - TDD 的核心理念是"先想清楚怎么验证,再动手做"——就像组装家具前先检查零件清单
33
+ - 测试就是"验证清单"——确认每个功能按预期工作
34
+ - 如果测试失败,不要慌——这恰恰说明测试在保护你
35
+ - 红 -> 绿 -> 重构,可以先不纠结完美,先确保功能跑通,再回来打磨
36
+ - 会使用通俗语言解释测试结果:红色 = 有问题需要修,绿色 = 一切正常
37
+ ` : `
38
+ ### 面向专业开发者
39
+
40
+ - 测试行为而非实现细节
41
+ - 避免 over-mocking——只在系统边界使用 mock
42
+ - 关注测试的可维护性和可读性
43
+ - 覆盖率指标是手段不是目的
44
+ - 每个 RED 阶段验证测试本身会失败(确认测试有效)
45
+ ` %>
46
+
47
+ ## 步骤
48
+
49
+ ### 步骤 0:准备
50
+
51
+ 1. 读取 `todolist.md`,找到当前待完成的第一个 P0 任务
52
+ 2. 理解任务描述、涉及文件、验收标准
53
+ 3. 确定当前要实现的函数/组件/端点
54
+
55
+ ```
56
+ 正在实现:<commit-message>
57
+ 涉及文件:<files>
58
+ 当前阶段:准备就绪,等待 RED 阶段
59
+ ```
60
+
61
+ ### 步骤 1:RED — 先写测试
62
+
63
+ **必须**:在写任何实现代码之前,先写测试。
64
+
65
+ **写测试指南:**
66
+
67
+ ```
68
+ ### RED 阶段
69
+
70
+ 测试目标:<要测试的函数/组件>
71
+ 测试文件:<test-file-path>
72
+
73
+ 测试用例:
74
+ 1. <场景 1> — 期望结果
75
+ 2. <场景 2> — 期望结果
76
+ ...
77
+ ```
78
+
79
+ **测试命名规范**:`{被测单元} — {场景} — {期望结果}`
80
+
81
+ ```
82
+ 示例:
83
+ - createUser — with valid data — returns user object with ID
84
+ - createUser — with duplicate email — throws ValidationError
85
+ - UserAvatar — when image fails to load — shows fallback initials
86
+ ```
87
+
88
+ **测试类型选择**(按优先级):
89
+
90
+ | 要验证什么 | 测试类型 | 速度 | 数量 |
91
+ |-----------|---------|------|------|
92
+ | 工具函数/纯逻辑 | 单元测试 | 毫秒级 | 边界全覆盖 |
93
+ | 组件渲染 | 单元测试 | 毫秒级 | happy path |
94
+ | API 端点 | 集成测试 | 秒级 | happy + error |
95
+ | 数据库操作 | 集成测试 | 秒级 | CRUD + 约束 |
96
+
97
+ **写完后运行测试**,确认测试**失败**:
98
+
99
+ ```bash
100
+ npm test 2>&1 | head -30
101
+ # 或
102
+ npm run test -- --run 2>&1 | head -30
103
+ ```
104
+
105
+ > 确认测试失败证明:① 测试写对了 ② 功能确实还没实现
106
+
107
+ ### 步骤 2:GREEN — 最简实现
108
+
109
+ **写最简代码让测试通过**:
110
+
111
+ - 写刚好够让测试通过的代码
112
+ - **不要优化**,**不要抽象**,**不要加未来功能**
113
+ - 可以硬编码返回值——后续测试会迫使你泛化
114
+ - 本阶段目标是**通过测试**,不是"写好代码"
115
+
116
+ ```
117
+ ### GREEN 阶段
118
+
119
+ 实现方案:<简短的实现描述>
120
+ 变更文件:<files to modify>
121
+ ```
122
+
123
+ **写完后运行测试**,确认全部通过:
124
+
125
+ ```bash
126
+ npm test 2>&1 | head -30
127
+ ```
128
+
129
+ ### 步骤 3:REFACTOR — 重构
130
+
131
+ **测试通过后才能重构**:
132
+
133
+ - 提取重复代码
134
+ - 优化命名
135
+ - 简化逻辑
136
+ - 遵循项目代码风格
137
+
138
+ **重构不改变行为**:
139
+ - 不改测试
140
+ - 不改 API 签名
141
+ - 不改业务逻辑
142
+
143
+ **每步修改后跑测试**确认没有破坏:
144
+
145
+ ```bash
146
+ npm test 2>&1 | head -10
147
+ ```
148
+
149
+ ```
150
+ ### REFACTOR 阶段
151
+
152
+ 重构内容:
153
+ 1. <重构了什么> — <理由>
154
+ 2. <重构了什么> — <理由>
155
+ ```
156
+
157
+ ### 步骤 4:验证覆盖率
158
+
159
+ ```bash
160
+ npm run test -- --coverage 2>&1 | tail -30
161
+ ```
162
+
163
+ 覆盖率要求:
164
+ - 纯逻辑层 ≥ 95%
165
+ - 组件层 ≥ 80%
166
+ - API 端点 ≥ 80%
167
+ - **总覆盖率 ≥ 80%**
168
+
169
+ 如果覆盖率不达标,补充测试或标记为已知低覆盖区域。
170
+
171
+ ### 步骤 5:标记任务完成
172
+
173
+ 在 `todolist.md` 中将当前任务标记为 `[x]`:
174
+
175
+ ```
176
+ - [x] <commit-message> — <任务描述>
177
+ ```
178
+
179
+ 并提交当前进度:
180
+
181
+ ```bash
182
+ git add -A
183
+ git commit -m "<commit-message>"
184
+ ```
185
+
186
+ ### 步骤 6:进入下一个任务
187
+
188
+ 如果还有未完成的 P0 任务,回到步骤 0(RED 阶段)。
189
+
190
+ 如果所有 P0 完成,输出完成摘要:
191
+
192
+ ```
193
+ ✅ 所有 P0 任务已完成!
194
+
195
+ 完成情况:
196
+ - [x] 任务 1
197
+ - [x] 任务 2
198
+
199
+ 覆盖率:<X>%(≥80% ✅)
200
+
201
+ 建议:运行 /verify 进行完整性检查
202
+ ```
203
+
204
+ ## 反模式(必须避免)
205
+
206
+ | 反模式 | 问题 | 正确做法 |
207
+ |--------|------|---------|
208
+ | 先写实现再补测试 | 测试只是验证而非驱动 | 先写测试 |
209
+ | 测试依赖实现细节 | 重构时大面积测试失败 | 测试行为而非实现 |
210
+ | 一个测试测多个东西 | 失败时不知道问题在哪 | 一个测试一个断言 |
211
+ | mock 过多 | 测试与实现强耦合 | 只在边界层用 mock |
212
+ | 忽略 RED 阶段 | 无法确认测试有效性 | RED 阶段验证测试本身 |
213
+ | 覆盖率 100% 强迫症 | 耗费精力在 trivial 代码上 | 按决策矩阵分配精力 |
214
+
215
+ ## CI 集成
216
+
217
+ ```
218
+ 每次 push / PR 自动运行:
219
+ [lint] → [type-check] → [unit-test] → [build] → [integration-test]
220
+
221
+ 门禁规则:
222
+ - 单元测试失败 → 阻断合并
223
+ - 覆盖率低于阈值 → 警告
224
+ ```
225
+
226
+ ## 下一步
227
+
228
+ 实现完成后,运行:
229
+ - `/verify` — 完整性检查(编译、测试、lint、安全)
230
+ - 然后准备提交 PR
@@ -0,0 +1,211 @@
1
+ ---
2
+ name: "Verify"
3
+ description: "预完成验证 — 在声明工作完成前运行所有检查。源自 Superpowers verification-before-completion"
4
+ category: "Quality"
5
+ tags: ["验证", "质量", "检查", "Superpowers"]
6
+ ---
7
+
8
+ # Verify
9
+
10
+ ## 职责
11
+
12
+ 在声明"功能完成"或"问题已修复"之前,运行所有检查。**没有验证过的完成声明不可信。**
13
+
14
+ ## CRITICAL RULE(硬性规则)
15
+
16
+ > **禁止在未运行此命令的情况下声明"已完成"、"已修复"、"功能正确"。**
17
+ >
18
+ > 证据必须优先于断言。每次你认为"搞定了"时,先运行 `/verify`。
19
+
20
+ ## 工作模式
21
+
22
+ <%= USER_LEVEL === 'vibe-coder' ? `
23
+ ### 面向非专业编程人员(Vibe Coder)
24
+
25
+ 验证就是"最后的检查清单"——就像出门前检查:钥匙、手机、钱包。
26
+ - 每个检查步骤会用通俗语言解释在做什么
27
+ - 失败了会告诉你"哪里有问题"和"怎么修"
28
+ - 不要担心看不懂,我会解释每个错误
29
+ - 修复建议是可操作的("在第 42 行删掉这个 console.log")
30
+ ` : `
31
+ ### 面向专业开发者
32
+
33
+ - 只报告具体失败信息,不做不必要的解释
34
+ - 关注 CI 一致性——确保本地检查与 CI 检查一致
35
+ - 支持逐项跳过(用 --skip-lint 等参数)
36
+ ` %>
37
+
38
+ ## 6 阶段验证
39
+
40
+ ### 阶段 1:编译检查
41
+
42
+ 确保代码可以编译。执行项目对应的编译命令:
43
+
44
+ <%= USER_LEVEL === 'vibe-coder' ? `
45
+ 运行构建命令,检查有没有"红色的错误"——如果有,说明代码还不完整。
46
+
47
+ \`\`\`bash
48
+ npm run build 2>&1
49
+ \`\`\`
50
+ ` : `
51
+ \`\`\`bash
52
+ # TypeScript 项目
53
+ npm run build 2>&1
54
+ # 或
55
+ tsc --noEmit 2>&1
56
+
57
+ # 其他语言根据项目配置
58
+ \`\`\`
59
+ ` %>
60
+
61
+ **通过条件**:编译/构建成功,无错误退出。
62
+
63
+ ### 阶段 2:类型检查
64
+
65
+ 确保类型系统没有错误:
66
+
67
+ ```bash
68
+ # TypeScript
69
+ npx tsc --noEmit 2>&1
70
+ # 或使用项目配置的 type-check 脚本
71
+ npm run type-check 2>&1
72
+ ```
73
+
74
+ **通过条件**:类型检查通过,无类型错误。
75
+
76
+ ### 阶段 3:Lint 检查
77
+
78
+ 确保代码风格和规范没有问题:
79
+
80
+ ```bash
81
+ # 根据项目配置
82
+ npm run lint 2>&1
83
+ # 或
84
+ npx eslint . 2>&1
85
+ npx prettier --check . 2>&1
86
+ ```
87
+
88
+ **通过条件**:无新的 lint 错误或警告。如果项目本身有未修复的历史 lint 问题,只检查本次修改的文件。
89
+
90
+ ### 阶段 4:测试套件
91
+
92
+ 运行所有测试并检查覆盖率:
93
+
94
+ ```bash
95
+ npm test 2>&1
96
+ npm run test -- --coverage 2>&1 | tail -20
97
+ ```
98
+
99
+ **检查项:**
100
+
101
+ | 检查 | 通过条件 |
102
+ |------|---------|
103
+ | 所有测试通过 | 0 failures |
104
+ | 覆盖率 ≥ 80% | 全局与单文件覆盖率均达标 |
105
+ | 无 flaky 测试 | 重复运行 3 次均通过(如适用) |
106
+
107
+ **通过条件**:所有测试通过 + 覆盖率 ≥ 80%。
108
+
109
+ **如果测试失败:**
110
+ <%= USER_LEVEL === 'vibe-coder' ? `
111
+ - 我会告诉你哪个测试失败了
112
+ - 解释这个测试在测什么
113
+ - 给出可能的修复方向
114
+ - 修复完成后重新运行测试
115
+ ` : `
116
+ - 分析失败根因(实现错误 / 测试问题 / 环境问题)
117
+ - 检查测试隔离性
118
+ - 验证 mock 是正确的
119
+ - 修复后重新运行
120
+ ` %>
121
+
122
+ ### 阶段 5:安全扫描
123
+
124
+ 检查代码中的安全问题:
125
+
126
+ ```
127
+ ### 安全检查清单
128
+
129
+ □ 无硬编码密钥(API Key、密码、token)
130
+ 搜索模式:/(?:sk-|api[-_]?key|password|secret|token)[:=]["']\w/
131
+
132
+ □ 无 console.log 残留
133
+ 搜索模式:console\.(log|debug|warn|error)
134
+
135
+ □ 无 TODO / FIXME 在生产代码中
136
+ 搜索模式:TODO|FIXME|HACK|XXX
137
+
138
+ □ 无暴露的注释掉的代码块
139
+
140
+ □ 用户输入已做验证(如果涉及新 API 端点)
141
+ ```
142
+
143
+ > 扫描范围为本次修改的所有文件(用 `git diff --name-only` 获取)。
144
+
145
+ **通过条件**:无高安全性问题(CRITICAL/HIGH 级别)。
146
+
147
+ ### 阶段 6:Diff 审查
148
+
149
+ 审查所有变更,检查:
150
+
151
+ ```
152
+ ### Diff 审查清单
153
+
154
+ □ 变更与需求相关(无无关修改)
155
+ □ 无调试代码残留
156
+ □ 文档已同步更新
157
+ □ 错误处理完整(无静默吞错误)
158
+ □ 命名一致(与项目现有模式一致)
159
+ □ 无重复代码或不必要的抽象
160
+ □ 未引入新的循环依赖
161
+ ```
162
+
163
+ **通过条件**:所有检查项通过。如果有问题,列出具体位置。
164
+
165
+ ## 输出报告
166
+
167
+ 验证完成后,生成以下报告:
168
+
169
+ ```
170
+ ## Verify 报告
171
+
172
+ ### 编译检查 ✅ 通过
173
+ ### 类型检查 ✅ 通过
174
+ ### Lint 检查 ✅ 通过
175
+ ### 测试套件 ✅ 通过(共 N 个测试,覆盖率 X%)
176
+ ### 安全扫描 ✅ 通过
177
+ ### Diff 审查 ✅ 通过
178
+
179
+ 结果:✅ 全部通过!可以准备提交。
180
+ ```
181
+
182
+ 如果有失败项:
183
+
184
+ ```
185
+ ## Verify 报告
186
+
187
+ ### 编译检查 ❌ 失败
188
+ - 错误信息:<具体信息>
189
+ - 修复建议:<具体建议>
190
+
191
+ ### 类型检查 ✅ 通过
192
+
193
+ 结果:❌ 1/6 阶段失败。请修复后再运行 /verify。
194
+
195
+ 下一个动作:<具体的下一步操作>
196
+ ```
197
+
198
+ ## 跳过选项
199
+
200
+ - `--skip-build` / `--skip-type` / `--skip-lint` / `--skip-tests` / `--skip-security` / `--skip-diff`
201
+ - 跳过时需说明理由
202
+
203
+ ## 与 /ship 的关联
204
+
205
+ `/ship` 命令会在创建 PR 前**自动调用 `/verify`**。如果验证失败,ship 流程会中止并报告失败原因。
206
+
207
+ ## 下一步
208
+
209
+ 验证通过后:
210
+ - 运行 `/plan` 标记下一个任务
211
+ - 或运行 `/ship` 创建 PR
@@ -0,0 +1,219 @@
1
+ ---
2
+ name: "Plan"
3
+ description: "将设计/规格拆解为独立、可提交的子任务,每个子任务 = 1 个 commit(50-300 行,1-8 个文件)"
4
+ category: "Planning"
5
+ tags: ["规划", "任务拆解", "commit", "P0/P1"]
6
+ ---
7
+
8
+ # Plan
9
+
10
+ ## 职责
11
+
12
+ 将设计文档或功能描述拆解为 **commit 粒度**的子任务。每个子任务必须是独立的、可测试的增量。产出写入 `todolist.md`。
13
+
14
+ ## 跳过条件
15
+
16
+ - 单文件修改,变更量 < 50 行 → 不需要 plan,直接实现
17
+ - 纯配置修改(环境变量、CI 配置)→ 不需要 plan
18
+
19
+ ## 工作模式
20
+
21
+ <%= USER_LEVEL === 'vibe-coder' ? `
22
+ ### 面向非专业编程人员(Vibe Coder)
23
+
24
+ - 用通俗语言解释每个任务要做什么
25
+ - 避免 git/commit 术语,或简单解释"每完成一个任务就保存一次进度"
26
+ - 任务按"从简单到复杂"的顺序排列
27
+ - 帮用户理解为什么先做某些任务
28
+ - 示例:"先做数据存储(就像先搭好货架),再做页面展示(把货品摆上去)"
29
+ ` : `
30
+ ### 面向专业开发者
31
+
32
+ - 关注模块划分和依赖关系
33
+ - 任务粒度符合 git commit 规范
34
+ - 每个任务可独立编译 + 独立测试
35
+ - 关注接口定义先于实现
36
+ ` %>
37
+
38
+ ## 步骤
39
+
40
+ ### 步骤 1:阅读设计文档
41
+
42
+ 读取以下内容来理解要做什么:
43
+
44
+ 1. **设计文档** — 检查 `docs/designs/` 下是否有相关文档
45
+ 2. **PRD / 需求文档** — 检查 `docs/PRD.md` 或 `openspec/` 目录
46
+ 3. **用户描述** — 如果用户没有设计文档,直接根据描述拆解
47
+
48
+ 输出理解摘要:
49
+
50
+ ```
51
+ ## 理解确认
52
+
53
+ 功能:<功能名称>
54
+ 核心目标:<一句话说明>
55
+ 涉及模块:<涉及的模块列表>
56
+ ```
57
+
58
+ ### 步骤 2:识别独立工作单元
59
+
60
+ 将功能拆解为独立的、可逐步交付的工作单元。
61
+
62
+ **拆分原则:**
63
+
64
+ | 原则 | 说明 |
65
+ |------|------|
66
+ | **独立可测试** | 每个任务完成后可以独立验证 |
67
+ | **依赖有序** | 前置任务的产出是后置任务的输入 |
68
+ | **适当粒度** | 50-300 行变更,1-8 个文件 |
69
+ | **单一职责** | 一个任务只做一件事 |
70
+
71
+ **典型拆分模式:**
72
+
73
+ <%= USER_LEVEL === 'vibe-coder' ? `
74
+ ### 后端模块示例
75
+ 1. 定义数据结构(Schema)
76
+ 2. 写操作数据的代码(Service)
77
+ 3. 写接收请求的接口(API)
78
+ 4. 把模块注册到系统
79
+
80
+ ### 前端页面示例
81
+ 1. 创建页面骨架
82
+ 2. 添加页面内容
83
+ 3. 连接后端数据
84
+ 4. 添加交互效果
85
+ ` : `
86
+ ### 后端模块
87
+ 1. feat: 添加 {Module} schema(shared/types)
88
+ 2. feat: 实现 {Module}Service(业务逻辑)
89
+ 3. feat: 实现 {Module}Controller(API 端点)
90
+ 4. feat: 注册 {Module}Module(DI 容器)
91
+ 5. test: 添加 {Module} 测试
92
+
93
+ ### 前端页面
94
+ 1. feat: 实现 {Page} 列表页(UI + 状态)
95
+ 2. feat: 实现 {Page} 详情页
96
+ 3. feat: 实现 {Page} 表单(创建/编辑)
97
+ 4. test: 添加 {Page} E2E 测试
98
+ ` %>
99
+
100
+ ### 步骤 3:编写/更新 todolist.md
101
+
102
+ 将任务写入 `todolist.md`(如果已有,在末尾追加;否则创建)。
103
+
104
+ **格式:**
105
+
106
+ ```markdown
107
+ # TodoList
108
+
109
+ ## <功能名称> — <日期>
110
+
111
+ ### P0(本次必须完成)
112
+
113
+ - [ ] `<commit-message>` — <任务描述>
114
+ - 涉及文件:<file1>, <file2>
115
+ - 预估变更:~<N> 行
116
+ - 验收:<如何验证这个任务完成>
117
+
118
+ - [ ] `<commit-message>` — <任务描述>
119
+ ...
120
+
121
+ ### P1(后续迭代)
122
+
123
+ - [ ] `<commit-message>` — <任务描述>
124
+ ...
125
+
126
+ ### 未来(待定)
127
+
128
+ - <任务描述>
129
+ ...
130
+ ```
131
+
132
+ **P0-first 策略**:
133
+ - 新功能只实现 P0 任务
134
+ - P1 任务完整列出,标记为"后续迭代"
135
+ - P0 必须是交付的最小可行功能
136
+
137
+ ### 步骤 4:标记优先级
138
+
139
+ **P0 判定标准**(满足任一即为 P0):
140
+ - 核心功能,不做等于功能不可用
141
+ - 其他 P0 任务的依赖
142
+ - 用户明确要求的必须功能
143
+ - 安全/合规相关
144
+
145
+ **P1 判定标准**:
146
+ - 增强功能,没有也能用
147
+ - 性能优化
148
+ - 边缘 case 处理
149
+ - 管理后台功能
150
+
151
+ ### 步骤 5:展示摘要
152
+
153
+ 生成完成后,向用户展示摘要:
154
+
155
+ ```
156
+ ## Plan 摘要
157
+
158
+ 功能:<功能名称>
159
+ P0 任务:<N> 个 | P1 任务:<M> 个
160
+
161
+ ### P0 执行顺序
162
+ 1. <任务 1> — <简述>
163
+ 2. <任务 2> — <简述>
164
+ ...
165
+
166
+ ### P1 待后续
167
+ - <任务 3>
168
+ - <任务 4>
169
+
170
+ 总计预估:~<N> 行变更
171
+
172
+ todolist.md 已更新。
173
+ ```
174
+
175
+ ## 任务编写规则
176
+
177
+ - commit-message 遵循 `<type>: <description>` 格式(type: feat/fix/refactor/docs/test/chore)
178
+ - 涉及文件标注完整路径,方便 AI 定位
179
+ - 验收标准要可检查(能用 yes/no 回答)
180
+ - 标注任务间的依赖关系(如"依赖任务 3 完成")
181
+ - 每个任务标注预估变更行数
182
+
183
+ ## 常用任务序列
184
+
185
+ ### 后端新模块
186
+
187
+ ```
188
+ 1. feat: 添加 {Module} Zod schema
189
+ 2. feat: 实现 {Module}Service
190
+ 3. feat: 实现 {Module}Controller / 路由
191
+ 4. feat: 注册 {Module} 到模块系统
192
+ 5. test: 添加 {Module} 单元/集成测试
193
+ 6. docs: 同步 {Module} 文档
194
+ ```
195
+
196
+ ### 前端新页面
197
+
198
+ ```
199
+ 1. feat: 实现 {Page} 列表页
200
+ 2. feat: 实现 {Page} 详情页
201
+ 3. feat: 实现 {Page} 创建/编辑表单
202
+ 4. test: 添加 {Page} E2E 测试
203
+ 5. docs: 同步页面文档
204
+ ```
205
+
206
+ ### API 端点
207
+
208
+ ```
209
+ 1. feat: 添加 {Resource} CRUD 接口定义
210
+ 2. feat: 实现 {Resource} 数据访问层
211
+ 3. feat: 实现 {Resource} 业务逻辑
212
+ 4. test: 添加 {Resource} API 测试
213
+ ```
214
+
215
+ ## 下一步
216
+
217
+ Plan 完成后,建议用户运行:
218
+ - `/tdd` — 按 TDD 流程实现第一个任务
219
+ - 或手动按 todolist.md 顺序实现