ethan-skill 1.0.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 (106) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +249 -0
  3. package/dist/cli/index.d.ts +7 -0
  4. package/dist/cli/index.d.ts.map +1 -0
  5. package/dist/cli/index.js +452 -0
  6. package/dist/cli/index.js.map +1 -0
  7. package/dist/mcp/server.d.ts +7 -0
  8. package/dist/mcp/server.d.ts.map +1 -0
  9. package/dist/mcp/server.js +199 -0
  10. package/dist/mcp/server.js.map +1 -0
  11. package/dist/router/trigger-router.d.ts +16 -0
  12. package/dist/router/trigger-router.d.ts.map +1 -0
  13. package/dist/router/trigger-router.js +45 -0
  14. package/dist/router/trigger-router.js.map +1 -0
  15. package/dist/router/trigger-router.test.d.ts +2 -0
  16. package/dist/router/trigger-router.test.d.ts.map +1 -0
  17. package/dist/router/trigger-router.test.js +79 -0
  18. package/dist/router/trigger-router.test.js.map +1 -0
  19. package/dist/skills/01-requirement.d.ts +3 -0
  20. package/dist/skills/01-requirement.d.ts.map +1 -0
  21. package/dist/skills/01-requirement.js +100 -0
  22. package/dist/skills/01-requirement.js.map +1 -0
  23. package/dist/skills/02-task-breakdown.d.ts +3 -0
  24. package/dist/skills/02-task-breakdown.d.ts.map +1 -0
  25. package/dist/skills/02-task-breakdown.js +82 -0
  26. package/dist/skills/02-task-breakdown.js.map +1 -0
  27. package/dist/skills/03-design.d.ts +3 -0
  28. package/dist/skills/03-design.d.ts.map +1 -0
  29. package/dist/skills/03-design.js +80 -0
  30. package/dist/skills/03-design.js.map +1 -0
  31. package/dist/skills/04-implementation.d.ts +3 -0
  32. package/dist/skills/04-implementation.d.ts.map +1 -0
  33. package/dist/skills/04-implementation.js +77 -0
  34. package/dist/skills/04-implementation.js.map +1 -0
  35. package/dist/skills/05-progress-tracking.d.ts +3 -0
  36. package/dist/skills/05-progress-tracking.d.ts.map +1 -0
  37. package/dist/skills/05-progress-tracking.js +78 -0
  38. package/dist/skills/05-progress-tracking.js.map +1 -0
  39. package/dist/skills/06-task-report.d.ts +3 -0
  40. package/dist/skills/06-task-report.d.ts.map +1 -0
  41. package/dist/skills/06-task-report.js +75 -0
  42. package/dist/skills/06-task-report.js.map +1 -0
  43. package/dist/skills/07-weekly-report.d.ts +3 -0
  44. package/dist/skills/07-weekly-report.d.ts.map +1 -0
  45. package/dist/skills/07-weekly-report.js +101 -0
  46. package/dist/skills/07-weekly-report.js.map +1 -0
  47. package/dist/skills/08-code-review.d.ts +3 -0
  48. package/dist/skills/08-code-review.d.ts.map +1 -0
  49. package/dist/skills/08-code-review.js +136 -0
  50. package/dist/skills/08-code-review.js.map +1 -0
  51. package/dist/skills/09-debug.d.ts +3 -0
  52. package/dist/skills/09-debug.d.ts.map +1 -0
  53. package/dist/skills/09-debug.js +151 -0
  54. package/dist/skills/09-debug.js.map +1 -0
  55. package/dist/skills/10-tech-research.d.ts +3 -0
  56. package/dist/skills/10-tech-research.d.ts.map +1 -0
  57. package/dist/skills/10-tech-research.js +141 -0
  58. package/dist/skills/10-tech-research.js.map +1 -0
  59. package/dist/skills/index.d.ts +18 -0
  60. package/dist/skills/index.d.ts.map +1 -0
  61. package/dist/skills/index.js +51 -0
  62. package/dist/skills/index.js.map +1 -0
  63. package/dist/skills/pipeline.d.ts +15 -0
  64. package/dist/skills/pipeline.d.ts.map +1 -0
  65. package/dist/skills/pipeline.js +55 -0
  66. package/dist/skills/pipeline.js.map +1 -0
  67. package/dist/skills/skills.test.d.ts +2 -0
  68. package/dist/skills/skills.test.d.ts.map +1 -0
  69. package/dist/skills/skills.test.js +101 -0
  70. package/dist/skills/skills.test.js.map +1 -0
  71. package/dist/skills/types.d.ts +60 -0
  72. package/dist/skills/types.d.ts.map +1 -0
  73. package/dist/skills/types.js +7 -0
  74. package/dist/skills/types.js.map +1 -0
  75. package/dist/templates/copilot-md.template.d.ts +7 -0
  76. package/dist/templates/copilot-md.template.d.ts.map +1 -0
  77. package/dist/templates/copilot-md.template.js +293 -0
  78. package/dist/templates/copilot-md.template.js.map +1 -0
  79. package/dist/templates/cursor-mdc.template.d.ts +10 -0
  80. package/dist/templates/cursor-mdc.template.d.ts.map +1 -0
  81. package/dist/templates/cursor-mdc.template.js +86 -0
  82. package/dist/templates/cursor-mdc.template.js.map +1 -0
  83. package/dist/templates/templates.test.d.ts +2 -0
  84. package/dist/templates/templates.test.d.ts.map +1 -0
  85. package/dist/templates/templates.test.js +89 -0
  86. package/dist/templates/templates.test.js.map +1 -0
  87. package/dist/vscode/commands.d.ts +4 -0
  88. package/dist/vscode/commands.d.ts.map +1 -0
  89. package/dist/vscode/commands.js +155 -0
  90. package/dist/vscode/commands.js.map +1 -0
  91. package/dist/vscode/extension.d.ts +4 -0
  92. package/dist/vscode/extension.d.ts.map +1 -0
  93. package/dist/vscode/extension.js +96 -0
  94. package/dist/vscode/extension.js.map +1 -0
  95. package/package.json +71 -0
  96. package/rules/claude-code/CLAUDE.md +767 -0
  97. package/rules/cline/.clinerules +622 -0
  98. package/rules/codebuddy/CODEBUDDY.md +70 -0
  99. package/rules/continue/.continuerules +622 -0
  100. package/rules/copilot/copilot-instructions.md +162 -0
  101. package/rules/cursor/.cursorrules +747 -0
  102. package/rules/cursor/smart-flow.mdc +763 -0
  103. package/rules/jetbrains/smart-flow.md +162 -0
  104. package/rules/lingma/smart-flow.md +133 -0
  105. package/rules/windsurf/.windsurf/rules/smart-flow.md +162 -0
  106. package/rules/zed/smart-flow.rules +45 -0
@@ -0,0 +1,747 @@
1
+ # Ethan v1.0.0
2
+
3
+ > 自动生成 - 请勿手动修改,源文件:src/skills/
4
+ > Generated at: 2026-03-21T14:18:11.636Z
5
+
6
+ ## 触发词一览
7
+ - 需求理解:需求理解、理解需求、分析需求
8
+ - 任务拆解:任务拆解、拆解任务、拆分任务
9
+ - 方案设计:方案设计、技术方案、架构设计
10
+ - 执行实现:执行实现、开始实现、写代码
11
+ - 进度跟踪:进度跟踪、跟踪进度、进度更新
12
+ - 任务报告:任务报告、生成报告、任务总结
13
+ - 周报生成:周报、生成周报、写周报
14
+ - 代码审查:代码审查、code review、CR
15
+ - 故障排查:故障排查、debug、线上故障
16
+ - 技术调研:技术调研、技术选型、POC
17
+
18
+ ---
19
+
20
+ ## Skill 1:需求理解
21
+
22
+ **触发词**:`需求理解`、`理解需求`、`分析需求`、`需求分析`、`我需要`、`帮我做`、`实现一个`、`开发一个`、`/需求理解`、`@ethan 需求`
23
+
24
+ **描述**:深度解析用户需求,消除歧义,输出结构化需求文档
25
+
26
+ ### 1. 提取核心诉求
27
+
28
+ - 用一句话总结用户最终想实现的**业务目标**
29
+ - 区分"功能需求"(要做什么)与"非功能需求"(性能、安全、兼容性等)
30
+ - 识别隐含的技术约束(语言栈、框架版本、部署环境)
31
+
32
+ ### 2. 识别歧义与缺失信息
33
+
34
+ - 列出所有**不明确**的地方(用 ❓ 标记)
35
+ - 列出**缺失**但必须明确的信息(用 ⚠️ 标记)
36
+ - 最多提出 3 个最关键的澄清问题,避免信息过载
37
+
38
+ ### 3. 假设声明
39
+
40
+ - 对于无法立即澄清的歧义,明确列出你的**假设前提**
41
+ - 格式:「假设 X,如果实际是 Y,则需要调整 Z」
42
+
43
+ ### 4. 输出结构化需求文档
44
+
45
+ 按以下模板输出:
46
+
47
+ ```markdown
48
+ ## 需求理解确认
49
+
50
+ ### 核心目标
51
+ [一句话描述]
52
+
53
+ ### 功能需求
54
+ - [ ] 功能点 1
55
+ - [ ] 功能点 2
56
+
57
+ ### 非功能需求
58
+ - 性能:[描述]
59
+ - 兼容性:[描述]
60
+
61
+ ### 技术约束
62
+ - [约束条件]
63
+
64
+ ### 待澄清问题
65
+ ❓ 1. [问题]
66
+ ⚠️ 2. [缺失信息]
67
+
68
+ ### 当前假设
69
+ - 假设 [A],如果实际是 [B],则 [调整]
70
+ ```
71
+
72
+ **输出格式**:Markdown 结构化文档,包含核心目标、功能需求列表、非功能需求、技术约束、待澄清问题和假设声明
73
+
74
+ **注意事项**:
75
+ - 不要急于给出解决方案,先确保完全理解需求
76
+ - 澄清问题不超过 3 个,聚焦最关键的
77
+ - 假设声明必须明确,避免隐式假设导致方向偏差
78
+
79
+ ---
80
+
81
+ ## Skill 2:任务拆解
82
+
83
+ **触发词**:`任务拆解`、`拆解任务`、`拆分任务`、`制定计划`、`任务规划`、`怎么实现`、`实现步骤`、`/任务拆解`、`@ethan 拆解`
84
+
85
+ **描述**:将复杂需求拆解为可执行的原子任务,建立依赖关系和优先级
86
+
87
+ ### 1. 识别主要模块
88
+
89
+ - 将需求按**功能域**或**技术层**划分为 3-7 个主要模块
90
+ - 每个模块用一行说明其职责
91
+ - 标注模块类型:[前端 UI] [后端 API] [数据库] [基础设施] [测试]
92
+
93
+ ### 2. 拆解为原子任务
94
+
95
+ - 每个原子任务满足:**单人、半天内可完成**
96
+ - 任务命名格式:「动词 + 对象 + 可选限定」
97
+ - ✅ 「实现用户登录 API(POST /auth/login)」
98
+ - ❌ 「做登录」(太模糊)
99
+ - 标注预估工时:[S=2h] [M=4h] [L=8h] [XL=需再拆]
100
+
101
+ ### 3. 建立依赖关系
102
+
103
+ - 用 → 表示依赖:「A → B」意为「完成 A 才能开始 B」
104
+ - 识别可以**并行**执行的任务组
105
+ - 找出**关键路径**(决定最短完成时间的任务链)
106
+
107
+ ### 4. 输出任务清单
108
+
109
+ 按以下格式输出:
110
+
111
+ ```markdown
112
+ ## 任务拆解
113
+
114
+ ### 模块概览
115
+ | 模块 | 职责 | 预估任务数 |
116
+ |------|------|-----------|
117
+ | [模块名] | [职责] | [数量] |
118
+
119
+ ### 任务列表
120
+
121
+ #### 阶段一:[阶段名](可并行)
122
+ - [ ] T01 [任务名] [S/M/L]
123
+ - [ ] T02 [任务名] [S/M/L]
124
+
125
+ #### 阶段二:[阶段名](依赖阶段一)
126
+ - [ ] T03 [任务名] [S/M/L] 依赖:T01
127
+
128
+ ### 关键路径
129
+ T01 → T03 → T05(预估总工时:X 天)
130
+
131
+ ### 并行机会
132
+ T02 可与 T01 同时进行
133
+ ```
134
+
135
+ **输出格式**:Markdown 表格 + 任务列表,含模块概览、分阶段任务、依赖关系、关键路径
136
+
137
+ **注意事项**:
138
+ - 任务粒度宁细勿粗,XL 任务必须继续拆解
139
+ - 优先识别阻塞性任务(其他任务依赖它的),优先排期
140
+ - 第一阶段任务应尽量可并行,提高效率
141
+
142
+ ---
143
+
144
+ ## Skill 3:方案设计
145
+
146
+ **触发词**:`方案设计`、`技术方案`、`架构设计`、`设计方案`、`怎么设计`、`数据库设计`、`接口设计`、`API 设计`、`/方案设计`、`@ethan 设计`
147
+
148
+ **描述**:输出技术方案设计文档,包含架构选择、接口设计、数据模型和关键决策说明
149
+
150
+ ### 1. 技术选型
151
+
152
+ - 列出关键技术决策点(框架、数据库、缓存、消息队列等)
153
+ - 每个决策给出 2-3 个候选方案,并说明**选择理由**
154
+ - 格式:「选择 A 而非 B,原因:[理由];权衡:[牺牲了什么]」
155
+
156
+ ### 2. 架构设计
157
+
158
+ - 用 ASCII 图或 Mermaid 描述系统架构
159
+ - 说明各组件的职责和交互方式
160
+ - 标注关键数据流向
161
+
162
+ ```mermaid
163
+ graph LR
164
+ Client --> API[API Server]
165
+ API --> DB[(Database)]
166
+ API --> Cache[(Redis)]
167
+ ```
168
+
169
+ ### 3. 接口设计(API)
170
+
171
+ 按 RESTful 或 GraphQL 规范设计接口:
172
+
173
+ ```
174
+ POST /api/v1/[resource]
175
+ Request: { field1: type, field2: type }
176
+ Response: { code: 0, data: {...}, message: string }
177
+ ```
178
+
179
+ - 统一错误码规范
180
+ - 鉴权方式(Bearer Token / Cookie / API Key)
181
+
182
+ ### 4. 数据模型
183
+
184
+ - 核心实体及字段(类型、约束、索引)
185
+ - 实体关系(1:1、1:N、N:M)
186
+ - 关键查询场景和对应索引策略
187
+
188
+ ### 5. 关键技术决策记录(ADR)
189
+
190
+ 对每个重要决策记录:
191
+ - **背景**:为什么需要做这个决策
192
+ - **决策**:选择了什么
193
+ - **后果**:带来什么影响(正面/负面)
194
+
195
+ **输出格式**:Markdown 设计文档,含技术选型表、架构图(Mermaid)、API 接口列表、数据模型、ADR 决策记录
196
+
197
+ **注意事项**:
198
+ - 先设计接口契约,再实现内部逻辑
199
+ - 数据模型是设计的核心,多花时间在这里
200
+ - ADR 不需要面面俱到,只记录有争议的或重要的决策
201
+
202
+ ---
203
+
204
+ ## Skill 4:执行实现
205
+
206
+ **触发词**:`执行实现`、`开始实现`、`写代码`、`编写代码`、`实现功能`、`代码实现`、`开始开发`、`/执行实现`、`@ethan 实现`
207
+
208
+ **描述**:按设计方案逐步实现代码,遵循最佳实践,同步记录实现决策
209
+
210
+ ### 1. 确认实现前提
211
+
212
+ 在开始写代码前确认:
213
+ - ✅ 设计方案已确认
214
+ - ✅ 依赖的接口/服务已就绪(或已 mock)
215
+ - ✅ 开发环境配置正确
216
+ - ✅ 知道本次实现的完成标准(Definition of Done)
217
+
218
+ ### 2. 分层实现顺序
219
+
220
+ 推荐实现顺序(由内而外):
221
+ 1. **数据层**:Model/Schema 定义、数据库迁移
222
+ 2. **服务层**:业务逻辑、核心算法
223
+ 3. **接口层**:Controller/Route/Resolver
224
+ 4. **UI 层**:页面组件、交互逻辑
225
+ 5. **集成**:端对端连通、Edge Cases 处理
226
+
227
+ ### 3. 编码规范执行
228
+
229
+ - 函数单一职责,超过 50 行考虑拆分
230
+ - 命名自文档化:`getUserByEmail` > `getUser`
231
+ - 错误处理:不吞异常,向上传递有语义的错误
232
+ - 对**非显而易见**的逻辑写注释(解释"为什么"而非"做什么")
233
+ - 涉及安全的操作(SQL 查询、用户输入)必须做参数化/转义
234
+
235
+ ### 4. 每完成一个任务后
236
+
237
+ - 执行单元测试(或手动验证)
238
+ - 更新任务状态(参考"进度跟踪" Skill)
239
+ - 如遇到设计偏差,记录变更原因
240
+ - commit 前检查:无 console.log 遗留、无硬编码密钥
241
+
242
+ ### 5. 代码自检清单
243
+
244
+ ```
245
+ □ 功能满足需求文档的验收条件
246
+ □ 边界条件已处理(null、空数组、超长输入等)
247
+ □ 错误信息对用户友好(生产环境不暴露内部堆栈)
248
+ □ 无明显性能问题(N+1 查询、无限循环风险)
249
+ □ 敏感数据不出现在日志中
250
+ □ 代码可读性:同事无需解释能看懂
251
+ ```
252
+
253
+ **输出格式**:代码实现 + 简要说明(实现思路、关键决策),每个任务完成后输出自检清单结果
254
+
255
+ **注意事项**:
256
+ - 不要一次性写完所有代码,小步提交,频繁验证
257
+ - 遇到阻塞(依赖未就绪)立即反馈,不要等待
258
+ - 实现过程中发现设计问题,先暂停讨论,不要随意修改设计
259
+
260
+ ---
261
+
262
+ ## Skill 5:进度跟踪
263
+
264
+ **触发词**:`进度跟踪`、`跟踪进度`、`进度更新`、`更新进度`、`项目进展`、`任务状态`、`完成了什么`、`还剩什么`、`/进度跟踪`、`@ethan 进度`
265
+
266
+ **描述**:实时更新任务状态,识别阻塞风险,保持项目透明度
267
+
268
+ ### 1. 状态同步
269
+
270
+ 对任务列表中每个任务标注状态:
271
+ - ✅ **完成**:已验证通过
272
+ - 🔄 **进行中**:正在开发
273
+ - ⏸️ **阻塞**:有依赖未解除或遇到问题
274
+ - ⏳ **待开始**:排队中
275
+ - ❌ **取消**:不再需要(说明原因)
276
+
277
+ ### 2. 阻塞识别与处理
278
+
279
+ 对每个阻塞任务:
280
+ - 描述阻塞原因(技术问题/依赖等待/需求不清晰)
281
+ - 阻塞开始时间
282
+ - 解除条件:「需要 [谁] 完成 [什么]」
283
+ - 影响评估:「阻塞会导致 [哪些任务] 延期 [多少时间]」
284
+
285
+ ### 3. 完成度统计
286
+
287
+ ```
288
+ 总任务数:N
289
+ ✅ 完成:X(X%)
290
+ 🔄 进行中:Y
291
+ ⏸️ 阻塞:Z
292
+ ⏳ 待开始:W
293
+
294
+ 预估完成时间:[日期] [置信度:高/中/低]
295
+ ```
296
+
297
+ ### 4. 风险预警
298
+
299
+ 识别以下风险并标注优先级:
300
+ - 🔴 **高风险**:当前阻塞影响关键路径,必须立即处理
301
+ - 🟡 **中风险**:有延期可能,需要关注
302
+ - 🟢 **低风险**:有 buffer,暂时观察
303
+
304
+ ### 5. 下一步行动
305
+
306
+ 明确列出:
307
+ - **立即行动**(今天必须完成)
308
+ - **需要协调**(需要其他人配合)
309
+ - **待决策**(需要产品/技术负责人决定)
310
+
311
+ **输出格式**:Markdown 状态看板,含任务状态列表、完成度统计、风险矩阵、下一步行动清单
312
+
313
+ **注意事项**:
314
+ - 每天至少更新一次进度(即使没有变化也要说明)
315
+ - 阻塞问题第一时间暴露,不要等到 deadline 才说
316
+ - 进度更新要诚实,不要因为"看起来不好"而隐瞒风险
317
+
318
+ ---
319
+
320
+ ## Skill 6:任务报告
321
+
322
+ **触发词**:`任务报告`、`生成报告`、`任务总结`、`总结报告`、`完成总结`、`项目总结`、`阶段总结`、`/任务报告`、`@ethan 报告`
323
+
324
+ **描述**:任务完成后生成总结报告,记录成果、问题和经验教训
325
+
326
+ ### 1. 成果汇总
327
+
328
+ - 列出本次完成的所有功能点(对照原始需求)
329
+ - 说明是否满足所有验收条件
330
+ - 对比原计划:提前/按时/延期(延期说明原因)
331
+ - 关键交付物清单(代码链接、文档、部署地址)
332
+
333
+ ### 2. 问题复盘
334
+
335
+ 对本次遇到的主要问题进行复盘:
336
+
337
+ | 问题描述 | 根本原因 | 解决方案 | 预防措施 |
338
+ |---------|---------|---------|---------|
339
+ | [问题] | [原因] | [解决] | [预防] |
340
+
341
+ ### 3. 技术债务记录
342
+
343
+ 记录本次故意留下的技术债务(TODO/FIXME):
344
+ - 债务描述:[内容]
345
+ - 产生原因:[为什么现在不做]
346
+ - 影响范围:[哪些功能受影响]
347
+ - 计划处理时间:[迭代版本]
348
+
349
+ ### 4. 性能与质量指标
350
+
351
+ - 测试覆盖率:[X%]
352
+ - 已知 Bug:[数量及严重程度]
353
+ - 关键路径性能:[响应时间/吞吐量等]
354
+ - 代码审查意见处理:[X 条,已解决 Y 条]
355
+
356
+ ### 5. 经验教训(Lessons Learned)
357
+
358
+ **做得好的地方:**
359
+ - [值得在下次继续的做法]
360
+
361
+ **可以改进的地方:**
362
+ - [下次应该不同的做法]
363
+
364
+ **给团队的建议:**
365
+ - [可复用的最佳实践或工具]
366
+
367
+ **输出格式**:Markdown 总结报告,含成果汇总、问题复盘表格、技术债务列表、质量指标、Lessons Learned
368
+
369
+ **注意事项**:
370
+ - 报告面向不同读者(技术/产品/管理),注意分层表达
371
+ - 技术债务必须记录,不能以"以后再说"带过
372
+ - Lessons Learned 重在行动可操作性,避免空话
373
+
374
+ ---
375
+
376
+ ## Skill 7:周报生成
377
+
378
+ **触发词**:`周报`、`生成周报`、`写周报`、`周报生成`、`本周总结`、`周总结`、`weekly report`、`/周报`、`@ethan 周报`
379
+
380
+ **描述**:根据本周工作内容自动生成结构化周报,突出价值而非流水账
381
+
382
+ ### 1. 信息收集
383
+
384
+ 请提供以下信息(可以是碎片化描述,我来整理):
385
+ - 本周完成了哪些任务/功能?
386
+ - 遇到了什么困难/问题?怎么解决的?
387
+ - 有没有超出预期完成的事情?
388
+ - 下周计划做什么?
389
+ - 有没有需要协调/升级的事项?
390
+
391
+ ### 2. 内容提炼原则
392
+
393
+ - **结果导向**:描述完成了什么,而非做了什么操作
394
+ - ❌「修改了登录接口的代码」
395
+ - ✅「完成登录功能优化,登录响应时间从 800ms 降至 200ms」
396
+ - **量化表达**:能用数字的地方用数字
397
+ - **价值关联**:说明工作对业务的意义
398
+
399
+ ### 3. 输出周报
400
+
401
+ 按以下模板生成:
402
+
403
+ ```markdown
404
+ # 周报 - [日期范围]
405
+
406
+ ## 本周完成
407
+
408
+ ### 主要成果
409
+ 1. **[功能/项目名]**:[一句话描述成果和价值]
410
+ 2. ...
411
+
412
+ ### 技术攻坚
413
+ - [解决了什么难题,用了什么方案]
414
+
415
+ ## 问题与风险
416
+ - ⚠️ [当前面临的问题或风险,是否需要支持]
417
+
418
+ ## 下周计划
419
+ 1. [任务] - [预期完成时间]
420
+ 2. ...
421
+
422
+ ## 需要协调
423
+ - [需要其他人/团队配合的事项]
424
+ ```
425
+
426
+ ### 4. 多版本适配
427
+
428
+ 根据读者不同,调整详细程度:
429
+ - **团队版**:包含技术细节和具体数字
430
+ - **管理层版**:聚焦业务价值和风险,去掉技术细节
431
+ - **外部同步版**:只保留里程碑级进展
432
+
433
+ **输出格式**:Markdown 周报文档,含本周成果、技术攻坚、问题风险、下周计划、协调事项
434
+
435
+ **注意事项**:
436
+ - 周报不是日志,不要列流水账,聚焦有意义的事情
437
+ - 困难和风险要如实汇报,不要只报好消息
438
+ - 下周计划要具体且可追溯,不要写「继续推进 XX」
439
+
440
+ ---
441
+
442
+ ## Skill 8:代码审查
443
+
444
+ **触发词**:`代码审查`、`code review`、`CR`、`帮我 review`、`帮我看看代码`、`审查代码`、`review 一下`、`代码 review`、`/代码审查`、`@ethan review`
445
+
446
+ **描述**:系统性审查代码变更,分级输出 Blocker/Major/Minor 问题,提升代码质量
447
+
448
+ ### 1. 理解变更意图
449
+
450
+ - 阅读 PR 描述或变更说明,明确本次改动的**业务目标**
451
+ - 识别变更范围:新功能 / Bug 修复 / 重构 / 性能优化 / 配置调整
452
+ - 确认是否有对应的需求文档、设计文档或 Issue
453
+ - 了解测试覆盖情况(单测/集成测试)
454
+
455
+ ### 2. 逐层审查
456
+
457
+ 按以下五个维度逐一检查:
458
+
459
+ **✅ 正确性**
460
+ - 逻辑是否正确,边界条件是否处理(null/undefined/空数组/越界)
461
+ - 并发/异步场景是否有竞态条件
462
+ - 错误处理是否完备
463
+
464
+ **🔒 安全性**
465
+ - 是否存在 SQL 注入、XSS、CSRF 等 OWASP Top 10 风险
466
+ - 敏感信息(密钥、密码)是否硬编码
467
+ - 权限校验是否完整
468
+
469
+ **⚡ 性能**
470
+ - 是否有 N+1 查询、不必要的全量加载
471
+ - 循环内是否有重复计算或 DOM 操作
472
+ - 是否缺少必要的缓存或索引
473
+
474
+ **🔧 可维护性**
475
+ - 函数/类职责是否单一
476
+ - 命名是否清晰表达意图
477
+ - 是否有重复代码(DRY 原则)
478
+ - 复杂逻辑是否有注释说明
479
+
480
+ **📏 规范性**
481
+ - 是否符合项目代码风格(命名、格式、文件结构)
482
+ - 是否有缺失的测试用例
483
+ - API 变更是否更新了文档
484
+
485
+ ### 3. 按级别分类问题
486
+
487
+ 将发现的问题按以下三级分类:
488
+
489
+ - 🚫 **Blocker**:必须修复才能合并(功能错误、安全漏洞、数据丢失风险)
490
+ - ⚠️ **Major**:强烈建议修复(性能问题、可维护性严重不足、测试缺失)
491
+ - 💡 **Minor**:建议改进(代码风格、命名优化、注释补充)
492
+
493
+ 每个问题标注:文件名 + 行号 + 问题描述 + 改进建议
494
+
495
+ ### 4. 输出审查报告
496
+
497
+ 按以下格式输出:
498
+
499
+ ```markdown
500
+ ## Code Review 报告
501
+
502
+ ### 总体评价
503
+ [1-3 句话概述代码质量和主要问题]
504
+
505
+ ### 🚫 Blocker(必须修复)
506
+ - [ ] `file.ts:42` 未校验用户输入直接拼接 SQL,存在注入风险
507
+ 建议:使用参数化查询
508
+
509
+ ### ⚠️ Major(建议修复)
510
+ - [ ] `service.ts:88` N+1 查询:循环内调用数据库
511
+ 建议:改用批量查询 + Map 映射
512
+
513
+ ### 💡 Minor(可选优化)
514
+ - [ ] `utils.ts:15` 变量名 `d` 含义不清晰
515
+ 建议:改为 `duration`
516
+
517
+ ### ✅ 做得好的地方
518
+ - [值得肯定的设计或实现]
519
+
520
+ ### 总结
521
+ Blocker: X 个 | Major: Y 个 | Minor: Z 个
522
+ ```
523
+
524
+ ### 5. 跟进确认
525
+
526
+ - 如果有 Blocker,明确告知不应合并,等修复后重新 Review
527
+ - 如果只有 Minor,可以 Approve 并备注"建议改进但不阻塞"
528
+ - 对于设计层面的分歧,建议另开会议讨论,不在 PR 中反复拉锯
529
+
530
+ **输出格式**:Markdown 审查报告,含总体评价、分级问题列表(Blocker/Major/Minor)、亮点肯定和合并建议
531
+
532
+ **注意事项**:
533
+ - Review 的目的是提升代码质量,不是否定作者,保持建设性语气
534
+ - Blocker 必须明确标注,避免重要问题被忽视
535
+ - 超过 400 行的 PR 建议拆分后分批 Review
536
+
537
+ ---
538
+
539
+ ## Skill 9:故障排查
540
+
541
+ **触发词**:`故障排查`、`debug`、`线上故障`、`报错了`、`排查问题`、`定位 bug`、`为什么报错`、`程序崩溃`、`/故障排查`、`@ethan debug`
542
+
543
+ **描述**:系统性排查故障,通过假设验证和 5 Why 定位根因,输出临时/永久/预防三层方案
544
+
545
+ ### 1. 现象描述
546
+
547
+ 用结构化方式描述故障现象:
548
+
549
+ - **错误信息**:完整的报错信息或日志(不要截断)
550
+ - **影响范围**:哪些用户/请求/功能受影响,影响比例
551
+ - **发生时间**:首次发现时间,是否有规律(特定时间/特定操作触发)
552
+ - **复现步骤**:能否稳定复现?复现率?
553
+ - **环境信息**:生产/测试/本地?最近是否有上线或配置变更?
554
+
555
+ ### 2. 建立假设
556
+
557
+ 根据现象,列出所有可能的原因假设:
558
+
559
+ - 按**可能性**从高到低排序(先排查最常见的)
560
+ - 每个假设标注**验证方式**(查日志/加断点/查数据库/还原操作)
561
+ - 格式:「假设 [X] 导致,验证方式:[Y]」
562
+
563
+ 常见假设方向:
564
+ - 代码逻辑错误(边界条件、空指针、类型错误)
565
+ - 配置/环境问题(环境变量、连接字符串、版本不兼容)
566
+ - 数据问题(脏数据、数据迁移遗漏、外键约束)
567
+ - 依赖服务故障(数据库、缓存、第三方 API 超时)
568
+ - 资源耗尽(内存溢出、连接池耗尽、磁盘满)
569
+
570
+ ### 3. 逐一验证
571
+
572
+ 按假设列表逐一排查:
573
+
574
+ - 每个假设用最小代价验证(优先查日志,再加调试代码)
575
+ - 验证结果:✅ 确认 / ❌ 排除 / ❓ 待进一步确认
576
+ - 找到最可能的原因后,**缩小范围**继续深挖
577
+ - 保留所有验证过程(方便写报告和复盘)
578
+
579
+ 排查工具:
580
+ - 日志分析:关键字检索 + 时间范围过滤
581
+ - 数据库:慢查询日志、EXPLAIN 分析
582
+ - 网络:curl 测试接口、抓包分析
583
+ - 内存/CPU:top、heap dump、火焰图
584
+
585
+ ### 4. 5 Why 根因分析
586
+
587
+ 找到直接原因后,用 5 Why 追溯根本原因:
588
+
589
+ ```
590
+ 现象:接口超时
591
+ Why 1: 为什么超时?→ 数据库查询慢
592
+ Why 2: 为什么查询慢?→ 缺少索引
593
+ Why 3: 为什么缺索引?→ 上线时未执行迁移脚本
594
+ Why 4: 为什么迁移未执行?→ 发布流程没有自动执行 migration
595
+ Why 5: 为什么没有自动化?→ CI/CD 流程中没有这个步骤
596
+ 根因:CI/CD 缺少数据库迁移步骤
597
+ ```
598
+
599
+ 连续追问直到找到**可操作的系统性原因**(不是"人的失误")
600
+
601
+ ### 5. 输出排查报告
602
+
603
+ 按以下格式输出完整报告:
604
+
605
+ ```markdown
606
+ ## 故障排查报告
607
+
608
+ ### 故障概述
609
+ - **影响范围**:[描述]
610
+ - **发生时间**:[时间]
611
+ - **根本原因**:[一句话总结]
612
+
613
+ ### 时间线
614
+ - HH:MM 发现异常
615
+ - HH:MM 开始排查
616
+ - HH:MM 定位原因
617
+ - HH:MM 完成修复
618
+
619
+ ### 根因分析(5 Why)
620
+ [5 Why 链条]
621
+
622
+ ### 解决方案
623
+
624
+ #### 🚑 临时缓解(立即执行)
625
+ - [临时措施,如回滚、降级、重启]
626
+
627
+ #### 🔧 永久修复(计划排期)
628
+ - [根本性解决方案]
629
+
630
+ #### 🛡️ 预防措施(长期改进)
631
+ - [流程/监控/测试改进,防止复发]
632
+
633
+ ### 经验教训
634
+ [本次故障暴露的流程/技术缺陷]
635
+ ```
636
+
637
+ **输出格式**:Markdown 排查报告,含故障概述、时间线、5 Why 根因分析、临时缓解/永久修复/预防措施三层方案和经验教训
638
+
639
+ **注意事项**:
640
+ - 先稳定服务(临时缓解),再追根因,避免长时间故障影响用户
641
+ - 5 Why 要追到系统/流程层面,"人员失误"不是根因
642
+ - 排查过程保留完整记录,方便事后复盘
643
+
644
+ ---
645
+
646
+ ## Skill 10:技术调研
647
+
648
+ **触发词**:`技术调研`、`技术选型`、`POC`、`对比方案`、`选哪个好`、`方案对比`、`调研一下`、`技术评估`、`/技术调研`、`@ethan 调研`
649
+
650
+ **描述**:结构化技术选型:问题定义→方案收集→加权评分矩阵→POC 验证→明确结论
651
+
652
+ ### 1. 问题定义
653
+
654
+ 明确调研的边界和目标:
655
+
656
+ - **核心问题**:用一句话描述要解决什么技术问题
657
+ - **约束条件**:
658
+ - 技术栈约束(语言、框架、云平台)
659
+ - 团队约束(学习曲线、现有技能)
660
+ - 资源约束(成本上限、时间窗口)
661
+ - 合规约束(开源协议、数据合规)
662
+ - **评估维度**:列出 5-8 个评估标准,并为每个标准分配**权重**(权重之和为 100)
663
+ - 常用维度:功能完整性、性能、稳定性/成熟度、社区活跃度、学习成本、运维成本、License
664
+
665
+ ### 2. 方案收集
666
+
667
+ 系统收集候选方案:
668
+
669
+ - 通过文档、GitHub、技术博客、同行推荐收集 **3-5 个**候选方案
670
+ - 每个方案记录:
671
+ - 官网/仓库链接
672
+ - 版本/发布日期
673
+ - Stars/下载量(活跃度指标)
674
+ - 核心特性概述(3-5 条)
675
+ - 已知局限性
676
+ - 去掉明显不满足约束条件的方案,保留 2-4 个进入深度对比
677
+
678
+ ### 3. 对比矩阵(加权评分)
679
+
680
+ 用加权评分矩阵量化对比:
681
+
682
+ - 每个维度打分 1-5(1=很差,5=很好)
683
+ - 加权得分 = Σ(各维度得分 × 权重)
684
+ - 用 Markdown 表格呈现:
685
+
686
+ ```markdown
687
+ | 评估维度 | 权重 | 方案 A | 方案 B | 方案 C |
688
+ |---------|------|--------|--------|--------|
689
+ | 功能完整性 | 30% | 4 (1.2) | 5 (1.5) | 3 (0.9) |
690
+ | 性能 | 25% | 5 (1.25) | 3 (0.75) | 4 (1.0) |
691
+ | 学习成本 | 20% | 3 (0.6) | 4 (0.8) | 5 (1.0) |
692
+ | 社区活跃度 | 15% | 5 (0.75) | 4 (0.6) | 2 (0.3) |
693
+ | 运维成本 | 10% | 3 (0.3) | 4 (0.4) | 5 (0.5) |
694
+ | **加权总分** | 100% | **4.1** | **4.05** | **3.7** |
695
+ ```
696
+
697
+ 标注每个分数的**简短依据**(不要只给数字)
698
+
699
+ ### 4. POC 验证
700
+
701
+ 对得分接近的候选方案(差距 < 0.5 分),通过 POC 验证关键风险:
702
+
703
+ - **POC 范围**:只验证最有风险的 1-2 个假设,不做完整功能
704
+ - **POC 时间盒**:限定在 1-3 天内完成
705
+ - **验证清单**:
706
+ - [ ] 核心功能可用性(Happy Path)
707
+ - [ ] 性能基准测试(如果性能是关键维度)
708
+ - [ ] 与现有技术栈的集成难度
709
+ - [ ] 边界场景和错误处理
710
+ - 记录 POC 结果(代码片段 + 关键指标数据)
711
+
712
+ ### 5. 明确结论
713
+
714
+ 输出有据可查的选型结论:
715
+
716
+ ```markdown
717
+ ## 技术调研结论
718
+
719
+ ### 推荐方案
720
+ **[方案名称]**
721
+
722
+ ### 推荐理由
723
+ 1. [主要优势 1]
724
+ 2. [主要优势 2]
725
+ 3. [评分最高/POC 验证通过]
726
+
727
+ ### 已知风险和缓解措施
728
+ - 风险:[描述] → 缓解:[措施]
729
+
730
+ ### 放弃其他方案的原因
731
+ - [方案 B]:[原因]
732
+ - [方案 C]:[原因]
733
+
734
+ ### 后续行动
735
+ - [ ] [下一步行动]
736
+ ```
737
+
738
+ **输出格式**:Markdown 调研报告,含问题定义、候选方案概述、加权评分矩阵、POC 结果(如有)和最终选型结论
739
+
740
+ **注意事项**:
741
+ - 评估维度权重要在调研开始前确定,避免"为结论找理由"的逆向推导
742
+ - POC 代码要保留在仓库中,方便团队评审
743
+ - 选型结论要包含"不选其他方案的原因",方便后续追溯决策依据
744
+
745
+ ---
746
+
747
+ 执行任何 Skill 时,严格按照定义的步骤和输出格式,不省略任何关键步骤。