Files
Claude-Code-Workflow/.claude/skills/skill-generator/phases/01-requirements-discovery.md
catlog22 3998d24e32 Enhance skill generator documentation and templates
- Updated Phase 1 and Phase 2 documentation to include next phase links and data flow details.
- Expanded Phase 5 documentation to include comprehensive validation and README generation steps, along with validation report structure.
- Added purpose and usage context sections to various action and script templates (e.g., autonomous-action, llm-action, script-bash).
- Improved commands management by simplifying the command scanning logic and enabling/disabling commands through renaming files.
- Enhanced dashboard command manager to format group names and display nested groups with appropriate icons and colors.
- Updated LiteLLM executor to allow model overrides during execution.
- Added action reference guide and template reference sections to the skill-tuning SKILL.md for better navigation and understanding.
2026-01-28 20:34:03 +08:00

6.9 KiB
Raw Blame History

Step 1: 基本信息收集

const basicInfo = await AskUserQuestion({
  questions: [
    {
      question: "新 Skill 的名称是什么?(英文,小写-连字符格式,如 'api-docs'",
      header: "Skill 名称",
      multiSelect: false,
      options: [
        { label: "自动生成", description: "根据后续描述自动生成名称" },
        { label: "手动输入", description: "现在输入自定义名称" }
      ]
    },
    {
      question: "Skill 的主要用途是什么?",
      header: "用途类型",
      multiSelect: false,
      options: [
        { label: "文档生成", description: "生成 Markdown/HTML 文档(如手册、报告)" },
        { label: "代码分析", description: "分析代码结构、质量、安全性" },
        { label: "交互管理", description: "管理 Issue、任务、工作流CRUD 操作)" },
        { label: "数据处理", description: "ETL、格式转换、报告生成" }
      ]
    }
  ]
});

// 如果选择手动输入,进一步询问
if (basicInfo["Skill 名称"] === "手动输入") {
  // 用户会在 "Other" 中输入
}

// 根据用途类型推断描述模板
const purposeTemplates = {
  "文档生成": "Generate {type} documents from {source}",
  "代码分析": "Analyze {target} for {purpose}",
  "交互管理": "Manage {entity} with interactive operations",
  "数据处理": "Process {data} and generate {output}"
};

Step 2: 执行模式选择

const modeInfo = await AskUserQuestion({
  questions: [
    {
      question: "选择执行模式:",
      header: "执行模式",
      multiSelect: false,
      options: [
        { 
          label: "Sequential (顺序模式)", 
          description: "阶段按固定顺序执行(收集→分析→生成),适合流水线任务(推荐)" 
        },
        { 
          label: "Autonomous (自主模式)", 
          description: "动态选择执行路径,适合交互式任务(如 Issue 管理)" 
        },
        { 
          label: "Hybrid (混合模式)", 
          description: "初始化和收尾固定,中间交互灵活" 
        }
      ]
    }
  ]
});

const executionMode = modeInfo["执行模式"].includes("Sequential") ? "sequential" :
                      modeInfo["执行模式"].includes("Autonomous") ? "autonomous" : "hybrid";

Step 3: 阶段/动作定义

Sequential 模式

if (executionMode === "sequential") {
  const phaseInfo = await AskUserQuestion({
    questions: [
      {
        question: "需要多少个执行阶段?",
        header: "阶段数量",
        multiSelect: false,
        options: [
          { label: "3 阶段(简单)", description: "收集 → 处理 → 输出" },
          { label: "5 阶段(标准)", description: "收集 → 探索 → 分析 → 组装 → 验证" },
          { label: "7 阶段(完整)", description: "含并行处理、汇总、迭代优化" }
        ]
      }
    ]
  });
  
  // 根据选择生成阶段定义
  const phaseTemplates = {
    "3 阶段": [
      { id: "01-collection", name: "Data Collection" },
      { id: "02-processing", name: "Processing" },
      { id: "03-output", name: "Output Generation" }
    ],
    "5 阶段": [
      { id: "01-collection", name: "Requirements Collection" },
      { id: "02-exploration", name: "Project Exploration" },
      { id: "03-analysis", name: "Deep Analysis" },
      { id: "04-assembly", name: "Document Assembly" },
      { id: "05-validation", name: "Validation" }
    ],
    "7 阶段": [
      { id: "01-collection", name: "Requirements Collection" },
      { id: "02-exploration", name: "Project Exploration" },
      { id: "03-parallel", name: "Parallel Analysis" },
      { id: "03.5-consolidation", name: "Consolidation" },
      { id: "04-assembly", name: "Document Assembly" },
      { id: "05-refinement", name: "Iterative Refinement" },
      { id: "06-output", name: "Final Output" }
    ]
  };
}

Autonomous 模式

if (executionMode === "autonomous") {
  const actionInfo = await AskUserQuestion({
    questions: [
      {
        question: "核心动作有哪些?(可多选)",
        header: "动作定义",
        multiSelect: true,
        options: [
          { label: "初始化 (init)", description: "设置初始状态" },
          { label: "列表 (list)", description: "显示当前项目列表" },
          { label: "创建 (create)", description: "创建新项目" },
          { label: "编辑 (edit)", description: "修改现有项目" },
          { label: "删除 (delete)", description: "删除项目" },
          { label: "搜索 (search)", description: "搜索/过滤项目" }
        ]
      }
    ]
  });
}

Step 4: 工具和输出配置

const toolsInfo = await AskUserQuestion({
  questions: [
    {
      question: "需要哪些特殊工具?(基础工具已默认包含)",
      header: "工具选择",
      multiSelect: true,
      options: [
        { label: "用户交互 (AskUserQuestion)", description: "需要与用户对话" },
        { label: "Chrome 截图 (mcp__chrome__*)", description: "需要网页截图" },
        { label: "外部搜索 (mcp__exa__search)", description: "需要搜索外部信息" },
        { label: "无特殊需求", description: "仅使用基础工具" }
      ]
    },
    {
      question: "输出格式是什么?",
      header: "输出格式",
      multiSelect: false,
      options: [
        { label: "Markdown", description: "适合文档和报告" },
        { label: "HTML", description: "适合交互式文档" },
        { label: "JSON", description: "适合数据和配置" }
      ]
    }
  ]
});

Step 5: 生成配置文件

const config = {
  skill_name: skillName,
  display_name: displayName,
  description: description,
  triggers: triggers,
  execution_mode: executionMode,
  
  // 模式特定配置
  ...(executionMode === "sequential" ? {
    sequential_config: { phases: phases }
  } : {
    autonomous_config: { 
      state_schema: stateSchema,
      actions: actions,
      termination_conditions: ["user_exit", "error_limit", "task_completed"]
    }
  }),
  
  allowed_tools: [
    "Task", "Read", "Write", "Glob", "Grep", "Bash",
    ...selectedTools
  ],
  
  output: {
    format: outputFormat.toLowerCase(),
    location: `.workflow/.scratchpad/${skillName}-{timestamp}`,
    filename_pattern: `{name}-output.${outputFormat === "HTML" ? "html" : outputFormat === "JSON" ? "json" : "md"}`
  },
  
  created_at: new Date().toISOString(),
  version: "1.0.0"
};

// 写入配置文件
const workDir = `.workflow/.scratchpad/skill-gen-${timestamp}`;
Bash(`mkdir -p "${workDir}"`);
Write(`${workDir}/skill-config.json`, JSON.stringify(config, null, 2));

Next Phase

Phase 2: Structure Generation

Data Flow to Phase 2:

  • skill-config.json with all configuration parameters
  • Execution mode decision drives directory structure creation