ethan-skill 1.6.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 (87) hide show
  1. package/README.md +83 -24
  2. package/dist/cli/index.js +21 -21
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/loader/custom-pipeline-loader.d.ts +15 -0
  5. package/dist/loader/custom-pipeline-loader.d.ts.map +1 -0
  6. package/dist/loader/custom-pipeline-loader.js +131 -0
  7. package/dist/loader/custom-pipeline-loader.js.map +1 -0
  8. package/dist/skills/11-api-design.d.ts +3 -0
  9. package/dist/skills/11-api-design.d.ts.map +1 -0
  10. package/dist/skills/11-api-design.js +214 -0
  11. package/dist/skills/11-api-design.js.map +1 -0
  12. package/dist/skills/12-security-review.d.ts +3 -0
  13. package/dist/skills/12-security-review.d.ts.map +1 -0
  14. package/dist/skills/12-security-review.js +194 -0
  15. package/dist/skills/12-security-review.js.map +1 -0
  16. package/dist/skills/13-deployment.d.ts +3 -0
  17. package/dist/skills/13-deployment.d.ts.map +1 -0
  18. package/dist/skills/13-deployment.js +189 -0
  19. package/dist/skills/13-deployment.js.map +1 -0
  20. package/dist/skills/14-prd.d.ts +3 -0
  21. package/dist/skills/14-prd.d.ts.map +1 -0
  22. package/dist/skills/14-prd.js +214 -0
  23. package/dist/skills/14-prd.js.map +1 -0
  24. package/dist/skills/15-git-workflow.d.ts +3 -0
  25. package/dist/skills/15-git-workflow.d.ts.map +1 -0
  26. package/dist/skills/15-git-workflow.js +288 -0
  27. package/dist/skills/15-git-workflow.js.map +1 -0
  28. package/dist/skills/16-unit-testing.d.ts +3 -0
  29. package/dist/skills/16-unit-testing.d.ts.map +1 -0
  30. package/dist/skills/16-unit-testing.js +298 -0
  31. package/dist/skills/16-unit-testing.js.map +1 -0
  32. package/dist/skills/17-system-design.d.ts +3 -0
  33. package/dist/skills/17-system-design.d.ts.map +1 -0
  34. package/dist/skills/17-system-design.js +294 -0
  35. package/dist/skills/17-system-design.js.map +1 -0
  36. package/dist/skills/18-database-optimize.d.ts +3 -0
  37. package/dist/skills/18-database-optimize.d.ts.map +1 -0
  38. package/dist/skills/18-database-optimize.js +294 -0
  39. package/dist/skills/18-database-optimize.js.map +1 -0
  40. package/dist/skills/19-docker.d.ts +3 -0
  41. package/dist/skills/19-docker.d.ts.map +1 -0
  42. package/dist/skills/19-docker.js +360 -0
  43. package/dist/skills/19-docker.js.map +1 -0
  44. package/dist/skills/20-cicd.d.ts +3 -0
  45. package/dist/skills/20-cicd.d.ts.map +1 -0
  46. package/dist/skills/20-cicd.js +364 -0
  47. package/dist/skills/20-cicd.js.map +1 -0
  48. package/dist/skills/21-performance.d.ts +3 -0
  49. package/dist/skills/21-performance.d.ts.map +1 -0
  50. package/dist/skills/21-performance.js +139 -0
  51. package/dist/skills/21-performance.js.map +1 -0
  52. package/dist/skills/22-refactoring.d.ts +3 -0
  53. package/dist/skills/22-refactoring.d.ts.map +1 -0
  54. package/dist/skills/22-refactoring.js +235 -0
  55. package/dist/skills/22-refactoring.js.map +1 -0
  56. package/dist/skills/23-observability.d.ts +3 -0
  57. package/dist/skills/23-observability.d.ts.map +1 -0
  58. package/dist/skills/23-observability.js +266 -0
  59. package/dist/skills/23-observability.js.map +1 -0
  60. package/dist/skills/24-design-patterns.d.ts +3 -0
  61. package/dist/skills/24-design-patterns.d.ts.map +1 -0
  62. package/dist/skills/24-design-patterns.js +258 -0
  63. package/dist/skills/24-design-patterns.js.map +1 -0
  64. package/dist/skills/index.d.ts +14 -0
  65. package/dist/skills/index.d.ts.map +1 -1
  66. package/dist/skills/index.js +57 -1
  67. package/dist/skills/index.js.map +1 -1
  68. package/dist/skills/pipeline.d.ts +2 -1
  69. package/dist/skills/pipeline.d.ts.map +1 -1
  70. package/dist/skills/pipeline.js +41 -3
  71. package/dist/skills/pipeline.js.map +1 -1
  72. package/dist/skills/skills.test.js +3 -3
  73. package/dist/skills/skills.test.js.map +1 -1
  74. package/dist/templates/templates.test.js +2 -3
  75. package/dist/templates/templates.test.js.map +1 -1
  76. package/package.json +1 -1
  77. package/rules/claude-code/CLAUDE.md +3048 -3
  78. package/rules/cline/.clinerules +2838 -2
  79. package/rules/codebuddy/CODEBUDDY.md +2977 -2
  80. package/rules/continue/.continuerules +2838 -2
  81. package/rules/copilot/copilot-instructions.md +2935 -2
  82. package/rules/cursor/.cursorrules +3033 -2
  83. package/rules/cursor/smart-flow.mdc +3033 -2
  84. package/rules/jetbrains/smart-flow.md +2935 -2
  85. package/rules/lingma/smart-flow.md +2964 -3
  86. package/rules/windsurf/.windsurf/rules/smart-flow.md +2936 -3
  87. package/rules/zed/smart-flow.rules +2823 -1
@@ -0,0 +1,189 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deploymentSkill = void 0;
4
+ exports.deploymentSkill = {
5
+ id: 'deployment',
6
+ name: '部署上线',
7
+ nameEn: 'deployment',
8
+ order: 13,
9
+ description: '系统化执行部署上线流程,覆盖预检、发布、验证和回滚,保障变更安全落地',
10
+ descriptionEn: 'Systematic deployment checklist covering pre-flight, release, verification, and rollback procedures',
11
+ detailDescription: `按阶段执行部署上线流程,包括上线前预检(代码质量、配置核查、依赖验证)、
12
+ 发布执行(灰度/蓝绿/滚动策略)、上线后验证(健康检查、监控告警、业务核心链路验证)
13
+ 以及回滚方案,确保变更安全可控地落地。`,
14
+ triggers: [
15
+ '部署上线',
16
+ '上线',
17
+ '发布',
18
+ 'deploy',
19
+ '发版',
20
+ '部署',
21
+ '上线流程',
22
+ '发布流程',
23
+ '怎么上线',
24
+ '准备上线',
25
+ '@ethan 上线',
26
+ '@ethan deploy',
27
+ '/部署上线',
28
+ ],
29
+ steps: [
30
+ {
31
+ title: '1. 上线前预检(Pre-flight)',
32
+ content: `在发布代码前完成以下检查,任何一项 ❌ 不得上线:
33
+
34
+ **代码质量**
35
+ - [ ] 所有 CI 检查通过(单测、集成测试、Lint)
36
+ - [ ] Code Review 已完成,无 Blocker 问题
37
+ - [ ] 安全扫描无 Critical/High 级别漏洞(\`npm audit\`)
38
+ - [ ] 变更已在 Staging/预生产环境验证通过
39
+
40
+ **配置核查**
41
+ - [ ] 生产环境配置(数据库、Redis、MQ 地址)已更新
42
+ - [ ] 环境变量已在目标环境注入(不含硬编码的密钥)
43
+ - [ ] Feature Flag 配置正确(灰度开关状态)
44
+
45
+ **数据库变更**
46
+ - [ ] 数据库迁移脚本已备份原表结构
47
+ - [ ] 迁移脚本已在 Staging 执行并验证
48
+ - [ ] 大表 DDL 变更(加字段/加索引)在低峰期执行,评估锁表时间
49
+
50
+ **依赖与基础设施**
51
+ - [ ] 第三方服务(支付/短信/CDN)已确认可用
52
+ - [ ] 新增的 Redis Key / MQ Topic 已提前创建
53
+ - [ ] 容器镜像已构建并推送到镜像仓库
54
+
55
+ **通知**
56
+ - [ ] 上线时间已知会相关团队(QA / 前端 / 产品 / 运维)
57
+ - [ ] 回滚预案已准备(上个版本的镜像 Tag 或 SQL 回滚脚本)`,
58
+ },
59
+ {
60
+ title: '2. 选择发布策略',
61
+ content: `根据变更风险等级选择合适的发布策略:
62
+
63
+ **🟢 滚动发布(Rolling Update)**
64
+ - 场景:低风险常规迭代
65
+ - 方式:逐个 Pod/实例替换,始终保持一定数量可用
66
+ - Kubernetes:\`kubectl set image deployment/app app=image:v2\`
67
+ - 优点:无停机;缺点:同时存在新旧版本(需兼容)
68
+
69
+ **🟡 蓝绿部署(Blue/Green)**
70
+ - 场景:中风险版本,需要快速回滚能力
71
+ - 方式:并行运行两套环境,切换负载均衡流量
72
+ - 优点:回滚只需切流量(秒级);缺点:资源成本翻倍
73
+
74
+ **🟠 灰度发布(Canary Release)**
75
+ - 场景:高风险变更,需验证真实流量
76
+ - 方式:先放 5%-10% 流量到新版本,观察监控后逐步扩量
77
+ - 关键指标:错误率、P99 延迟、业务转化率
78
+ - Nginx 示例:\`split_clients "\${remote_addr}" \$upstream { 10% backend_v2; * backend_v1; }\`
79
+
80
+ **🔴 停机发布(Maintenance Window)**
81
+ - 场景:强破坏性变更(如数据库大规模迁移)
82
+ - 提前在状态页通知用户,维护窗口选在凌晨低峰期`,
83
+ },
84
+ {
85
+ title: '3. 执行发布',
86
+ content: `**自动化流水线(推荐)**
87
+ \`\`\`bash
88
+ # GitOps 方式:更新镜像 Tag 触发 CD
89
+ git tag v1.2.3 && git push origin v1.2.3
90
+
91
+ # 手动触发 GitHub Actions
92
+ gh workflow run deploy.yml --field environment=production --field version=v1.2.3
93
+ \`\`\`
94
+
95
+ **发布过程监控要点**
96
+ - 实时观察 Pod 滚动状态:\`kubectl rollout status deployment/app\`
97
+ - 监控健康检查端点(Liveness/Readiness Probe)
98
+ - 观察 APM 工具(Datadog/SkyWalking)中错误率和延迟变化
99
+ - 若部署过程中出现 CrashLoopBackOff,立即暂停并触发回滚
100
+
101
+ **数据库迁移执行顺序**
102
+ 1. 先执行 向后兼容的迁移(如加字段,设默认值)
103
+ 2. 发布新代码
104
+ 3. 确认新代码运行稳定后,再执行清理旧逻辑的迁移
105
+ (Expand-Contract 模式,避免新旧代码不兼容)`,
106
+ },
107
+ {
108
+ title: '4. 上线后验证',
109
+ content: `发布完成后,在 **15 分钟内**完成以下验证:
110
+
111
+ **基础健康检查**
112
+ - [ ] 所有实例健康检查端点 \`/health\` 返回 200
113
+ - [ ] Pod/实例数量与预期一致(未发生缩减)
114
+ - [ ] 无 OOMKilled 或高 CPU 异常
115
+
116
+ **监控告警**
117
+ - [ ] 错误率(5xx)在基线水平(< 0.1%)
118
+ - [ ] P99 响应时间未劣化(对比上线前)
119
+ - [ ] 关键业务指标(下单量、登录量)趋势正常
120
+
121
+ **核心链路冒烟测试**
122
+ - [ ] 用最高风险的 1-3 个核心功能人工验证
123
+ - 示例:登录 → 查看商品 → 加购 → 提交订单
124
+ - [ ] 检查日志无新增 ERROR 级别错误
125
+
126
+ **灰度扩量(Canary 场景)**
127
+ \`\`\`
128
+ 5% → 稳定 10min → 20% → 稳定 10min → 50% → 100%
129
+ \`\`\``,
130
+ },
131
+ {
132
+ title: '5. 回滚方案',
133
+ content: `**触发回滚的条件(满足任一立即回滚)**
134
+ - 错误率超过基线 3 倍以上
135
+ - P99 延迟超过告警阈值 2 倍
136
+ - 核心业务指标断崖式下跌
137
+ - 出现 Critical 级别报错
138
+
139
+ **回滚操作**
140
+ \`\`\`bash
141
+ # Kubernetes 快速回滚
142
+ kubectl rollout undo deployment/app
143
+ kubectl rollout undo deployment/app --to-revision=3 # 回滚到指定版本
144
+
145
+ # Docker Compose 回滚
146
+ docker-compose up -d --no-deps --scale app=2 # 拉起旧版本
147
+ \`\`\`
148
+
149
+ **数据库回滚**
150
+ - 向后兼容的迁移(加字段)通常不需要回滚
151
+ - 破坏性迁移回滚需执行预先准备的 SQL 脚本
152
+ - 数据删除操作必须在回滚脚本中用 INSERT 恢复(从备份)
153
+
154
+ **上线后记录**
155
+ - 记录上线时间、版本号、发布人
156
+ - 若出现问题,触发故障排查(\`ethan debug\`)和事后复盘(\`ethan oncall\`)`,
157
+ },
158
+ ],
159
+ outputFormat: 'Markdown 上线 Checklist + 执行记录,含预检清单、发布策略建议、验证结果和回滚记录',
160
+ examples: [
161
+ {
162
+ input: '我要把一个新的支付功能部署到生产环境',
163
+ output: `## 部署上线计划 — 支付功能 v2.1.0
164
+
165
+ ### 风险评估:🟠 高(涉及支付链路)
166
+ **推荐策略**:灰度发布(Canary),5% → 20% → 100%
167
+
168
+ ### 预检清单(必须全部 ✅)
169
+ - [ ] 支付接口单测覆盖率 > 80%
170
+ - [ ] Staging 环境已与支付网关联调通过
171
+ - [ ] 数据库迁移脚本已备份 orders 表
172
+ - [ ] 已知会支付运营和风控团队
173
+
174
+ ### 灰度时间窗口
175
+ 5% 灰度 → 观察30min → 扩量至100%
176
+
177
+ ### 核心验证
178
+ - 微信支付 / 支付宝 全流程下单`,
179
+ },
180
+ ],
181
+ notes: [
182
+ '生产环境首次部署必须有专人在线值守,完成后才能离开',
183
+ '数据库变更是最高风险项,大表 DDL 操作务必在低峰期执行',
184
+ '回滚方案必须提前验证可用,不能到了出问题才发现回滚脚本有 bug',
185
+ '蓝绿和灰度部署需要基础设施支持,提前确认 K8s/Nginx 配置',
186
+ ],
187
+ category: '执行侧',
188
+ };
189
+ //# sourceMappingURL=13-deployment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"13-deployment.js","sourceRoot":"","sources":["../../src/skills/13-deployment.ts"],"names":[],"mappings":";;;AAEa,QAAA,eAAe,GAAoB;IAC9C,EAAE,EAAE,YAAY;IAChB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,YAAY;IACpB,KAAK,EAAE,EAAE;IACT,WAAW,EAAE,oCAAoC;IACjD,aAAa,EAAE,qGAAqG;IACpH,iBAAiB,EAAE;;oBAED;IAClB,QAAQ,EAAE;QACR,MAAM;QACN,IAAI;QACJ,IAAI;QACJ,QAAQ;QACR,IAAI;QACJ,IAAI;QACJ,MAAM;QACN,MAAM;QACN,MAAM;QACN,MAAM;QACN,WAAW;QACX,eAAe;QACf,OAAO;KACR;IACD,KAAK,EAAE;QACL;YACE,KAAK,EAAE,sBAAsB;YAC7B,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;sCAyBuB;SACjC;QACD;YACE,KAAK,EAAE,WAAW;YAClB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;yBAqBU;SACpB;QACD;YACE,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;+BAmBgB;SAC1B;QACD;YACE,KAAK,EAAE,UAAU;YACjB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;OAoBR;SACF;QACD;YACE,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;uDAuBwC;SAClD;KACF;IACD,YAAY,EACV,qDAAqD;IACvD,QAAQ,EAAE;QACR;YACE,KAAK,EAAE,oBAAoB;YAC3B,MAAM,EAAE;;;;;;;;;;;;;;;mBAeK;SACd;KACF;IACD,KAAK,EAAE;QACL,2BAA2B;QAC3B,+BAA+B;QAC/B,kCAAkC;QAClC,mCAAmC;KACpC;IACD,QAAQ,EAAE,KAAK;CAChB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { SkillDefinition } from './types';
2
+ export declare const prdSkill: SkillDefinition;
3
+ //# sourceMappingURL=14-prd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"14-prd.d.ts","sourceRoot":"","sources":["../../src/skills/14-prd.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,eAAO,MAAM,QAAQ,EAAE,eAkNtB,CAAC"}
@@ -0,0 +1,214 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.prdSkill = void 0;
4
+ exports.prdSkill = {
5
+ id: 'prd',
6
+ name: 'PRD 编写',
7
+ nameEn: 'prd',
8
+ order: 14,
9
+ description: '从用户故事和业务目标出发,结构化生成产品需求文档(PRD),支撑研发高效落地',
10
+ descriptionEn: 'Generate structured Product Requirements Documents from user stories and business goals',
11
+ detailDescription: `基于用户故事、业务目标和竞品分析,输出完整的产品需求文档,
12
+ 包含背景说明、用户画像、功能详情(用户故事 + 验收标准)、非功能性需求、
13
+ UI/UX 说明和数据埋点方案,供研发团队直接使用。`,
14
+ triggers: [
15
+ 'PRD',
16
+ '产品需求',
17
+ '写 PRD',
18
+ '需求文档',
19
+ 'prd 编写',
20
+ '产品文档',
21
+ '写需求',
22
+ '功能需求',
23
+ '生成 PRD',
24
+ '@ethan PRD',
25
+ '@ethan 需求文档',
26
+ '/prd',
27
+ '/PRD',
28
+ ],
29
+ steps: [
30
+ {
31
+ title: '1. 背景与目标',
32
+ content: `明确以下关键信息(询问或推导):
33
+
34
+ **业务背景**
35
+ - 这个功能/产品要解决什么业务问题?
36
+ - 当前用户的痛点是什么?(现有方案的不足)
37
+ - 有哪些量化的数据支撑这个问题的存在?
38
+
39
+ **目标用户**
40
+ - 主要用户角色:[角色名称 + 典型特征描述]
41
+ - 次要用户角色:[如有]
42
+ - 用户当前的操作路径是什么(Before)?
43
+
44
+ **成功指标(OKR/KPI)**
45
+ - 核心业务指标:如 "注册转化率提升 15%"、"客服工单减少 30%"
46
+ - 次要指标:NPS、页面停留时长等
47
+ - 不追求的指标(避免过度设计):明确 out-of-scope
48
+
49
+ **优先级与时间**
50
+ - P0(必须有,MVP 核心)/ P1(重要但非必须)/ P2(锦上添花)
51
+ - 目标上线日期:[日期]
52
+ - 里程碑节点:[设计完成 / 研发完成 / 灰度 / 全量]`,
53
+ },
54
+ {
55
+ title: '2. 用户故事与功能范围',
56
+ content: `用标准用户故事格式描述每个功能点:
57
+
58
+ **用户故事格式**
59
+ > 作为 [用户角色],
60
+ > 我需要 [完成某事],
61
+ > 以便 [获得某种价值]。
62
+
63
+ **示例**
64
+ > 作为新注册用户,我需要通过邮箱验证激活账号,以便确保账号安全并接收通知邮件。
65
+
66
+ **功能列表模板**
67
+
68
+ | # | 功能模块 | 用户故事 | 优先级 | 研发工作量估算 |
69
+ |---|---------|---------|--------|----------------|
70
+ | 1 | 注册激活 | 新用户通过邮件激活账号 | P0 | M(3-5天)|
71
+ | 2 | 邮件模板 | 支持品牌化邮件样式 | P1 | S(1-2天)|
72
+ | 3 | 批量导入 | 管理员批量导入用户 | P2 | L(5-8天)|
73
+
74
+ **明确 Out-of-Scope(本期不做的)**
75
+ - [功能 A]:原因 / 延后到 v2
76
+ - [功能 B]:超出本期范围`,
77
+ },
78
+ {
79
+ title: '3. 详细功能描述与验收标准',
80
+ content: `为每个 P0/P1 功能编写详细说明和可测试的验收标准:
81
+
82
+ **功能详细描述模板**
83
+
84
+ ---
85
+
86
+ #### 功能:[功能名称]
87
+
88
+ **触发场景**:[用户在什么情况下使用此功能]
89
+
90
+ **操作流程**(主流程 Happy Path)
91
+ 1. 用户进入 [入口页面]
92
+ 2. 操作 [步骤]
93
+ 3. 系统 [处理逻辑]
94
+ 4. 用户看到 [结果/反馈]
95
+
96
+ **异常流程**
97
+ - [条件] → 系统提示 "[错误信息]"
98
+ - 网络超时 → 提示重试,不重复提交
99
+
100
+ **验收标准(AC)**
101
+ > Given [前置条件]
102
+ > When [用户操作]
103
+ > Then [系统行为 + 可量化结果]
104
+
105
+ 示例:
106
+ - AC1: Given 用户输入正确邮箱和密码,When 点击登录,Then 3秒内跳转到首页
107
+ - AC2: Given 用户连续5次密码错误,When 第6次尝试,Then 账号锁定15分钟并发送通知邮件
108
+
109
+ ---`,
110
+ },
111
+ {
112
+ title: '4. 非功能性需求',
113
+ content: `明确产品的质量属性约束:
114
+
115
+ **性能**
116
+ - 核心页面首屏加载时间:< 2秒(P75)
117
+ - 核心接口响应时间:< 500ms(P99)
118
+ - 并发支持:峰值 QPS XXX
119
+
120
+ **可用性与可靠性**
121
+ - SLA:99.9%(每月不超过 44 分钟停机)
122
+ - 容灾:支持单机房故障切换
123
+ - 数据备份:每日全量 + 实时增量
124
+
125
+ **安全**
126
+ - 涉及 PII 数据字段列表:[手机号、身份证号]
127
+ - 合规要求:[GDPR / 等保二级 / 金融监管要求]
128
+ - 脱敏规则:手机号显示 138****8888
129
+
130
+ **兼容性**
131
+ - 浏览器:Chrome 90+, Safari 14+, Firefox 88+(不支持 IE)
132
+ - 移动端:iOS 13+, Android 8+
133
+ - 屏幕适配:最小支持 375px 宽度
134
+
135
+ **国际化**
136
+ - 语言:简体中文(v1)/ 英文(v2规划)
137
+ - 时区:UTC+8(如有跨时区需求需说明)`,
138
+ },
139
+ {
140
+ title: '5. UI/UX 与交互说明',
141
+ content: `**设计资源**
142
+ - Figma/Sketch 链接:[填写]
143
+ - 设计规范:遵循 [设计系统名称] 组件库
144
+ - 标注版本:[v1.2 / 待定]
145
+
146
+ **关键交互说明**
147
+ 列出容易被研发忽略的交互细节:
148
+
149
+ - 空状态设计:列表无数据时展示 [空态图 + 引导文案]
150
+ - Loading 状态:核心操作需要骨架屏(Skeleton),不用转圈
151
+ - 错误状态:区分网络错误(可重试)和业务错误(不可重试)
152
+ - 表单校验:实时校验(onBlur)还是提交时校验(onSubmit)
153
+ - 动效要求:页面切换 fade-in 200ms,按钮点击 100ms 响应反馈
154
+
155
+ **无障碍要求(A11y)**
156
+ - 图片必须有 alt 属性
157
+ - 颜色对比度不低于 4.5:1(WCAG AA 标准)
158
+ - 核心操作支持键盘导航`,
159
+ },
160
+ {
161
+ title: '6. 数据埋点与监控',
162
+ content: `**埋点方案**
163
+
164
+ | 事件名 | 触发时机 | 属性 | 说明 |
165
+ |--------|---------|------|------|
166
+ | page_view | 进入页面 | page_name, user_id | 必填 |
167
+ | btn_click | 点击按钮 | btn_name, page | 所有 CTA 按钮 |
168
+ | form_submit | 表单提交 | form_name, is_success | 含失败原因 |
169
+ | feature_use | 使用核心功能 | feature_name, duration | 用于功能价值评估 |
170
+
171
+ **业务监控告警**
172
+
173
+ | 指标 | 告警阈值 | 负责人 |
174
+ |------|---------|--------|
175
+ | 注册成功率 | < 85% 触发告警 | PM + 后端 |
176
+ | 支付成功率 | < 95% 立即告警 | PM + 后端 + 运维 |
177
+ | 页面崩溃率 | > 0.1% 告警 | 前端 |
178
+
179
+ **数据分析需求**
180
+ - 上线后第 3/7/30 天分析用户路径漏斗
181
+ - 功能使用率(功能激活用户 / 总用户)`,
182
+ },
183
+ ],
184
+ outputFormat: 'Markdown PRD 文档,含背景目标、用户故事、功能详情(含验收标准 AC)、非功能性需求、UI/UX 说明和埋点方案',
185
+ examples: [
186
+ {
187
+ input: '写一个用户登录功能的 PRD',
188
+ output: `## PRD: 用户登录功能
189
+
190
+ ### 背景与目标
191
+ **问题**:新用户注册后流失率 40%,调研显示登录体验繁琐是主因
192
+
193
+ **成功指标**:
194
+ - 登录成功率 > 98%
195
+ - 登录流程时长 < 10 秒
196
+
197
+ ### 用户故事
198
+ > 作为已注册用户,我需要快速安全地登录账号,以便访问我的个人数据。
199
+
200
+ ### 功能验收标准
201
+ - AC1: Given 正确的邮箱+密码,When 点击登录,Then 2秒内进入首页
202
+ - AC2: Given 连续5次失败,When 第6次,Then 锁定30分钟`,
203
+ },
204
+ ],
205
+ notes: [
206
+ 'PRD 应明确 Out-of-Scope,避免研发范围蔓延',
207
+ '验收标准必须可测试,"用户体验好" 不是有效的 AC',
208
+ '非功能性需求经常被遗漏,但对系统架构选型影响很大',
209
+ '埋点方案尽早与数据团队对齐,避免上线后补埋导致历史数据断层',
210
+ ],
211
+ category: '需求侧',
212
+ nextSkill: 'api-design',
213
+ };
214
+ //# sourceMappingURL=14-prd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"14-prd.js","sourceRoot":"","sources":["../../src/skills/14-prd.ts"],"names":[],"mappings":";;;AAEa,QAAA,QAAQ,GAAoB;IACvC,EAAE,EAAE,KAAK;IACT,IAAI,EAAE,QAAQ;IACd,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,EAAE;IACT,WAAW,EAAE,wCAAwC;IACrD,aAAa,EAAE,yFAAyF;IACxG,iBAAiB,EAAE;;2BAEM;IACzB,QAAQ,EAAE;QACR,KAAK;QACL,MAAM;QACN,OAAO;QACP,MAAM;QACN,QAAQ;QACR,MAAM;QACN,KAAK;QACL,MAAM;QACN,QAAQ;QACR,YAAY;QACZ,aAAa;QACb,MAAM;QACN,MAAM;KACP;IACD,KAAK,EAAE;QACL;YACE,KAAK,EAAE,UAAU;YACjB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;gCAoBiB;SAC3B;QACD;YACE,KAAK,EAAE,cAAc;YACrB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;gBAoBC;SACX;QACD;YACE,KAAK,EAAE,gBAAgB;YACvB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA6BX;SACC;QACD;YACE,KAAK,EAAE,WAAW;YAClB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;uBAwBQ;SAClB;QACD;YACE,KAAK,EAAE,gBAAgB;YACvB,OAAO,EAAE;;;;;;;;;;;;;;;;;aAiBF;SACR;QACD;YACE,KAAK,EAAE,YAAY;YACnB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;sBAmBO;SACjB;KACF;IACD,YAAY,EACV,gEAAgE;IAClE,QAAQ,EAAE;QACR;YACE,KAAK,EAAE,gBAAgB;YACvB,MAAM,EAAE;;;;;;;;;;;;;;yCAc2B;SACpC;KACF;IACD,KAAK,EAAE;QACL,+BAA+B;QAC/B,4BAA4B;QAC5B,0BAA0B;QAC1B,+BAA+B;KAChC;IACD,QAAQ,EAAE,KAAK;IACf,SAAS,EAAE,YAAY;CACxB,CAAC"}
@@ -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"}