ethan-skill 1.7.0 → 1.9.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 (63) hide show
  1. package/README.md +84 -24
  2. package/dist/cli/index.js +3 -2
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/skills/15-git-workflow.d.ts +3 -0
  5. package/dist/skills/15-git-workflow.d.ts.map +1 -0
  6. package/dist/skills/15-git-workflow.js +288 -0
  7. package/dist/skills/15-git-workflow.js.map +1 -0
  8. package/dist/skills/16-unit-testing.d.ts +3 -0
  9. package/dist/skills/16-unit-testing.d.ts.map +1 -0
  10. package/dist/skills/16-unit-testing.js +298 -0
  11. package/dist/skills/16-unit-testing.js.map +1 -0
  12. package/dist/skills/17-system-design.d.ts +3 -0
  13. package/dist/skills/17-system-design.d.ts.map +1 -0
  14. package/dist/skills/17-system-design.js +294 -0
  15. package/dist/skills/17-system-design.js.map +1 -0
  16. package/dist/skills/18-database-optimize.d.ts +3 -0
  17. package/dist/skills/18-database-optimize.d.ts.map +1 -0
  18. package/dist/skills/18-database-optimize.js +294 -0
  19. package/dist/skills/18-database-optimize.js.map +1 -0
  20. package/dist/skills/19-docker.d.ts +3 -0
  21. package/dist/skills/19-docker.d.ts.map +1 -0
  22. package/dist/skills/19-docker.js +360 -0
  23. package/dist/skills/19-docker.js.map +1 -0
  24. package/dist/skills/20-cicd.d.ts +3 -0
  25. package/dist/skills/20-cicd.d.ts.map +1 -0
  26. package/dist/skills/20-cicd.js +364 -0
  27. package/dist/skills/20-cicd.js.map +1 -0
  28. package/dist/skills/21-performance.d.ts +3 -0
  29. package/dist/skills/21-performance.d.ts.map +1 -0
  30. package/dist/skills/21-performance.js +139 -0
  31. package/dist/skills/21-performance.js.map +1 -0
  32. package/dist/skills/22-refactoring.d.ts +3 -0
  33. package/dist/skills/22-refactoring.d.ts.map +1 -0
  34. package/dist/skills/22-refactoring.js +235 -0
  35. package/dist/skills/22-refactoring.js.map +1 -0
  36. package/dist/skills/23-observability.d.ts +3 -0
  37. package/dist/skills/23-observability.d.ts.map +1 -0
  38. package/dist/skills/23-observability.js +266 -0
  39. package/dist/skills/23-observability.js.map +1 -0
  40. package/dist/skills/24-design-patterns.d.ts +3 -0
  41. package/dist/skills/24-design-patterns.d.ts.map +1 -0
  42. package/dist/skills/24-design-patterns.js +258 -0
  43. package/dist/skills/24-design-patterns.js.map +1 -0
  44. package/dist/skills/index.d.ts +10 -0
  45. package/dist/skills/index.d.ts.map +1 -1
  46. package/dist/skills/index.js +41 -1
  47. package/dist/skills/index.js.map +1 -1
  48. package/dist/skills/skills.test.js +3 -3
  49. package/dist/skills/skills.test.js.map +1 -1
  50. package/dist/templates/templates.test.js +2 -3
  51. package/dist/templates/templates.test.js.map +1 -1
  52. package/package.json +1 -1
  53. package/rules/claude-code/CLAUDE.md +2410 -3
  54. package/rules/cline/.clinerules +2262 -2
  55. package/rules/codebuddy/CODEBUDDY.md +2361 -2
  56. package/rules/continue/.continuerules +2262 -2
  57. package/rules/copilot/copilot-instructions.md +2331 -2
  58. package/rules/cursor/.cursorrules +2399 -2
  59. package/rules/cursor/smart-flow.mdc +2399 -2
  60. package/rules/jetbrains/smart-flow.md +2331 -2
  61. package/rules/lingma/smart-flow.md +2352 -3
  62. package/rules/windsurf/.windsurf/rules/smart-flow.md +2332 -3
  63. package/rules/zed/smart-flow.rules +2251 -1
@@ -0,0 +1,364 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cicdSkill = void 0;
4
+ exports.cicdSkill = {
5
+ id: 'cicd',
6
+ name: 'CI/CD 流水线',
7
+ nameEn: 'cicd',
8
+ order: 20,
9
+ category: '执行侧',
10
+ description: '设计完整 CI/CD 流水线,涵盖流水线阶段设计、测试自动化、部署门控和回滚策略',
11
+ descriptionEn: 'Design complete CI/CD pipelines covering stage design, test automation, deployment gates, and rollback triggers',
12
+ detailDescription: `端到端 CI/CD 流水线设计指导,从流水线阶段规划、构建优化、测试自动化分层,
13
+ 到部署策略(蓝绿/金丝雀)、部署门控配置和自动回滚机制,帮助团队建立快速、安全的持续交付体系。`,
14
+ triggers: [
15
+ 'CI/CD',
16
+ 'cicd',
17
+ '流水线',
18
+ 'pipeline',
19
+ '持续集成',
20
+ 'continuous integration',
21
+ '持续部署',
22
+ 'continuous deployment',
23
+ '自动化部署',
24
+ 'automated deployment',
25
+ 'GitHub Actions',
26
+ '构建优化',
27
+ '@ethan cicd',
28
+ '@ethan ci',
29
+ ],
30
+ steps: [
31
+ {
32
+ title: '1. 流水线阶段设计',
33
+ content: `**标准 CI/CD 流水线结构**
34
+
35
+ \`\`\`
36
+ Push/PR → [CI 阶段] → [镜像构建] → [部署到 Staging] → [部署到 Production]
37
+
38
+ CI 阶段(每次 Push/PR 触发):
39
+ ├── 代码检查: Lint + Type Check
40
+ ├── 单元测试: Unit Tests + Coverage
41
+ ├── 安全扫描: SAST + Dependency Audit
42
+ └── 构建验证: Build Success Check
43
+
44
+ 镜像构建(CI 通过后):
45
+ ├── Docker Build(多平台)
46
+ ├── 镜像安全扫描(Trivy)
47
+ └── 推送到 Registry(打 tag)
48
+
49
+ 部署流程:
50
+ ├── Staging(自动,合并到 main 后)
51
+ │ ├── 集成测试
52
+ │ └── E2E 测试(冒烟)
53
+ └── Production(需审批 or 手动触发)
54
+ ├── 部署策略(蓝绿/金丝雀)
55
+ └── 部署后验证(健康检查)
56
+ \`\`\`
57
+
58
+ **快速反馈原则**
59
+ - CI 总时长目标:< 10 分钟(开发者等待阈值)
60
+ - 测试并行化:单元测试 → 集成测试 → E2E(分层执行)
61
+ - Fail Fast:代码格式错误最先检查,最快发现`,
62
+ },
63
+ {
64
+ title: '2. GitHub Actions 流水线配置',
65
+ content: `**完整 CI 工作流示例**
66
+ \`\`\`yaml
67
+ # .github/workflows/ci.yml
68
+ name: CI
69
+
70
+ on:
71
+ push:
72
+ branches: [main, develop]
73
+ pull_request:
74
+ branches: [main]
75
+
76
+ env:
77
+ NODE_VERSION: '20'
78
+ REGISTRY: ghcr.io
79
+ IMAGE_NAME: \${{ github.repository }}
80
+
81
+ jobs:
82
+ # ─── 代码质量检查 ───────────────────────────────
83
+ lint:
84
+ name: Lint & Type Check
85
+ runs-on: ubuntu-latest
86
+ steps:
87
+ - uses: actions/checkout@v4
88
+ - uses: actions/setup-node@v4
89
+ with:
90
+ node-version: \${{ env.NODE_VERSION }}
91
+ cache: 'npm'
92
+ - run: npm ci
93
+ - run: npm run lint
94
+ - run: npm run typecheck
95
+
96
+ # ─── 测试 ────────────────────────────────────────
97
+ test:
98
+ name: Unit Tests
99
+ runs-on: ubuntu-latest
100
+ steps:
101
+ - uses: actions/checkout@v4
102
+ - uses: actions/setup-node@v4
103
+ with:
104
+ node-version: \${{ env.NODE_VERSION }}
105
+ cache: 'npm'
106
+ - run: npm ci
107
+ - run: npm run test -- --coverage
108
+ - name: Upload coverage to Codecov
109
+ uses: codecov/codecov-action@v4
110
+ with:
111
+ token: \${{ secrets.CODECOV_TOKEN }}
112
+
113
+ # ─── 安全扫描 ───────────────────────────────────
114
+ security:
115
+ name: Security Audit
116
+ runs-on: ubuntu-latest
117
+ steps:
118
+ - uses: actions/checkout@v4
119
+ - run: npm audit --audit-level=high
120
+ - uses: github/codeql-action/init@v3
121
+ with:
122
+ languages: javascript
123
+ - uses: github/codeql-action/analyze@v3
124
+
125
+ # ─── 构建镜像 ───────────────────────────────────
126
+ build:
127
+ name: Build & Push Image
128
+ needs: [lint, test, security]
129
+ runs-on: ubuntu-latest
130
+ if: github.ref == 'refs/heads/main'
131
+ permissions:
132
+ contents: read
133
+ packages: write
134
+ outputs:
135
+ image-tag: \${{ steps.meta.outputs.tags }}
136
+ steps:
137
+ - uses: actions/checkout@v4
138
+ - uses: docker/setup-buildx-action@v3
139
+ - uses: docker/login-action@v3
140
+ with:
141
+ registry: \${{ env.REGISTRY }}
142
+ username: \${{ github.actor }}
143
+ password: \${{ secrets.GITHUB_TOKEN }}
144
+ - uses: docker/metadata-action@v5
145
+ id: meta
146
+ with:
147
+ images: \${{ env.REGISTRY }}/\${{ env.IMAGE_NAME }}
148
+ tags: |
149
+ type=sha,prefix={{branch}}-
150
+ type=semver,pattern={{version}}
151
+ - uses: docker/build-push-action@v5
152
+ with:
153
+ push: true
154
+ tags: \${{ steps.meta.outputs.tags }}
155
+ cache-from: type=gha
156
+ cache-to: type=gha,mode=max
157
+ \`\`\``,
158
+ },
159
+ {
160
+ title: '3. 构建速度优化',
161
+ content: `**缓存策略**
162
+ \`\`\`yaml
163
+ # npm/yarn 依赖缓存
164
+ - uses: actions/cache@v4
165
+ with:
166
+ path: ~/.npm
167
+ key: \${{ runner.os }}-node-\${{ hashFiles('**/package-lock.json') }}
168
+ restore-keys: |
169
+ \${{ runner.os }}-node-
170
+
171
+ # Docker layer 缓存(使用 GitHub Actions Cache)
172
+ - uses: docker/build-push-action@v5
173
+ with:
174
+ cache-from: type=gha
175
+ cache-to: type=gha,mode=max
176
+ \`\`\`
177
+
178
+ **并行执行策略**
179
+ \`\`\`yaml
180
+ # 使用 matrix 并行运行测试
181
+ jobs:
182
+ test:
183
+ strategy:
184
+ matrix:
185
+ shard: [1, 2, 3, 4] # 4个并行 runner
186
+ steps:
187
+ - run: npm test -- --shard=\${{ matrix.shard }}/4
188
+ \`\`\`
189
+
190
+ **跳过不必要的 CI**
191
+ \`\`\`yaml
192
+ # 路径过滤:文档变更不触发完整 CI
193
+ on:
194
+ push:
195
+ paths-ignore:
196
+ - 'docs/**'
197
+ - '*.md'
198
+ - '.github/ISSUE_TEMPLATE/**'
199
+
200
+ # 或者使用 paths 只触发相关路径
201
+ on:
202
+ push:
203
+ paths:
204
+ - 'src/**'
205
+ - 'tests/**'
206
+ - 'package*.json'
207
+ \`\`\`
208
+
209
+ **Self-hosted Runner(节省 CI 费用)**
210
+ \`\`\`
211
+ 适用场景: 大型项目、私有依赖、特殊硬件需求
212
+ 注意事项:
213
+ - 安全隔离(不要在 public repo 使用 self-hosted runner)
214
+ - 定期更新 runner 软件
215
+ - 隔离不同项目的 runner(避免环境污染)
216
+ \`\`\``,
217
+ },
218
+ {
219
+ title: '4. 部署策略与门控',
220
+ content: `**三种主要部署策略**
221
+
222
+ **蓝绿部署(Blue-Green)**
223
+ \`\`\`
224
+ 适用: 需要零停机、可快速回滚的场景
225
+ 成本: 双倍资源(同时运行两套环境)
226
+
227
+ Blue(当前生产): v1.0 → 接收所有流量
228
+ Green(新版本): v1.1 → 部署验证中
229
+ 切换: 负载均衡器流量从 Blue → Green(瞬间完成)
230
+ 回滚: 流量切回 Blue(秒级)
231
+ \`\`\`
232
+
233
+ **金丝雀部署(Canary Release)**
234
+ \`\`\`
235
+ 适用: 高风险变更、需要渐进式验证
236
+ 流程:
237
+ 1%流量 → 新版本(观察5min)
238
+ → 10%(观察15min)
239
+ → 50%(观察30min)
240
+ → 100%(全量)
241
+
242
+ Kubernetes 实现:
243
+ kubectl scale deployment app-v2 --replicas=1 # 1/10 = 10%
244
+ kubectl scale deployment app-v1 --replicas=9
245
+ \`\`\`
246
+
247
+ **部署门控(Deployment Gates)配置**
248
+ \`\`\`yaml
249
+ # GitHub Environments 配置审批
250
+ deploy-production:
251
+ environment:
252
+ name: production
253
+ url: https://app.example.com
254
+ # 需要人工审批
255
+ steps:
256
+ - name: Request approval
257
+ uses: trstringer/manual-approval@v1
258
+ with:
259
+ approvers: team-lead,cto
260
+ minimum-approvals: 1
261
+
262
+ # 自动门控:基于健康检查
263
+ deploy-production:
264
+ steps:
265
+ - name: Deploy
266
+ run: kubectl apply -f k8s/
267
+ - name: Wait for rollout
268
+ run: kubectl rollout status deployment/app --timeout=5m
269
+ - name: Smoke test
270
+ run: |
271
+ sleep 10
272
+ curl -f https://api.example.com/health || exit 1
273
+ \`\`\``,
274
+ },
275
+ {
276
+ title: '5. 回滚策略与监控告警',
277
+ content: `**自动回滚触发条件**
278
+ \`\`\`yaml
279
+ # 部署后自动验证,失败则回滚
280
+ steps:
281
+ - name: Deploy to production
282
+ id: deploy
283
+ run: kubectl set image deployment/app app=\${{ env.NEW_IMAGE }}
284
+
285
+ - name: Monitor deployment health
286
+ run: |
287
+ # 等待10分钟,监控错误率
288
+ for i in {1..20}; do
289
+ ERROR_RATE=$(curl -s https://metrics.example.com/api/error-rate)
290
+ if (( $(echo "$ERROR_RATE > 5" | bc -l) )); then
291
+ echo "Error rate $ERROR_RATE% exceeds threshold, rolling back!"
292
+ kubectl rollout undo deployment/app
293
+ exit 1
294
+ fi
295
+ sleep 30
296
+ done
297
+
298
+ - name: Rollback on failure
299
+ if: failure() && steps.deploy.outcome == 'success'
300
+ run: kubectl rollout undo deployment/app
301
+ \`\`\`
302
+
303
+ **Kubernetes 滚动更新配置**
304
+ \`\`\`yaml
305
+ # deployment.yaml
306
+ spec:
307
+ strategy:
308
+ type: RollingUpdate
309
+ rollingUpdate:
310
+ maxSurge: 1 # 最多多启动1个 Pod
311
+ maxUnavailable: 0 # 始终保持满负载(零停机)
312
+ minReadySeconds: 30 # Pod 就绪后等待30s再继续
313
+ \`\`\`
314
+
315
+ **部署通知**
316
+ \`\`\`yaml
317
+ # 部署成功/失败通知到 Slack
318
+ - name: Notify deployment status
319
+ uses: slackapi/slack-github-action@v1
320
+ with:
321
+ channel-id: 'deployments'
322
+ slack-message: |
323
+ \${{ job.status == 'success' && '✅' || '❌' }} Deployment to Production
324
+ Version: \${{ github.sha }}
325
+ Actor: \${{ github.actor }}
326
+ Status: \${{ job.status }}
327
+ env:
328
+ SLACK_BOT_TOKEN: \${{ secrets.SLACK_BOT_TOKEN }}
329
+ \`\`\`
330
+
331
+ **关键 CI/CD 指标**
332
+
333
+ | 指标 | 目标 | 说明 |
334
+ |------|------|------|
335
+ | Lead Time | < 1天 | 代码到生产的时间 |
336
+ | Deploy Frequency | 每日1次+ | 部署频率 |
337
+ | MTTR | < 1小时 | 故障恢复时间 |
338
+ | Change Failure Rate | < 15% | 部署导致故障比例 |`,
339
+ },
340
+ ],
341
+ outputFormat: 'Markdown CI/CD 方案文档,含流水线阶段图、GitHub Actions YAML 配置、部署策略对比和回滚方案',
342
+ examples: [
343
+ {
344
+ input: '帮我设计一个 Node.js 项目的 GitHub Actions CI/CD 流水线',
345
+ output: `## CI/CD 流水线方案
346
+
347
+ **流程**: PR → CI(lint + test + security)→ 合并 main → 构建镜像 → 部署 Staging → 人工审批 → 部署 Production
348
+
349
+ **关键配置**:
350
+ - 使用 npm cache + Docker layer cache,目标 CI 时间 < 8 分钟
351
+ - Production 部署需 team-lead 审批(GitHub Environment protection rules)
352
+ - 部署后自动运行健康检查,失败自动 kubectl rollout undo
353
+ - Slack 通知部署结果`,
354
+ },
355
+ ],
356
+ notes: [
357
+ '流水线应该是可靠的,不稳定的 CI 比没有 CI 更糟糕(影响信任度)',
358
+ '保护 main 分支,禁止直接推送,所有变更必须经过 PR + CI 验证',
359
+ '密钥统一用 GitHub Secrets / Vault 管理,严禁硬编码在配置文件中',
360
+ '定期检查并更新 CI Actions 版本,避免使用废弃的 Action 版本',
361
+ ],
362
+ nextSkill: 'performance',
363
+ };
364
+ //# sourceMappingURL=20-cicd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"20-cicd.js","sourceRoot":"","sources":["../../src/skills/20-cicd.ts"],"names":[],"mappings":";;;AAEa,QAAA,SAAS,GAAoB;IACxC,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,WAAW;IACjB,MAAM,EAAE,MAAM;IACd,KAAK,EAAE,EAAE;IACT,QAAQ,EAAE,KAAK;IACf,WAAW,EAAE,0CAA0C;IACvD,aAAa,EAAE,iHAAiH;IAChI,iBAAiB,EAAE;gDAC2B;IAC9C,QAAQ,EAAE;QACR,OAAO;QACP,MAAM;QACN,KAAK;QACL,UAAU;QACV,MAAM;QACN,wBAAwB;QACxB,MAAM;QACN,uBAAuB;QACvB,OAAO;QACP,sBAAsB;QACtB,gBAAgB;QAChB,MAAM;QACN,aAAa;QACb,WAAW;KACZ;IACD,KAAK,EAAE;QACL;YACE,KAAK,EAAE,YAAY;YACnB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BA4Ba;SACvB;QACD;YACE,KAAK,EAAE,yBAAyB;YAChC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4FR;SACF;QACD;YACE,KAAK,EAAE,WAAW;YAClB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAuDR;SACF;QACD;YACE,KAAK,EAAE,YAAY;YACnB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqDR;SACF;QACD;YACE,KAAK,EAAE,cAAc;YACrB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CA6D4B;SACtC;KACF;IACD,YAAY,EACV,gEAAgE;IAClE,QAAQ,EAAE;QACR;YACE,KAAK,EAAE,6CAA6C;YACpD,MAAM,EAAE;;;;;;;;eAQC;SACV;KACF;IACD,KAAK,EAAE;QACL,qCAAqC;QACrC,uCAAuC;QACvC,6CAA6C;QAC7C,yCAAyC;KAC1C;IACD,SAAS,EAAE,aAAa;CACzB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { SkillDefinition } from './types';
2
+ export declare const performanceSkill: SkillDefinition;
3
+ //# sourceMappingURL=21-performance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"21-performance.d.ts","sourceRoot":"","sources":["../../src/skills/21-performance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,eAAO,MAAM,gBAAgB,EAAE,eAsI9B,CAAC"}
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.performanceSkill = void 0;
4
+ exports.performanceSkill = {
5
+ id: 'performance',
6
+ name: '性能优化',
7
+ nameEn: 'performance',
8
+ order: 21,
9
+ category: '质量侧',
10
+ description: '系统化分析和优化前后端性能瓶颈,涵盖分析工具使用、优化策略和量化指标',
11
+ descriptionEn: 'Systematically analyze and optimize frontend/backend performance bottlenecks with profiling tools and metrics',
12
+ detailDescription: `从性能指标定义、瓶颈定位到针对性优化,覆盖前端(Core Web Vitals)、后端(数据库、缓存)三个层次,建立可量化的性能优化体系。`,
13
+ triggers: [
14
+ '性能优化',
15
+ 'performance',
16
+ '页面慢',
17
+ '接口慢',
18
+ '性能分析',
19
+ 'profiling',
20
+ 'Core Web Vitals',
21
+ '@ethan 性能',
22
+ '/性能优化',
23
+ ],
24
+ steps: [
25
+ {
26
+ title: '1. 建立性能基线与目标',
27
+ content: `优化前先量化,避免盲目优化。
28
+
29
+ **前端核心指标(Core Web Vitals)**
30
+ | 指标 | 含义 | 优秀 | 需改进 | 差 |
31
+ |------|------|------|--------|-----|
32
+ | LCP | 最大内容绘制 | ≤ 2.5s | ≤ 4s | > 4s |
33
+ | INP | 交互响应延迟 | ≤ 200ms | ≤ 500ms | > 500ms |
34
+ | CLS | 累积布局偏移 | ≤ 0.1 | ≤ 0.25 | > 0.25 |
35
+ | TTFB | 首字节时间 | ≤ 800ms | ≤ 1.8s | > 1.8s |
36
+
37
+ **采集工具**
38
+ \`\`\`bash
39
+ npm install -g @lhci/cli
40
+ lhci autorun --collect.url=https://yoursite.com
41
+
42
+ npx autocannon -c 100 -d 30 http://localhost:3000/api/users
43
+ \`\`\``,
44
+ },
45
+ {
46
+ title: '2. 前端性能优化',
47
+ content: `**资源加载优化**
48
+ \`\`\`html
49
+ <link rel="preload" href="/fonts/main.woff2" as="font" crossorigin>
50
+ <link rel="preconnect" href="https://api.example.com">
51
+ <img src="hero.jpg" loading="eager" fetchpriority="high" />
52
+ <img src="below-fold.jpg" loading="lazy" />
53
+ \`\`\`
54
+
55
+ **代码拆分(React)**
56
+ \`\`\`typescript
57
+ const UserProfile = lazy(() => import('./pages/UserProfile'));
58
+
59
+ // 虚拟列表(大数据量)
60
+ import { FixedSizeList } from 'react-window';
61
+ <FixedSizeList height={600} itemCount={10000} itemSize={50}>
62
+ {({ index, style }) => <div style={style}>Row {index}</div>}
63
+ </FixedSizeList>
64
+ \`\`\`
65
+
66
+ **打包体积优化**
67
+ \`\`\`bash
68
+ npx vite-bundle-visualizer
69
+ # Tree-shaking: 按需引入
70
+ import { debounce } from 'lodash-es'; // ✅ 非 import _ from 'lodash'
71
+ \`\`\``,
72
+ },
73
+ {
74
+ title: '3. 后端与数据库性能优化',
75
+ content: `**数据库查询优化**
76
+ \`\`\`sql
77
+ EXPLAIN ANALYZE SELECT u.*, COUNT(o.id)
78
+ FROM users u LEFT JOIN orders o ON u.id = o.user_id
79
+ WHERE u.status = 'active' GROUP BY u.id;
80
+
81
+ -- 复合索引
82
+ CREATE INDEX idx_user_status_created ON users(status, created_at);
83
+ \`\`\`
84
+
85
+ **缓存策略(Redis)**
86
+ \`\`\`typescript
87
+ async function getUserProfile(userId: string) {
88
+ const cacheKey = \`user:profile:\${userId}\`;
89
+ const cached = await redis.get(cacheKey);
90
+ if (cached) return JSON.parse(cached);
91
+ const user = await db.users.findUnique({ where: { id: userId } });
92
+ const ttl = 300 + Math.floor(Math.random() * 60); // 随机TTL防雪崩
93
+ await redis.setex(cacheKey, ttl, JSON.stringify(user));
94
+ return user;
95
+ }
96
+ \`\`\`
97
+
98
+ **并行化异步操作**
99
+ \`\`\`typescript
100
+ // ✅ 并行(快)
101
+ const [user, orders] = await Promise.all([getUser(id), getOrders(id)]);
102
+ \`\`\``,
103
+ },
104
+ {
105
+ title: '4. 性能优化 Checklist 与持续监控',
106
+ content: `**优化优先级矩阵**
107
+ | 优化项 | 影响 | 成本 | 优先级 |
108
+ |--------|------|------|--------|
109
+ | 图片压缩/WebP | 高 | 低 | 🔴 立即 |
110
+ | 关键资源预加载 | 高 | 低 | 🔴 立即 |
111
+ | 数据库慢查询修复 | 高 | 中 | 🔴 立即 |
112
+ | 代码拆分/懒加载 | 高 | 中 | 🟡 近期 |
113
+ | Redis 缓存层 | 高 | 高 | 🟡 规划 |
114
+
115
+ **Lighthouse CI 集成**
116
+ \`\`\`yaml
117
+ - name: Lighthouse CI
118
+ uses: treosh/lighthouse-ci-action@v10
119
+ with:
120
+ urls: https://yoursite.com
121
+ uploadArtifacts: true
122
+ \`\`\`
123
+
124
+ **性能优化报告模板**
125
+ \`\`\`
126
+ 优化前:LCP 4.8s | FCP 3.2s | P99 API 1200ms
127
+ 已实施:图片WebP → LCP -1.8s;加索引 → P99 -600ms
128
+ 优化后:LCP 2.3s ✅ | FCP 1.4s ✅ | P99 380ms ✅
129
+ \`\`\``,
130
+ },
131
+ ],
132
+ outputFormat: 'Markdown 性能分析报告,含当前指标基线、瓶颈列表、优化方案和预期收益',
133
+ notes: [
134
+ '先测量再优化,不要猜测瓶颈,用数据说话',
135
+ 'Core Web Vitals 直接影响 Google SEO 排名',
136
+ '缓存是最有效的优化,但要仔细设计失效策略',
137
+ ],
138
+ };
139
+ //# sourceMappingURL=21-performance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"21-performance.js","sourceRoot":"","sources":["../../src/skills/21-performance.ts"],"names":[],"mappings":";;;AAEa,QAAA,gBAAgB,GAAoB;IAC/C,EAAE,EAAE,aAAa;IACjB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,aAAa;IACrB,KAAK,EAAE,EAAE;IACT,QAAQ,EAAE,KAAK;IACf,WAAW,EAAE,oCAAoC;IACjD,aAAa,EAAE,+GAA+G;IAC9H,iBAAiB,EAAE,uEAAuE;IAC1F,QAAQ,EAAE;QACR,MAAM;QACN,aAAa;QACb,KAAK;QACL,KAAK;QACL,MAAM;QACN,WAAW;QACX,iBAAiB;QACjB,WAAW;QACX,OAAO;KACR;IACD,KAAK,EAAE;QACL;YACE,KAAK,EAAE,cAAc;YACrB,OAAO,EAAE;;;;;;;;;;;;;;;;OAgBR;SACF;QACD;YACE,KAAK,EAAE,WAAW;YAClB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;OAwBR;SACF;QACD;YACE,KAAK,EAAE,eAAe;YACtB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BR;SACF;QACD;YACE,KAAK,EAAE,yBAAyB;YAChC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;OAuBR;SACF;KACF;IACD,YAAY,EAAE,wCAAwC;IACtD,KAAK,EAAE;QACL,qBAAqB;QACrB,oCAAoC;QACpC,sBAAsB;KACvB;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { SkillDefinition } from './types';
2
+ export declare const refactoringSkill: SkillDefinition;
3
+ //# sourceMappingURL=22-refactoring.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"22-refactoring.d.ts","sourceRoot":"","sources":["../../src/skills/22-refactoring.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,eAAO,MAAM,gBAAgB,EAAE,eAsO9B,CAAC"}