# 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)