ethan-skill 1.15.2 → 1.15.4

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 (54) hide show
  1. package/dist/agents/orchestrator.test.js +13 -12
  2. package/dist/agents/orchestrator.test.js.map +1 -1
  3. package/dist/agents/presets.d.ts.map +1 -1
  4. package/dist/agents/presets.js +57 -0
  5. package/dist/agents/presets.js.map +1 -1
  6. package/dist/skills/37-auto-fix.d.ts +3 -0
  7. package/dist/skills/37-auto-fix.d.ts.map +1 -0
  8. package/dist/skills/37-auto-fix.js +229 -0
  9. package/dist/skills/37-auto-fix.js.map +1 -0
  10. package/dist/skills/38-agent-memory.d.ts +3 -0
  11. package/dist/skills/38-agent-memory.d.ts.map +1 -0
  12. package/dist/skills/38-agent-memory.js +221 -0
  13. package/dist/skills/38-agent-memory.js.map +1 -0
  14. package/dist/skills/39-competitive-analysis.d.ts +3 -0
  15. package/dist/skills/39-competitive-analysis.d.ts.map +1 -0
  16. package/dist/skills/39-competitive-analysis.js +187 -0
  17. package/dist/skills/39-competitive-analysis.js.map +1 -0
  18. package/dist/skills/40-solution-proposal.d.ts +3 -0
  19. package/dist/skills/40-solution-proposal.d.ts.map +1 -0
  20. package/dist/skills/40-solution-proposal.js +196 -0
  21. package/dist/skills/40-solution-proposal.js.map +1 -0
  22. package/dist/skills/41-test-plan.d.ts +3 -0
  23. package/dist/skills/41-test-plan.d.ts.map +1 -0
  24. package/dist/skills/41-test-plan.js +255 -0
  25. package/dist/skills/41-test-plan.js.map +1 -0
  26. package/dist/skills/42-bug-report.d.ts +3 -0
  27. package/dist/skills/42-bug-report.d.ts.map +1 -0
  28. package/dist/skills/42-bug-report.js +224 -0
  29. package/dist/skills/42-bug-report.js.map +1 -0
  30. package/dist/skills/43-ops-runbook.d.ts +3 -0
  31. package/dist/skills/43-ops-runbook.d.ts.map +1 -0
  32. package/dist/skills/43-ops-runbook.js +282 -0
  33. package/dist/skills/43-ops-runbook.js.map +1 -0
  34. package/dist/skills/index.d.ts +7 -0
  35. package/dist/skills/index.d.ts.map +1 -1
  36. package/dist/skills/index.js +29 -1
  37. package/dist/skills/index.js.map +1 -1
  38. package/dist/skills/pipeline.d.ts.map +1 -1
  39. package/dist/skills/pipeline.js +58 -0
  40. package/dist/skills/pipeline.js.map +1 -1
  41. package/dist/skills/skills.test.js +3 -3
  42. package/dist/skills/skills.test.js.map +1 -1
  43. package/package.json +1 -1
  44. package/rules/claude-code/CLAUDE.md +1436 -3
  45. package/rules/cline/.clinerules +1327 -2
  46. package/rules/codebuddy/CODEBUDDY.md +1399 -2
  47. package/rules/continue/.continuerules +1327 -2
  48. package/rules/copilot/copilot-instructions.md +1378 -2
  49. package/rules/cursor/.cursorrules +1428 -2
  50. package/rules/cursor/smart-flow.mdc +1428 -2
  51. package/rules/jetbrains/smart-flow.md +1378 -2
  52. package/rules/lingma/smart-flow.md +1393 -3
  53. package/rules/windsurf/.windsurf/rules/smart-flow.md +1379 -3
  54. package/rules/zed/smart-flow.rules +1319 -1
@@ -0,0 +1,221 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.agentMemorySkill = void 0;
4
+ exports.agentMemorySkill = {
5
+ id: 'agent-memory',
6
+ name: 'Agent 记忆',
7
+ nameEn: 'agent_memory',
8
+ order: 38,
9
+ category: '执行侧',
10
+ description: '提取并持久化项目关键决策、架构约束与已解决问题,跨会话注入 Agent 上下文,消除重复探索',
11
+ descriptionEn: 'Extract and persist key project decisions, architectural constraints and resolved issues, inject as Agent context across sessions to eliminate repeated exploration',
12
+ detailDescription: `每次 AI 对话结束,宝贵的决策上下文就会丢失——下一个会话要重新解释架构背景、
13
+ 重新踩同样的坑。Agent 记忆 Skill 将对话中的关键信息结构化存入 .ethan/agent-memory/,
14
+ 并在下次会话开始时自动检索相关记忆注入上下文,让 AI 像有经验的团队成员一样工作。`,
15
+ triggers: [
16
+ 'agent 记忆',
17
+ 'agent memory',
18
+ '持久化记忆',
19
+ 'persistent memory',
20
+ '记住这个',
21
+ 'remember this',
22
+ '跨会话记忆',
23
+ '项目决策记录',
24
+ '注入上下文',
25
+ 'inject context',
26
+ '@ethan memory',
27
+ '@ethan agent-memory',
28
+ '/agent-memory',
29
+ ],
30
+ steps: [
31
+ {
32
+ title: '1. 识别值得记忆的信息',
33
+ content: `并非所有信息都值得持久化,聚焦以下四类高价值记忆:
34
+
35
+ **四类核心记忆**
36
+
37
+ | 类型 | 描述 | 示例 |
38
+ |------|------|------|
39
+ | 🏗️ **架构决策** | 重要的技术选型和设计取舍 | "使用 Zustand 而非 Redux,因为项目规模小、不需要 devtools" |
40
+ | ⚠️ **已知陷阱** | 踩过的坑、避坑经验 | "直接调用 /api/v1/user 会 401,必须先刷新 token" |
41
+ | 📐 **项目约定** | 命名规范、目录结构、代码约束 | "所有异步操作用 useQuery,禁止裸 fetch" |
42
+ | ✅ **已解决问题** | 解决了的复杂 bug 和方案 | "iOS Safari 下 flex gap 不生效,用 margin 替代" |
43
+
44
+ **识别触发条件**
45
+ - 对话中出现「为什么要这样」「这个项目的约定是」「上次解决这个问题的方法是」
46
+ - 重要的 ADR(架构决策记录)产出
47
+ - 排查超过 30 分钟的 bug 及其解决方案
48
+ - 用户明确说「记住这个」
49
+
50
+ **不值得记忆的信息**
51
+ - 一次性任务的临时上下文
52
+ - 可以从代码本身读出的信息
53
+ - 过于宽泛的"最佳实践"(已在 CLAUDE.md 中)`,
54
+ },
55
+ {
56
+ title: '2. 结构化记忆条目',
57
+ content: `将识别到的信息格式化为标准记忆条目:
58
+
59
+ **记忆条目格式(YAML)**
60
+ \`\`\`yaml
61
+ # .ethan/agent-memory/architecture.yaml
62
+ entries:
63
+ - id: mem_001
64
+ type: architecture_decision # architecture_decision | gotcha | convention | resolved_bug
65
+ title: 状态管理选型:Zustand over Redux
66
+ content: |
67
+ 本项目使用 Zustand 进行全局状态管理。
68
+ 原因:组件树层级浅(≤3层),不需要时间旅行调试,Redux 模板代码过多。
69
+ 影响:所有跨组件状态通过 useXxxStore() hook 访问,不使用 Context API。
70
+ tags: [state-management, zustand, frontend]
71
+ created_at: 2024-01-15
72
+ confidence: high # high | medium | low
73
+ scope: global # global | module:<name> | file:<path>
74
+ \`\`\`
75
+
76
+ **文件组织结构**
77
+ \`\`\`
78
+ .ethan/agent-memory/
79
+ ├── architecture.yaml # 架构决策
80
+ ├── gotchas.yaml # 已知陷阱
81
+ ├── conventions.yaml # 项目约定
82
+ ├── resolved-bugs.yaml # 已解决问题
83
+ └── index.yaml # 记忆索引(供快速检索)
84
+ \`\`\`
85
+
86
+ **记忆条目质量标准**
87
+ - title:一句话,包含关键词(方便检索)
88
+ - content:5-10 行,包含决策背景 + 结论 + 影响范围
89
+ - tags:3-5 个,技术栈 + 模块 + 问题类型
90
+ - confidence:high=已验证可重用,medium=上下文相关,low=存疑待确认`,
91
+ },
92
+ {
93
+ title: '3. 写入持久化存储',
94
+ content: `将格式化的记忆条目追加写入对应文件:
95
+
96
+ **写入操作**
97
+ \`\`\`bash
98
+ # 目录不存在时自动创建
99
+ mkdir -p .ethan/agent-memory
100
+
101
+ # 在 index.yaml 更新记忆摘要(用于快速检索)
102
+ # index.yaml 格式:
103
+ # entries:
104
+ # - id: mem_001
105
+ # title: "状态管理选型:Zustand over Redux"
106
+ # type: architecture_decision
107
+ # tags: [state-management, zustand]
108
+ # file: architecture.yaml
109
+ \`\`\`
110
+
111
+ **记忆维护规则**
112
+ - 同一主题新记忆覆盖旧记忆(更新 content + updated_at)
113
+ - 标记为 low confidence 的记忆,3 个月未访问则删除
114
+ - 每次成功使用后,将 confidence 升级(low → medium → high)
115
+ - 发现记忆内容已过时时,立即更新或标记 deprecated
116
+
117
+ **与 .ethan/team-knowledge/ 的区别**
118
+ | | agent-memory | team-knowledge |
119
+ |--|---|---|
120
+ | 写入者 | AI(自动提取) | 人工(ethan knowledge add)|
121
+ | 格式 | 结构化 YAML | 自由文本 Markdown |
122
+ | 粒度 | 单条决策/问题 | 完整知识文档 |
123
+ | 检索 | 按 tags + type 自动匹配 | 按关键词全文搜索 |`,
124
+ },
125
+ {
126
+ title: '4. 记忆检索与上下文注入',
127
+ content: `在新会话开始或 Agent 执行前,检索相关记忆注入上下文:
128
+
129
+ **检索策略(多维度匹配)**
130
+ \`\`\`
131
+ 1. 任务关键词 ↔ 记忆 tags(精确匹配)
132
+ 2. 当前工作文件路径 ↔ 记忆 scope(前缀匹配)
133
+ 3. 失败信息中的技术词 ↔ 记忆 title(模糊匹配)
134
+ 4. 最近 7 天被访问的记忆(时间权重提升)
135
+ \`\`\`
136
+
137
+ **注入格式(添加到系统提示词开头)**
138
+ \`\`\`markdown
139
+ ## 📚 项目记忆上下文(来自 .ethan/agent-memory/)
140
+
141
+ ### 架构决策
142
+ - **状态管理**:使用 Zustand,不用 Redux。所有跨组件状态通过 useXxxStore() 访问。
143
+ - **API 层**:统一使用 React Query,禁止裸 fetch 调用。
144
+
145
+ ### 已知陷阱
146
+ - ⚠️ iOS Safari 下 flex gap 不生效,用 margin-right/bottom 替代
147
+ - ⚠️ /api/v1/user 接口在 token 过期时返回 200 + {error: "token_expired"},非标准 401
148
+
149
+ ### 项目约定
150
+ - 组件文件统一 PascalCase,工具函数 camelCase
151
+ - 单元测试覆盖率要求 ≥ 80%(核心业务)
152
+
153
+ > ⓘ 以上记忆来自 .ethan/agent-memory/(共 N 条)。如有不准确,请更新记忆文件。
154
+ \`\`\`
155
+
156
+ **记忆命中反馈**
157
+ 每次使用记忆后,记录命中情况:
158
+ \`\`\`yaml
159
+ # .ethan/agent-memory/index.yaml
160
+ - id: mem_003
161
+ last_hit: 2024-03-20
162
+ hit_count: 7
163
+ confidence: high # 命中多次后自动升级
164
+ \`\`\``,
165
+ },
166
+ {
167
+ title: '5. 记忆审计与清理',
168
+ content: `定期维护记忆库,确保记忆的准确性和有效性:
169
+
170
+ **审计清单**
171
+ \`\`\`bash
172
+ # 查看所有记忆
173
+ ethan memory list
174
+
175
+ # 统计记忆健康度
176
+ ethan memory stats
177
+ # 输出:
178
+ # 总记忆条数:48
179
+ # 高置信度:32 | 中:12 | 低:4
180
+ # 30天未命中:8条(建议清理)
181
+ # 重复/矛盾:2组(需合并)
182
+ \`\`\`
183
+
184
+ **记忆衰减策略**
185
+ - 90 天未命中:自动降级 confidence(high → medium → low)
186
+ - 180 天未命中的 low confidence 记忆:标记为 deprecated,下次审计删除
187
+ - 代码库重大重构后:批量检查相关记忆是否仍有效
188
+
189
+ **记忆冲突处理**
190
+ \`\`\`
191
+ 如发现两条矛盾的记忆:
192
+ 1. 保留更新的(created_at 更晚)
193
+ 2. 将旧的标记为 deprecated
194
+ 3. 在新记忆的 content 中注明「取代了 mem_xxx」
195
+ \`\`\`
196
+
197
+ **团队共享记忆**
198
+ \`\`\`bash
199
+ # 将记忆同步到 git(团队共享)
200
+ ethan sync push --include agent-memory
201
+
202
+ # 拉取团队记忆
203
+ ethan sync pull
204
+
205
+ # 记忆文件建议加入 .gitignore 的例外
206
+ # .gitignore:
207
+ # !.ethan/agent-memory/*.yaml
208
+ \`\`\``,
209
+ },
210
+ ],
211
+ outputFormat: 'YAML 记忆条目文件(写入 .ethan/agent-memory/)+ Markdown 注入格式的上下文摘要',
212
+ notes: [
213
+ '记忆要精不要多——50 条高质量记忆 > 500 条低质量记忆',
214
+ '每次新会话开始前运行"记忆检索",将相关记忆注入为背景',
215
+ '记忆不能替代代码本身——代码变更后记忆也要更新',
216
+ '团队共享记忆文件建议提交到 git,个人临时记忆可以 .gitignore',
217
+ '使用 ethan memory search <keyword> 快速检索历史经验',
218
+ ],
219
+ nextSkill: 'agent-memory',
220
+ };
221
+ //# sourceMappingURL=38-agent-memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"38-agent-memory.js","sourceRoot":"","sources":["../../src/skills/38-agent-memory.ts"],"names":[],"mappings":";;;AAEa,QAAA,gBAAgB,GAAoB;IAC/C,EAAE,EAAE,cAAc;IAClB,IAAI,EAAE,UAAU;IAChB,MAAM,EAAE,cAAc;IACtB,KAAK,EAAE,EAAE;IACT,QAAQ,EAAE,KAAK;IACf,WAAW,EAAE,gDAAgD;IAC7D,aAAa,EAAE,qKAAqK;IACpL,iBAAiB,EAAE;;2CAEsB;IACzC,QAAQ,EAAE;QACR,UAAU;QACV,cAAc;QACd,OAAO;QACP,mBAAmB;QACnB,MAAM;QACN,eAAe;QACf,OAAO;QACP,QAAQ;QACR,OAAO;QACP,gBAAgB;QAChB,eAAe;QACf,qBAAqB;QACrB,eAAe;KAChB;IACD,KAAK,EAAE;QACL;YACE,KAAK,EAAE,cAAc;YACrB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;8BAoBe;SACzB;QACD;YACE,KAAK,EAAE,YAAY;YACnB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gDAiCiC;SAC3C;QACD;YACE,KAAK,EAAE,YAAY;YACnB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uCA6BwB;SAClC;QACD;YACE,KAAK,EAAE,eAAe;YACtB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqCR;SACF;QACD;YACE,KAAK,EAAE,YAAY;YACnB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwCR;SACF;KACF;IACD,YAAY,EAAE,2DAA2D;IACzE,KAAK,EAAE;QACL,iCAAiC;QACjC,6BAA6B;QAC7B,yBAAyB;QACzB,uCAAuC;QACvC,2CAA2C;KAC5C;IACD,SAAS,EAAE,cAAc;CAC1B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { SkillDefinition } from './types';
2
+ export declare const competitiveAnalysisSkill: SkillDefinition;
3
+ //# sourceMappingURL=39-competitive-analysis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"39-competitive-analysis.d.ts","sourceRoot":"","sources":["../../src/skills/39-competitive-analysis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,eAAO,MAAM,wBAAwB,EAAE,eAsLtC,CAAC"}
@@ -0,0 +1,187 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.competitiveAnalysisSkill = void 0;
4
+ exports.competitiveAnalysisSkill = {
5
+ id: 'competitive-analysis',
6
+ name: '竞品分析',
7
+ nameEn: 'competitive_analysis',
8
+ order: 39,
9
+ category: '需求侧',
10
+ description: '系统收集竞品信息,构建多维对比矩阵,识别差异化机会,输出可执行的竞品洞察报告',
11
+ descriptionEn: 'Systematically collect competitor info, build multi-dimensional comparison matrix, identify differentiation opportunities',
12
+ detailDescription: `售前和产品决策的核心输入之一是竞品情报。
13
+ 本 Skill 帮助团队系统化地收集竞品信息,通过功能矩阵、定价对比、用户口碑分析,
14
+ 找出我方产品的差异化优势和薄弱环节,为方案制定、定价策略和产品路线图提供数据支撑。`,
15
+ triggers: [
16
+ '竞品分析',
17
+ '竞品对比',
18
+ 'competitive analysis',
19
+ '竞争对手',
20
+ '市场分析',
21
+ '对标分析',
22
+ '竞品调研',
23
+ 'competitor research',
24
+ '市场竞争',
25
+ '@ethan 竞品',
26
+ '@ethan competitive',
27
+ '/competitive-analysis',
28
+ ],
29
+ steps: [
30
+ {
31
+ title: '1. 界定分析范围',
32
+ content: `明确竞品分析的边界和目标:
33
+
34
+ **确认以下信息**
35
+ - **分析目的**:售前支撑 / 产品规划 / 定价策略 / 功能取舍
36
+ - **目标客户群**:哪类客户在同时考察我方和竞品?
37
+ - **核心场景**:客户最关心哪 3-5 个使用场景?
38
+ - **分析时效**:一次性深度分析 vs 持续监测
39
+
40
+ **竞品分层**
41
+ \`\`\`
42
+ 直接竞品(核心战场):
43
+ - 相同目标客户、相似产品形态、直接争抢同一笔预算
44
+ - 通常 3-5 个,重点深入分析
45
+
46
+ 间接竞品(边缘防御):
47
+ - 不同产品形态但解决同一问题
48
+ - 通常 2-3 个,了解即可
49
+
50
+ 替代方案(需求层竞争):
51
+ - 客户可能选择的完全不同的路径(如自研、外包)
52
+ - 列出但不做深度分析
53
+ \`\`\``,
54
+ },
55
+ {
56
+ title: '2. 信息收集',
57
+ content: `系统化收集竞品多维度信息:
58
+
59
+ **官方渠道**
60
+ - 官网产品页、定价页、案例页(截图留存,注明日期)
61
+ - 产品文档/帮助中心(了解功能边界)
62
+ - 官方博客/发布说明(了解产品方向)
63
+ - LinkedIn / 招聘信息(判断团队规模和技术方向)
64
+
65
+ **用户反馈渠道**
66
+ - G2 / Capterra / 产品猎人(Product Hunt)评分与评论
67
+ - App Store / 各应用市场用户评价
68
+ - 知乎、Reddit、Twitter 用户讨论
69
+ - 重点提取:**高频好评**(核心优势)和**高频差评**(核心痛点)
70
+
71
+ **公开数据**
72
+ - SimilarWeb / Alexa 流量数据
73
+ - GitHub Stars / 开源活跃度(技术产品)
74
+ - 融资信息(Crunchbase)— 判断竞品资源投入
75
+
76
+ **第一手情报**(如可获取)
77
+ - 试用竞品产品(免费版 / Demo)
78
+ - 竞品销售人员对话记录
79
+ - 客户提供的竞品方案 / RFP 评估
80
+
81
+ > ⚠️ 所有信息注明来源和收集时间,竞品信息时效性强,超过 3 个月需重新验证`,
82
+ },
83
+ {
84
+ title: '3. 构建对比矩阵',
85
+ content: `将收集信息结构化为多维对比矩阵:
86
+
87
+ **功能对比矩阵**
88
+
89
+ | 功能/场景 | 权重 | 我方 | 竞品A | 竞品B | 竞品C |
90
+ |---------|------|------|-------|-------|-------|
91
+ | 核心功能1 | 高 | ✅全支持 | ✅全支持 | ⚠️部分 | ❌不支持 |
92
+ | 核心功能2 | 高 | ⚠️部分 | ✅全支持 | ✅全支持 | ⚠️部分 |
93
+ | 差异功能X | 中 | ✅独有 | ❌ | ❌ | ❌ |
94
+
95
+ 评分说明:✅全支持(5) ⚠️部分支持(3) 🔧需定制(2) ❌不支持(0)
96
+
97
+ **定价对比**
98
+
99
+ | 维度 | 我方 | 竞品A | 竞品B |
100
+ |------|------|-------|-------|
101
+ | 起步价 | XXX | XXX | XXX |
102
+ | 计费模式 | 按座席 | 按用量 | 按功能包 |
103
+ | 企业版价格 | 询价 | 公开 | 询价 |
104
+ | 免费版 | 有 | 有 | 无 |
105
+
106
+ **非功能对比**
107
+
108
+ | 维度 | 我方 | 竞品A | 竞品B |
109
+ |------|------|-------|-------|
110
+ | 部署方式 | SaaS+私有化 | 仅SaaS | 私有化 |
111
+ | 数据合规 | 等保三级 | SOC2 | ISO27001 |
112
+ | 技术栈/集成 | 开放API | 封闭 | 部分开放 |`,
113
+ },
114
+ {
115
+ title: '4. 优劣势分析(SWOT)',
116
+ content: `基于对比矩阵提炼我方竞争态势:
117
+
118
+ **竞争优势(Where We Win)**
119
+ - 哪些功能维度我们明显领先?
120
+ - 什么场景下客户更倾向选择我们?
121
+ - 我们独有哪些能力(竞品无法快速复制)?
122
+
123
+ **竞争劣势(Where We Lose)**
124
+ - 哪些功能维度我们明显落后?
125
+ - 客户最常拿哪些点质疑我们?
126
+ - 竞品有哪些"杀手锏"功能我们缺失?
127
+
128
+ **竞争机会(Gaps to Exploit)**
129
+ - 竞品用户高频差评的问题,我们能更好解决吗?
130
+ - 有哪些细分市场/场景竞品没有覆盖?
131
+
132
+ **竞争威胁(What to Watch)**
133
+ - 竞品近期有哪些重大产品发布/融资?
134
+ - 哪些竞品正在往我方核心场景延伸?
135
+
136
+ **竞争定位声明**(用于售前演讲)
137
+ > "相比 [竞品],我们在 [场景] 下通过 [差异化能力] 为客户实现 [业务价值]。
138
+ > 对于看重 [竞品优势点] 的客户,我们的应对是 [我方策略]。"`,
139
+ },
140
+ {
141
+ title: '5. 输出竞品洞察报告',
142
+ content: `输出结构化的竞品分析报告:
143
+
144
+ \`\`\`markdown
145
+ # 竞品分析报告 — [产品/场景名称]
146
+
147
+ **分析日期**:YYYY-MM-DD
148
+ **分析目的**:[售前支撑 / 产品规划 / 定价策略]
149
+ **主要竞品**:[竞品A、竞品B、竞品C]
150
+
151
+ ## 核心结论(TL;DR)
152
+ - 🥇 我们的核心优势:[2-3句话]
153
+ - ⚠️ 需正视的差距:[1-2句话]
154
+ - 🎯 最佳竞争场景:[哪类客户/哪种场景最利于我们赢单]
155
+
156
+ ## 功能对比矩阵
157
+ [表格]
158
+
159
+ ## 定价对比
160
+ [表格]
161
+
162
+ ## 赢单话术(Battle Card)
163
+ ### 遇到"竞品A"时
164
+ - **他们的优势**:[客观承认]
165
+ - **我们的应对**:[差异化切入]
166
+ - **杀手问题**(引导客户质疑竞品):[具体问题]
167
+
168
+ ### 遇到"竞品B"时
169
+ ...
170
+
171
+ ## 产品团队建议
172
+ - 短期(本季度):[紧急补强点]
173
+ - 中期(半年):[规划差异化功能]
174
+ - 长期监测:[持续关注的竞品动向]
175
+ \`\`\``,
176
+ },
177
+ ],
178
+ outputFormat: 'Markdown 竞品分析报告:功能矩阵 + 定价对比 + SWOT 分析 + Battle Card(赢单话术)+ 产品建议',
179
+ notes: [
180
+ '竞品信息必须注明日期,超过3个月的数据需重新核实',
181
+ 'Battle Card 是售前最实用的产出,优先完成',
182
+ '保持客观,诚实面对我方劣势,只有清楚弱点才能针对性应对',
183
+ '竞品分析不是一次性工作,建议每季度更新一次',
184
+ ],
185
+ nextSkill: 'solution-proposal',
186
+ };
187
+ //# sourceMappingURL=39-competitive-analysis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"39-competitive-analysis.js","sourceRoot":"","sources":["../../src/skills/39-competitive-analysis.ts"],"names":[],"mappings":";;;AAEa,QAAA,wBAAwB,GAAoB;IACvD,EAAE,EAAE,sBAAsB;IAC1B,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,sBAAsB;IAC9B,KAAK,EAAE,EAAE;IACT,QAAQ,EAAE,KAAK;IACf,WAAW,EAAE,wCAAwC;IACrD,aAAa,EAAE,2HAA2H;IAC1I,iBAAiB,EAAE;;0CAEqB;IACxC,QAAQ,EAAE;QACR,MAAM;QACN,MAAM;QACN,sBAAsB;QACtB,MAAM;QACN,MAAM;QACN,MAAM;QACN,MAAM;QACN,qBAAqB;QACrB,MAAM;QACN,WAAW;QACX,oBAAoB;QACpB,uBAAuB;KACxB;IACD,KAAK,EAAE;QACL;YACE,KAAK,EAAE,WAAW;YAClB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;OAqBR;SACF;QACD;YACE,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;yCAwB0B;SACpC;QACD;YACE,KAAK,EAAE,WAAW;YAClB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;+BA2BgB;SAC1B;QACD;YACE,KAAK,EAAE,gBAAgB;YACvB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;mCAsBoB;SAC9B;QACD;YACE,KAAK,EAAE,aAAa;YACpB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCR;SACF;KACF;IACD,YAAY,EAAE,iEAAiE;IAC/E,KAAK,EAAE;QACL,0BAA0B;QAC1B,4BAA4B;QAC5B,6BAA6B;QAC7B,uBAAuB;KACxB;IACD,SAAS,EAAE,mBAAmB;CAC/B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { SkillDefinition } from './types';
2
+ export declare const solutionProposalSkill: SkillDefinition;
3
+ //# sourceMappingURL=40-solution-proposal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"40-solution-proposal.d.ts","sourceRoot":"","sources":["../../src/skills/40-solution-proposal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,eAAO,MAAM,qBAAqB,EAAE,eA+LnC,CAAC"}
@@ -0,0 +1,196 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.solutionProposalSkill = void 0;
4
+ exports.solutionProposalSkill = {
5
+ id: 'solution-proposal',
6
+ name: '售前方案',
7
+ nameEn: 'solution_proposal',
8
+ order: 40,
9
+ category: '需求侧',
10
+ description: '根据客户需求制定针对性技术/商业解决方案文档,涵盖需求映射、方案架构、ROI 测算与实施路径',
11
+ descriptionEn: 'Create targeted technical/commercial solution proposals mapping customer needs to capabilities with ROI and implementation roadmap',
12
+ detailDescription: `售前方案是赢单的核心武器,也是客户评估我方专业度的主要依据。
13
+ 本 Skill 帮助售前和解决方案工程师(SA)快速产出高质量的方案文档:
14
+ 从需求痛点到解决架构,从价值量化到实施路径,让客户看到"我们真正理解他们的问题"。`,
15
+ triggers: [
16
+ '售前方案',
17
+ '方案建议书',
18
+ 'solution proposal',
19
+ '方案制作',
20
+ '客户方案',
21
+ '技术方案',
22
+ 'RFP 响应',
23
+ '投标方案',
24
+ '解决方案',
25
+ '商务方案',
26
+ '@ethan 售前',
27
+ '@ethan solution-proposal',
28
+ '/solution-proposal',
29
+ ],
30
+ steps: [
31
+ {
32
+ title: '1. 需求痛点梳理',
33
+ content: `在写方案之前,彻底理解客户的真实诉求:
34
+
35
+ **需求层次分析(冰山模型)**
36
+ \`\`\`
37
+ 表层需求(客户说的): "我们需要一个工单系统"
38
+ 深层需求(客户想的): "我们希望客诉处理更规范、更快"
39
+ 根本需求(客户要的): "我们希望客户满意度提升,减少流失"
40
+ \`\`\`
41
+
42
+ **痛点信息收集清单**
43
+ - [ ] 客户现有方案是什么?核心不满是什么?
44
+ - [ ] 本次采购的直接触发事件是什么?(合同到期 / 业务扩张 / 监管要求)
45
+ - [ ] 决策链:谁主导 / 谁审批 / 谁使用(不同角色关注点不同)
46
+ - [ ] 预算范围和采购时间窗口
47
+ - [ ] 已知的技术约束(现有系统、数据合规、部署要求)
48
+ - [ ] 评估标准:客户最看重什么(功能 / 价格 / 服务 / 品牌)
49
+
50
+ **关键痛点排序**(方案要优先回应前3个)
51
+ \`\`\`
52
+ P0(不解决就不买):
53
+ P1(解决了加分很多):
54
+ P2(有更好,没有也行):
55
+ \`\`\``,
56
+ },
57
+ {
58
+ title: '2. 方案架构设计',
59
+ content: `将客户需求映射到解决方案:
60
+
61
+ **需求-能力映射表**
62
+
63
+ | 客户痛点 | 我方解决方案 | 核心功能/模块 | 差异化亮点 |
64
+ |---------|------------|-------------|----------|
65
+ | [痛点1] | [解决思路] | [具体功能] | [为什么选我] |
66
+ | [痛点2] | [解决思路] | [具体功能] | [为什么选我] |
67
+
68
+ **解决方案架构图**
69
+
70
+ 用 Mermaid 或 ASCII 图描述方案整体架构:
71
+ \`\`\`mermaid
72
+ graph TB
73
+ subgraph 客户侧
74
+ A[业务系统] --> B[集成层/API]
75
+ end
76
+ subgraph 我方平台
77
+ B --> C[核心功能模块]
78
+ C --> D[数据层]
79
+ C --> E[分析层]
80
+ end
81
+ E --> F[报表/大屏]
82
+ \`\`\`
83
+
84
+ **分阶段交付建议**
85
+
86
+ | 阶段 | 交付内容 | 时间 | 价值 |
87
+ |------|---------|------|------|
88
+ | 阶段一(MVP) | [核心功能,快速见效] | X周 | [快速见到ROI] |
89
+ | 阶段二(深化) | [更多功能,深度集成] | X周 | [扩大收益] |
90
+ | 阶段三(扩展) | [进阶能力] | X周 | [长期价值] |`,
91
+ },
92
+ {
93
+ title: '3. ROI 测算与价值量化',
94
+ content: `用数字说话,让客户看到投资回报:
95
+
96
+ **价值量化框架(优先选有数据支撑的)**
97
+
98
+ | 价值维度 | 计算逻辑 | 估算数据 | 年化收益 |
99
+ |---------|---------|---------|---------|
100
+ | 效率提升 | 节省人工 X 小时/天 × 人力成本 | X人 × 2h/天 | ¥XXX/年 |
101
+ | 错误减少 | 降低 X% 故障率 × 故障损失 | 年均X次故障 | ¥XXX/年 |
102
+ | 合规价值 | 避免合规罚款/审计成本 | 潜在罚款 XXX | ¥XXX/年 |
103
+ | 收入增长 | 支撑新业务 X% 增长 | 业务收入 XXX | ¥XXX/年 |
104
+
105
+ **ROI 汇总**
106
+ \`\`\`
107
+ 总投资(TCO):¥XXX(含实施+年费)
108
+ 年化收益:¥XXX
109
+ 投资回收期:X 个月
110
+ 3年ROI:X%
111
+ \`\`\`
112
+
113
+ > 注:ROI 数据应基于客户自身业务规模估算,并注明假设前提。
114
+ > 过于激进的ROI数字会损害可信度,保守估算更有说服力。
115
+
116
+ **成功案例支撑**
117
+ 列举 1-2 个类似规模/行业客户的真实数据:
118
+ > "[类似客户] 上线 X 个月后,[具体指标] 提升了 X%"`,
119
+ },
120
+ {
121
+ title: '4. 实施路径与保障',
122
+ content: `让客户相信"我们能做到":
123
+
124
+ **实施方法论**
125
+ \`\`\`
126
+ 标准实施流程(X周):
127
+ Week 1-2:需求确认 & 环境准备
128
+ Week 3-4:核心功能部署 & 数据迁移
129
+ Week 5-6:集成联调 & 用户培训
130
+ Week 7:UAT 验收 & 上线切换
131
+ Week 8+:运营支持 & 持续优化
132
+ \`\`\`
133
+
134
+ **风险与应对**
135
+
136
+ | 风险 | 概率 | 影响 | 应对措施 |
137
+ |------|------|------|---------|
138
+ | 数据迁移复杂 | 中 | 高 | 提前数据质量评估 + 并行迁移方案 |
139
+ | 现有系统集成 | 高 | 中 | 提供标准 API + 专属集成支持 |
140
+ | 用户接受度 | 中 | 中 | 分批上线 + 专项培训计划 |
141
+
142
+ **服务保障承诺**
143
+ - SLA 承诺:系统可用性 XX%,响应时间 < X小时
144
+ - 实施团队:X 名工程师 + X 名项目经理
145
+ - 售后支持:7×24 紧急响应 / 5×8 日常支持
146
+ - 培训方案:在线培训 + 现场培训 + 操作手册`,
147
+ },
148
+ {
149
+ title: '5. 输出方案文档',
150
+ content: `按受众定制方案版本:
151
+
152
+ **完整技术方案(给技术决策者)**
153
+ \`\`\`markdown
154
+ # [客户名称] [场景名称] 解决方案建议书
155
+
156
+ ## 执行摘要(1页,给C-level看)
157
+ [核心问题 + 解决方案 + 预期价值 = 3句话]
158
+
159
+ ## 需求理解
160
+ [对客户痛点的理解——体现我们"懂客户"]
161
+
162
+ ## 解决方案
163
+ [方案架构图 + 功能说明 + 与竞品差异化]
164
+
165
+ ## 分阶段实施路径
166
+ [阶段划分 + 时间线 + 里程碑]
167
+
168
+ ## 投资回报分析
169
+ [ROI 测算表]
170
+
171
+ ## 实施保障
172
+ [团队 + 方法论 + 服务承诺]
173
+
174
+ ## 关于我们
175
+ [公司/产品核心优势 + 典型案例]
176
+ \`\`\`
177
+
178
+ **精简演示版(PPT提纲,给汇报用)**
179
+ 1. 我们理解你的挑战(痛点共鸣)
180
+ 2. 我们的解决思路(架构图)
181
+ 3. 你将获得的价值(ROI)
182
+ 4. 我们的实施计划(时间线)
183
+ 5. 为什么是我们(差异化 + 案例)
184
+ 6. 下一步(明确行动项)`,
185
+ },
186
+ ],
187
+ outputFormat: 'Markdown 方案建议书:需求映射 + 方案架构图 + ROI 测算表 + 实施路径 + 演示提纲',
188
+ notes: [
189
+ '方案要"以客户为中心",每一页都要回答"对客户有什么价值"',
190
+ 'ROI 数据宁可保守也不要夸大,一旦客户觉得不可信,整个方案可信度崩塌',
191
+ '技术方案和商务方案分开,给不同受众看不同版本',
192
+ '方案中必须有对竞品的隐性应对(不要主动贬低竞品,但要预设回答)',
193
+ ],
194
+ nextSkill: 'prd',
195
+ };
196
+ //# sourceMappingURL=40-solution-proposal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"40-solution-proposal.js","sourceRoot":"","sources":["../../src/skills/40-solution-proposal.ts"],"names":[],"mappings":";;;AAEa,QAAA,qBAAqB,GAAoB;IACpD,EAAE,EAAE,mBAAmB;IACvB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,mBAAmB;IAC3B,KAAK,EAAE,EAAE;IACT,QAAQ,EAAE,KAAK;IACf,WAAW,EAAE,gDAAgD;IAC7D,aAAa,EAAE,oIAAoI;IACnJ,iBAAiB,EAAE;;0CAEqB;IACxC,QAAQ,EAAE;QACR,MAAM;QACN,OAAO;QACP,mBAAmB;QACnB,MAAM;QACN,MAAM;QACN,MAAM;QACN,QAAQ;QACR,MAAM;QACN,MAAM;QACN,MAAM;QACN,WAAW;QACX,0BAA0B;QAC1B,oBAAoB;KACrB;IACD,KAAK,EAAE;QACL;YACE,KAAK,EAAE,WAAW;YAClB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;OAsBR;SACF;QACD;YACE,KAAK,EAAE,WAAW;YAClB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCA+BoB;SAC9B;QACD;YACE,KAAK,EAAE,gBAAgB;YACvB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;kCAwBmB;SAC7B;QACD;YACE,KAAK,EAAE,YAAY;YACnB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;0BAwBW;SACrB;QACD;YACE,KAAK,EAAE,WAAW;YAClB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAkCD;SACT;KACF;IACD,YAAY,EAAE,qDAAqD;IACnE,KAAK,EAAE;QACL,+BAA+B;QAC/B,qCAAqC;QACrC,wBAAwB;QACxB,iCAAiC;KAClC;IACD,SAAS,EAAE,KAAK;CACjB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { SkillDefinition } from './types';
2
+ export declare const testPlanSkill: SkillDefinition;
3
+ //# sourceMappingURL=41-test-plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"41-test-plan.d.ts","sourceRoot":"","sources":["../../src/skills/41-test-plan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,eAAO,MAAM,aAAa,EAAE,eA0P3B,CAAC"}