ethan-skill 1.5.9 → 1.7.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/dist/cli/index.js +32 -26
- package/dist/cli/index.js.map +1 -1
- package/dist/loader/custom-pipeline-loader.d.ts +15 -0
- package/dist/loader/custom-pipeline-loader.d.ts.map +1 -0
- package/dist/loader/custom-pipeline-loader.js +131 -0
- package/dist/loader/custom-pipeline-loader.js.map +1 -0
- package/dist/loader/custom-skill-loader.d.ts +7 -2
- package/dist/loader/custom-skill-loader.d.ts.map +1 -1
- package/dist/loader/custom-skill-loader.js +112 -3
- package/dist/loader/custom-skill-loader.js.map +1 -1
- package/dist/loader/custom-skill-loader.test.d.ts +2 -0
- package/dist/loader/custom-skill-loader.test.d.ts.map +1 -0
- package/dist/loader/custom-skill-loader.test.js +201 -0
- package/dist/loader/custom-skill-loader.test.js.map +1 -0
- package/dist/skills/11-api-design.d.ts +3 -0
- package/dist/skills/11-api-design.d.ts.map +1 -0
- package/dist/skills/11-api-design.js +214 -0
- package/dist/skills/11-api-design.js.map +1 -0
- package/dist/skills/12-security-review.d.ts +3 -0
- package/dist/skills/12-security-review.d.ts.map +1 -0
- package/dist/skills/12-security-review.js +194 -0
- package/dist/skills/12-security-review.js.map +1 -0
- package/dist/skills/13-deployment.d.ts +3 -0
- package/dist/skills/13-deployment.d.ts.map +1 -0
- package/dist/skills/13-deployment.js +189 -0
- package/dist/skills/13-deployment.js.map +1 -0
- package/dist/skills/14-prd.d.ts +3 -0
- package/dist/skills/14-prd.d.ts.map +1 -0
- package/dist/skills/14-prd.js +214 -0
- package/dist/skills/14-prd.js.map +1 -0
- package/dist/skills/index.d.ts +4 -0
- package/dist/skills/index.d.ts.map +1 -1
- package/dist/skills/index.js +17 -1
- package/dist/skills/index.js.map +1 -1
- package/dist/skills/pipeline.d.ts +2 -1
- package/dist/skills/pipeline.d.ts.map +1 -1
- package/dist/skills/pipeline.js +41 -3
- package/dist/skills/pipeline.js.map +1 -1
- package/package.json +1 -1
- package/rules/claude-code/CLAUDE.md +641 -3
- package/rules/cline/.clinerules +578 -2
- package/rules/codebuddy/CODEBUDDY.md +618 -2
- package/rules/continue/.continuerules +578 -2
- package/rules/copilot/copilot-instructions.md +606 -2
- package/rules/cursor/.cursorrules +636 -2
- package/rules/cursor/smart-flow.mdc +636 -2
- package/rules/jetbrains/smart-flow.md +606 -2
- package/rules/lingma/smart-flow.md +615 -3
- package/rules/windsurf/.windsurf/rules/smart-flow.md +607 -3
- package/rules/zed/smart-flow.rules +573 -1
|
@@ -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"}
|
package/dist/skills/index.d.ts
CHANGED
|
@@ -12,6 +12,10 @@ export { weeklyReportSkill } from './07-weekly-report';
|
|
|
12
12
|
export { codeReviewSkill } from './08-code-review';
|
|
13
13
|
export { debugSkill } from './09-debug';
|
|
14
14
|
export { techResearchSkill } from './10-tech-research';
|
|
15
|
+
export { apiDesignSkill } from './11-api-design';
|
|
16
|
+
export { securityReviewSkill } from './12-security-review';
|
|
17
|
+
export { deploymentSkill } from './13-deployment';
|
|
18
|
+
export { prdSkill } from './14-prd';
|
|
15
19
|
export type { SkillDefinition, SkillStep, SkillExample, Platform, BuildContext, PipelineDefinition } from './types';
|
|
16
20
|
/** 所有 Skill 按顺序排列 */
|
|
17
21
|
export declare const ALL_SKILLS: import("./types").SkillDefinition[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAiBpH,qBAAqB;AACrB,eAAO,MAAM,UAAU,qCAetB,CAAC"}
|
package/dist/skills/index.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* 构建脚本和运行时均从此文件取数据
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.ALL_SKILLS = exports.techResearchSkill = exports.debugSkill = exports.codeReviewSkill = exports.weeklyReportSkill = exports.taskReportSkill = exports.progressTrackingSkill = exports.implementationSkill = exports.designSkill = exports.taskBreakdownSkill = exports.requirementSkill = void 0;
|
|
7
|
+
exports.ALL_SKILLS = exports.prdSkill = exports.deploymentSkill = exports.securityReviewSkill = exports.apiDesignSkill = exports.techResearchSkill = exports.debugSkill = exports.codeReviewSkill = exports.weeklyReportSkill = exports.taskReportSkill = exports.progressTrackingSkill = exports.implementationSkill = exports.designSkill = exports.taskBreakdownSkill = exports.requirementSkill = void 0;
|
|
8
8
|
var _01_requirement_1 = require("./01-requirement");
|
|
9
9
|
Object.defineProperty(exports, "requirementSkill", { enumerable: true, get: function () { return _01_requirement_1.requirementSkill; } });
|
|
10
10
|
var _02_task_breakdown_1 = require("./02-task-breakdown");
|
|
@@ -25,6 +25,14 @@ var _09_debug_1 = require("./09-debug");
|
|
|
25
25
|
Object.defineProperty(exports, "debugSkill", { enumerable: true, get: function () { return _09_debug_1.debugSkill; } });
|
|
26
26
|
var _10_tech_research_1 = require("./10-tech-research");
|
|
27
27
|
Object.defineProperty(exports, "techResearchSkill", { enumerable: true, get: function () { return _10_tech_research_1.techResearchSkill; } });
|
|
28
|
+
var _11_api_design_1 = require("./11-api-design");
|
|
29
|
+
Object.defineProperty(exports, "apiDesignSkill", { enumerable: true, get: function () { return _11_api_design_1.apiDesignSkill; } });
|
|
30
|
+
var _12_security_review_1 = require("./12-security-review");
|
|
31
|
+
Object.defineProperty(exports, "securityReviewSkill", { enumerable: true, get: function () { return _12_security_review_1.securityReviewSkill; } });
|
|
32
|
+
var _13_deployment_1 = require("./13-deployment");
|
|
33
|
+
Object.defineProperty(exports, "deploymentSkill", { enumerable: true, get: function () { return _13_deployment_1.deploymentSkill; } });
|
|
34
|
+
var _14_prd_1 = require("./14-prd");
|
|
35
|
+
Object.defineProperty(exports, "prdSkill", { enumerable: true, get: function () { return _14_prd_1.prdSkill; } });
|
|
28
36
|
const _01_requirement_2 = require("./01-requirement");
|
|
29
37
|
const _02_task_breakdown_2 = require("./02-task-breakdown");
|
|
30
38
|
const _03_design_2 = require("./03-design");
|
|
@@ -35,6 +43,10 @@ const _07_weekly_report_2 = require("./07-weekly-report");
|
|
|
35
43
|
const _08_code_review_2 = require("./08-code-review");
|
|
36
44
|
const _09_debug_2 = require("./09-debug");
|
|
37
45
|
const _10_tech_research_2 = require("./10-tech-research");
|
|
46
|
+
const _11_api_design_2 = require("./11-api-design");
|
|
47
|
+
const _12_security_review_2 = require("./12-security-review");
|
|
48
|
+
const _13_deployment_2 = require("./13-deployment");
|
|
49
|
+
const _14_prd_2 = require("./14-prd");
|
|
38
50
|
/** 所有 Skill 按顺序排列 */
|
|
39
51
|
exports.ALL_SKILLS = [
|
|
40
52
|
_01_requirement_2.requirementSkill,
|
|
@@ -47,5 +59,9 @@ exports.ALL_SKILLS = [
|
|
|
47
59
|
_08_code_review_2.codeReviewSkill,
|
|
48
60
|
_09_debug_2.debugSkill,
|
|
49
61
|
_10_tech_research_2.techResearchSkill,
|
|
62
|
+
_11_api_design_2.apiDesignSkill,
|
|
63
|
+
_12_security_review_2.securityReviewSkill,
|
|
64
|
+
_13_deployment_2.deploymentSkill,
|
|
65
|
+
_14_prd_2.prdSkill,
|
|
50
66
|
];
|
|
51
67
|
//# sourceMappingURL=index.js.map
|
package/dist/skills/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,oDAAoD;AAA3C,mHAAA,gBAAgB,OAAA;AACzB,0DAAyD;AAAhD,wHAAA,kBAAkB,OAAA;AAC3B,0CAA0C;AAAjC,yGAAA,WAAW,OAAA;AACpB,0DAA0D;AAAjD,yHAAA,mBAAmB,OAAA;AAC5B,gEAA+D;AAAtD,8HAAA,qBAAqB,OAAA;AAC9B,oDAAmD;AAA1C,kHAAA,eAAe,OAAA;AACxB,wDAAuD;AAA9C,sHAAA,iBAAiB,OAAA;AAC1B,oDAAmD;AAA1C,kHAAA,eAAe,OAAA;AACxB,wCAAwC;AAA/B,uGAAA,UAAU,OAAA;AACnB,wDAAuD;AAA9C,sHAAA,iBAAiB,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,oDAAoD;AAA3C,mHAAA,gBAAgB,OAAA;AACzB,0DAAyD;AAAhD,wHAAA,kBAAkB,OAAA;AAC3B,0CAA0C;AAAjC,yGAAA,WAAW,OAAA;AACpB,0DAA0D;AAAjD,yHAAA,mBAAmB,OAAA;AAC5B,gEAA+D;AAAtD,8HAAA,qBAAqB,OAAA;AAC9B,oDAAmD;AAA1C,kHAAA,eAAe,OAAA;AACxB,wDAAuD;AAA9C,sHAAA,iBAAiB,OAAA;AAC1B,oDAAmD;AAA1C,kHAAA,eAAe,OAAA;AACxB,wCAAwC;AAA/B,uGAAA,UAAU,OAAA;AACnB,wDAAuD;AAA9C,sHAAA,iBAAiB,OAAA;AAC1B,kDAAiD;AAAxC,gHAAA,cAAc,OAAA;AACvB,4DAA2D;AAAlD,0HAAA,mBAAmB,OAAA;AAC5B,kDAAkD;AAAzC,iHAAA,eAAe,OAAA;AACxB,oCAAoC;AAA3B,mGAAA,QAAQ,OAAA;AAIjB,sDAAoD;AACpD,4DAAyD;AACzD,4CAA0C;AAC1C,4DAA0D;AAC1D,kEAA+D;AAC/D,sDAAmD;AACnD,0DAAuD;AACvD,sDAAmD;AACnD,0CAAwC;AACxC,0DAAuD;AACvD,oDAAiD;AACjD,8DAA2D;AAC3D,oDAAkD;AAClD,sCAAoC;AAEpC,qBAAqB;AACR,QAAA,UAAU,GAAG;IACxB,kCAAgB;IAChB,uCAAkB;IAClB,wBAAW;IACX,wCAAmB;IACnB,6CAAqB;IACrB,iCAAe;IACf,qCAAiB;IACjB,iCAAe;IACf,sBAAU;IACV,qCAAiB;IACjB,+BAAc;IACd,yCAAmB;IACnB,gCAAe;IACf,kBAAQ;CACT,CAAC"}
|
|
@@ -7,8 +7,9 @@ import type { PipelineDefinition, SkillDefinition } from './types';
|
|
|
7
7
|
export declare const PIPELINES: PipelineDefinition[];
|
|
8
8
|
/**
|
|
9
9
|
* 根据 pipeline id 解析出 pipeline 定义和对应的 Skill 列表
|
|
10
|
+
* 优先查内置 Pipeline,其次查自定义 Pipeline(.ethan/pipelines/)
|
|
10
11
|
*/
|
|
11
|
-
export declare function resolvePipeline(id: string): {
|
|
12
|
+
export declare function resolvePipeline(id: string, customPipelines?: PipelineDefinition[], allSkills?: SkillDefinition[]): {
|
|
12
13
|
pipeline: PipelineDefinition;
|
|
13
14
|
skills: SkillDefinition[];
|
|
14
15
|
} | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/skills/pipeline.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAGnE,eAAO,MAAM,SAAS,EAAE,kBAAkB,
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/skills/pipeline.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAGnE,eAAO,MAAM,SAAS,EAAE,kBAAkB,EAkEzC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,EAAE,EAAE,MAAM,EACV,eAAe,CAAC,EAAE,kBAAkB,EAAE,EACtC,SAAS,CAAC,EAAE,eAAe,EAAE,GAC5B;IAAE,QAAQ,EAAE,kBAAkB,CAAC;IAAC,MAAM,EAAE,eAAe,EAAE,CAAA;CAAE,GAAG,IAAI,CAWpE"}
|
package/dist/skills/pipeline.js
CHANGED
|
@@ -39,16 +39,54 @@ exports.PIPELINES = [
|
|
|
39
39
|
'debug',
|
|
40
40
|
],
|
|
41
41
|
},
|
|
42
|
+
{
|
|
43
|
+
id: 'full-dev-cycle',
|
|
44
|
+
name: '完整开发周期',
|
|
45
|
+
description: '端到端研发流程:需求理解 → 接口设计 → 方案设计 → 执行实现 → 代码审查 → 部署上线',
|
|
46
|
+
skillIds: [
|
|
47
|
+
'requirement-understanding',
|
|
48
|
+
'api-design',
|
|
49
|
+
'solution-design',
|
|
50
|
+
'implementation',
|
|
51
|
+
'code-review',
|
|
52
|
+
'deployment',
|
|
53
|
+
],
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
id: 'incident-response',
|
|
57
|
+
name: '故障响应工作流',
|
|
58
|
+
description: '线上故障处理流程:故障排查 → 技术复盘 → 任务报告',
|
|
59
|
+
skillIds: [
|
|
60
|
+
'debug',
|
|
61
|
+
'tech-research',
|
|
62
|
+
'task-report',
|
|
63
|
+
],
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
id: 'new-feature',
|
|
67
|
+
name: '新功能工作流',
|
|
68
|
+
description: '新功能完整交付流程:PRD → 技术调研 → 接口设计 → 任务拆解 → 执行实现',
|
|
69
|
+
skillIds: [
|
|
70
|
+
'prd',
|
|
71
|
+
'tech-research',
|
|
72
|
+
'api-design',
|
|
73
|
+
'task-breakdown',
|
|
74
|
+
'implementation',
|
|
75
|
+
],
|
|
76
|
+
},
|
|
42
77
|
];
|
|
43
78
|
/**
|
|
44
79
|
* 根据 pipeline id 解析出 pipeline 定义和对应的 Skill 列表
|
|
80
|
+
* 优先查内置 Pipeline,其次查自定义 Pipeline(.ethan/pipelines/)
|
|
45
81
|
*/
|
|
46
|
-
function resolvePipeline(id) {
|
|
47
|
-
const
|
|
82
|
+
function resolvePipeline(id, customPipelines, allSkills) {
|
|
83
|
+
const skillPool = allSkills ?? index_1.ALL_SKILLS;
|
|
84
|
+
const allPipelines = [...exports.PIPELINES, ...(customPipelines ?? [])];
|
|
85
|
+
const pipeline = allPipelines.find((p) => p.id === id);
|
|
48
86
|
if (!pipeline)
|
|
49
87
|
return null;
|
|
50
88
|
const skills = pipeline.skillIds
|
|
51
|
-
.map((skillId) =>
|
|
89
|
+
.map((skillId) => skillPool.find((s) => s.id === skillId))
|
|
52
90
|
.filter((s) => s !== undefined);
|
|
53
91
|
return { pipeline, skills };
|
|
54
92
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/skills/pipeline.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/skills/pipeline.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AA6EH,0CAeC;AAzFD,mCAAqC;AAExB,QAAA,SAAS,GAAyB;IAC7C;QACE,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,qCAAqC;QAClD,QAAQ,EAAE;YACR,2BAA2B;YAC3B,gBAAgB;YAChB,iBAAiB;YACjB,gBAAgB;SACjB;KACF;IACD;QACE,EAAE,EAAE,WAAW;QACf,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,4BAA4B;QACzC,QAAQ,EAAE;YACR,mBAAmB;YACnB,aAAa;YACb,eAAe;SAChB;KACF;IACD;QACE,EAAE,EAAE,kBAAkB;QACtB,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,yBAAyB;QACtC,QAAQ,EAAE;YACR,aAAa;YACb,OAAO;SACR;KACF;IACD;QACE,EAAE,EAAE,gBAAgB;QACpB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,iDAAiD;QAC9D,QAAQ,EAAE;YACR,2BAA2B;YAC3B,YAAY;YACZ,iBAAiB;YACjB,gBAAgB;YAChB,aAAa;YACb,YAAY;SACb;KACF;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,6BAA6B;QAC1C,QAAQ,EAAE;YACR,OAAO;YACP,eAAe;YACf,aAAa;SACd;KACF;IACD;QACE,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,2CAA2C;QACxD,QAAQ,EAAE;YACR,KAAK;YACL,eAAe;YACf,YAAY;YACZ,gBAAgB;YAChB,gBAAgB;SACjB;KACF;CACF,CAAC;AAEF;;;GAGG;AACH,SAAgB,eAAe,CAC7B,EAAU,EACV,eAAsC,EACtC,SAA6B;IAE7B,MAAM,SAAS,GAAG,SAAS,IAAI,kBAAU,CAAC;IAC1C,MAAM,YAAY,GAAG,CAAC,GAAG,iBAAS,EAAE,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,CAAC;IAChE,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACvD,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE3B,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ;SAC7B,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;SACzD,MAAM,CAAC,CAAC,CAAC,EAAwB,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;IAExD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC9B,CAAC"}
|