# export-skills > Export SpecWeave skills to Agent Skills open standard format (agentskills.io). Converts Claude Code plugin skills to portable SKILL.md files compatible with GitHub Copilot, VS Code, Gemini CLI, Cursor, and other Agent Skills-compatible tools. Activates for export skills, agent skills, github skills, skills.md, agentskills, portable skills, convert skills, skill export, cross-platform skills. - Author: Anton Abyzov - Repository: anton-abyzov/specweave - Version: 20260121232534 - Stars: 32 - Forks: 0 - Last Updated: 2026-02-06 - Source: https://github.com/anton-abyzov/specweave - Web: https://mule.run/skillshub/@@anton-abyzov/specweave~export-skills:20260121232534 --- --- name: export-skills description: Export SpecWeave skills to Agent Skills open standard format (agentskills.io). Converts Claude Code plugin skills to portable SKILL.md files compatible with GitHub Copilot, VS Code, Gemini CLI, Cursor, and other Agent Skills-compatible tools. Activates for export skills, agent skills, github skills, skills.md, agentskills, portable skills, convert skills, skill export, cross-platform skills. visibility: public invocableBy: - user allowed-tools: Read, Write, Glob, Bash --- # Export Skills to Agent Skills Standard ## Overview Export SpecWeave skills to the [Agent Skills](https://agentskills.io) open standard format. This enables skill portability across: - **GitHub Copilot** (VS Code integration) - **Gemini CLI** - **Cursor** - **Claude Code** - Other Agent Skills-compatible tools ## Usage ``` /sw:export-skills [options] ``` ### Options | Option | Description | |--------|-------------| | `--output ` | Output directory (default: `.agent-skills/`) | | `--plugin ` | Export specific plugin (default: all) | | `--skill ` | Export specific skill (default: all) | | `--dry-run` | Preview without writing files | | `--validate` | Validate output against Agent Skills spec | ## Output Structure ``` .agent-skills/ ├── architect/ │ └── SKILL.md ├── security/ │ └── SKILL.md ├── qa-lead/ │ └── SKILL.md └── pm/ └── SKILL.md ``` ## Field Mapping | SpecWeave Field | Agent Skills Field | Notes | |-----------------|-------------------|-------| | `name` | `name` | Direct mapping | | `description` | `description` | Direct mapping (max 1024 chars) | | `allowed-tools` | `allowed-tools` | Convert comma to space-delimited | | N/A | `license` | Add `Apache-2.0` by default | | N/A | `compatibility` | Add `"Designed for Claude Code"` | | N/A | `metadata.author` | Use plugin manifest author | | N/A | `metadata.source` | Add `"SpecWeave"` | | `visibility` | (not mapped) | Agent Skills uses file placement | | `invocableBy` | (not mapped) | Agent Skills discovery is implicit | ## Execution Steps ### Step 1: Discover Skills ```bash # Find all SKILL.md files in plugins find plugins -name "SKILL.md" -type f ``` ### Step 2: Convert Each Skill For each SKILL.md: 1. Parse YAML frontmatter 2. Extract description (truncate to 1024 chars if needed) 3. Convert `allowed-tools` from comma to space-delimited 4. Generate Agent Skills-compliant frontmatter 5. Preserve markdown body content ### Step 3: Validate Output Each exported skill must: - Have `name` matching directory name - Have `description` between 1-1024 characters - Have `name` using only `a-z` and `-` - Not have `--` in name - Not start/end with `-` ### Step 4: Write Files Write to output directory with structure: ``` {output}/{skill-name}/SKILL.md ``` ## Conversion Script ```typescript interface SpecWeaveSkill { name: string; description: string; 'allowed-tools'?: string; visibility?: string; invocableBy?: string[]; context?: string; model?: string; } interface AgentSkill { name: string; description: string; license?: string; compatibility?: string; metadata?: Record; 'allowed-tools'?: string; } function convertSkill(specweave: SpecWeaveSkill, pluginName: string): AgentSkill { return { name: specweave.name, description: specweave.description.slice(0, 1024), license: 'Apache-2.0', compatibility: 'Designed for Claude Code (or similar products)', metadata: { author: 'specweave', source: 'SpecWeave', plugin: pluginName }, 'allowed-tools': specweave['allowed-tools']?.replace(/,\s*/g, ' ') }; } ``` ## Example Output Input (`plugins/specweave/skills/architect/SKILL.md`): ```yaml --- name: architect description: System Architect expert... allowed-tools: Read, Write, Edit context: fork model: opus --- ``` Output (`.agent-skills/architect/SKILL.md`): ```yaml --- name: architect description: System Architect expert... license: Apache-2.0 compatibility: Designed for Claude Code (or similar products) metadata: author: specweave source: SpecWeave plugin: sw allowed-tools: Read Write Edit --- ``` ## Post-Export Actions After exporting: 1. **Commit to repo**: Skills can be discovered from any subdirectory 2. **Push to GitHub**: Enable Copilot skill discovery 3. **Publish**: Consider publishing to skill registries ## Limitations - SpecWeave-specific fields (`context`, `model`, `invocableBy`) are not exported - Progressive disclosure phases (sub-files) are not included - Skill memory files are not exported (they're runtime state)