Files
Claude-Code-Workflow/.claude/skills/skill-generator/specs/skill-requirements.md
catlog22 9762445876 refactor: Convert skill-generator from Chinese to English and remove emoji icons
- Convert all markdown files from Chinese to English
- Remove all emoji/icon decorations (🔧📋⚙️🏁🔍📚)
- Update all section headers, descriptions, and documentation
- Keep all content logic, structure, code examples unchanged
- Maintain template variables and file paths as-is

Files converted (9 files total):
- SKILL.md: Output structure comments
- templates/skill-md.md: All Chinese descriptions and comments
- specs/reference-docs-spec.md: All section headers and explanations
- phases/01-requirements-discovery.md through 05-validation.md (5 files)
- specs/execution-modes.md, skill-requirements.md, cli-integration.md, scripting-integration.md (4 files)
- templates/sequential-phase.md, autonomous-orchestrator.md, autonomous-action.md, code-analysis-action.md, llm-action.md, script-template.md (6 files)

All 16 files in skill-generator are now fully in English.
2026-01-29 15:42:46 +08:00

13 KiB

Skill Requirements Specification

Requirements collection specification for new Skill creation.


Required Information

1. Basic Information

Field Type Required Description
skill_name string Yes Skill identifier (lowercase with hyphens)
display_name string Yes Display name
description string Yes One-sentence description
triggers string[] Yes List of trigger keywords

2. Execution Mode

Field Type Required Description
execution_mode enum Yes sequential | autonomous | hybrid
phase_count number Conditional Number of phases in Sequential mode
action_count number Conditional Number of actions in Autonomous mode

2.5 Context Strategy (P0 Enhancement)

Field Type Required Description
context_strategy enum Yes file | memory

Strategy Comparison:

Strategy Persistence Debuggable Recoverable Applicable Scenarios
file Yes Yes Yes Complex multi-phase tasks (recommended)
memory No No No Simple linear tasks

2.6 LLM Integration Configuration (P1 Enhancement)

Field Type Required Description
llm_integration object Optional LLM invocation configuration
llm_integration.enabled boolean - Enable LLM invocation
llm_integration.default_tool enum - gemini | qwen | codex
llm_integration.fallback_chain string[] - Fallback tool chain on failure

3. Tool Dependencies

Field Type Required Description
allowed_tools string[] Yes List of allowed tools
mcp_tools string[] Optional Required MCP tools

4. Output Configuration

Field Type Required Description
output_format enum Yes markdown | html | json
output_location string Yes Output directory pattern

Configuration File Structure

interface SkillConfig {
  // Basic information
  skill_name: string;           // "my-skill"
  display_name: string;         // "My Skill"
  description: string;          // "One-sentence description"
  triggers: string[];           // ["keyword1", "keyword2"]

  // Execution mode
  execution_mode: 'sequential' | 'autonomous' | 'hybrid';

  // Context strategy (P0 Enhancement)
  context_strategy: 'file' | 'memory';  // Default: 'file'

  // LLM Integration Configuration (P1 Enhancement)
  llm_integration?: {
    enabled: boolean;                    // Enable LLM invocation
    default_tool: 'gemini' | 'qwen' | 'codex';
    fallback_chain: string[];            // ['gemini', 'qwen', 'codex']
    mode: 'analysis' | 'write';          // Default mode
  };

  // Sequential mode configuration
  sequential_config?: {
    phases: Array<{
      id: string;               // "01-init"
      name: string;             // "Initialization"
      description: string;      // "Collect initial configuration"
      input: string[];          // Input dependencies
      output: string;           // Output file
    }>;
  };

  // Autonomous mode configuration
  autonomous_config?: {
    state_schema: {
      fields: Array<{
        name: string;
        type: string;
        description: string;
      }>;
    };
    actions: Array<{
      id: string;               // "action-init"
      name: string;             // "Initialize"
      description: string;      // "Initialize state"
      preconditions: string[];  // Preconditions
      effects: string[];        // Execution effects
    }>;
    termination_conditions: string[];
  };

  // Tool dependencies
  allowed_tools: string[];      // ["Task", "Read", "Write", ...]
  mcp_tools?: string[];         // ["mcp__chrome__*"]

  // Output configuration
  output: {
    format: 'markdown' | 'html' | 'json';
    location: string;           // ".workflow/.scratchpad/{skill}-{timestamp}"
    filename_pattern: string;   // "{name}-output.{ext}"
  };

  // Quality configuration
  quality?: {
    dimensions: string[];       // ["completeness", "consistency", ...]
    pass_threshold: number;     // 80
  };

  // Metadata
  created_at: string;
  version: string;
}

Requirements Collection Questions

Phase 1: Basic Information

AskUserQuestion({
  questions: [
    {
      question: "What is the Skill name? (English, lowercase with hyphens)",
      header: "Skill Name",
      multiSelect: false,
      options: [
        { label: "Auto-generate", description: "Auto-generate name from description" },
        { label: "Manual input", description: "Enter custom name" }
      ]
    },
    {
      question: "What is the primary purpose of this Skill?",
      header: "Purpose Type",
      multiSelect: false,
      options: [
        { label: "Document Generation", description: "Generate Markdown/HTML documents" },
        { label: "Code Analysis", description: "Analyze code structure, quality, security" },
        { label: "Interactive Management", description: "Manage Issues, tasks, workflows" },
        { label: "Data Processing", description: "ETL, transformation, report generation" },
        { label: "Custom", description: "Other purposes" }
      ]
    }
  ]
});

Phase 2: Execution Mode

AskUserQuestion({
  questions: [
    {
      question: "Select execution mode:",
      header: "Execution Mode",
      multiSelect: false,
      options: [
        {
          label: "Sequential (Fixed Order)",
          description: "Phases execute in fixed order, suitable for pipeline tasks (recommended)"
        },
        {
          label: "Autonomous (Dynamic)",
          description: "Dynamically select execution path, suitable for interactive tasks"
        },
        {
          label: "Hybrid (Mixed)",
          description: "Fixed initialization and finalization, flexible middle interaction"
        }
      ]
    }
  ]
});

Phase 3: Phase/Action Definition

Sequential Mode

AskUserQuestion({
  questions: [
    {
      question: "How many execution phases do you need?",
      header: "Phase Count",
      multiSelect: false,
      options: [
        { label: "3 phases", description: "Simple: Collect → Process → Output" },
        { label: "5 phases", description: "Standard: Collect → Explore → Analyze → Assemble → Validate" },
        { label: "7 phases", description: "Complete: Include parallel processing and iterative optimization" },
        { label: "Custom", description: "Manually specify phases" }
      ]
    }
  ]
});

Autonomous Mode

AskUserQuestion({
  questions: [
    {
      question: "What are the core actions?",
      header: "Action Definition",
      multiSelect: true,
      options: [
        { label: "Initialize (init)", description: "Set initial state" },
        { label: "List (list)", description: "Display current items" },
        { label: "Create (create)", description: "Create new item" },
        { label: "Edit (edit)", description: "Modify existing item" },
        { label: "Delete (delete)", description: "Delete item" },
        { label: "Complete (complete)", description: "Complete task" }
      ]
    }
  ]
});

Phase 4: Context Strategy (P0 Enhancement)

AskUserQuestion({
  questions: [
    {
      question: "Select context management strategy:",
      header: "Context Strategy",
      multiSelect: false,
      options: [
        {
          label: "File Strategy (file)",
          description: "Persist to .scratchpad, supports debugging and recovery (recommended)"
        },
        {
          label: "Memory Strategy (memory)",
          description: "Keep only at runtime, fast but no recovery"
        }
      ]
    }
  ]
});

Phase 5: LLM Integration (P1 Enhancement)

AskUserQuestion({
  questions: [
    {
      question: "Do you need LLM invocation capability?",
      header: "LLM Integration",
      multiSelect: false,
      options: [
        {
          label: "Enable LLM Invocation",
          description: "Use gemini/qwen/codex for analysis or generation"
        },
        {
          label: "Not needed",
          description: "Only use local tools"
        }
      ]
    }
  ]
});

// If LLM enabled
if (llmEnabled) {
  AskUserQuestion({
    questions: [
      {
        question: "Select default LLM tool:",
        header: "LLM Tool",
        multiSelect: false,
        options: [
          { label: "Gemini", description: "Large context, suitable for analysis tasks (recommended)" },
          { label: "Qwen", description: "Strong code generation capability" },
          { label: "Codex", description: "Strong autonomous execution, suitable for implementation tasks" }
        ]
      }
    ]
  });
}

Phase 6: Tool Dependencies

AskUserQuestion({
  questions: [
    {
      question: "What tools do you need?",
      header: "Tool Selection",
      multiSelect: true,
      options: [
        { label: "Basic tools", description: "Task, Read, Write, Glob, Grep, Bash" },
        { label: "User interaction", description: "AskUserQuestion" },
        { label: "Chrome screenshot", description: "mcp__chrome__*" },
        { label: "External search", description: "mcp__exa__search" },
        { label: "CCW CLI invocation", description: "ccw cli (gemini/qwen/codex)" }
      ]
    }
  ]
});

Validation Rules

Name Validation

function validateSkillName(name) {
  const rules = [
    { test: /^[a-z][a-z0-9-]*$/, msg: "Must start with lowercase letter, only contain lowercase letters, digits, hyphens" },
    { test: /^.{3,30}$/, msg: "Length 3-30 characters" },
    { test: /^(?!.*--)/, msg: "Cannot have consecutive hyphens" },
    { test: /[^-]$/, msg: "Cannot end with hyphen" }
  ];

  for (const rule of rules) {
    if (!rule.test.test(name)) {
      return { valid: false, error: rule.msg };
    }
  }
  return { valid: true };
}

Configuration Validation

function validateSkillConfig(config) {
  const errors = [];

  // Required fields
  if (!config.skill_name) errors.push("Missing skill_name");
  if (!config.description) errors.push("Missing description");
  if (!config.execution_mode) errors.push("Missing execution_mode");

  // Mode-specific validation
  if (config.execution_mode === 'sequential') {
    if (!config.sequential_config?.phases?.length) {
      errors.push("Sequential mode requires phases definition");
    }
  } else if (config.execution_mode === 'autonomous') {
    if (!config.autonomous_config?.actions?.length) {
      errors.push("Autonomous mode requires actions definition");
    }
  }

  return { valid: errors.length === 0, errors };
}

Example Configurations

Sequential Mode Example (Enhanced)

{
  "skill_name": "api-docs-generator",
  "display_name": "API Docs Generator",
  "description": "Generate API documentation from source code",
  "triggers": ["generate api docs", "api documentation"],
  "execution_mode": "sequential",
  "context_strategy": "file",
  "llm_integration": {
    "enabled": true,
    "default_tool": "gemini",
    "fallback_chain": ["gemini", "qwen"],
    "mode": "analysis"
  },
  "sequential_config": {
    "phases": [
      {
        "id": "01-scan",
        "name": "Code Scanning",
        "output": "endpoints.json",
        "agent": { "type": "universal-executor", "run_in_background": false }
      },
      {
        "id": "02-analyze",
        "name": "LLM Analysis",
        "output": "analysis.json",
        "agent": { "type": "llm", "tool": "gemini", "mode": "analysis" }
      },
      {
        "id": "03-generate",
        "name": "Doc Generation",
        "output": "api-docs.md",
        "agent": { "type": "universal-executor", "run_in_background": false }
      }
    ]
  },
  "allowed_tools": ["Task", "Read", "Write", "Glob", "Grep", "Bash"],
  "output": {
    "format": "markdown",
    "location": ".workflow/.scratchpad/api-docs-{timestamp}",
    "filename_pattern": "{name}-api-docs.md"
  }
}

Autonomous Mode Example

{
  "skill_name": "task-manager",
  "display_name": "Task Manager",
  "description": "Interactive task management with CRUD operations",
  "triggers": ["manage tasks", "task list", "create task"],
  "execution_mode": "autonomous",
  "autonomous_config": {
    "state_schema": {
      "fields": [
        { "name": "tasks", "type": "Task[]", "description": "Task list" },
        { "name": "current_view", "type": "string", "description": "Current view" }
      ]
    },
    "actions": [
      { "id": "action-list", "name": "List Tasks", "preconditions": [], "effects": ["Display task list"] },
      { "id": "action-create", "name": "Create Task", "preconditions": [], "effects": ["Add new task"] },
      { "id": "action-edit", "name": "Edit Task", "preconditions": ["task_selected"], "effects": ["Update task"] },
      { "id": "action-delete", "name": "Delete Task", "preconditions": ["task_selected"], "effects": ["Delete task"] }
    ],
    "termination_conditions": ["user_exit", "error_limit"]
  },
  "allowed_tools": ["Task", "AskUserQuestion", "Read", "Write"],
  "output": {
    "format": "json",
    "location": ".workflow/.scratchpad/tasks",
    "filename_pattern": "tasks.json"
  }
}