ethan-skill 1.0.0 → 1.2.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/config.d.ts +26 -0
- package/dist/cli/config.d.ts.map +1 -0
- package/dist/cli/config.js +74 -0
- package/dist/cli/config.js.map +1 -0
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.js +606 -62
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/update-check.d.ts +11 -0
- package/dist/cli/update-check.d.ts.map +1 -0
- package/dist/cli/update-check.js +128 -0
- package/dist/cli/update-check.js.map +1 -0
- package/dist/context/detector.d.ts +25 -0
- package/dist/context/detector.d.ts.map +1 -0
- package/dist/context/detector.js +230 -0
- package/dist/context/detector.js.map +1 -0
- package/dist/ethan-skill-1.0.0.vsix +0 -0
- package/dist/ethan-skill-1.1.0.vsix +0 -0
- package/dist/loader/custom-skill-loader.d.ts +15 -0
- package/dist/loader/custom-skill-loader.d.ts.map +1 -0
- package/dist/loader/custom-skill-loader.js +158 -0
- package/dist/loader/custom-skill-loader.js.map +1 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +152 -2
- package/dist/mcp/server.js.map +1 -1
- package/dist/server/dashboard.d.ts +2 -0
- package/dist/server/dashboard.d.ts.map +1 -0
- package/dist/server/dashboard.js +573 -0
- package/dist/server/dashboard.js.map +1 -0
- package/dist/skills/01-requirement.d.ts.map +1 -1
- package/dist/skills/01-requirement.js +4 -0
- package/dist/skills/01-requirement.js.map +1 -1
- package/dist/skills/02-task-breakdown.d.ts.map +1 -1
- package/dist/skills/02-task-breakdown.js +4 -0
- package/dist/skills/02-task-breakdown.js.map +1 -1
- package/dist/skills/03-design.d.ts.map +1 -1
- package/dist/skills/03-design.js +4 -0
- package/dist/skills/03-design.js.map +1 -1
- package/dist/skills/04-implementation.d.ts.map +1 -1
- package/dist/skills/04-implementation.js +4 -0
- package/dist/skills/04-implementation.js.map +1 -1
- package/dist/skills/05-progress-tracking.d.ts.map +1 -1
- package/dist/skills/05-progress-tracking.js +4 -0
- package/dist/skills/05-progress-tracking.js.map +1 -1
- package/dist/skills/06-task-report.d.ts.map +1 -1
- package/dist/skills/06-task-report.js +4 -0
- package/dist/skills/06-task-report.js.map +1 -1
- package/dist/skills/07-weekly-report.d.ts.map +1 -1
- package/dist/skills/07-weekly-report.js +3 -0
- package/dist/skills/07-weekly-report.js.map +1 -1
- package/dist/skills/08-code-review.d.ts.map +1 -1
- package/dist/skills/08-code-review.js +2 -0
- package/dist/skills/08-code-review.js.map +1 -1
- package/dist/skills/09-debug.d.ts.map +1 -1
- package/dist/skills/09-debug.js +3 -0
- package/dist/skills/09-debug.js.map +1 -1
- package/dist/skills/10-tech-research.d.ts.map +1 -1
- package/dist/skills/10-tech-research.js +4 -0
- package/dist/skills/10-tech-research.js.map +1 -1
- package/dist/skills/types.d.ts +4 -0
- package/dist/skills/types.d.ts.map +1 -1
- package/dist/templates/copilot-md.template.d.ts.map +1 -1
- package/dist/templates/copilot-md.template.js +107 -26
- package/dist/templates/copilot-md.template.js.map +1 -1
- package/dist/vscode/router/trigger-router.d.ts +16 -0
- package/dist/vscode/router/trigger-router.d.ts.map +1 -0
- package/dist/vscode/router/trigger-router.js +45 -0
- package/dist/vscode/router/trigger-router.js.map +1 -0
- package/dist/vscode/skills/01-requirement.d.ts +3 -0
- package/dist/vscode/skills/01-requirement.d.ts.map +1 -0
- package/dist/vscode/skills/01-requirement.js +104 -0
- package/dist/vscode/skills/01-requirement.js.map +1 -0
- package/dist/vscode/skills/02-task-breakdown.d.ts +3 -0
- package/dist/vscode/skills/02-task-breakdown.d.ts.map +1 -0
- package/dist/vscode/skills/02-task-breakdown.js +86 -0
- package/dist/vscode/skills/02-task-breakdown.js.map +1 -0
- package/dist/vscode/skills/03-design.d.ts +3 -0
- package/dist/vscode/skills/03-design.d.ts.map +1 -0
- package/dist/vscode/skills/03-design.js +84 -0
- package/dist/vscode/skills/03-design.js.map +1 -0
- package/dist/vscode/skills/04-implementation.d.ts +3 -0
- package/dist/vscode/skills/04-implementation.d.ts.map +1 -0
- package/dist/vscode/skills/04-implementation.js +81 -0
- package/dist/vscode/skills/04-implementation.js.map +1 -0
- package/dist/vscode/skills/05-progress-tracking.d.ts +3 -0
- package/dist/vscode/skills/05-progress-tracking.d.ts.map +1 -0
- package/dist/vscode/skills/05-progress-tracking.js +82 -0
- package/dist/vscode/skills/05-progress-tracking.js.map +1 -0
- package/dist/vscode/skills/06-task-report.d.ts +3 -0
- package/dist/vscode/skills/06-task-report.d.ts.map +1 -0
- package/dist/vscode/skills/06-task-report.js +79 -0
- package/dist/vscode/skills/06-task-report.js.map +1 -0
- package/dist/vscode/skills/07-weekly-report.d.ts +3 -0
- package/dist/vscode/skills/07-weekly-report.d.ts.map +1 -0
- package/dist/vscode/skills/07-weekly-report.js +104 -0
- package/dist/vscode/skills/07-weekly-report.js.map +1 -0
- package/dist/vscode/skills/08-code-review.d.ts +3 -0
- package/dist/vscode/skills/08-code-review.d.ts.map +1 -0
- package/dist/vscode/skills/08-code-review.js +138 -0
- package/dist/vscode/skills/08-code-review.js.map +1 -0
- package/dist/vscode/skills/09-debug.d.ts +3 -0
- package/dist/vscode/skills/09-debug.d.ts.map +1 -0
- package/dist/vscode/skills/09-debug.js +154 -0
- package/dist/vscode/skills/09-debug.js.map +1 -0
- package/dist/vscode/skills/10-tech-research.d.ts +3 -0
- package/dist/vscode/skills/10-tech-research.d.ts.map +1 -0
- package/dist/vscode/skills/10-tech-research.js +145 -0
- package/dist/vscode/skills/10-tech-research.js.map +1 -0
- package/dist/vscode/skills/index.d.ts +18 -0
- package/dist/vscode/skills/index.d.ts.map +1 -0
- package/dist/vscode/skills/index.js +51 -0
- package/dist/vscode/skills/index.js.map +1 -0
- package/dist/vscode/skills/pipeline.d.ts +15 -0
- package/dist/vscode/skills/pipeline.d.ts.map +1 -0
- package/dist/vscode/skills/pipeline.js +55 -0
- package/dist/vscode/skills/pipeline.js.map +1 -0
- package/dist/vscode/skills/types.d.ts +64 -0
- package/dist/vscode/skills/types.d.ts.map +1 -0
- package/dist/vscode/skills/types.js +7 -0
- package/dist/vscode/skills/types.js.map +1 -0
- package/dist/vscode/vscode/commands.d.ts +63 -0
- package/dist/vscode/vscode/commands.d.ts.map +1 -0
- package/dist/vscode/vscode/commands.js +428 -0
- package/dist/vscode/vscode/commands.js.map +1 -0
- package/dist/vscode/vscode/extension.d.ts +4 -0
- package/dist/vscode/vscode/extension.d.ts.map +1 -0
- package/dist/vscode/vscode/extension.js +103 -0
- package/dist/vscode/vscode/extension.js.map +1 -0
- package/dist/workflow/state.d.ts +48 -0
- package/dist/workflow/state.d.ts.map +1 -0
- package/dist/workflow/state.js +162 -0
- package/dist/workflow/state.js.map +1 -0
- package/package.json +7 -3
- package/rules/claude-code/CLAUDE.md +12 -12
- package/rules/cline/.clinerules +3 -3
- package/rules/codebuddy/CODEBUDDY.md +12 -12
- package/rules/continue/.continuerules +3 -3
- package/rules/copilot/copilot-instructions.md +12 -12
- package/rules/cursor/.cursorrules +12 -12
- package/rules/cursor/smart-flow.mdc +12 -12
- package/rules/jetbrains/smart-flow.md +12 -12
- package/rules/lingma/smart-flow.md +2 -2
- package/rules/windsurf/.windsurf/rules/smart-flow.md +12 -12
- package/rules/zed/smart-flow.rules +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../src/vscode/commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../../../src/vscode/extension.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAKjC,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,gBAAgB,GAAG,IAAI,CA8B/D;AAkED,wBAAgB,UAAU,IAAI,IAAI,CAAG"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.activate = activate;
|
|
37
|
+
exports.deactivate = deactivate;
|
|
38
|
+
const vscode = __importStar(require("vscode"));
|
|
39
|
+
const index_1 = require("../skills/index");
|
|
40
|
+
const trigger_router_1 = require("../router/trigger-router");
|
|
41
|
+
const commands_1 = require("./commands");
|
|
42
|
+
function activate(context) {
|
|
43
|
+
// Register commands and get back the tree-data providers + status bar item
|
|
44
|
+
const { skillsProvider, pipelinesProvider, statusBarItem } = (0, commands_1.registerCommands)(context);
|
|
45
|
+
// Register sidebar tree views
|
|
46
|
+
context.subscriptions.push(vscode.window.createTreeView('ethan.skillsView', {
|
|
47
|
+
treeDataProvider: skillsProvider,
|
|
48
|
+
showCollapseAll: true,
|
|
49
|
+
}), vscode.window.createTreeView('ethan.pipelinesView', {
|
|
50
|
+
treeDataProvider: pipelinesProvider,
|
|
51
|
+
}), statusBarItem);
|
|
52
|
+
// Register Chat Participant (@ethan)
|
|
53
|
+
const participant = vscode.chat.createChatParticipant('ethan', handleChatRequest);
|
|
54
|
+
participant.iconPath = vscode.Uri.joinPath(context.extensionUri, 'assets', 'icon.png');
|
|
55
|
+
context.subscriptions.push(participant);
|
|
56
|
+
}
|
|
57
|
+
async function handleChatRequest(request, _context, stream, token) {
|
|
58
|
+
const userMessage = request.prompt.trim();
|
|
59
|
+
// Route by explicit /command name or by trigger keyword in the message
|
|
60
|
+
let skill = null;
|
|
61
|
+
if (request.command) {
|
|
62
|
+
// User explicitly selected a Skill via /命令
|
|
63
|
+
skill = index_1.ALL_SKILLS.find((s) => s.name === request.command ||
|
|
64
|
+
s.nameEn === request.command ||
|
|
65
|
+
s.triggers.includes('/' + request.command));
|
|
66
|
+
}
|
|
67
|
+
if (!skill && userMessage) {
|
|
68
|
+
const routeResult = (0, trigger_router_1.routeTrigger)(userMessage);
|
|
69
|
+
skill = routeResult?.skill ?? null;
|
|
70
|
+
}
|
|
71
|
+
if (!skill) {
|
|
72
|
+
// No matching Skill — show the help list
|
|
73
|
+
stream.markdown('## Ethan Skills\n\n');
|
|
74
|
+
stream.markdown('可用 Skill(输入对应触发词或使用 `/命令`):\n\n');
|
|
75
|
+
for (const s of index_1.ALL_SKILLS) {
|
|
76
|
+
stream.markdown(`- **${s.name}**:${s.description}\n`);
|
|
77
|
+
stream.markdown(' 触发词:`' + s.triggers.slice(0, 3).join('`、`') + '`\n\n');
|
|
78
|
+
}
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
if (token.isCancellationRequested)
|
|
82
|
+
return;
|
|
83
|
+
// Stream the Skill execution content
|
|
84
|
+
stream.markdown(`# 执行 Skill:${skill.name}\n\n`);
|
|
85
|
+
stream.markdown(`> ${skill.detailDescription}\n\n`);
|
|
86
|
+
if (userMessage) {
|
|
87
|
+
stream.markdown(`**输入**:${userMessage}\n\n---\n\n`);
|
|
88
|
+
}
|
|
89
|
+
for (const step of skill.steps) {
|
|
90
|
+
if (token.isCancellationRequested)
|
|
91
|
+
return;
|
|
92
|
+
stream.markdown(`${step.title}\n\n${step.content}\n\n`);
|
|
93
|
+
}
|
|
94
|
+
stream.markdown(`---\n\n**输出格式**:${skill.outputFormat}\n`);
|
|
95
|
+
if (skill.notes && skill.notes.length > 0) {
|
|
96
|
+
stream.markdown(`\n**注意事项**:\n`);
|
|
97
|
+
for (const note of skill.notes) {
|
|
98
|
+
stream.markdown(`- ${note}\n`);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
function deactivate() { }
|
|
103
|
+
//# sourceMappingURL=extension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension.js","sourceRoot":"","sources":["../../../src/vscode/extension.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 工作流会话状态管理
|
|
3
|
+
* 持久化到 .ethan/workflow.json
|
|
4
|
+
*/
|
|
5
|
+
import type { SkillDefinition, PipelineDefinition } from '../skills/types';
|
|
6
|
+
export type StepStatus = 'pending' | 'in-progress' | 'done' | 'skipped';
|
|
7
|
+
export interface WorkflowStep {
|
|
8
|
+
skillId: string;
|
|
9
|
+
status: StepStatus;
|
|
10
|
+
/** 用户/AI 填写的本步摘要(作为下一步的上下文输入) */
|
|
11
|
+
summary?: string;
|
|
12
|
+
startedAt?: string;
|
|
13
|
+
completedAt?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface WorkflowSession {
|
|
16
|
+
id: string;
|
|
17
|
+
pipelineId: string;
|
|
18
|
+
pipelineName: string;
|
|
19
|
+
/** 用户最初的任务上下文描述 */
|
|
20
|
+
initialContext: string;
|
|
21
|
+
steps: WorkflowStep[];
|
|
22
|
+
createdAt: string;
|
|
23
|
+
updatedAt: string;
|
|
24
|
+
/** 是否全部完成 */
|
|
25
|
+
completed: boolean;
|
|
26
|
+
}
|
|
27
|
+
/** 读取当前 session */
|
|
28
|
+
export declare function loadSession(cwd?: string): WorkflowSession | null;
|
|
29
|
+
/** 保存 session */
|
|
30
|
+
export declare function saveSession(session: WorkflowSession, cwd?: string): void;
|
|
31
|
+
/** 删除 session(reset) */
|
|
32
|
+
export declare function deleteSession(cwd?: string): void;
|
|
33
|
+
/** 创建新 session */
|
|
34
|
+
export declare function createSession(pipeline: PipelineDefinition, initialContext: string, cwd?: string): WorkflowSession;
|
|
35
|
+
/** 获取当前进行中的步骤(第一个 in-progress 或 pending) */
|
|
36
|
+
export declare function getCurrentStep(session: WorkflowSession): WorkflowStep | null;
|
|
37
|
+
/** 获取当前步骤序号(0-based) */
|
|
38
|
+
export declare function getCurrentStepIndex(session: WorkflowSession): number;
|
|
39
|
+
/** 标记当前步骤完成,推进到下一步,返回新的当前步骤(若无则 null) */
|
|
40
|
+
export declare function markStepDone(session: WorkflowSession, summary: string, cwd?: string): WorkflowStep | null;
|
|
41
|
+
/**
|
|
42
|
+
* 构建某步骤的执行提示词
|
|
43
|
+
* 自动携带:初始任务上下文 + 上一步摘要链
|
|
44
|
+
*/
|
|
45
|
+
export declare function buildStepPrompt(session: WorkflowSession, step: WorkflowStep, skill: SkillDefinition): string;
|
|
46
|
+
/** 计算进度百分比 */
|
|
47
|
+
export declare function calcProgress(session: WorkflowSession): number;
|
|
48
|
+
//# sourceMappingURL=state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/workflow/state.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE3E,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,aAAa,GAAG,MAAM,GAAG,SAAS,CAAC;AAExE,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,UAAU,CAAC;IACnB,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa;IACb,SAAS,EAAE,OAAO,CAAC;CACpB;AASD,mBAAmB;AACnB,wBAAgB,WAAW,CAAC,GAAG,GAAE,MAAsB,GAAG,eAAe,GAAG,IAAI,CAU/E;AAED,iBAAiB;AACjB,wBAAgB,WAAW,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,GAAE,MAAsB,GAAG,IAAI,CAKvF;AAED,wBAAwB;AACxB,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAsB,GAAG,IAAI,CAG/D;AAED,kBAAkB;AAClB,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,kBAAkB,EAC5B,cAAc,EAAE,MAAM,EACtB,GAAG,GAAE,MAAsB,GAC1B,eAAe,CAgBjB;AAED,4CAA4C;AAC5C,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,YAAY,GAAG,IAAI,CAM5E;AAED,wBAAwB;AACxB,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAIpE;AAED,yCAAyC;AACzC,wBAAgB,YAAY,CAC1B,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,MAAM,EACf,GAAG,GAAE,MAAsB,GAC1B,YAAY,GAAG,IAAI,CAkBrB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,eAAe,EACxB,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,eAAe,GACrB,MAAM,CAmCR;AAED,cAAc;AACd,wBAAgB,YAAY,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAG7D"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 工作流会话状态管理
|
|
4
|
+
* 持久化到 .ethan/workflow.json
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
+
var ownKeys = function(o) {
|
|
24
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
+
var ar = [];
|
|
26
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
return ownKeys(o);
|
|
30
|
+
};
|
|
31
|
+
return function (mod) {
|
|
32
|
+
if (mod && mod.__esModule) return mod;
|
|
33
|
+
var result = {};
|
|
34
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
+
__setModuleDefault(result, mod);
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
})();
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.loadSession = loadSession;
|
|
41
|
+
exports.saveSession = saveSession;
|
|
42
|
+
exports.deleteSession = deleteSession;
|
|
43
|
+
exports.createSession = createSession;
|
|
44
|
+
exports.getCurrentStep = getCurrentStep;
|
|
45
|
+
exports.getCurrentStepIndex = getCurrentStepIndex;
|
|
46
|
+
exports.markStepDone = markStepDone;
|
|
47
|
+
exports.buildStepPrompt = buildStepPrompt;
|
|
48
|
+
exports.calcProgress = calcProgress;
|
|
49
|
+
const fs = __importStar(require("fs"));
|
|
50
|
+
const path = __importStar(require("path"));
|
|
51
|
+
const WORKFLOW_DIR = '.ethan';
|
|
52
|
+
const WORKFLOW_FILE = 'workflow.json';
|
|
53
|
+
function getWorkflowPath(cwd) {
|
|
54
|
+
return path.join(cwd, WORKFLOW_DIR, WORKFLOW_FILE);
|
|
55
|
+
}
|
|
56
|
+
/** 读取当前 session */
|
|
57
|
+
function loadSession(cwd = process.cwd()) {
|
|
58
|
+
const filePath = getWorkflowPath(cwd);
|
|
59
|
+
try {
|
|
60
|
+
if (fs.existsSync(filePath)) {
|
|
61
|
+
return JSON.parse(fs.readFileSync(filePath, 'utf-8'));
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
// ignore
|
|
66
|
+
}
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
/** 保存 session */
|
|
70
|
+
function saveSession(session, cwd = process.cwd()) {
|
|
71
|
+
const dir = path.join(cwd, WORKFLOW_DIR);
|
|
72
|
+
if (!fs.existsSync(dir))
|
|
73
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
74
|
+
session.updatedAt = new Date().toISOString();
|
|
75
|
+
fs.writeFileSync(getWorkflowPath(cwd), JSON.stringify(session, null, 2), 'utf-8');
|
|
76
|
+
}
|
|
77
|
+
/** 删除 session(reset) */
|
|
78
|
+
function deleteSession(cwd = process.cwd()) {
|
|
79
|
+
const filePath = getWorkflowPath(cwd);
|
|
80
|
+
if (fs.existsSync(filePath))
|
|
81
|
+
fs.unlinkSync(filePath);
|
|
82
|
+
}
|
|
83
|
+
/** 创建新 session */
|
|
84
|
+
function createSession(pipeline, initialContext, cwd = process.cwd()) {
|
|
85
|
+
const session = {
|
|
86
|
+
id: Date.now().toString(36),
|
|
87
|
+
pipelineId: pipeline.id,
|
|
88
|
+
pipelineName: pipeline.name,
|
|
89
|
+
initialContext,
|
|
90
|
+
steps: pipeline.skillIds.map((skillId, i) => ({
|
|
91
|
+
skillId,
|
|
92
|
+
status: i === 0 ? 'in-progress' : 'pending',
|
|
93
|
+
})),
|
|
94
|
+
createdAt: new Date().toISOString(),
|
|
95
|
+
updatedAt: new Date().toISOString(),
|
|
96
|
+
completed: false,
|
|
97
|
+
};
|
|
98
|
+
saveSession(session, cwd);
|
|
99
|
+
return session;
|
|
100
|
+
}
|
|
101
|
+
/** 获取当前进行中的步骤(第一个 in-progress 或 pending) */
|
|
102
|
+
function getCurrentStep(session) {
|
|
103
|
+
return (session.steps.find((s) => s.status === 'in-progress') ??
|
|
104
|
+
session.steps.find((s) => s.status === 'pending') ??
|
|
105
|
+
null);
|
|
106
|
+
}
|
|
107
|
+
/** 获取当前步骤序号(0-based) */
|
|
108
|
+
function getCurrentStepIndex(session) {
|
|
109
|
+
const step = getCurrentStep(session);
|
|
110
|
+
if (!step)
|
|
111
|
+
return -1;
|
|
112
|
+
return session.steps.indexOf(step);
|
|
113
|
+
}
|
|
114
|
+
/** 标记当前步骤完成,推进到下一步,返回新的当前步骤(若无则 null) */
|
|
115
|
+
function markStepDone(session, summary, cwd = process.cwd()) {
|
|
116
|
+
const idx = getCurrentStepIndex(session);
|
|
117
|
+
if (idx === -1)
|
|
118
|
+
return null;
|
|
119
|
+
session.steps[idx].status = 'done';
|
|
120
|
+
session.steps[idx].summary = summary;
|
|
121
|
+
session.steps[idx].completedAt = new Date().toISOString();
|
|
122
|
+
const nextIdx = idx + 1;
|
|
123
|
+
if (nextIdx < session.steps.length) {
|
|
124
|
+
session.steps[nextIdx].status = 'in-progress';
|
|
125
|
+
session.steps[nextIdx].startedAt = new Date().toISOString();
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
session.completed = true;
|
|
129
|
+
}
|
|
130
|
+
saveSession(session, cwd);
|
|
131
|
+
return nextIdx < session.steps.length ? session.steps[nextIdx] : null;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* 构建某步骤的执行提示词
|
|
135
|
+
* 自动携带:初始任务上下文 + 上一步摘要链
|
|
136
|
+
*/
|
|
137
|
+
function buildStepPrompt(session, step, skill) {
|
|
138
|
+
const stepIdx = session.steps.indexOf(step);
|
|
139
|
+
// 汇总已完成步骤的摘要
|
|
140
|
+
const prevSummaries = session.steps
|
|
141
|
+
.slice(0, stepIdx)
|
|
142
|
+
.filter((s) => s.status === 'done' && s.summary)
|
|
143
|
+
.map((s, i) => `**步骤 ${i + 1} 产出(${s.skillId})**:\n${s.summary}`)
|
|
144
|
+
.join('\n\n');
|
|
145
|
+
const lines = [
|
|
146
|
+
`# 工作流:${session.pipelineName}`,
|
|
147
|
+
`## 当前步骤:${skill.name}(${stepIdx + 1}/${session.steps.length})`,
|
|
148
|
+
'',
|
|
149
|
+
`**任务背景**:${session.initialContext}`,
|
|
150
|
+
];
|
|
151
|
+
if (prevSummaries) {
|
|
152
|
+
lines.push('', '**前序步骤产出**:', prevSummaries);
|
|
153
|
+
}
|
|
154
|
+
lines.push('', `**本步目标**:${skill.description}`, '', '**执行步骤**:', ...skill.steps.map((s, i) => `${i + 1}. ${s.title.replace(/^\d+\.\s*/, '')}`), '', `**输出格式**:${skill.outputFormat}`, '', '---', `> 完成本步后,运行 \`ethan workflow done "你的摘要"\` 进入下一步`);
|
|
155
|
+
return lines.join('\n');
|
|
156
|
+
}
|
|
157
|
+
/** 计算进度百分比 */
|
|
158
|
+
function calcProgress(session) {
|
|
159
|
+
const done = session.steps.filter((s) => s.status === 'done').length;
|
|
160
|
+
return Math.round((done / session.steps.length) * 100);
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/workflow/state.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ethan-skill",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "Ethan - Your AI Workflow Assistant",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai-skill",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"license": "MIT",
|
|
17
17
|
"main": "dist/cli/index.js",
|
|
18
18
|
"bin": {
|
|
19
|
-
"ethan": "
|
|
19
|
+
"ethan": "dist/cli/index.js"
|
|
20
20
|
},
|
|
21
21
|
"files": [
|
|
22
22
|
"dist/",
|
|
@@ -42,17 +42,21 @@
|
|
|
42
42
|
"prepublishOnly": "npm run build:all && npm run lint && npm run test"
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
+
"@clack/prompts": "^1.1.0",
|
|
45
46
|
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
46
47
|
"chalk": "^5.3.0",
|
|
47
48
|
"commander": "^12.0.0",
|
|
48
49
|
"fs-extra": "^11.2.0",
|
|
50
|
+
"js-yaml": "^4.1.1",
|
|
49
51
|
"ora": "^8.0.1"
|
|
50
52
|
},
|
|
51
53
|
"devDependencies": {
|
|
52
54
|
"@changesets/cli": "^2.27.0",
|
|
53
55
|
"@eslint/js": "^9.39.4",
|
|
54
56
|
"@types/fs-extra": "^11.0.4",
|
|
57
|
+
"@types/js-yaml": "^4.0.9",
|
|
55
58
|
"@types/node": "^20.0.0",
|
|
59
|
+
"@types/vscode": "^1.110.0",
|
|
56
60
|
"eslint": "^9.39.4",
|
|
57
61
|
"eslint-config-prettier": "^10.1.8",
|
|
58
62
|
"prettier": "^3.8.1",
|
|
@@ -66,6 +70,6 @@
|
|
|
66
70
|
},
|
|
67
71
|
"repository": {
|
|
68
72
|
"type": "git",
|
|
69
|
-
"url": "https://github.com/aokiz-ek/smart-flow-skill.git"
|
|
73
|
+
"url": "git+https://github.com/aokiz-ek/smart-flow-skill.git"
|
|
70
74
|
}
|
|
71
75
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Ethan v1.
|
|
1
|
+
# Ethan v1.2.0
|
|
2
2
|
|
|
3
|
-
> Auto-generated from src/skills/ | 2026-03-
|
|
3
|
+
> Auto-generated from src/skills/ | 2026-03-22T04:23:04.695Z
|
|
4
4
|
> Do not edit manually. Source: src/skills/
|
|
5
5
|
|
|
6
6
|
## Ethan
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
|
|
22
22
|
**描述**: 深度解析用户需求,消除歧义,输出结构化需求文档
|
|
23
23
|
|
|
24
|
-
**触发词**: `需求理解`, `理解需求`, `分析需求`, `需求分析`, `我需要`, `帮我做`, `实现一个`, `开发一个`, `/需求理解`, `@ethan
|
|
24
|
+
**触发词**: `需求理解`, `理解需求`, `分析需求`, `需求分析`, `我需要`, `帮我做`, `实现一个`, `开发一个`, `/需求理解`, `@ethan 需求`, `requirement analysis`, `analyze requirements`, `@ethan requirement`
|
|
25
25
|
|
|
26
26
|
**执行步骤**:
|
|
27
27
|
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
|
|
85
85
|
**描述**: 将复杂需求拆解为可执行的原子任务,建立依赖关系和优先级
|
|
86
86
|
|
|
87
|
-
**触发词**: `任务拆解`, `拆解任务`, `拆分任务`, `制定计划`, `任务规划`, `怎么实现`, `实现步骤`, `/任务拆解`, `@ethan
|
|
87
|
+
**触发词**: `任务拆解`, `拆解任务`, `拆分任务`, `制定计划`, `任务规划`, `怎么实现`, `实现步骤`, `/任务拆解`, `@ethan 拆解`, `task breakdown`, `break down`, `@ethan breakdown`
|
|
88
88
|
|
|
89
89
|
**执行步骤**:
|
|
90
90
|
|
|
@@ -149,7 +149,7 @@ T02 可与 T01 同时进行
|
|
|
149
149
|
|
|
150
150
|
**描述**: 输出技术方案设计文档,包含架构选择、接口设计、数据模型和关键决策说明
|
|
151
151
|
|
|
152
|
-
**触发词**: `方案设计`, `技术方案`, `架构设计`, `设计方案`, `怎么设计`, `数据库设计`, `接口设计`, `API 设计`, `/方案设计`, `@ethan
|
|
152
|
+
**触发词**: `方案设计`, `技术方案`, `架构设计`, `设计方案`, `怎么设计`, `数据库设计`, `接口设计`, `API 设计`, `/方案设计`, `@ethan 设计`, `solution design`, `tech design`, `@ethan design`
|
|
153
153
|
|
|
154
154
|
**执行步骤**:
|
|
155
155
|
|
|
@@ -211,7 +211,7 @@ Response: { code: 0, data: {...}, message: string }
|
|
|
211
211
|
|
|
212
212
|
**描述**: 按设计方案逐步实现代码,遵循最佳实践,同步记录实现决策
|
|
213
213
|
|
|
214
|
-
**触发词**: `执行实现`, `开始实现`, `写代码`, `编写代码`, `实现功能`, `代码实现`, `开始开发`, `/执行实现`, `@ethan
|
|
214
|
+
**触发词**: `执行实现`, `开始实现`, `写代码`, `编写代码`, `实现功能`, `代码实现`, `开始开发`, `/执行实现`, `@ethan 实现`, `implementation`, `start implementing`, `@ethan implement`
|
|
215
215
|
|
|
216
216
|
**执行步骤**:
|
|
217
217
|
|
|
@@ -271,7 +271,7 @@ Response: { code: 0, data: {...}, message: string }
|
|
|
271
271
|
|
|
272
272
|
**描述**: 实时更新任务状态,识别阻塞风险,保持项目透明度
|
|
273
273
|
|
|
274
|
-
**触发词**: `进度跟踪`, `跟踪进度`, `进度更新`, `更新进度`, `项目进展`, `任务状态`, `完成了什么`, `还剩什么`, `/进度跟踪`, `@ethan
|
|
274
|
+
**触发词**: `进度跟踪`, `跟踪进度`, `进度更新`, `更新进度`, `项目进展`, `任务状态`, `完成了什么`, `还剩什么`, `/进度跟踪`, `@ethan 进度`, `progress tracking`, `progress update`, `@ethan progress`
|
|
275
275
|
|
|
276
276
|
**执行步骤**:
|
|
277
277
|
|
|
@@ -331,7 +331,7 @@ Response: { code: 0, data: {...}, message: string }
|
|
|
331
331
|
|
|
332
332
|
**描述**: 任务完成后生成总结报告,记录成果、问题和经验教训
|
|
333
333
|
|
|
334
|
-
**触发词**: `任务报告`, `生成报告`, `任务总结`, `总结报告`, `完成总结`, `项目总结`, `阶段总结`, `/任务报告`, `@ethan
|
|
334
|
+
**触发词**: `任务报告`, `生成报告`, `任务总结`, `总结报告`, `完成总结`, `项目总结`, `阶段总结`, `/任务报告`, `@ethan 报告`, `task report`, `generate report`, `@ethan report`
|
|
335
335
|
|
|
336
336
|
**执行步骤**:
|
|
337
337
|
|
|
@@ -389,7 +389,7 @@ Response: { code: 0, data: {...}, message: string }
|
|
|
389
389
|
|
|
390
390
|
**描述**: 根据本周工作内容自动生成结构化周报,突出价值而非流水账
|
|
391
391
|
|
|
392
|
-
**触发词**: `周报`, `生成周报`, `写周报`, `周报生成`, `本周总结`, `周总结`, `weekly report`, `/周报`, `@ethan
|
|
392
|
+
**触发词**: `周报`, `生成周报`, `写周报`, `周报生成`, `本周总结`, `周总结`, `weekly report`, `/周报`, `@ethan 周报`, `generate weekly`, `@ethan weekly`
|
|
393
393
|
|
|
394
394
|
**执行步骤**:
|
|
395
395
|
|
|
@@ -457,7 +457,7 @@ Response: { code: 0, data: {...}, message: string }
|
|
|
457
457
|
|
|
458
458
|
**描述**: 系统性审查代码变更,分级输出 Blocker/Major/Minor 问题,提升代码质量
|
|
459
459
|
|
|
460
|
-
**触发词**: `代码审查`, `code review`, `CR`, `帮我 review`, `帮我看看代码`, `审查代码`, `review 一下`, `代码 review`, `/代码审查`, `@ethan review`
|
|
460
|
+
**触发词**: `代码审查`, `code review`, `CR`, `帮我 review`, `帮我看看代码`, `审查代码`, `review 一下`, `代码 review`, `/代码审查`, `@ethan review`, `@ethan code-review`
|
|
461
461
|
|
|
462
462
|
**执行步骤**:
|
|
463
463
|
|
|
@@ -556,7 +556,7 @@ Blocker: X 个 | Major: Y 个 | Minor: Z 个
|
|
|
556
556
|
|
|
557
557
|
**描述**: 系统性排查故障,通过假设验证和 5 Why 定位根因,输出临时/永久/预防三层方案
|
|
558
558
|
|
|
559
|
-
**触发词**: `故障排查`, `debug`, `线上故障`, `报错了`, `排查问题`, `定位 bug`, `为什么报错`, `程序崩溃`, `/故障排查`, `@ethan debug`
|
|
559
|
+
**触发词**: `故障排查`, `debug`, `线上故障`, `报错了`, `排查问题`, `定位 bug`, `为什么报错`, `程序崩溃`, `/故障排查`, `@ethan debug`, `troubleshoot`, `@ethan troubleshoot`
|
|
560
560
|
|
|
561
561
|
**执行步骤**:
|
|
562
562
|
|
|
@@ -665,7 +665,7 @@ Why 5: 为什么没有自动化?→ CI/CD 流程中没有这个步骤
|
|
|
665
665
|
|
|
666
666
|
**描述**: 结构化技术选型:问题定义→方案收集→加权评分矩阵→POC 验证→明确结论
|
|
667
667
|
|
|
668
|
-
**触发词**: `技术调研`, `技术选型`, `POC`, `对比方案`, `选哪个好`, `方案对比`, `调研一下`, `技术评估`, `/技术调研`, `@ethan
|
|
668
|
+
**触发词**: `技术调研`, `技术选型`, `POC`, `对比方案`, `选哪个好`, `方案对比`, `调研一下`, `技术评估`, `/技术调研`, `@ethan 调研`, `tech research`, `tech selection`, `@ethan research`
|
|
669
669
|
|
|
670
670
|
**执行步骤**:
|
|
671
671
|
|
package/rules/cline/.clinerules
CHANGED
|
@@ -1,67 +1,67 @@
|
|
|
1
|
-
# Ethan v1.
|
|
1
|
+
# Ethan v1.2.0
|
|
2
2
|
|
|
3
|
-
Ethan - Your AI Workflow Assistant |
|
|
3
|
+
Ethan - Your AI Workflow Assistant | Generated: 2026-03-22T04:23:04.695Z
|
|
4
4
|
|
|
5
5
|
## Skills
|
|
6
6
|
|
|
7
7
|
### 1. 需求理解
|
|
8
8
|
触发词:需求理解 / 理解需求 / 分析需求
|
|
9
9
|
说明:深度解析用户需求,消除歧义,输出结构化需求文档
|
|
10
|
-
|
|
10
|
+
步骤:提取核心诉求 → 识别歧义与缺失信息 → 假设声明 → 输出结构化需求文档
|
|
11
11
|
输出:Markdown 结构化文档,包含核心目标、功能需求列表、非功能需求、技术约束、待澄清问题和假设声明
|
|
12
12
|
|
|
13
13
|
### 2. 任务拆解
|
|
14
14
|
触发词:任务拆解 / 拆解任务 / 拆分任务
|
|
15
15
|
说明:将复杂需求拆解为可执行的原子任务,建立依赖关系和优先级
|
|
16
|
-
|
|
16
|
+
步骤:识别主要模块 → 拆解为原子任务 → 建立依赖关系 → 输出任务清单
|
|
17
17
|
输出:Markdown 表格 + 任务列表,含模块概览、分阶段任务、依赖关系、关键路径
|
|
18
18
|
|
|
19
19
|
### 3. 方案设计
|
|
20
20
|
触发词:方案设计 / 技术方案 / 架构设计
|
|
21
21
|
说明:输出技术方案设计文档,包含架构选择、接口设计、数据模型和关键决策说明
|
|
22
|
-
|
|
22
|
+
步骤:技术选型 → 架构设计 → 接口设计(API) → 数据模型 → 关键技术决策记录(ADR)
|
|
23
23
|
输出:Markdown 设计文档,含技术选型表、架构图(Mermaid)、API 接口列表、数据模型、ADR 决策记录
|
|
24
24
|
|
|
25
25
|
### 4. 执行实现
|
|
26
26
|
触发词:执行实现 / 开始实现 / 写代码
|
|
27
27
|
说明:按设计方案逐步实现代码,遵循最佳实践,同步记录实现决策
|
|
28
|
-
|
|
28
|
+
步骤:确认实现前提 → 分层实现顺序 → 编码规范执行 → 每完成一个任务后 → 代码自检清单
|
|
29
29
|
输出:代码实现 + 简要说明(实现思路、关键决策),每个任务完成后输出自检清单结果
|
|
30
30
|
|
|
31
31
|
### 5. 进度跟踪
|
|
32
32
|
触发词:进度跟踪 / 跟踪进度 / 进度更新
|
|
33
33
|
说明:实时更新任务状态,识别阻塞风险,保持项目透明度
|
|
34
|
-
|
|
34
|
+
步骤:状态同步 → 阻塞识别与处理 → 完成度统计 → 风险预警 → 下一步行动
|
|
35
35
|
输出:Markdown 状态看板,含任务状态列表、完成度统计、风险矩阵、下一步行动清单
|
|
36
36
|
|
|
37
37
|
### 6. 任务报告
|
|
38
38
|
触发词:任务报告 / 生成报告 / 任务总结
|
|
39
39
|
说明:任务完成后生成总结报告,记录成果、问题和经验教训
|
|
40
|
-
|
|
40
|
+
步骤:成果汇总 → 问题复盘 → 技术债务记录 → 性能与质量指标 → 经验教训(Lessons Learned)
|
|
41
41
|
输出:Markdown 总结报告,含成果汇总、问题复盘表格、技术债务列表、质量指标、Lessons Learned
|
|
42
42
|
|
|
43
43
|
### 7. 周报生成
|
|
44
44
|
触发词:周报 / 生成周报 / 写周报
|
|
45
45
|
说明:根据本周工作内容自动生成结构化周报,突出价值而非流水账
|
|
46
|
-
|
|
46
|
+
步骤:信息收集 → 内容提炼原则 → 输出周报 → 多版本适配
|
|
47
47
|
输出:Markdown 周报文档,含本周成果、技术攻坚、问题风险、下周计划、协调事项
|
|
48
48
|
|
|
49
49
|
### 8. 代码审查
|
|
50
50
|
触发词:代码审查 / code review / CR
|
|
51
51
|
说明:系统性审查代码变更,分级输出 Blocker/Major/Minor 问题,提升代码质量
|
|
52
|
-
|
|
52
|
+
步骤:理解变更意图 → 逐层审查 → 按级别分类问题 → 输出审查报告 → 跟进确认
|
|
53
53
|
输出:Markdown 审查报告,含总体评价、分级问题列表(Blocker/Major/Minor)、亮点肯定和合并建议
|
|
54
54
|
|
|
55
55
|
### 9. 故障排查
|
|
56
56
|
触发词:故障排查 / debug / 线上故障
|
|
57
57
|
说明:系统性排查故障,通过假设验证和 5 Why 定位根因,输出临时/永久/预防三层方案
|
|
58
|
-
|
|
58
|
+
步骤:现象描述 → 建立假设 → 逐一验证 → 5 Why 根因分析 → 输出排查报告
|
|
59
59
|
输出:Markdown 排查报告,含故障概述、时间线、5 Why 根因分析、临时缓解/永久修复/预防措施三层方案和经验教训
|
|
60
60
|
|
|
61
61
|
### 10. 技术调研
|
|
62
62
|
触发词:技术调研 / 技术选型 / POC
|
|
63
63
|
说明:结构化技术选型:问题定义→方案收集→加权评分矩阵→POC 验证→明确结论
|
|
64
|
-
|
|
64
|
+
步骤:问题定义 → 方案收集 → 对比矩阵(加权评分) → POC 验证 → 明确结论
|
|
65
65
|
输出:Markdown 调研报告,含问题定义、候选方案概述、加权评分矩阵、POC 结果(如有)和最终选型结论
|
|
66
66
|
|
|
67
67
|
## 规则
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Ethan v1.
|
|
2
|
-
# Generated: 2026-03-
|
|
3
|
-
# Source: https://github.com/
|
|
1
|
+
# Ethan v1.2.0
|
|
2
|
+
# Generated: 2026-03-22T04:23:04.695Z
|
|
3
|
+
# Source: https://github.com/aokiz-ek/smart-flow-skill
|
|
4
4
|
|
|
5
5
|
Ethan(Continue)。当用户输入以下触发词时,按对应 Skill 的步骤执行。
|
|
6
6
|
|