tsheep-skills 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.
package/NPM_PUBLISH.md ADDED
@@ -0,0 +1,174 @@
1
+ # NPM 发布指南
2
+
3
+ ## 前提条件
4
+
5
+ 1. 拥有 npm 账号(在 https://www.npmjs.com/ 注册)
6
+ 2. **必须启用双因素认证(2FA)** - npm 发布包时的强制要求
7
+ 3. 本地已登录 npm
8
+
9
+ ### 启用 2FA(必须步骤)
10
+
11
+ npm 要求发布包时必须启用 2FA 或使用具有 bypass 2fa 权限的 granular access token。这是安全策略,无法绕过。
12
+
13
+ #### 方法 1:启用 2FA(推荐)
14
+
15
+ 1. 登录 https://www.npmjs.com/
16
+ 2. 点击右上角头像 → **Account Settings**
17
+ 3. 在左侧菜单找到 **Two-Factor Authentication** 或 **Security**
18
+ 4. 点击 **Enable 2FA** 或 **Enable Two-Factor Authentication**
19
+ 5. 选择认证方式:
20
+ - **Authenticator App**(推荐):使用 Google Authenticator、Authy 等应用
21
+ - **SMS**:使用手机短信验证
22
+ 6. 按照提示完成设置
23
+ 7. 保存恢复码(重要!)
24
+
25
+ 设置完成后,重新登录 npm:
26
+ ```bash
27
+ npm login
28
+ # 输入用户名、密码和 2FA 验证码
29
+ ```
30
+
31
+ #### 方法 2:使用 Granular Access Token(适合 CI/CD)
32
+
33
+ 如果不想启用 2FA,可以使用 Granular Access Token:
34
+
35
+ 1. 登录 https://www.npmjs.com/
36
+ 2. 点击右上角头像 → **Access Tokens**
37
+ 3. 点击 **Generate New Token** → **Granular Access Token**
38
+ 4. 配置 token:
39
+ - **Token name**: 例如 "tsheep-skills-publish"
40
+ - **Expiration**: 选择过期时间
41
+ - **Permissions**: 选择 **Publish packages**
42
+ - **Packages**: 选择要发布的包或所有包
43
+ 5. 点击 **Generate Token**
44
+ 6. **重要**:复制 token(只显示一次)
45
+
46
+ 使用 token 登录:
47
+ ```bash
48
+ npm login --auth-type=legacy
49
+ # 输入用户名、密码和 token
50
+ ```
51
+
52
+ 或者设置环境变量(适合 CI/CD):
53
+ ```bash
54
+ export NPM_TOKEN=your_token_here
55
+ npm config set //registry.npmjs.org/:_authToken $NPM_TOKEN
56
+ ```
57
+
58
+ ### 验证登录状态
59
+
60
+ ```bash
61
+ npm whoami
62
+ # 应该显示你的 npm 用户名
63
+ ```
64
+
65
+ ## 发布步骤
66
+
67
+ ### 1. 确保代码已提交
68
+
69
+ ```bash
70
+ git status
71
+ git add .
72
+ git commit -m "Prepare for npm publish"
73
+ git push
74
+ ```
75
+
76
+ ### 2. 发布到 npm
77
+
78
+ ```bash
79
+ cd /path/to/tsheep-skills
80
+ npm publish
81
+ ```
82
+
83
+ 如果包名已被占用,可以使用 scoped package:
84
+
85
+ ```bash
86
+ # 修改 package.json 中的 name 为 @luo29/tsheep-skills
87
+ npm publish --access public
88
+ ```
89
+
90
+ ### 3. 验证发布
91
+
92
+ 发布成功后,用户可以通过以下方式安装:
93
+
94
+ ```bash
95
+ # 如果使用普通包名
96
+ npx tsheep-skills add ab-experiment-cleanup
97
+
98
+ # 如果使用 scoped 包名
99
+ npx @luo29/tsheep-skills add ab-experiment-cleanup
100
+ ```
101
+
102
+ ## 更新版本
103
+
104
+ 当需要发布新版本时:
105
+
106
+ ```bash
107
+ # 更新补丁版本 (1.0.0 -> 1.0.1)
108
+ npm version patch
109
+
110
+ # 更新次版本 (1.0.0 -> 1.1.0)
111
+ npm version minor
112
+
113
+ # 更新主版本 (1.0.0 -> 2.0.0)
114
+ npm version major
115
+
116
+ # 推送标签
117
+ git push --tags
118
+
119
+ # 发布新版本
120
+ npm publish
121
+ ```
122
+
123
+ ## 测试本地包
124
+
125
+ 在发布前,可以先本地测试:
126
+
127
+ ```bash
128
+ # 在项目目录下
129
+ npm link
130
+
131
+ # 在其他目录测试
132
+ npx tsheep-skills add ab-experiment-cleanup
133
+ ```
134
+
135
+ ## 包信息
136
+
137
+ - **包名**: tsheep-skills (或 @luo29/tsheep-skills)
138
+ - **版本**: 1.0.0
139
+ - **仓库**: https://github.com/luo29/tsheep-skills
140
+ - **主页**: https://github.com/luo29/tsheep-skills#readme
141
+
142
+ ## 常见错误及解决方案
143
+
144
+ ### 错误:403 Forbidden - Two-factor authentication required
145
+
146
+ **原因**:npm 要求发布包时必须启用 2FA 或使用 granular access token。
147
+
148
+ **解决方案**:
149
+ 1. 按照上面的步骤启用 2FA
150
+ 2. 或创建并使用 Granular Access Token
151
+ 3. 重新登录:`npm login`
152
+
153
+ ### 错误:包名已被占用
154
+
155
+ **解决方案**:
156
+ 1. 使用 scoped package:修改 `package.json` 中的 `name` 为 `@your-username/tsheep-skills`
157
+ 2. 发布时添加 `--access public`:`npm publish --access public`
158
+
159
+ ### 错误:package.json 格式问题
160
+
161
+ **解决方案**:
162
+ ```bash
163
+ npm pkg fix
164
+ # 这会自动修复 package.json 中的格式问题
165
+ ```
166
+
167
+ ## 注意事项
168
+
169
+ 1. **必须启用 2FA**:npm 发布包时的强制要求
170
+ 2. 确保 package.json 中的信息准确
171
+ 3. 检查 .npmignore 文件,避免发布不必要的文件
172
+ 4. 首次发布可能需要验证邮箱
173
+ 5. 如果包名被占用,考虑使用 scoped package (@username/package-name)
174
+ 6. 发布前建议运行 `npm pkg fix` 修复格式问题
package/README.md ADDED
@@ -0,0 +1,80 @@
1
+ # TSheep Skills
2
+
3
+ A collection of Claude Code agent skills for various development tasks.
4
+
5
+ ## Available Skills
6
+
7
+ ### ab-experiment-cleanup
8
+
9
+ 清理已推全的 A/B 实验代码,生成影响面分析和回测报告
10
+
11
+ **功能特性:**
12
+ - 自动识别和清理已推全的 A/B 实验代码
13
+ - 生成详细的影响面分析报告
14
+ - 提供回测验证支持
15
+ - 支持多种实验框架
16
+
17
+ [查看详细文档](./ab-experiment-cleanup/README.md)
18
+
19
+ ## Installation
20
+
21
+ ### Method 1: NPX Install (Recommended) 🚀
22
+
23
+ Install a specific skill using npx (no installation required):
24
+
25
+ ```bash
26
+ npx tsheep-skills add ab-experiment-cleanup
27
+ ```
28
+
29
+ List all available skills:
30
+
31
+ ```bash
32
+ npx tsheep-skills list
33
+ ```
34
+
35
+ ### Method 2: Claude Code CLI
36
+
37
+ Install using the Claude Code CLI:
38
+
39
+ ```bash
40
+ claude skill install https://github.com/luo29/tsheep-skills.git/ab-experiment-cleanup
41
+ ```
42
+
43
+ ### Method 3: Manual Install
44
+
45
+ 1. Clone this repository:
46
+ ```bash
47
+ git clone https://github.com/luo29/tsheep-skills.git
48
+ ```
49
+
50
+ 2. Create a symlink to the skill you want to use:
51
+ ```bash
52
+ ln -s /path/to/tsheep-skills/ab-experiment-cleanup ~/.claude/skills/ab-experiment-cleanup
53
+ ```
54
+
55
+ 3. Restart Claude Code or reload skills
56
+
57
+ ## Usage
58
+
59
+ Once installed, you can invoke the skill in Claude Code:
60
+
61
+ ```
62
+ /ab-experiment-cleanup
63
+ ```
64
+
65
+ Or simply describe what you want to do, and Claude will automatically use the appropriate skill.
66
+
67
+ ## Contributing
68
+
69
+ Feel free to contribute new skills or improvements to existing ones. Please follow the skill structure:
70
+
71
+ ```
72
+ skill-name/
73
+ ├── SKILL.md # The skill prompt/instructions
74
+ ├── README.md # User-facing documentation
75
+ └── EXAMPLE.md # (Optional) Usage examples
76
+ ```
77
+
78
+ ## License
79
+
80
+ MIT
@@ -0,0 +1,448 @@
1
+ # A/B 实验清理示例
2
+
3
+ ## 场景描述
4
+
5
+ 假设我们有一个电商网站,之前做了一个新结账流程的 A/B 实验。实验字段为 `enableNewCheckout`,现在实验已经推全,全量值为 `true`,需要清理旧的结账流程代码(`enableNewCheckout === false` 的分支)。
6
+
7
+ ## 使用命令
8
+
9
+ ```
10
+ /ab-experiment-cleanup
11
+
12
+ enableNewCheckout 实验字段对应的实验已经推全,enableNewCheckout 字段全量为 true,
13
+ 请下掉走到 enableNewCheckout 为 false 的业务逻辑代码,
14
+ 并产出影响面分析和业务回测报告
15
+ ```
16
+
17
+ ## 预期输出示例
18
+
19
+ ### 1. 信息确认
20
+
21
+ ```
22
+ 我理解您的需求:
23
+ - 实验字段:enableNewCheckout
24
+ - 全量值:true
25
+ - 需要删除:enableNewCheckout 为 false 的代码分支
26
+ - 需要保留:enableNewCheckout 为 true 的代码分支
27
+
28
+ 开始扫描代码库...
29
+ ```
30
+
31
+ ### 2. 代码扫描结果
32
+
33
+ ```
34
+ 找到 8 个文件包含 enableNewCheckout 引用:
35
+
36
+ 业务逻辑文件:
37
+ - src/pages/Checkout.tsx
38
+ - src/components/PaymentForm.tsx
39
+ - src/components/OrderSummary.tsx
40
+ - src/hooks/useCheckout.ts
41
+
42
+ 配置文件:
43
+ - src/config/experiments.ts
44
+ - src/config/featureFlags.json
45
+
46
+ 类型定义:
47
+ - src/types/experiments.ts
48
+
49
+ 测试文件:
50
+ - src/pages/__tests__/Checkout.test.tsx
51
+ ```
52
+
53
+ ### 3. 清理计划
54
+
55
+ ```markdown
56
+ ## 代码清理计划
57
+
58
+ ### src/pages/Checkout.tsx
59
+
60
+ **当前代码(第 45-89 行):**
61
+ ```typescript
62
+ const CheckoutPage = () => {
63
+ const { enableNewCheckout } = useExperiments();
64
+
65
+ if (enableNewCheckout) {
66
+ // 新结账流程
67
+ return (
68
+ <div className="new-checkout">
69
+ <CheckoutSteps />
70
+ <PaymentForm />
71
+ <OrderSummary />
72
+ </div>
73
+ );
74
+ } else {
75
+ // 旧结账流程 - 需要删除
76
+ return (
77
+ <div className="old-checkout">
78
+ <LegacyCheckoutForm />
79
+ </div>
80
+ );
81
+ }
82
+ };
83
+ ```
84
+
85
+ **清理后代码:**
86
+ ```typescript
87
+ const CheckoutPage = () => {
88
+ return (
89
+ <div className="new-checkout">
90
+ <CheckoutSteps />
91
+ <PaymentForm />
92
+ <OrderSummary />
93
+ </div>
94
+ );
95
+ };
96
+ ```
97
+
98
+ **操作:**
99
+ - ✂️ 删除第 46 行:`const { enableNewCheckout } = useExperiments();`
100
+ - ✂️ 删除第 48-58 行:整个 if-else 条件判断
101
+ - ✂️ 删除第 59-63 行:旧结账流程代码
102
+ - ✅ 保留第 50-56 行:新结账流程代码,提升到函数顶层
103
+
104
+ ---
105
+
106
+ ### src/config/experiments.ts
107
+
108
+ **当前代码(第 12-16 行):**
109
+ ```typescript
110
+ export const experiments = {
111
+ enableNewCheckout: {
112
+ name: 'New Checkout Flow',
113
+ defaultValue: true,
114
+ },
115
+ // ... 其他实验
116
+ };
117
+ ```
118
+
119
+ **操作:**
120
+ - ✂️ 删除第 12-15 行:整个 enableNewCheckout 配置
121
+
122
+ ---
123
+
124
+ ### src/types/experiments.ts
125
+
126
+ **当前代码(第 5-8 行):**
127
+ ```typescript
128
+ export interface ExperimentFlags {
129
+ enableNewCheckout: boolean;
130
+ // ... 其他实验
131
+ }
132
+ ```
133
+
134
+ **操作:**
135
+ - ✂️ 删除第 6 行:`enableNewCheckout: boolean;`
136
+
137
+ ---
138
+
139
+ (其他文件的清理计划类似...)
140
+ ```
141
+
142
+ ### 4. 影响面分析报告
143
+
144
+ ```markdown
145
+ # 影响面分析报告
146
+
147
+ ## 1. 受影响文件清单
148
+
149
+ | 文件类型 | 文件路径 | 修改类型 | 影响程度 |
150
+ |---------|---------|---------|---------|
151
+ | 业务逻辑 | src/pages/Checkout.tsx | 删除旧逻辑,简化条件 | 🔴 重大 |
152
+ | 业务逻辑 | src/components/PaymentForm.tsx | 删除条件判断 | 🟡 中等 |
153
+ | 业务逻辑 | src/components/OrderSummary.tsx | 删除条件判断 | 🟡 中等 |
154
+ | 业务逻辑 | src/hooks/useCheckout.ts | 简化逻辑 | 🟢 轻微 |
155
+ | 配置文件 | src/config/experiments.ts | 删除实验配置 | 🟢 轻微 |
156
+ | 配置文件 | src/config/featureFlags.json | 删除 flag | 🟢 轻微 |
157
+ | 类型定义 | src/types/experiments.ts | 删除类型定义 | 🟢 轻微 |
158
+ | 测试文件 | src/pages/__tests__/Checkout.test.tsx | 更新测试用例 | 🟡 中等 |
159
+
160
+ **统计:**
161
+ - 总文件数:8
162
+ - 重大影响:1
163
+ - 中等影响:3
164
+ - 轻微影响:4
165
+
166
+ ## 2. 功能模块影响
167
+
168
+ ### 结账流程(核心功能)
169
+ - **影响程度**:🔴 重大
170
+ - **涉及文件**:Checkout.tsx, PaymentForm.tsx, OrderSummary.tsx
171
+ - **变更说明**:删除旧结账流程,保留新流程
172
+ - **风险点**:这是核心业务流程,需要充分测试
173
+
174
+ ### 实验配置系统
175
+ - **影响程度**:🟢 轻微
176
+ - **涉及文件**:experiments.ts, featureFlags.json
177
+ - **变更说明**:清理实验配置
178
+ - **风险点**:无
179
+
180
+ ### 类型系统
181
+ - **影响程度**:🟢 轻微
182
+ - **涉及文件**:experiments.ts
183
+ - **变更说明**:删除不再使用的类型定义
184
+ - **风险点**:需要确保没有其他地方引用该类型
185
+
186
+ ## 3. 依赖关系分析
187
+
188
+ ```
189
+ enableNewCheckout (实验字段)
190
+ ├── src/pages/Checkout.tsx (主要使用)
191
+ │ └── 依赖 useExperiments hook
192
+ ├── src/components/PaymentForm.tsx
193
+ │ └── 依赖 useExperiments hook
194
+ ├── src/components/OrderSummary.tsx
195
+ │ └── 依赖 useExperiments hook
196
+ └── src/hooks/useCheckout.ts
197
+ └── 依赖 experiments config
198
+ ```
199
+
200
+ **关键发现:**
201
+ - ✅ 没有发现其他实验依赖 enableNewCheckout
202
+ - ✅ 删除后不会影响其他功能
203
+ - ⚠️ 需要确认 useExperiments hook 在删除后仍然正常工作
204
+
205
+ ## 4. 风险评估
206
+
207
+ ### 总体风险等级:🟡 中等
208
+
209
+ **风险因素:**
210
+ 1. **核心功能修改**:结账流程是核心业务,任何问题都会直接影响收入
211
+ 2. **代码覆盖面广**:涉及 8 个文件,需要仔细审查每个变更
212
+ 3. **测试依赖**:需要更新测试用例,确保测试覆盖
213
+
214
+ **降低风险的措施:**
215
+ 1. ✅ 充分的回测(见回测报告)
216
+ 2. ✅ 灰度发布策略
217
+ 3. ✅ 实时监控关键指标
218
+ 4. ✅ 准备快速回滚方案
219
+
220
+ ## 5. 建议的发布策略
221
+
222
+ 1. **阶段 1**:在测试环境完整回测(1-2 天)
223
+ 2. **阶段 2**:灰度 5% 用户,监控 24 小时
224
+ 3. **阶段 3**:灰度 25% 用户,监控 24 小时
225
+ 4. **阶段 4**:灰度 50% 用户,监控 24 小时
226
+ 5. **阶段 5**:全量发布
227
+
228
+ **监控指标:**
229
+ - 结账成功率
230
+ - 支付成功率
231
+ - 页面加载时间
232
+ - JavaScript 错误率
233
+ ```
234
+
235
+ ### 5. 回测报告
236
+
237
+ ```markdown
238
+ # 业务回测报告
239
+
240
+ ## 1. 回测检查清单
241
+
242
+ ### 功能模块:结账流程
243
+
244
+ #### 基础流程测试
245
+ - [ ] 新用户首次结账
246
+ - [ ] 老用户重复购买
247
+ - [ ] 购物车为空时的处理
248
+ - [ ] 购物车有多个商品
249
+ - [ ] 购物车有单个商品
250
+
251
+ #### 支付相关
252
+ - [ ] 信用卡支付
253
+ - [ ] 借记卡支付
254
+ - [ ] 第三方支付(支付宝、微信)
255
+ - [ ] 支付失败的错误处理
256
+ - [ ] 支付超时的处理
257
+
258
+ #### 优惠和折扣
259
+ - [ ] 应用优惠券
260
+ - [ ] 应用促销码
261
+ - [ ] 会员折扣
262
+ - [ ] 多重优惠叠加
263
+
264
+ #### 订单确认
265
+ - [ ] 订单摘要显示正确
266
+ - [ ] 价格计算准确
267
+ - [ ] 订单确认邮件发送
268
+ - [ ] 订单状态更新
269
+
270
+ #### 异常场景
271
+ - [ ] 网络中断时的处理
272
+ - [ ] 库存不足的提示
273
+ - [ ] 地址信息不完整
274
+ - [ ] 支付信息验证失败
275
+
276
+ ### 功能模块:实验配置系统
277
+
278
+ - [ ] 其他实验仍然正常工作
279
+ - [ ] useExperiments hook 正常返回
280
+ - [ ] 实验配置加载正常
281
+
282
+ ## 2. 自动化测试建议
283
+
284
+ ### 需要执行的现有测试
285
+ ```bash
286
+ # 运行所有结账相关的测试
287
+ npm test -- Checkout
288
+ npm test -- PaymentForm
289
+ npm test -- OrderSummary
290
+
291
+ # 运行集成测试
292
+ npm test -- e2e/checkout
293
+ ```
294
+
295
+ ### 需要新增的测试用例
296
+
297
+ **src/pages/__tests__/Checkout.test.tsx**
298
+ ```typescript
299
+ describe('Checkout - After experiment cleanup', () => {
300
+ it('should render new checkout flow without experiment flag', () => {
301
+ render(<CheckoutPage />);
302
+ expect(screen.getByTestId('new-checkout')).toBeInTheDocument();
303
+ expect(screen.queryByTestId('old-checkout')).not.toBeInTheDocument();
304
+ });
305
+
306
+ it('should not depend on useExperiments hook', () => {
307
+ // 确保不再依赖实验配置
308
+ const { container } = render(<CheckoutPage />);
309
+ expect(container).toMatchSnapshot();
310
+ });
311
+ });
312
+ ```
313
+
314
+ ### 需要更新的测试用例
315
+
316
+ **需要删除的测试:**
317
+ - 所有测试旧结账流程的用例
318
+ - 所有测试实验分支切换的用例
319
+
320
+ **需要更新的测试:**
321
+ - 将测试新结账流程的用例改为默认测试
322
+ - 移除 mock useExperiments 的代码
323
+
324
+ ## 3. 手动测试场景
325
+
326
+ ### 高优先级(必须测试)
327
+
328
+ 1. **完整结账流程**
329
+ - 从购物车到支付成功的完整流程
330
+ - 测试环境:Chrome, Safari, Firefox
331
+ - 测试设备:Desktop, Mobile
332
+
333
+ 2. **支付成功场景**
334
+ - 使用测试信用卡完成支付
335
+ - 验证订单创建成功
336
+ - 验证邮件发送
337
+
338
+ 3. **错误处理**
339
+ - 支付失败的提示
340
+ - 网络错误的处理
341
+ - 表单验证
342
+
343
+ ### 中优先级(建议测试)
344
+
345
+ 1. **不同用户状态**
346
+ - 未登录用户
347
+ - 已登录用户
348
+ - VIP 用户
349
+
350
+ 2. **不同商品类型**
351
+ - 实体商品
352
+ - 虚拟商品
353
+ - 预售商品
354
+
355
+ ### 低优先级(可选测试)
356
+
357
+ 1. **边界情况**
358
+ - 极大金额订单
359
+ - 极小金额订单
360
+ - 特殊字符处理
361
+
362
+ ## 4. 数据验证建议
363
+
364
+ ### 关键指标监控
365
+
366
+ | 指标 | 当前基线 | 预期范围 | 告警阈值 |
367
+ |-----|---------|---------|---------|
368
+ | 结账成功率 | 85% | 83-87% | < 80% |
369
+ | 支付成功率 | 92% | 90-94% | < 88% |
370
+ | 页面加载时间 | 1.2s | < 1.5s | > 2.0s |
371
+ | JavaScript 错误率 | 0.5% | < 1% | > 2% |
372
+ | 订单转化率 | 12% | 11-13% | < 10% |
373
+
374
+ ### 监控时间表
375
+
376
+ - **第 1 天**:每小时检查一次
377
+ - **第 2-3 天**:每 4 小时检查一次
378
+ - **第 4-7 天**:每天检查一次
379
+ - **第 2 周后**:恢复正常监控频率
380
+
381
+ ### 数据对比分析
382
+
383
+ 对比以下时间段的数据:
384
+ - 清理前 7 天 vs 清理后 7 天
385
+ - 同比去年同期
386
+ - 环比上周同期
387
+
388
+ ## 5. 回滚预案
389
+
390
+ ### 回滚触发条件
391
+
392
+ 满足以下任一条件立即回滚:
393
+ - 结账成功率下降超过 5%
394
+ - 支付成功率下降超过 3%
395
+ - JavaScript 错误率上升超过 1%
396
+ - 收到 3 个以上用户投诉
397
+
398
+ ### 回滚步骤
399
+
400
+ 1. **立即回滚代码**
401
+ ```bash
402
+ git revert <commit-hash>
403
+ git push origin main
404
+ ```
405
+
406
+ 2. **触发紧急发布**
407
+ - 跳过灰度,直接全量
408
+ - 通知相关团队
409
+
410
+ 3. **验证回滚效果**
411
+ - 检查关键指标是否恢复
412
+ - 执行冒烟测试
413
+
414
+ 4. **事后分析**
415
+ - 分析回滚原因
416
+ - 制定改进方案
417
+
418
+ ## 6. 后续行动项
419
+
420
+ ### 发布前
421
+ - [ ] 代码 Review(至少 2 人)
422
+ - [ ] 执行所有自动化测试
423
+ - [ ] 完成手动回测
424
+ - [ ] 准备监控 Dashboard
425
+ - [ ] 准备回滚脚本
426
+
427
+ ### 发布中
428
+ - [ ] 按灰度策略发布
429
+ - [ ] 实时监控关键指标
430
+ - [ ] 准备随时回滚
431
+
432
+ ### 发布后
433
+ - [ ] 持续监控 7 天
434
+ - [ ] 收集用户反馈
435
+ - [ ] 数据对比分析
436
+ - [ ] 总结经验教训
437
+ ```
438
+
439
+ ## 总结
440
+
441
+ 这个示例展示了 skill 的完整输出,包括:
442
+
443
+ 1. ✅ 详细的代码清理计划
444
+ 2. ✅ 全面的影响面分析
445
+ 3. ✅ 完整的回测报告
446
+ 4. ✅ 清晰的后续行动项
447
+
448
+ 使用这个 skill 可以大大提高 A/B 实验代码清理的效率和安全性。