ethan-skill 1.15.3 → 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.
- package/dist/agents/orchestrator.test.js +13 -12
- package/dist/agents/orchestrator.test.js.map +1 -1
- package/dist/agents/presets.d.ts.map +1 -1
- package/dist/agents/presets.js +57 -0
- package/dist/agents/presets.js.map +1 -1
- package/dist/skills/39-competitive-analysis.d.ts +3 -0
- package/dist/skills/39-competitive-analysis.d.ts.map +1 -0
- package/dist/skills/39-competitive-analysis.js +187 -0
- package/dist/skills/39-competitive-analysis.js.map +1 -0
- package/dist/skills/40-solution-proposal.d.ts +3 -0
- package/dist/skills/40-solution-proposal.d.ts.map +1 -0
- package/dist/skills/40-solution-proposal.js +196 -0
- package/dist/skills/40-solution-proposal.js.map +1 -0
- package/dist/skills/41-test-plan.d.ts +3 -0
- package/dist/skills/41-test-plan.d.ts.map +1 -0
- package/dist/skills/41-test-plan.js +255 -0
- package/dist/skills/41-test-plan.js.map +1 -0
- package/dist/skills/42-bug-report.d.ts +3 -0
- package/dist/skills/42-bug-report.d.ts.map +1 -0
- package/dist/skills/42-bug-report.js +224 -0
- package/dist/skills/42-bug-report.js.map +1 -0
- package/dist/skills/43-ops-runbook.d.ts +3 -0
- package/dist/skills/43-ops-runbook.d.ts.map +1 -0
- package/dist/skills/43-ops-runbook.js +282 -0
- package/dist/skills/43-ops-runbook.js.map +1 -0
- package/dist/skills/index.d.ts +5 -0
- package/dist/skills/index.d.ts.map +1 -1
- package/dist/skills/index.js +21 -1
- package/dist/skills/index.js.map +1 -1
- package/dist/skills/pipeline.d.ts.map +1 -1
- package/dist/skills/pipeline.js +46 -0
- package/dist/skills/pipeline.js.map +1 -1
- package/dist/skills/skills.test.js +3 -3
- package/dist/skills/skills.test.js.map +1 -1
- package/package.json +1 -1
- package/rules/claude-code/CLAUDE.md +1034 -3
- package/rules/cline/.clinerules +958 -2
- package/rules/codebuddy/CODEBUDDY.md +1008 -2
- package/rules/continue/.continuerules +958 -2
- package/rules/copilot/copilot-instructions.md +993 -2
- package/rules/cursor/.cursorrules +1028 -2
- package/rules/cursor/smart-flow.mdc +1028 -2
- package/rules/jetbrains/smart-flow.md +993 -2
- package/rules/lingma/smart-flow.md +1004 -3
- package/rules/windsurf/.windsurf/rules/smart-flow.md +994 -3
- package/rules/zed/smart-flow.rules +952 -1
|
@@ -59,16 +59,16 @@ const mockPipeline = {
|
|
|
59
59
|
});
|
|
60
60
|
(0, vitest_1.it)('contains Agent roster table', () => {
|
|
61
61
|
(0, vitest_1.expect)(prompt).toContain('Agent 阵容');
|
|
62
|
-
(0, vitest_1.expect)(prompt).toContain('
|
|
62
|
+
(0, vitest_1.expect)(prompt).toContain('Product Agent');
|
|
63
63
|
(0, vitest_1.expect)(prompt).toContain('Code Agent');
|
|
64
|
-
// dev-workflow uses
|
|
64
|
+
// dev-workflow uses product+coder+qa with updated routing
|
|
65
65
|
});
|
|
66
66
|
(0, vitest_1.it)('contains collaboration protocol', () => {
|
|
67
67
|
(0, vitest_1.expect)(prompt).toContain('协作协议');
|
|
68
68
|
(0, vitest_1.expect)(prompt).toContain('Handoff 摘要');
|
|
69
69
|
});
|
|
70
70
|
(0, vitest_1.it)('contains step headings with agent names', () => {
|
|
71
|
-
(0, vitest_1.expect)(prompt).toContain('
|
|
71
|
+
(0, vitest_1.expect)(prompt).toContain('📱 Product Agent');
|
|
72
72
|
(0, vitest_1.expect)(prompt).toContain('💻 Code Agent');
|
|
73
73
|
});
|
|
74
74
|
(0, vitest_1.it)('contains handoff markers between different agents', () => {
|
|
@@ -96,8 +96,8 @@ const mockPipeline = {
|
|
|
96
96
|
});
|
|
97
97
|
});
|
|
98
98
|
(0, vitest_1.describe)('BUILT_IN_AGENTS', () => {
|
|
99
|
-
(0, vitest_1.it)('has
|
|
100
|
-
(0, vitest_1.expect)(presets_1.BUILT_IN_AGENTS).toHaveLength(
|
|
99
|
+
(0, vitest_1.it)('has 12 agents', () => {
|
|
100
|
+
(0, vitest_1.expect)(presets_1.BUILT_IN_AGENTS).toHaveLength(12);
|
|
101
101
|
});
|
|
102
102
|
(0, vitest_1.it)('all agents have required fields', () => {
|
|
103
103
|
for (const agent of presets_1.BUILT_IN_AGENTS) {
|
|
@@ -108,7 +108,7 @@ const mockPipeline = {
|
|
|
108
108
|
(0, vitest_1.expect)(agent.skillIds.length).toBeGreaterThan(0);
|
|
109
109
|
}
|
|
110
110
|
});
|
|
111
|
-
(0, vitest_1.it)('covers all
|
|
111
|
+
(0, vitest_1.it)('covers all 43 skills across agents', () => {
|
|
112
112
|
const ALL_SKILL_IDS = [
|
|
113
113
|
'requirement-understanding', 'task-breakdown', 'solution-design', 'implementation',
|
|
114
114
|
'progress-tracking', 'task-report', 'weekly-report', 'code-review', 'debug',
|
|
@@ -117,7 +117,8 @@ const mockPipeline = {
|
|
|
117
117
|
'cicd', 'performance', 'refactoring', 'observability', 'design-patterns',
|
|
118
118
|
'spec-proposal', 'spec-review', 'tech-debt', 'api-mock', 'data-migration',
|
|
119
119
|
'llm-feature', 'threat-model', 'green-code', 'service-catalog', 'mobile-review',
|
|
120
|
-
'data-pipeline', 'ml-experiment',
|
|
120
|
+
'data-pipeline', 'ml-experiment', 'auto-fix', 'agent-memory',
|
|
121
|
+
'competitive-analysis', 'solution-proposal', 'test-plan', 'bug-report', 'ops-runbook',
|
|
121
122
|
];
|
|
122
123
|
const coveredIds = new Set(presets_1.BUILT_IN_AGENTS.flatMap((a) => a.skillIds));
|
|
123
124
|
const uncovered = ALL_SKILL_IDS.filter((id) => !coveredIds.has(id));
|
|
@@ -127,23 +128,23 @@ const mockPipeline = {
|
|
|
127
128
|
(0, vitest_1.describe)('buildSkillRouting', () => {
|
|
128
129
|
(0, vitest_1.it)('maps each skillId to its agent', () => {
|
|
129
130
|
const routing = (0, presets_1.buildSkillRouting)(presets_1.BUILT_IN_AGENTS);
|
|
130
|
-
(0, vitest_1.expect)(routing['requirement-understanding']).toBe('
|
|
131
|
+
(0, vitest_1.expect)(routing['requirement-understanding']).toBe('product'); // product overrides architect (last-writer-wins)
|
|
131
132
|
(0, vitest_1.expect)(routing['implementation']).toBe('coder');
|
|
132
133
|
(0, vitest_1.expect)(routing['code-review']).toBe('qa'); // qa overrides reviewer (last-writer-wins)
|
|
133
|
-
(0, vitest_1.expect)(routing['deployment']).toBe('
|
|
134
|
-
(0, vitest_1.expect)(routing['debug']).toBe('
|
|
134
|
+
(0, vitest_1.expect)(routing['deployment']).toBe('ops'); // ops overrides devops (last-writer-wins)
|
|
135
|
+
(0, vitest_1.expect)(routing['debug']).toBe('ops'); // ops overrides pm (last-writer-wins)
|
|
135
136
|
});
|
|
136
137
|
});
|
|
137
138
|
(0, vitest_1.describe)('getAgentsForPipeline', () => {
|
|
138
139
|
(0, vitest_1.it)('returns only agents participating in the pipeline', () => {
|
|
139
140
|
const routing = (0, presets_1.buildSkillRouting)(presets_1.BUILT_IN_AGENTS);
|
|
140
141
|
const agents = (0, presets_1.getAgentsForPipeline)(['requirement-understanding', 'implementation', 'code-review'], presets_1.BUILT_IN_AGENTS, routing);
|
|
141
|
-
(0, vitest_1.expect)(agents.map((a) => a.id)).toEqual(['
|
|
142
|
+
(0, vitest_1.expect)(agents.map((a) => a.id)).toEqual(['product', 'coder', 'qa']);
|
|
142
143
|
});
|
|
143
144
|
(0, vitest_1.it)('deduplicates consecutive same-agent steps', () => {
|
|
144
145
|
const routing = (0, presets_1.buildSkillRouting)(presets_1.BUILT_IN_AGENTS);
|
|
145
146
|
// Both solution-design and api-design belong to architect
|
|
146
|
-
const agents = (0, presets_1.getAgentsForPipeline)(['
|
|
147
|
+
const agents = (0, presets_1.getAgentsForPipeline)(['solution-design', 'api-design'], presets_1.BUILT_IN_AGENTS, routing);
|
|
147
148
|
(0, vitest_1.expect)(agents.map((a) => a.id)).toEqual(['architect']); // deduped
|
|
148
149
|
});
|
|
149
150
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.test.js","sourceRoot":"","sources":["../../src/agents/orchestrator.test.ts"],"names":[],"mappings":";;AAAA,mCAA8C;AAC9C,iDAAuD;AACvD,uCAAqF;AAGrF,+EAA+E;AAE/E,MAAM,UAAU,GAAsB;IACpC;QACE,EAAE,EAAE,2BAA2B;QAC/B,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,2BAA2B;QACnC,WAAW,EAAE,oBAAoB;QACjC,iBAAiB,EAAE,MAAM;QACzB,QAAQ,EAAE,CAAC,MAAM,CAAC;QAClB,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;QACtD,YAAY,EAAE,gBAAgB;QAC9B,KAAK,EAAE,CAAC;KACT;IACD;QACE,EAAE,EAAE,gBAAgB;QACpB,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,gBAAgB;QACxB,WAAW,EAAE,aAAa;QAC1B,iBAAiB,EAAE,MAAM;QACzB,QAAQ,EAAE,CAAC,MAAM,CAAC;QAClB,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;QACrD,YAAY,EAAE,aAAa;QAC3B,KAAK,EAAE,CAAC;KACT;IACD;QACE,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,aAAa;QACrB,WAAW,EAAE,WAAW;QACxB,iBAAiB,EAAE,MAAM;QACzB,QAAQ,EAAE,CAAC,MAAM,CAAC;QAClB,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;QACpD,YAAY,EAAE,eAAe;QAC7B,KAAK,EAAE,CAAC;KACT;CACF,CAAC;AAEF,MAAM,YAAY,GAAuB;IACvC,EAAE,EAAE,cAAc;IAClB,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,oBAAoB;IACjC,QAAQ,EAAE,CAAC,2BAA2B,EAAE,gBAAgB,EAAE,aAAa,CAAC;CACzE,CAAC;AAEF,+EAA+E;AAE/E,IAAA,iBAAQ,EAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,MAAM,MAAM,GAAG,IAAA,oCAAqB,EAAC,YAAY,EAAE,UAAU,EAAE,yBAAe,EAAE;QAC9E,OAAO,EAAE,UAAU;QACnB,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,kBAAkB,EAAE,GAAG,EAAE;QAC1B,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACrC,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"orchestrator.test.js","sourceRoot":"","sources":["../../src/agents/orchestrator.test.ts"],"names":[],"mappings":";;AAAA,mCAA8C;AAC9C,iDAAuD;AACvD,uCAAqF;AAGrF,+EAA+E;AAE/E,MAAM,UAAU,GAAsB;IACpC;QACE,EAAE,EAAE,2BAA2B;QAC/B,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,2BAA2B;QACnC,WAAW,EAAE,oBAAoB;QACjC,iBAAiB,EAAE,MAAM;QACzB,QAAQ,EAAE,CAAC,MAAM,CAAC;QAClB,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;QACtD,YAAY,EAAE,gBAAgB;QAC9B,KAAK,EAAE,CAAC;KACT;IACD;QACE,EAAE,EAAE,gBAAgB;QACpB,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,gBAAgB;QACxB,WAAW,EAAE,aAAa;QAC1B,iBAAiB,EAAE,MAAM;QACzB,QAAQ,EAAE,CAAC,MAAM,CAAC;QAClB,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;QACrD,YAAY,EAAE,aAAa;QAC3B,KAAK,EAAE,CAAC;KACT;IACD;QACE,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,aAAa;QACrB,WAAW,EAAE,WAAW;QACxB,iBAAiB,EAAE,MAAM;QACzB,QAAQ,EAAE,CAAC,MAAM,CAAC;QAClB,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;QACpD,YAAY,EAAE,eAAe;QAC7B,KAAK,EAAE,CAAC;KACT;CACF,CAAC;AAEF,MAAM,YAAY,GAAuB;IACvC,EAAE,EAAE,cAAc;IAClB,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,oBAAoB;IACjC,QAAQ,EAAE,CAAC,2BAA2B,EAAE,gBAAgB,EAAE,aAAa,CAAC;CACzE,CAAC;AAEF,+EAA+E;AAE/E,IAAA,iBAAQ,EAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,MAAM,MAAM,GAAG,IAAA,oCAAqB,EAAC,YAAY,EAAE,UAAU,EAAE,yBAAe,EAAE;QAC9E,OAAO,EAAE,UAAU;QACnB,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,kBAAkB,EAAE,GAAG,EAAE;QAC1B,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACrC,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAC1C,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACvC,0DAA0D;IAC5D,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACjC,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAC7C,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,iBAAQ,EAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,MAAM,MAAM,GAAG,IAAA,oCAAqB,EAAC,YAAY,EAAE,UAAU,EAAE,yBAAe,EAAE;QAC9E,OAAO,EAAE,sBAAsB;QAC/B,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC;QACtD,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QACzC,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,iBAAQ,EAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,IAAA,WAAE,EAAC,eAAe,EAAE,GAAG,EAAE;QACvB,IAAA,eAAM,EAAC,yBAAe,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,KAAK,MAAM,KAAK,IAAI,yBAAe,EAAE,CAAC;YACpC,IAAA,eAAM,EAAC,KAAK,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;YAC9B,IAAA,eAAM,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;YAChC,IAAA,eAAM,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC;YACjC,IAAA,eAAM,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;YAChC,IAAA,eAAM,EAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACnD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,aAAa,GAAG;YACpB,2BAA2B,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB;YAClF,mBAAmB,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,OAAO;YAC3E,eAAe,EAAE,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,KAAK;YACrE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,mBAAmB,EAAE,QAAQ;YAC9E,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB;YACxE,eAAe,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB;YACzE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,iBAAiB,EAAE,eAAe;YAC/E,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc;YAC5D,sBAAsB,EAAE,mBAAmB,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa;SACtF,CAAC;QAEF,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,yBAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QACvE,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACpE,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,iBAAQ,EAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,IAAA,WAAE,EAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,OAAO,GAAG,IAAA,2BAAiB,EAAC,yBAAe,CAAC,CAAC;QACnD,IAAA,eAAM,EAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAE,iDAAiD;QAChH,IAAA,eAAM,EAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChD,IAAA,eAAM,EAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAE,2CAA2C;QACvF,IAAA,eAAM,EAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,0CAA0C;QACtF,IAAA,eAAM,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,sCAAsC;IAC/E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,iBAAQ,EAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,IAAA,WAAE,EAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,OAAO,GAAG,IAAA,2BAAiB,EAAC,yBAAe,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,IAAA,8BAAoB,EACjC,CAAC,2BAA2B,EAAE,gBAAgB,EAAE,aAAa,CAAC,EAC9D,yBAAe,EACf,OAAO,CACR,CAAC;QACF,IAAA,eAAM,EAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,OAAO,GAAG,IAAA,2BAAiB,EAAC,yBAAe,CAAC,CAAC;QACnD,0DAA0D;QAC1D,MAAM,MAAM,GAAG,IAAA,8BAAoB,EACjC,CAAC,iBAAiB,EAAE,YAAY,CAAC,EACjC,yBAAe,EACf,OAAO,CACR,CAAC;QACF,IAAA,eAAM,EAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU;IACpE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../src/agents/presets.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,eAAO,MAAM,eAAe,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../src/agents/presets.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,eAAO,MAAM,eAAe,EAAE,eAAe,EAoL5C,CAAC;AAEF;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQnF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAAE,EAClB,MAAM,EAAE,eAAe,EAAE,EACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,eAAe,EAAE,CAcnB"}
|
package/dist/agents/presets.js
CHANGED
|
@@ -39,6 +39,7 @@ exports.BUILT_IN_AGENTS = [
|
|
|
39
39
|
'api-mock',
|
|
40
40
|
'data-migration',
|
|
41
41
|
'llm-feature',
|
|
42
|
+
'agent-memory',
|
|
42
43
|
],
|
|
43
44
|
},
|
|
44
45
|
{
|
|
@@ -130,6 +131,62 @@ exports.BUILT_IN_AGENTS = [
|
|
|
130
131
|
'llm-feature',
|
|
131
132
|
],
|
|
132
133
|
},
|
|
134
|
+
{
|
|
135
|
+
id: 'presales',
|
|
136
|
+
name: 'PreSales Agent',
|
|
137
|
+
nameEn: 'presales-agent',
|
|
138
|
+
emoji: '🤝',
|
|
139
|
+
role: '负责售前支持:竞品分析、方案建议书、ROI 测算与客户演示材料',
|
|
140
|
+
skillIds: [
|
|
141
|
+
'competitive-analysis',
|
|
142
|
+
'solution-proposal',
|
|
143
|
+
'tech-research',
|
|
144
|
+
'prd',
|
|
145
|
+
'system-design',
|
|
146
|
+
],
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
id: 'product',
|
|
150
|
+
name: 'Product Agent',
|
|
151
|
+
nameEn: 'product-agent',
|
|
152
|
+
emoji: '📱',
|
|
153
|
+
role: '负责产品管理:需求理解、PRD 编写、任务拆解与变更提案',
|
|
154
|
+
skillIds: [
|
|
155
|
+
'requirement-understanding',
|
|
156
|
+
'prd',
|
|
157
|
+
'task-breakdown',
|
|
158
|
+
'spec-proposal',
|
|
159
|
+
'progress-tracking',
|
|
160
|
+
],
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
id: 'tester',
|
|
164
|
+
name: 'Tester Agent',
|
|
165
|
+
nameEn: 'tester-agent',
|
|
166
|
+
emoji: '🔬',
|
|
167
|
+
role: '负责质量保障:测试计划、缺陷管理、单元测试与自动修复',
|
|
168
|
+
skillIds: [
|
|
169
|
+
'test-plan',
|
|
170
|
+
'bug-report',
|
|
171
|
+
'unit-testing',
|
|
172
|
+
'auto-fix',
|
|
173
|
+
'performance',
|
|
174
|
+
],
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
id: 'ops',
|
|
178
|
+
name: 'Ops Agent',
|
|
179
|
+
nameEn: 'ops-agent',
|
|
180
|
+
emoji: '🛠️',
|
|
181
|
+
role: '负责运维与 SRE:运维手册、部署上线、可观测性与故障排查',
|
|
182
|
+
skillIds: [
|
|
183
|
+
'ops-runbook',
|
|
184
|
+
'deployment',
|
|
185
|
+
'observability',
|
|
186
|
+
'cicd',
|
|
187
|
+
'debug',
|
|
188
|
+
],
|
|
189
|
+
},
|
|
133
190
|
];
|
|
134
191
|
/**
|
|
135
192
|
* 构建 skillId → agentId 的路由映射表
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presets.js","sourceRoot":"","sources":["../../src/agents/presets.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;
|
|
1
|
+
{"version":3,"file":"presets.js","sourceRoot":"","sources":["../../src/agents/presets.ts"],"names":[],"mappings":"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"}
|
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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"}
|