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,47 @@
1
+ <!-- WORKFLOW-START -->
2
+ <!-- 此区域由 create-vibe-workflow 自动生成,重跑 CLI 时会更新 -->
3
+
4
+ ## AI 协作工具链
5
+
6
+ 本项目使用多层 AI 工具协作体系:
7
+
8
+ ```
9
+ 你的业务需求
10
+
11
+ ① 需求规格化 — 把想法变成结构化需求
12
+
13
+ ② 计划审查 — 拆解任务、验证假设
14
+
15
+ ③ 流程纪律 — TDD / 文档反写 / 安全检查
16
+ ```
17
+
18
+ ### 标准开发流程
19
+
20
+ ```
21
+ ① 需求澄清 → ② 计划拆分 → ③ 研究复用
22
+ → ④ TodoList编写 → ⑤ TDD开发 → ⑥ 代码审查
23
+ → ⑦ 安全审查 → ⑧ 文档反写 → ⑨ 提交归档
24
+ ```
25
+
26
+ ### 常用命令
27
+
28
+ | 场景 | 命令 |
29
+ |------|------|
30
+ | 开发新功能 | 从第①步开始,先写 PRD/用户故事 |
31
+ | 修 Bug | 先写复现步骤,再修 |
32
+ | 审查代码 | 每次写完代码后执行 |
33
+ | 提交代码 | 检查文档同步后提交 |
34
+
35
+ ## 技术栈
36
+
37
+ - 语言: TypeScript 5.x (strict mode)
38
+ - 运行时: Node.js 20+ (LTS)
39
+ - 框架: Express / Fastify (REST API)
40
+ - 数据库: PostgreSQL 16+ / MySQL / SQLite(按需)
41
+ - ORM: Drizzle ORM / Prisma
42
+ - 校验: Zod schema(可前后端共享)
43
+ - 认证: JWT / Session-based
44
+ - 测试: Vitest (单元+集成)
45
+ - 部署: Docker + PM2 / Systemd
46
+
47
+ <!-- WORKFLOW-END -->
@@ -0,0 +1,213 @@
1
+ ---
2
+ name: "CSO"
3
+ description: "首席安全官模式 — 基础设施优先的安全审计。源自 gstack /cso"
4
+ category: "Security"
5
+ tags: ["安全", "审计", "OWASP", "STRIDE", "gstack"]
6
+ ---
7
+
8
+ # CSO
9
+
10
+ ## 职责
11
+
12
+ 以首席安全官(Chief Security Officer)视角执行基础设施级安全审计。覆盖代码、依赖、CI/CD 和架构层面的安全风险。
13
+
14
+ ## 触发条件
15
+
16
+ | 条件 | 操作 |
17
+ |------|------|
18
+ | 修改了 auth/认证模块 | **必须**运行 |
19
+ | 修改了 finance/支付模块 | **必须**运行 |
20
+ | 修改了 system/系统管理模块 | **必须**运行 |
21
+ | 涉及用户数据处理 | **必须**运行 |
22
+ | 其他模块 | **可以**跳过 |
23
+
24
+ 如果不需要安全审查,跳过此步骤。
25
+
26
+ ## 工作模式
27
+
28
+ <%= USER_LEVEL === 'vibe-coder' ? `
29
+ ### 面向非专业编程人员(Vibe Coder)
30
+
31
+ 安全审查就是"检查你的项目有没有被攻击的风险":
32
+ - 会用通俗语言解释每个安全问题——"这个像你家门没锁"
33
+ - 修复建议是可操作的具体步骤
34
+ - 不要担心发现很多问题——早发现比晚上线出问题好得多
35
+ - 重点关注:密码泄露、数据泄露、权限漏洞
36
+ ` : `
37
+ ### 面向专业开发者
38
+
39
+ - 两层模式:daily(零噪音,高置信度)和 comprehensive(深度扫描)
40
+ - 关注架构层面的安全设计,而非具体代码风格
41
+ - 评估威胁模型,而不仅仅是漏洞扫描
42
+ ` %>
43
+
44
+ ## 两种运行模式
45
+
46
+ ### Daily 模式(默认)
47
+
48
+ **适用**:每次提交前快速检查
49
+ **置信度门槛**:8/10——只报告高置信度问题
50
+ **检查范围**:核心安全项
51
+
52
+ ```bash
53
+ # 运行 daily 模式
54
+ /cso
55
+ # 或
56
+ /cso daily
57
+ ```
58
+
59
+ ### Comprehensive 模式
60
+
61
+ **适用**:月度深度安全审查 / 大版本发布前
62
+ **置信度门槛**:2/10——任何可疑项都报告
63
+ **检查范围**:全部 5 个阶段
64
+
65
+ ```bash
66
+ # 运行 comprehensive 模式
67
+ /cso comprehensive
68
+ # 或
69
+ /cso full
70
+ ```
71
+
72
+ ## 步骤
73
+
74
+ ### 阶段 1:Secrets Archaeology(密钥考古)
75
+
76
+ 扫描所有代码、配置文件和 git 历史中的敏感信息:
77
+
78
+ ```
79
+ ### 扫描内容
80
+
81
+ □ 代码中硬编码的 API Key(搜索模式:/sk-[a-zA-Z0-9]{20,}|api[-_]?key|api_key/)
82
+ □ 密码硬编码(搜索模式:/password\s*[=:]["']\w+/)
83
+ □ Token 硬编码(搜索模式:/token\s*[=:]["']\w+/)
84
+ □ 私钥文件(*.key, *.pem, *.pfx, *.p12)
85
+ □ .env 文件是否被提交到 git 历史
86
+ ```
87
+
88
+ **Daily 模式**:只扫描工作区变更文件。
89
+ **Comprehensive 模式**:扫描整个代码库 + `git log --all -p` 搜索历史。
90
+
91
+ ### 阶段 2:依赖供应链安全
92
+
93
+ ```
94
+ ### 检查项
95
+
96
+ □ 已知漏洞(运行 npm audit / pip audit / cargo audit)
97
+ □ 未固定版本(package.json 中的 ^ ~ 前缀)
98
+ □ 过期的依赖(超过 1 年未更新)
99
+ □ 引入的新的依赖是否有安全记录
100
+ □ devDependencies 是否包含不应出现在 production 的包
101
+ ```
102
+
103
+ ```bash
104
+ # 根据项目语言运行
105
+ npm audit 2>&1 | tail -20
106
+ # 或
107
+ pnpm audit 2>&1 | tail -20
108
+ # 或其他语言的依赖审计
109
+ ```
110
+
111
+ ### 阶段 3:CI/CD 管道安全
112
+
113
+ ```
114
+ ### 检查项
115
+
116
+ □ CI 中是否暴露了环境变量(如 PR 中打印 env)
117
+ □ CI 脚本是否有注入风险(如 eval 用户输入)
118
+ □ CI 是否有 artifact 泄露风险
119
+ □ 是否使用了有风险的 GitHub Actions(unpinned third-party actions)
120
+ □ CI 中是否缓存了凭证/token
121
+ ```
122
+
123
+ **检查文件**:`.github/workflows/`、`.gitlab-ci.yml`、`Jenkinsfile` 等。
124
+
125
+ ### 阶段 4:OWASP Top 10 快速扫描
126
+
127
+ | 类别 | 检查项 |
128
+ |------|--------|
129
+ | **A01: Broken Access Control** | API 端点是否都有权限检查?IDOR 风险? |
130
+ | **A02: Cryptographic Failures** | 密码是否 hash?传输是否用 HTTPS? |
131
+ | **A03: Injection** | SQL/NoSQL/Command 注入风险? |
132
+ | **A04: Insecure Design** | 是否有速率限制?是否有重放攻击防护? |
133
+ | **A05: Security Misconfiguration** | 是否留有 debug 端点?CORS 配置? |
134
+ | **A06: Vulnerable Components** | 依赖版本是否过旧? |
135
+ | **A07: Auth Failures** | Session 管理?MFA?暴力破解防护? |
136
+ | **A08: Data Integrity Failures** | 是否有反序列化风险?签名验证? |
137
+ | **A09: Logging Failures** | 是否有审计日志?异常检测? |
138
+ | **A10: SSRF** | 是否允许用户指定 URL 请求? |
139
+
140
+ **Daily 模式**:只检查被修改的模块相关条目。
141
+ **Comprehensive 模式**:检查所有条目。
142
+
143
+ ### 阶段 5:STRIDE 威胁模型(仅 Comprehensive)
144
+
145
+ 如果涉及 auth / finance / system 模块,执行 STRIDE 威胁建模:
146
+
147
+ | 威胁 | 问题 | 评估 |
148
+ |------|------|------|
149
+ | **S**poofing(伪造) | 能否伪造身份? | ✅ / ⚠️ / ❌ |
150
+ | **T**ampering(篡改) | 能否篡改数据? | ✅ / ⚠️ / ❌ |
151
+ | **R**epudiation(抵赖) | 能否否认操作? | ✅ / ⚠️ / ❌ |
152
+ | **I**nformation Disclosure(信息泄露) | 数据是否泄露? | ✅ / ⚠️ / ❌ |
153
+ | **D**enial of Service(拒绝服务) | 能否让服务不可用? | ✅ / ⚠️ / ❌ |
154
+ | **E**levation of Privilege(权限提升) | 能否越权操作? | ✅ / ⚠️ / ❌ |
155
+
156
+ 每个威胁评估包括:
157
+ - 受影响的功能
158
+ - 攻击向量
159
+ - 影响范围
160
+ - 缓解措施
161
+
162
+ ## 输出报告
163
+
164
+ ```
165
+ ## CSO 审计报告
166
+
167
+ 模式:Daily / Comprehensive
168
+ 范围:<模块列表>
169
+
170
+ ### 阶段 1:Secrets Archaeology ✅ / ❌
171
+ 发现:<N> 个问题
172
+
173
+ ### 阶段 2:Dependency Supply Chain ✅ / ❌
174
+ 发现:<N> 个问题
175
+
176
+ ### 阶段 3:CI/CD Security ✅ / ❌ / ⏭ 跳过
177
+ 发现:<N> 个问题
178
+
179
+ ### 阶段 4:OWASP Top 10 ✅ / ❌
180
+ 发现:<N> 个问题
181
+
182
+ ### 阶段 5:STRIDE Threat Model ✅ / ❌ / ⏭ 跳过
183
+ 发现:<N> 个问题
184
+
185
+ ---
186
+
187
+ ### 需要立即修复(CRITICAL)
188
+
189
+ 1. <问题> — <修复步骤>
190
+
191
+ ### 建议修复(HIGH)
192
+
193
+ 1. <问题> — <修复步骤>
194
+
195
+ ### 安全评级:A / B / C / D / F
196
+ ```
197
+
198
+ ## 安全评级标准
199
+
200
+ | 级别 | 标准 |
201
+ |------|------|
202
+ | A | 零 CRITICAL,零 HIGH |
203
+ | B | 零 CRITICAL,1-3 个 HIGH |
204
+ | C | 1 个 CRITICAL 或 4+ 个 HIGH |
205
+ | D | 2+ 个 CRITICAL |
206
+ | F | 涉及数据泄露/权限提升的 CRITICAL |
207
+
208
+ ## 提示
209
+
210
+ - Daily 模式保持零噪音——只报告需要关注的问题
211
+ - Comprehensive 模式用于月审或大版本发布前
212
+ - 发现 secrets 泄露后立即指导用户轮换密钥
213
+ - 不要为了检查而检查——每个问题要提供可操作的修复步骤
@@ -0,0 +1,109 @@
1
+ ---
2
+ name: "Office Hours"
3
+ description: "YC Office Hours — 产品需求验证:值不值得做,最小切口是什么,用户是否有迫切需求"
4
+ category: "Planning"
5
+ tags: ["需求", "策略", "验证", "gstack"]
6
+ ---
7
+
8
+ # Office Hours
9
+
10
+ ## 职责
11
+
12
+ 在动手写代码之前,先验证这个想法是否值得做。来自 gstack `/office-hours`。
13
+
14
+ 核心问题:**在投入大量时间之前,确认你要解决的确实是真正的问题。**
15
+
16
+ ## 两种模式
17
+
18
+ ### Startup 模式(新产品/新功能探索)
19
+
20
+ 用六个强制性问题挑战需求假设:
21
+
22
+ 1. **需求现实** — 用户现在用什么方式解决这个问题?(如果没有现行的替代方案,可能不是真需求)
23
+ 2. **现状束缚** — 用户为什么不能/不愿意继续用现有方案?
24
+ 3. **迫切程度** — 这个问题有多痛?用户愿意花多少钱/时间解决?
25
+ 4. **最小切口** — 最窄的场景是什么?只做一件什么事就能验证?
26
+ 5. **观察方式** — 你怎么知道用户真的用了、真的需要?
27
+ 6. **未来适配** — 6 个月后这个方案还能持续满足吗?
28
+
29
+ ### Builder 模式(业余项目/Hackathon/学习项目)
30
+
31
+ 面向构建者的设计思考:
32
+
33
+ 1. 你想创造什么体验?
34
+ 2. 相似的项目有哪些?你与它们的不同是什么?
35
+ 3. 你手里有哪些工具/资源/技能?
36
+ 4. 如果只做 20%,实现 80% 的体验——砍掉哪 80%?
37
+ 5. 你个人最兴奋的 1 个点是什么?(聚焦那个点)
38
+
39
+ ## 工作模式
40
+
41
+ <%= USER_LEVEL === 'vibe-coder' ? `
42
+ ### 面向非专业编程人员(Vibe Coder)
43
+
44
+ - 用生活化的语言提问,不要用 "demand validation"、"market sizing" 之类的词
45
+ - 用户可能描述的是"我想做一个 XX 工具",你不知道是市场还是个人需求
46
+ - 帮用户分清"真需求"和"一时兴起"
47
+ - 如果需求不够聚焦,帮用户缩小到最小可用版本
48
+ - 用类比和举例帮用户理解
49
+ ` : `
50
+ ### 面向专业开发者
51
+
52
+ - 可以直接讨论 TAM、竞争格局、商业模式
53
+ - 关注技术可行性和资源约束
54
+ - 可以一起做竞品分析和技术预研
55
+ ` %>
56
+
57
+ ## 步骤
58
+
59
+ ### 1. 理解需求
60
+
61
+ 用户描述想做什么。不要急于挑战,先完整理解。
62
+
63
+ ### 2. 选择模式
64
+
65
+ 根据需求的成熟度选择模式:
66
+ - 用户很确定要做 → Startup 模式
67
+ - 用户还在探索/不确定 → Builder 模式
68
+ - 用户可以自己选
69
+
70
+ ### 3. 逐问题讨论
71
+
72
+ 一个问题一个问题地引导讨论。每轮只问一个问题,等用户回答后再继续。
73
+
74
+ ### 4. 产出决策记录
75
+
76
+ 讨论结束后,将结论写入 `docs/designs/YYYY-MM-DD-<topic>-office-hours.md`:
77
+
78
+ ```markdown
79
+ # Office Hours: <主题>
80
+ 日期: YYYY-MM-DD
81
+
82
+ ## 核心判断
83
+ <值不值得做?为什么?>
84
+
85
+ ## 最小切口
86
+ <P0 是什么?>
87
+
88
+ ## 关键风险
89
+ <最可能失败的原因?>
90
+
91
+ ## 下一步
92
+ <做什么?>
93
+ ```
94
+
95
+ ## 什么时候用 / 什么时候不用
96
+
97
+ | 用 `/office-hours` | 跳过 |
98
+ |-------------------|------|
99
+ | 新功能想法 | Bug 修复 |
100
+ | 新产品方向 | 纯技术重构 |
101
+ | 用户说"我想做 X..." | 用户说"修复 Y" |
102
+ | 不确定优先级 | 需求已在 PRD 中明确 |
103
+ | 探讨"值不值得做" | 已经确定了要做,只需"怎么做" |
104
+
105
+ ## 与其他命令的关系
106
+
107
+ - `/office-hours` → 确认值得做 → `/brainstorm` → 方案设计
108
+ - `/office-hours` → 确认不值得做 → 记录原因,不用再深入
109
+ - `/office-hours` → 不确定 → 建议先做小实验验证
@@ -0,0 +1,192 @@
1
+ ---
2
+ name: "Review"
3
+ description: "Pre-landing PR 代码审查 — 分析 git diff 的结构性问题。源自 gstack /review"
4
+ category: "Quality"
5
+ tags: ["审查", "代码质量", "PR", "gstack"]
6
+ ---
7
+
8
+ # Review
9
+
10
+ ## 职责
11
+
12
+ 在 PR 合并前对代码变更进行结构化审查。分析 git diff 中的结构性问题、安全风险、性能隐患,并分类定级。
13
+
14
+ ## 工作模式
15
+
16
+ <%= USER_LEVEL === 'vibe-coder' ? `
17
+ ### 面向非专业编程人员(Vibe Coder)
18
+
19
+ 审查就是"找人帮你检查代码有没有问题":
20
+ - 每个问题会用通俗语言解释
21
+ - 同时展示"有问题的代码"和"修改后的代码"——对比看
22
+ - 告诉你问题严重程度:红色的要必须修,黄色的最好修,蓝色的可修可不修
23
+ - 不要觉得被批评——审查是为了保护你的代码质量
24
+ - 如果看不懂某个问题,直接问,我会解释
25
+ ` : `
26
+ ### 面向专业开发者
27
+
28
+ - 关注结构性问题和业务逻辑正确性
29
+ - 按 CRITICAL / HIGH / MEDIUM / LOW 定级
30
+ - 只阻断 CRITICAL 和 HIGH 级别问题
31
+ - 提供具体的行级反馈
32
+ ` %>
33
+
34
+ ## 步骤
35
+
36
+ ### 步骤 1:获取变更范围
37
+
38
+ 确定要审查的 diff:
39
+
40
+ <%= USER_LEVEL === 'vibe-coder' ? `
41
+ ### 获取变更内容
42
+
43
+ 运行以下命令获取所有变更:
44
+
45
+ \`\`\`bash
46
+ git diff main...HEAD
47
+ \`\`\`
48
+
49
+ (如果用的是 master 分支,把 main 换成 master)
50
+ ` : `
51
+ \`\`\`bash
52
+ git diff <base-branch>...HEAD
53
+ \`\`\`
54
+
55
+ 自动检测 base branch(master/main),如果检测失败,让用户指定。
56
+ ` %>
57
+
58
+ 同时获取变更列表:
59
+
60
+ ```bash
61
+ git diff --name-only <base-branch>...HEAD
62
+ git diff --stat <base-branch>...HEAD
63
+ ```
64
+
65
+ ### 步骤 2:结构化分析
66
+
67
+ 从以下维度分析每次变更:
68
+
69
+ #### 1. SQL 安全(如有数据库变更)
70
+
71
+ ```
72
+ □ 缺少索引:WHERE/ORDER BY/JOIN 列是否已有索引?
73
+ □ N+1 查询:是否有循环中查询数据库?
74
+ □ 迁移风险:数据迁移是否可回滚?
75
+ □ SQL 注入:是否使用了参数化查询?
76
+ ```
77
+
78
+ #### 2. LLM 信任边界违规
79
+
80
+ ```
81
+ □ 用户输入直接拼接到 prompt/系统指令中?
82
+ □ 是否有 prompt injection 风险?
83
+ □ LLM 输出是否经过验证再使用?
84
+ □ 敏感数据是否可能通过 prompt 泄露?
85
+ ```
86
+
87
+ #### 3. 条件副作用
88
+
89
+ ```
90
+ □ 条件判断中是否有副作用(赋值、API 调用)?
91
+ □ 短路求值是否可能导致意外的跳过?
92
+ □ if/else 分支是否覆盖了所有可能?
93
+ ```
94
+
95
+ #### 4. 错误处理
96
+
97
+ ```
98
+ □ 所有可能失败的操作都有 try-catch?
99
+ □ 错误信息是否泄露了敏感信息?
100
+ □ 失败路径是否会导致资源泄漏(连接未关闭、文件句柄未释放)?
101
+ □ 是否有静默吞错误(空的 catch 块)?
102
+ ```
103
+
104
+ #### 5. 安全
105
+
106
+ ```
107
+ □ 认证:新的 API 端点是否有权限检查?
108
+ □ 输入验证:用户输入是否经过验证?
109
+ □ 敏感数据:日志中是否记录了密码/token?
110
+ □ XSS/CSRF:前端是否做了输出转义?
111
+ ```
112
+
113
+ ### 步骤 3:问题分类定级
114
+
115
+ 每个问题按以下标准分类:
116
+
117
+ | 级别 | 含义 | 动作 | 颜色 |
118
+ |------|------|------|------|
119
+ | **CRITICAL** | 必须修复 — 会导致数据丢失/安全漏洞/生产故障 | 阻断合并 | 🔴 |
120
+ | **HIGH** | 强烈建议修复 — 大概率引发 bug | 建议修复 | 🟠 |
121
+ | **MEDIUM** | 值得修复 — 未来可能出问题 | 考虑修复 | 🟡 |
122
+ | **LOW** | 风格偏好 — 不影响功能 | 可忽略 | 🔵 |
123
+
124
+ **问题报告格式:**
125
+
126
+ ```
127
+ ### [CRITICAL] <问题简述>
128
+ - **文件**: `path/to/file.ts:L42-L48`
129
+ - **问题**: <详细说明>
130
+ - **风险**: 如果不修复会导致...
131
+ - **修复建议**:
132
+
133
+ ```diff
134
+ - // 有问题的代码
135
+ + // 修复后的代码
136
+ ```
137
+
138
+ ---
139
+
140
+ ### [HIGH] <问题简述>
141
+ - **文件**: `path/to/file.ts:L100`
142
+ - **问题**: <详细说明>
143
+ - **修复建议**: <具体建议>
144
+ ---
145
+ ```
146
+
147
+ ### 步骤 4:生成审查报告
148
+
149
+ ```
150
+ ## Review 报告
151
+
152
+ 分支:feature/xxx → <base-branch>
153
+ 变更文件:N 个 | 新增:+N | 删除:-N
154
+
155
+ ### 摘要
156
+
157
+ - CRITICAL:N 个(必须修复)
158
+ - HIGH:N 个(建议修复)
159
+ - MEDIUM:N 个(考虑修复)
160
+ - LOW:N 个(风格偏好)
161
+
162
+ ### 详细问题
163
+
164
+ [CRITICAL] ...
165
+ [HIGH] ...
166
+ [MEDIUM] ...
167
+ [LOW] ...
168
+
169
+ ### 总体评价
170
+
171
+ <简短评价代码质量,建议接收/条件接收/拒绝>
172
+ ```
173
+
174
+ ### 步骤 5:重新审查
175
+
176
+ 用户修复问题后,再次运行 `/review` 确认所有 CRITICAL/HIGH 问题已修复。重复直到通过。
177
+
178
+ ## 阻断规则
179
+
180
+ **以下情况必须标记为 CRITICAL:**
181
+ - 密码/token/密钥硬编码
182
+ - SQL 注入漏洞
183
+ - 认证绕过(无权限检查的 API)
184
+ - 可能导致数据丢失的变更
185
+ - 严重 N+1 查询(循环中查询数据库)
186
+
187
+ ## 提示
188
+
189
+ - 保持审查客观、专业。不评价编码风格偏好,除非项目有明确规范
190
+ - 对于误报,在报告中说明"已确认为误报"
191
+ - 如果 diff 很大(>500 行),聚焦在关键逻辑变更上
192
+ - `/ship` 命令会自动调用 `/review`,并在有 CRITICAL 问题时中止