# 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 ```typescript 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 ```javascript 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 ```javascript 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 ```javascript 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 ```javascript 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) ```javascript 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) ```javascript 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 ```javascript 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 ```javascript 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 ```javascript 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) ```json { "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 ```json { "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" } } ```