ethan-skill 1.7.0 → 1.8.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 (61) hide show
  1. package/README.md +83 -24
  2. package/dist/skills/15-git-workflow.d.ts +3 -0
  3. package/dist/skills/15-git-workflow.d.ts.map +1 -0
  4. package/dist/skills/15-git-workflow.js +288 -0
  5. package/dist/skills/15-git-workflow.js.map +1 -0
  6. package/dist/skills/16-unit-testing.d.ts +3 -0
  7. package/dist/skills/16-unit-testing.d.ts.map +1 -0
  8. package/dist/skills/16-unit-testing.js +298 -0
  9. package/dist/skills/16-unit-testing.js.map +1 -0
  10. package/dist/skills/17-system-design.d.ts +3 -0
  11. package/dist/skills/17-system-design.d.ts.map +1 -0
  12. package/dist/skills/17-system-design.js +294 -0
  13. package/dist/skills/17-system-design.js.map +1 -0
  14. package/dist/skills/18-database-optimize.d.ts +3 -0
  15. package/dist/skills/18-database-optimize.d.ts.map +1 -0
  16. package/dist/skills/18-database-optimize.js +294 -0
  17. package/dist/skills/18-database-optimize.js.map +1 -0
  18. package/dist/skills/19-docker.d.ts +3 -0
  19. package/dist/skills/19-docker.d.ts.map +1 -0
  20. package/dist/skills/19-docker.js +360 -0
  21. package/dist/skills/19-docker.js.map +1 -0
  22. package/dist/skills/20-cicd.d.ts +3 -0
  23. package/dist/skills/20-cicd.d.ts.map +1 -0
  24. package/dist/skills/20-cicd.js +364 -0
  25. package/dist/skills/20-cicd.js.map +1 -0
  26. package/dist/skills/21-performance.d.ts +3 -0
  27. package/dist/skills/21-performance.d.ts.map +1 -0
  28. package/dist/skills/21-performance.js +139 -0
  29. package/dist/skills/21-performance.js.map +1 -0
  30. package/dist/skills/22-refactoring.d.ts +3 -0
  31. package/dist/skills/22-refactoring.d.ts.map +1 -0
  32. package/dist/skills/22-refactoring.js +235 -0
  33. package/dist/skills/22-refactoring.js.map +1 -0
  34. package/dist/skills/23-observability.d.ts +3 -0
  35. package/dist/skills/23-observability.d.ts.map +1 -0
  36. package/dist/skills/23-observability.js +266 -0
  37. package/dist/skills/23-observability.js.map +1 -0
  38. package/dist/skills/24-design-patterns.d.ts +3 -0
  39. package/dist/skills/24-design-patterns.d.ts.map +1 -0
  40. package/dist/skills/24-design-patterns.js +258 -0
  41. package/dist/skills/24-design-patterns.js.map +1 -0
  42. package/dist/skills/index.d.ts +10 -0
  43. package/dist/skills/index.d.ts.map +1 -1
  44. package/dist/skills/index.js +41 -1
  45. package/dist/skills/index.js.map +1 -1
  46. package/dist/skills/skills.test.js +3 -3
  47. package/dist/skills/skills.test.js.map +1 -1
  48. package/dist/templates/templates.test.js +2 -3
  49. package/dist/templates/templates.test.js.map +1 -1
  50. package/package.json +1 -1
  51. package/rules/claude-code/CLAUDE.md +2410 -3
  52. package/rules/cline/.clinerules +2262 -2
  53. package/rules/codebuddy/CODEBUDDY.md +2361 -2
  54. package/rules/continue/.continuerules +2262 -2
  55. package/rules/copilot/copilot-instructions.md +2331 -2
  56. package/rules/cursor/.cursorrules +2399 -2
  57. package/rules/cursor/smart-flow.mdc +2399 -2
  58. package/rules/jetbrains/smart-flow.md +2331 -2
  59. package/rules/lingma/smart-flow.md +2352 -3
  60. package/rules/windsurf/.windsurf/rules/smart-flow.md +2332 -3
  61. package/rules/zed/smart-flow.rules +2251 -1
package/README.md CHANGED
@@ -14,18 +14,20 @@
14
14
 
15
15
  | 模块 | 内容 |
16
16
  |------|------|
17
- | **10 个 Skill** | 标准化工作流节点,覆盖需求→设计→实现→跟踪→输出→质量 |
17
+ | **24 个 Skill** | 标准化工作流节点,覆盖需求→接口设计→安全→部署→PRD→Git→测试→系统设计→数据库→Docker→CI/CD→性能→重构→可观测性→设计模式 |
18
18
  | **11 个平台** | Cursor / Copilot / Cline / Windsurf / Zed / JetBrains / Continue / Claude Code 等 |
19
- | **3 个 Pipeline** | 链式工作流(开发 / 汇报 / 质量),有状态持久化推进 |
20
- | **17 个 MCP 工具** | AI 编辑器原生调用 Skill、Pipeline、Git、记忆库、估算 |
19
+ | **6 个 Pipeline** | 链式工作流(开发 / 汇报 / 质量 / 完整周期 / 故障响应 / 新功能),有状态持久化推进 |
20
+ | **23 个 MCP 工具** | AI 编辑器原生调用 Skill、Pipeline、Git、记忆库、估算 |
21
21
  | **40+ CLI 命令** | Git 集成、开发工具、记忆库、估算、插件 OS 全覆盖 |
22
+ | **自定义 Skill** | `.ethan/skills/*.yaml/.md`,YAML frontmatter + Markdown body |
23
+ | **自定义 Pipeline** | `.ethan/pipelines/*.yaml`,引用内置或自定义 Skill 自由组合 |
22
24
  | **浏览器扩展** | Chrome/Edge MV3,GitHub PR 一键 Review + 右键菜单 |
23
- | **VS Code 扩展** | 侧边栏树、20 个命令、17 个 @ethan 斜杠命令 |
25
+ | **VS Code 扩展** | 侧边栏树、20 个命令、23 个 @ethan 斜杠命令 |
24
26
  | **插件 OS** | 发布/搜索/安装社区 Skill 插件,支持私有注册表 |
25
27
 
26
28
  ---
27
29
 
28
- ## 10 个 Skill
30
+ ## 24 个 Skill
29
31
 
30
32
  | # | Skill | 分类 | 触发词(示例) | 说明 |
31
33
  |---|-------|------|--------------|------|
@@ -39,16 +41,33 @@
39
41
  | 8 | 代码审查 | 质量侧 | `代码审查`、`code review`、`CR` | 系统性审查,分级输出 Blocker/Major/Minor |
40
42
  | 9 | 故障排查 | 质量侧 | `故障排查`、`debug`、`线上故障` | 假设验证 + 5 Why 根因分析,三层解决方案 |
41
43
  | 10 | 技术调研 | 需求侧 | `技术调研`、`技术选型`、`POC` | 加权评分矩阵 + POC 验证,输出有据可查的结论 |
44
+ | 11 | 接口设计 | 执行侧 | `接口设计`、`API 设计`、`RESTful` | RESTful/GraphQL 接口规范,OpenAPI 3.0 风格输出 |
45
+ | 12 | 安全审查 | 质量侧 | `安全审查`、`OWASP`、`security review` | OWASP Top 10 逐项扫描,四级风险清单(Critical→Low) |
46
+ | 13 | 部署上线 | 执行侧 | `部署上线`、`上线`、`deploy` | Pre-flight 预检 + 灰度/蓝绿策略 + 回滚方案全流程 |
47
+ | 14 | PRD 编写 | 需求侧 | `PRD`、`产品需求`、`写 PRD` | 用户故事 + 验收标准 AC + 非功能性需求 + 埋点方案 |
48
+ | 15 | **Git 工作流** | 执行侧 | `Git 工作流`、`分支策略`、`commit 规范` | GitFlow/Trunk-Based 选型、Conventional Commits、Rebase vs Merge 决策 |
49
+ | 16 | **单元测试** | 质量侧 | `单元测试`、`unit test`、`测试覆盖率` | AAA 模式、Mock 策略、Vitest/Jest 配置,建立测试文化 |
50
+ | 17 | **系统设计** | 执行侧 | `系统设计`、`架构设计`、`system design` | 需求拆解→容量估算→架构选型→核心组件→数据模型 |
51
+ | 18 | **数据库优化** | 质量侧 | `数据库优化`、`慢查询`、`索引优化` | 慢查询诊断、索引策略、查询优化、分库分表与缓存 |
52
+ | 19 | **Docker** | 执行侧 | `Docker`、`容器化`、`Dockerfile` | 多阶段构建、Compose 编排、安全加固与镜像精简 |
53
+ | 20 | **CI/CD** | 执行侧 | `CI/CD`、`流水线`、`GitHub Actions` | GitHub Actions 全流程、并行构建、多环境部署策略 |
54
+ | 21 | **性能优化** | 质量侧 | `性能优化`、`Core Web Vitals`、`performance` | 基线建立、前端懒加载/代码分割、后端缓存/并发优化 |
55
+ | 22 | **代码重构** | 质量侧 | `代码重构`、`refactoring`、`技术债` | 识别坏味道、提炼函数/多态等重构手法、测试先行 |
56
+ | 23 | **可观测性** | 质量侧 | `可观测性`、`监控`、`链路追踪` | 日志/指标/链路三支柱、OTel、Prometheus+Grafana、SLO |
57
+ | 24 | **设计模式** | 执行侧 | `设计模式`、`design pattern`、`GoF` | 23 种 GoF 模式速查、TypeScript 实现、场景→模式选型指南 |
42
58
 
43
59
  ---
44
60
 
45
- ## 3 个 Pipeline(链式工作流)
61
+ ## 6 个 Pipeline(链式工作流)
46
62
 
47
63
  | Pipeline ID | Skills | 适用场景 |
48
64
  |-------------|--------|---------|
49
- | `dev-workflow` | 需求理解 → 任务拆解 → 方案设计 → 执行实现 | 完整功能开发 |
65
+ | `dev-workflow` | 需求理解 → 任务拆解 → 方案设计 → 执行实现 | 常规功能开发 |
50
66
  | `reporting` | 进度跟踪 → 任务报告 → 周报生成 | 项目汇报 |
51
67
  | `quality-workflow` | 代码审查 → 故障排查 | 质量保障 |
68
+ | `full-dev-cycle` | 需求理解 → **接口设计** → 方案设计 → 执行实现 → 代码审查 → **部署上线** | 完整功能交付 |
69
+ | `incident-response` | 故障排查 → 技术调研 → 任务报告 | 线上故障处理 |
70
+ | `new-feature` | **PRD** → 技术调研 → **接口设计** → 任务拆解 → 执行实现 | 新功能从 0 到 1 |
52
71
 
53
72
  自定义 Pipeline:在 `.ethan/pipelines/` 目录创建 YAML 文件,`ethan pipeline-init` 生成模板。
54
73
 
@@ -85,7 +104,7 @@ npx ethan-skill install --platform cursor --lang en
85
104
  }
86
105
  ```
87
106
 
88
- 重启 AI 编辑器后,可使用全部 **17 个 MCP 工具**(详见下方 MCP 工具列表)。
107
+ 重启 AI 编辑器后,可使用全部 **23 个 MCP 工具**(详见下方 MCP 工具列表)。
89
108
 
90
109
  ### 方式三:全局安装
91
110
 
@@ -120,7 +139,7 @@ ethan install --platform cursor
120
139
 
121
140
  ```bash
122
141
  ethan install [--platform <platform>] [--lang en] # 安装规则文件
123
- ethan list [--json] # 列出所有 Skill
142
+ ethan list [--json] # 列出所有 Skill(含自定义)
124
143
  ethan run # 交互式 Skill 执行向导
125
144
  ethan init # 生成 .ethanrc.json 配置文件
126
145
  ethan validate # 校验 rules/ 与源码是否同步
@@ -208,6 +227,35 @@ ethan pipeline run <id> [-c "上下文"] # 运行 Pipeline
208
227
  ethan pipeline-init [--name my-pipeline] # 生成自定义 YAML Pipeline 模板
209
228
  ```
210
229
 
230
+ ### 自定义 Skill
231
+
232
+ ```bash
233
+ ethan skill new [name] [--format yaml|md] # 生成自定义 Skill 模板(默认 yaml)
234
+ ethan skill list # 列出 .ethan/skills/ 中的自定义 Skill
235
+ ```
236
+
237
+ 自定义 Skill 文件放置在 `.ethan/skills/` 目录,支持 `.yaml`、`.json`、`.md` 格式:
238
+
239
+ ```markdown
240
+ ---
241
+ id: my-skill
242
+ name: 自定义技能
243
+ nameEn: my_skill
244
+ description: 一句话描述
245
+ triggers:
246
+ - 触发词
247
+ outputFormat: Markdown 文档
248
+ ---
249
+
250
+ ## 1. 第一步
251
+
252
+ 步骤说明...
253
+
254
+ ## 2. 第二步
255
+
256
+ 步骤说明...
257
+ ```
258
+
211
259
  ### 插件 OS(Phase 6)
212
260
 
213
261
  ```bash
@@ -220,7 +268,7 @@ ethan plugin search <keyword> [-n <limit>] # 搜索社区插件(eth
220
268
 
221
269
  ---
222
270
 
223
- ## 17 个 MCP 工具
271
+ ## 23 个 MCP 工具
224
272
 
225
273
  配置 MCP Server 后,AI 编辑器(Cursor / Cline / Continue 等)可直接调用:
226
274
 
@@ -236,13 +284,19 @@ ethan plugin search <keyword> [-n <limit>] # 搜索社区插件(eth
236
284
  | `code_review` | 代码审查 Skill |
237
285
  | `debug` | 故障排查 Skill |
238
286
  | `tech_research` | 技术调研 Skill |
287
+ | `api_design` | 接口设计 Skill(v1.7.0 新增)|
288
+ | `security_review` | 安全审查 Skill(v1.7.0 新增)|
289
+ | `deployment` | 部署上线 Skill(v1.7.0 新增)|
290
+ | `prd` | PRD 编写 Skill(v1.7.0 新增)|
239
291
  | `ethan_pipeline` | 串联执行完整 Pipeline |
240
- | `ethan_workflow_next` | 推进工作流到下一步(传入摘要,返回下一步提示词) |
292
+ | `ethan_workflow_next` | 推进工作流到下一步(传入摘要,返回下一步提示词)|
241
293
  | `ethan_workflow_status` | 查询工作流进度与当前步骤 |
242
- | `ethan_memory_search` | 搜索 Skill 记忆库(项目级 + 全局) |
243
- | `ethan_estimate` | 生成三点估算提示词(支持小时/故事点/人天) |
294
+ | `ethan_memory_search` | 搜索 Skill 记忆库(项目级 + 全局)|
295
+ | `ethan_estimate` | 生成三点估算提示词(支持小时/故事点/人天)|
244
296
  | `ethan_git_commit` | 读取 staged diff → Conventional Commit 提示词 |
245
297
  | `ethan_git_review` | 读取分支 diff → Blocker/Major/Minor Review 提示词 |
298
+ | `ethan_autopilot` | 生成 Pipeline 超级 prompt(自动链式执行)|
299
+ | `ethan_context_snapshot` | 采集项目快照(技术栈/git/目录树,TTL 30min 缓存)|
246
300
 
247
301
  ---
248
302
 
@@ -271,9 +325,9 @@ Chrome/Edge Manifest V3 扩展,将 Ethan 带入任意网页。
271
325
  2. VS Code → Extensions → `...` → Install from VSIX
272
326
 
273
327
  **功能:**
274
- - **Skill 侧边栏树**:按分类分组展示 10 个 Skill,点击直接运行
275
- - **Pipeline 侧边栏树**:展示 3 条 Pipeline,点击查看详情
276
- - **17 个 @ethan 斜杠命令**:在 Copilot Chat 中使用 `@ethan /需求理解`、`@ethan /commit` 等
328
+ - **Skill 侧边栏树**:按分类分组展示 14 个 Skill,点击直接运行
329
+ - **Pipeline 侧边栏树**:展示 6 条 Pipeline,点击查看详情
330
+ - **23 个 @ethan 斜杠命令**:在 Copilot Chat 中使用 `@ethan /需求理解`、`@ethan /commit` 等
277
331
  - **20 个命令面板命令**:包含 Git、开发工具、记忆、估算、复盘等全系列
278
332
  - **状态栏快捷按钮**:底部状态栏 `⚡ Ethan`,单击打开 Skill 选择器
279
333
 
@@ -318,11 +372,11 @@ src/skills/*.ts ──→ [build-rules.ts] ──→ rules/cursor/smart-flow
318
372
  ```
319
373
  ethan-skill/
320
374
  ├── src/
321
- │ ├── skills/ # 单一数据源(10 Skill + pipeline 定义)
375
+ │ ├── skills/ # 单一数据源(24 Skill + pipeline 定义)
322
376
  │ │ ├── types.ts # SkillDefinition、Platform、PipelineDefinition
323
377
  │ │ ├── index.ts # ALL_SKILLS 导出
324
- │ │ ├── pipeline.ts # PIPELINES + resolvePipeline()
325
- │ │ └── 01~10-*.ts # 各 Skill 定义(含 category、nextSkill)
378
+ │ │ ├── pipeline.ts # PIPELINES(6条)+ resolvePipeline()
379
+ │ │ └── 01~24-*.ts # 各 Skill 定义(含 category、nextSkill)
326
380
  │ ├── cli/ # 40+ CLI 命令入口
327
381
  │ │ ├── index.ts # Commander.js 主程序
328
382
  │ │ └── config.ts # .ethanrc.json 读写
@@ -330,20 +384,22 @@ ethan-skill/
330
384
  │ │ └── utils.ts # getStagedDiff / getBranchDiff / truncateDiff 等
331
385
  │ ├── workflow/ # 有状态工作流引擎
332
386
  │ │ └── state.ts # 会话持久化、Named Sessions、步骤推进
333
- │ ├── mcp/ # MCP Server(17 个工具)
387
+ │ ├── mcp/ # MCP Server(23 个工具)
334
388
  │ │ └── server.ts
335
389
  │ ├── router/ # 触发词路由
336
390
  │ ├── templates/ # 各平台渲染模板(11 个 case,强制穷举)
337
391
  │ ├── context/ # 项目技术栈自动检测
338
- │ ├── loader/ # 自定义 Skill YAML 加载器
392
+ │ ├── loader/ # 自定义 Skill/Pipeline 加载器
393
+ │ │ ├── custom-skill-loader.ts # .ethan/skills/*.yaml/.md
394
+ │ │ └── custom-pipeline-loader.ts # .ethan/pipelines/*.yaml
339
395
  │ ├── server/ # Web UI Dashboard
340
396
  │ └── vscode/ # VS Code 扩展
341
397
  ├── browser-extension/ # Chrome/Edge MV3 扩展
342
- ├── vscode-extension/ # VS Code 扩展 manifest(20 命令、17 斜杠命令)
398
+ ├── vscode-extension/ # VS Code 扩展 manifest(20 命令、23 斜杠命令)
343
399
  ├── rules/ # 构建产物,11 个平台(提交到仓库)
344
400
  ├── docs/ # 官网(GitHub Pages)
345
401
  ├── scripts/build/ # 构建脚本(build-rules.ts / build-vscode.ts)
346
- └── .ethan/ # 项目级运行时数据(workflow.json、memory/、pipelines/)
402
+ └── .ethan/ # 项目级运行时数据(workflow.json、memory/、skills/、pipelines/)
347
403
  ```
348
404
 
349
405
  ---
@@ -399,7 +455,10 @@ npm run test:coverage # 覆盖率报告
399
455
 
400
456
  | 版本 | 主要变更 |
401
457
  |------|---------|
402
- | **v1.5.0** | MCP 新增 4 工具(git commit/review/memory search/estimate);VS Code 扩展 17 斜杠命令;插件 OS(publish/registry/search);浏览器扩展;自定义 YAML Pipeline;Stats 排行榜;记忆库;估算复盘 |
458
+ | **v1.8.0** | 新增 10 Skill(Git 工作流/单元测试/系统设计/数据库优化/Docker/CI/CD/性能优化/代码重构/可观测性/设计模式);Skills 14 24;docs ReactBits 风格重设计 |
459
+ | **v1.7.0** | 新增 4 个 Skill(接口设计/安全审查/部署上线/PRD 编写);新增 3 条 Pipeline(full-dev-cycle/incident-response/new-feature);自定义 Pipeline 加载(`.ethan/pipelines/`);MCP 工具 19 → 23 |
460
+ | **v1.6.0** | 自定义 Skill 支持 `.md` 格式(YAML frontmatter + Markdown body);`ethan skill new --format md`;新增 MCP `ethan_autopilot` 和 `ethan_context_snapshot` 工具 |
461
+ | **v1.5.0** | MCP 新增 4 工具(git commit/review/memory search/estimate);VS Code 扩展 17 斜杠命令;插件 OS;浏览器扩展;Context 引擎;Stats 排行榜;记忆库;估算复盘 |
403
462
  | **v1.3.0** | Git 集成(commit/review/pr/standup/changelog);开发工具(scan/explain/test-case/naming/readme/roast);On-call、定时任务、Git Hooks |
404
463
  | **v1.2.0** | 新增代码审查、故障排查、技术调研 3 个 Skill;新增 Windsurf/Zed/JetBrains/Continue/Claude Code 5 个平台;validate/pipeline/doctor/stats 命令 |
405
464
  | **v1.1.0** | 有状态工作流(workflow start/done/status);MCP Server;Web UI Dashboard;自动上下文检测 |
@@ -0,0 +1,3 @@
1
+ import type { SkillDefinition } from './types';
2
+ export declare const gitWorkflowSkill: SkillDefinition;
3
+ //# sourceMappingURL=15-git-workflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"15-git-workflow.d.ts","sourceRoot":"","sources":["../../src/skills/15-git-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,eAAO,MAAM,gBAAgB,EAAE,eA4R9B,CAAC"}
@@ -0,0 +1,288 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.gitWorkflowSkill = void 0;
4
+ exports.gitWorkflowSkill = {
5
+ id: 'git-workflow',
6
+ name: 'Git 工作流',
7
+ nameEn: 'git_workflow',
8
+ order: 15,
9
+ category: '执行侧',
10
+ description: '规范 Git 分支策略、提交规范、合并流程,建立团队一致的版本控制工作流',
11
+ descriptionEn: 'Establish consistent Git branching strategy, commit conventions, and merge workflow for teams',
12
+ detailDescription: `系统梳理 Git 工作流全流程,涵盖 GitFlow/Trunk-Based 分支策略选型、Conventional Commits 提交规范、
13
+ rebase vs merge 决策、冲突解决流程和 PR/MR 最佳实践,帮助团队建立高效、可追溯的版本控制体系。`,
14
+ triggers: [
15
+ 'Git 工作流',
16
+ 'git workflow',
17
+ 'git 规范',
18
+ '分支策略',
19
+ 'branching strategy',
20
+ 'commit 规范',
21
+ 'commit convention',
22
+ '提交规范',
23
+ 'PR 规范',
24
+ 'rebase vs merge',
25
+ '冲突解决',
26
+ '@ethan git',
27
+ '@ethan git-workflow',
28
+ ],
29
+ steps: [
30
+ {
31
+ title: '1. 评估项目特征,选择分支策略',
32
+ content: `根据团队规模和发布节奏选择合适的分支策略:
33
+
34
+ **GitFlow 适用场景**
35
+ - 有明确版本号的产品(如 App、SDK、开源库)
36
+ - 需要维护多个线上版本
37
+ - 发布周期较长(周/月级别)
38
+
39
+ \`\`\`
40
+ main ──●────────────────────●── (生产稳定)
41
+ hotfix/1.0.1 └──●──┘ (紧急修复)
42
+ release/1.1 └──●──┘ (预发布验证)
43
+ develop ──●──────●──────●──────●── (集成分支)
44
+ feature/login └──●──┘ (功能开发)
45
+ \`\`\`
46
+
47
+ **Trunk-Based Development 适用场景**
48
+ - 持续部署(CD)体系成熟
49
+ - 有完善的 Feature Flag 机制
50
+ - 团队规模适中(≤50 人),发布频率高(日/周)
51
+
52
+ \`\`\`
53
+ main ──●──●──●──●──●── (直接推送或短命分支 <2天)
54
+ feat └──●──┘ (短命功能分支,快速合并)
55
+ \`\`\`
56
+
57
+ **决策矩阵**
58
+
59
+ | 维度 | GitFlow | Trunk-Based |
60
+ |------|---------|-------------|
61
+ | 发布频率 | 低(周/月) | 高(日/周) |
62
+ | 团队规模 | 大 | 中小 |
63
+ | 多版本维护 | 支持 | 不擅长 |
64
+ | CI/CD 成熟度 | 低要求 | 高要求 |`,
65
+ },
66
+ {
67
+ title: '2. 制定提交信息规范(Conventional Commits)',
68
+ content: `采用 Conventional Commits 规范,格式:\`<type>(<scope>): <subject>\`
69
+
70
+ **类型(type)定义**
71
+
72
+ | type | 用途 | 版本影响 |
73
+ |------|------|---------|
74
+ | \`feat\` | 新功能 | MINOR |
75
+ | \`fix\` | Bug 修复 | PATCH |
76
+ | \`perf\` | 性能优化 | PATCH |
77
+ | \`refactor\` | 重构(无功能变化) | — |
78
+ | \`docs\` | 文档变更 | — |
79
+ | \`test\` | 测试相关 | — |
80
+ | \`chore\` | 构建/依赖/工具 | — |
81
+ | \`ci\` | CI 配置变更 | — |
82
+ | \`BREAKING CHANGE\` | 破坏性变更(Footer) | MAJOR |
83
+
84
+ **示例**
85
+ \`\`\`bash
86
+ # 好的提交信息
87
+ feat(auth): add OAuth2 login with Google provider
88
+ fix(cart): prevent duplicate item addition on rapid click
89
+ perf(query): add composite index on (user_id, created_at)
90
+ refactor(api): extract pagination helper to shared utils
91
+ docs(readme): update installation steps for Node 20
92
+
93
+ # 破坏性变更写法
94
+ feat(api)!: rename /users endpoint to /accounts
95
+
96
+ BREAKING CHANGE: /users endpoint removed, use /accounts instead
97
+ \`\`\`
98
+
99
+ **工具链配置**
100
+ \`\`\`bash
101
+ # 安装 commitlint
102
+ npm install -D @commitlint/cli @commitlint/config-conventional
103
+ echo "module.exports = {extends: ['@commitlint/config-conventional']}" > commitlint.config.js
104
+
105
+ # 配合 husky 在 commit-msg 钩子校验
106
+ npx husky add .husky/commit-msg 'npx --no -- commitlint --edit $1'
107
+ \`\`\``,
108
+ },
109
+ {
110
+ title: '3. Rebase vs Merge 决策与实践',
111
+ content: `**核心原则:黄金法则 — 不要 rebase 已推送的公共分支**
112
+
113
+ **何时用 Merge**
114
+ - 合并长期分支(feature → develop)
115
+ - 需要保留完整历史记录(审计场景)
116
+ - 多人协作的共享分支
117
+
118
+ \`\`\`bash
119
+ # 保留合并记录(推荐用于 PR/MR 合并)
120
+ git merge --no-ff feature/login
121
+
122
+ # 快进合并(适合独立小修改)
123
+ git merge --ff-only hotfix/typo
124
+ \`\`\`
125
+
126
+ **何时用 Rebase**
127
+ - 更新本地功能分支,与主干保持同步
128
+ - 整理本地提交历史,推送 PR 前清理
129
+
130
+ \`\`\`bash
131
+ # 将功能分支变基到最新 main
132
+ git checkout feature/login
133
+ git rebase origin/main
134
+
135
+ # 交互式 rebase:合并/重排/修改最近 3 个提交
136
+ git rebase -i HEAD~3
137
+ # 选项: pick / squash(s) / fixup(f) / reword(r) / drop(d)
138
+ \`\`\`
139
+
140
+ **Squash Merge**(GitHub/GitLab PR 推荐)
141
+ \`\`\`bash
142
+ # 将功能分支所有提交合并为一个干净提交
143
+ git merge --squash feature/login
144
+ git commit -m "feat(auth): add login page with form validation"
145
+ \`\`\`
146
+
147
+ **推荐工作流**
148
+ 1. 本地开发:随意提交,保持节奏
149
+ 2. 推送 PR 前:\`git rebase -i origin/main\` 整理提交
150
+ 3. PR 合并:使用 Squash Merge 保持主干干净`,
151
+ },
152
+ {
153
+ title: '4. 冲突解决流程',
154
+ content: `**结构化冲突解决步骤**
155
+
156
+ \`\`\`bash
157
+ # Step 1: 理解冲突来源
158
+ git log --oneline --graph --all # 查看分支关系
159
+ git diff HEAD origin/main # 对比差异
160
+
161
+ # Step 2: 标记冲突文件分析
162
+ git status # 查看所有冲突文件
163
+ # conflict markers: <<<<<<< HEAD ... ======= ... >>>>>>> branch
164
+
165
+ # Step 3: 使用工具辅助解决
166
+ git mergetool # 调用配置的 merge tool(VSCode / IntelliJ)
167
+
168
+ # 配置 VSCode 为默认 merge tool
169
+ git config --global merge.tool vscode
170
+ git config --global mergetool.vscode.cmd 'code --wait $MERGED'
171
+ \`\`\`
172
+
173
+ **三路合并理解(Three-way merge)**
174
+ \`\`\`
175
+ BASE(公共祖先):const timeout = 5000;
176
+ OURS(当前分支):const timeout = 10000; // 改为10s
177
+ THEIRS(被合并):const TIMEOUT = 5000; // 改为大写常量名
178
+ RESULT(手动): const TIMEOUT = 10000; // 两个改动都要
179
+ \`\`\`
180
+
181
+ **预防冲突的最佳实践**
182
+ - 功能分支生命周期控制在 1-3 天内
183
+ - 每日同步主干:\`git pull --rebase origin main\`
184
+ - 大文件/自动生成文件加入 \`.gitattributes\` 配置合并策略
185
+ \`\`\`gitattributes
186
+ # 始终使用 ours 策略合并 lock 文件(减少冲突)
187
+ package-lock.json merge=ours
188
+ yarn.lock merge=ours
189
+ \`\`\``,
190
+ },
191
+ {
192
+ title: '5. Pull Request / Code Review 流程规范',
193
+ content: `**PR 模板设计**
194
+ \`\`\`markdown
195
+ ## 变更说明
196
+ [简洁描述本次变更做了什么、为什么]
197
+
198
+ ## 变更类型
199
+ - [ ] 新功能 (feat)
200
+ - [ ] Bug 修复 (fix)
201
+ - [ ] 重构 (refactor)
202
+ - [ ] 性能优化 (perf)
203
+
204
+ ## 测试验证
205
+ - [ ] 单元测试通过
206
+ - [ ] 手动测试场景: [描述]
207
+ - [ ] 截图/录屏(UI 变更必填)
208
+
209
+ ## 影响范围
210
+ [描述可能影响的模块或依赖方]
211
+
212
+ ## Checklist
213
+ - [ ] 代码自查完毕
214
+ - [ ] 无调试代码 (console.log/debugger)
215
+ - [ ] 文档已更新(如需要)
216
+ \`\`\`
217
+
218
+ **PR 规模控制**
219
+ - 理想 PR 大小:< 400 行(不含测试)
220
+ - 超过 800 行:强制拆分为多个 PR
221
+ - 可用 \`git diff --stat origin/main\` 提前检查
222
+
223
+ **分支保护规则(GitHub/GitLab 配置)**
224
+ \`\`\`
225
+ main 分支保护:
226
+ ✅ Require pull request reviews (min: 1)
227
+ ✅ Require status checks to pass (CI/lint/test)
228
+ ✅ Require branches to be up to date
229
+ ✅ Restrict push access (仅管理员)
230
+ ✅ Require signed commits(高安全场景)
231
+ \`\`\``,
232
+ },
233
+ {
234
+ title: '6. 输出工作流规范文档',
235
+ content: `整理为团队可直接使用的规范文档,格式如下:
236
+
237
+ \`\`\`markdown
238
+ ## Git 工作流规范
239
+
240
+ ### 分支命名
241
+ - feature/<ticket-id>-short-description (如: feature/PROJ-123-user-login)
242
+ - fix/<ticket-id>-short-description
243
+ - hotfix/<version>-short-description (如: hotfix/1.2.1-payment-crash)
244
+ - release/<version> (如: release/1.3.0)
245
+
246
+ ### 提交规范
247
+ 格式: <type>(<scope>): <subject>
248
+ 示例: feat(auth): add JWT refresh token support
249
+
250
+ ### 禁止行为
251
+ ❌ 直接推送到 main/master
252
+ ❌ force push 到共享分支
253
+ ❌ rebase 已推送的公共分支
254
+ ❌ 超过 1000 行的单次 PR(紧急 hotfix 除外)
255
+
256
+ ### 分支生命周期
257
+ - feature 分支: ≤ 5 个工作日
258
+ - release 分支: ≤ 2 周
259
+ - hotfix 分支: ≤ 24 小时
260
+ \`\`\``,
261
+ },
262
+ ],
263
+ outputFormat: 'Markdown 工作流规范文档,含分支策略选型建议、提交规范示例、rebase/merge 决策指南、冲突解决 SOP 和 PR 规范模板',
264
+ examples: [
265
+ {
266
+ input: '我们团队5人,做 SaaS 产品,每周发版一次,应该用什么 Git 工作流?',
267
+ output: `## Git 工作流建议:GitHub Flow(简化 GitFlow)
268
+
269
+ **推荐理由**:5人小团队 + 每周发版,GitHub Flow 复杂度适中,无需维护多个长期分支。
270
+
271
+ **分支结构**
272
+ - \`main\`:始终可部署,受保护
273
+ - \`feature/xxx\`:功能开发,完成即 PR,合并即删除
274
+
275
+ **提交规范**:Conventional Commits
276
+ **合并策略**:Squash Merge(保持 main 历史干净)
277
+ **发版标记**:\`git tag v1.x.0\` 打标签`,
278
+ },
279
+ ],
280
+ notes: [
281
+ '分支策略没有银弹,根据团队规模和发版频率选择最适合的',
282
+ 'force push 操作必须在团队内公告,避免其他成员本地分支混乱',
283
+ '建议在 CI 中自动校验 commit message 格式,而非依赖人工审查',
284
+ '冲突解决后务必运行测试,确保合并结果功能正常',
285
+ ],
286
+ nextSkill: 'unit-testing',
287
+ };
288
+ //# sourceMappingURL=15-git-workflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"15-git-workflow.js","sourceRoot":"","sources":["../../src/skills/15-git-workflow.ts"],"names":[],"mappings":";;;AAEa,QAAA,gBAAgB,GAAoB;IAC/C,EAAE,EAAE,cAAc;IAClB,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,cAAc;IACtB,KAAK,EAAE,EAAE;IACT,QAAQ,EAAE,KAAK;IACf,WAAW,EAAE,sCAAsC;IACnD,aAAa,EAAE,+FAA+F;IAC9G,iBAAiB,EAAE;2DACsC;IACzD,QAAQ,EAAE;QACR,SAAS;QACT,cAAc;QACd,QAAQ;QACR,MAAM;QACN,oBAAoB;QACpB,WAAW;QACX,mBAAmB;QACnB,MAAM;QACN,OAAO;QACP,iBAAiB;QACjB,MAAM;QACN,YAAY;QACZ,qBAAqB;KACtB;IACD,KAAK,EAAE;QACL;YACE,KAAK,EAAE,kBAAkB;YACzB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAgCW;SACrB;QACD;YACE,KAAK,EAAE,mCAAmC;YAC1C,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAuCR;SACF;QACD;YACE,KAAK,EAAE,0BAA0B;YACjC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAuCiB;SAC3B;QACD;YACE,KAAK,EAAE,WAAW;YAClB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCR;SACF;QACD;YACE,KAAK,EAAE,oCAAoC;YAC3C,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAsCR;SACF;QACD;YACE,KAAK,EAAE,cAAc;YACrB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;OAyBR;SACF;KACF;IACD,YAAY,EACV,wEAAwE;IAC1E,QAAQ,EAAE;QACR;YACE,KAAK,EAAE,wCAAwC;YAC/C,MAAM,EAAE;;;;;;;;;;gCAUkB;SAC3B;KACF;IACD,KAAK,EAAE;QACL,4BAA4B;QAC5B,oCAAoC;QACpC,yCAAyC;QACzC,wBAAwB;KACzB;IACD,SAAS,EAAE,cAAc;CAC1B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { SkillDefinition } from './types';
2
+ export declare const unitTestingSkill: SkillDefinition;
3
+ //# sourceMappingURL=16-unit-testing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"16-unit-testing.d.ts","sourceRoot":"","sources":["../../src/skills/16-unit-testing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,eAAO,MAAM,gBAAgB,EAAE,eAsS9B,CAAC"}