ethan-skill 1.6.0 → 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.
Files changed (42) hide show
  1. package/dist/cli/index.js +21 -21
  2. package/dist/cli/index.js.map +1 -1
  3. package/dist/loader/custom-pipeline-loader.d.ts +15 -0
  4. package/dist/loader/custom-pipeline-loader.d.ts.map +1 -0
  5. package/dist/loader/custom-pipeline-loader.js +131 -0
  6. package/dist/loader/custom-pipeline-loader.js.map +1 -0
  7. package/dist/skills/11-api-design.d.ts +3 -0
  8. package/dist/skills/11-api-design.d.ts.map +1 -0
  9. package/dist/skills/11-api-design.js +214 -0
  10. package/dist/skills/11-api-design.js.map +1 -0
  11. package/dist/skills/12-security-review.d.ts +3 -0
  12. package/dist/skills/12-security-review.d.ts.map +1 -0
  13. package/dist/skills/12-security-review.js +194 -0
  14. package/dist/skills/12-security-review.js.map +1 -0
  15. package/dist/skills/13-deployment.d.ts +3 -0
  16. package/dist/skills/13-deployment.d.ts.map +1 -0
  17. package/dist/skills/13-deployment.js +189 -0
  18. package/dist/skills/13-deployment.js.map +1 -0
  19. package/dist/skills/14-prd.d.ts +3 -0
  20. package/dist/skills/14-prd.d.ts.map +1 -0
  21. package/dist/skills/14-prd.js +214 -0
  22. package/dist/skills/14-prd.js.map +1 -0
  23. package/dist/skills/index.d.ts +4 -0
  24. package/dist/skills/index.d.ts.map +1 -1
  25. package/dist/skills/index.js +17 -1
  26. package/dist/skills/index.js.map +1 -1
  27. package/dist/skills/pipeline.d.ts +2 -1
  28. package/dist/skills/pipeline.d.ts.map +1 -1
  29. package/dist/skills/pipeline.js +41 -3
  30. package/dist/skills/pipeline.js.map +1 -1
  31. package/package.json +1 -1
  32. package/rules/claude-code/CLAUDE.md +640 -2
  33. package/rules/cline/.clinerules +577 -1
  34. package/rules/codebuddy/CODEBUDDY.md +617 -1
  35. package/rules/continue/.continuerules +577 -1
  36. package/rules/copilot/copilot-instructions.md +605 -1
  37. package/rules/cursor/.cursorrules +635 -1
  38. package/rules/cursor/smart-flow.mdc +635 -1
  39. package/rules/jetbrains/smart-flow.md +605 -1
  40. package/rules/lingma/smart-flow.md +614 -2
  41. package/rules/windsurf/.windsurf/rules/smart-flow.md +606 -2
  42. package/rules/zed/smart-flow.rules +573 -1
package/dist/cli/index.js CHANGED
@@ -641,31 +641,37 @@ const pipelineCmd = program
641
641
  .description('Pipeline 链式执行管理');
642
642
  pipelineCmd
643
643
  .command('list')
644
- .description('列出所有可用 Pipeline')
644
+ .description('列出所有可用 Pipeline(内置 + 自定义)')
645
645
  .action(async () => {
646
646
  const { PIPELINES } = await Promise.resolve().then(() => __importStar(require('../skills/pipeline')));
647
+ const customPipelines = loadCustomPipelines(process.cwd());
648
+ const all = [...PIPELINES, ...customPipelines];
647
649
  console.log('\nEthan Pipelines\n');
648
650
  console.log('─'.repeat(60));
649
- for (const p of PIPELINES) {
650
- console.log(`\n${p.id}`);
651
+ for (const p of all) {
652
+ const isCustom = !PIPELINES.find((bp) => bp.id === p.id);
653
+ const tag = isCustom ? ' 🔧 自定义' : '';
654
+ console.log(`\n${p.id}${tag}`);
651
655
  console.log(` 名称:${p.name}`);
652
656
  console.log(` 描述:${p.description}`);
653
657
  console.log(` Skills:${p.skillIds.join(' → ')}`);
654
658
  }
655
659
  console.log('\n' + '─'.repeat(60));
656
- console.log(`Total: ${PIPELINES.length} pipelines`);
660
+ console.log(`Total: ${PIPELINES.length} 内置 + ${customPipelines.length} 自定义 = ${all.length} pipelines`);
657
661
  });
658
662
  pipelineCmd
659
663
  .command('run <name>')
660
664
  .description('按 Pipeline 顺序执行各 Skill 提示')
661
665
  .option('-c, --context <context>', '输入上下文', '')
662
666
  .action(async (name, options) => {
663
- const { resolvePipeline } = await Promise.resolve().then(() => __importStar(require('../skills/pipeline')));
664
- const resolved = resolvePipeline(name);
667
+ const { resolvePipeline, PIPELINES } = await Promise.resolve().then(() => __importStar(require('../skills/pipeline')));
668
+ const customPipelines = loadCustomPipelines(process.cwd());
669
+ const activeSkills = await getActiveSkills();
670
+ const resolved = resolvePipeline(name, customPipelines, activeSkills);
665
671
  if (!resolved) {
666
- const { PIPELINES } = await Promise.resolve().then(() => __importStar(require('../skills/pipeline')));
672
+ const allIds = [...PIPELINES.map((p) => p.id), ...customPipelines.map((p) => p.id)];
667
673
  console.error(`Unknown pipeline: ${name}`);
668
- console.error(`Available: ${PIPELINES.map((p) => p.id).join(' | ')}`);
674
+ console.error(`Available: ${allIds.join(' | ')}`);
669
675
  process.exit(1);
670
676
  }
671
677
  const { pipeline, skills } = resolved;
@@ -3134,23 +3140,17 @@ name: 自定义工作流名称
3134
3140
  description: 这个 Pipeline 的描述
3135
3141
 
3136
3142
  # 引用的 Skill ID 列表(按执行顺序)
3137
- # 可用 Skill ID:requirement-understanding | task-breakdown | solution-design
3138
- # implementation | progress-tracking | task-report | weekly-report
3139
- # code-review | debug | tech-research
3143
+ # 内置 Skill ID:
3144
+ # 需求侧: requirement-understanding, prd
3145
+ # 执行侧: task-breakdown, solution-design, api-design, implementation, deployment
3146
+ # 跟踪侧: progress-tracking
3147
+ # 输出侧: task-report, weekly-report
3148
+ # 质量侧: code-review, debug, tech-research, security-review
3149
+ # 也可以引用 .ethan/skills/ 中的自定义 Skill ID
3140
3150
  skillIds:
3141
3151
  - requirement-understanding
3142
3152
  - solution-design
3143
3153
  - implementation
3144
-
3145
- # (可选)输出结构定义:每个字段对应 AI 需要输出的内容
3146
- # outputSchema:
3147
- # featureSpec:
3148
- # type: string
3149
- # description: 需求规格说明书
3150
- # required: true
3151
- # designDoc:
3152
- # type: string
3153
- # description: 技术方案设计文档
3154
3154
  `;
3155
3155
  fs.writeFileSync(filePath, template, 'utf-8');
3156
3156
  console.log(`\n✅ 自定义 Pipeline 模板已生成:${filePath}`);