claude-command-converter
All-time installs
1,362
Convert Claude Code commands (.claude/commands/*.md) to standard Agent Skills (skills/*/SKILL.md). Use when migrating slash commands to portable skill format, creating skills from existing commands, or standardizing command definitions across AI runtimes.
Other options
Summary
Convert Claude Code commands (.claude/commands/*.md) to standard Agent Skills (skills/*/SKILL.md). Use when migrating slash commands to portable skill format, creating skills from existing commands, or standardizing command definitions across AI runtimes.
Raw SKILL.md
5,650 bytes---
name: claude-command-converter
description: Convert Claude Code commands (.claude/commands/*.md) to standard Agent Skills (skills/*/SKILL.md). Use when migrating slash commands to portable skill format, creating skills from existing commands, or standardizing command definitions across AI runtimes.
---
# Claude Command Converter
Convert Claude Code commands to standard Agent Skills format for portability across AI coding assistants.
## When to Use
- Migrating existing `.claude/commands/*.md` files to `skills/*/SKILL.md` format.
- Creating portable skills from Claude Code-specific commands.
- Standardizing command definitions for use with Claude Code, Codex CLI, GitHub Copilot, and other runtimes.
## Inputs
- Source command file path (e.g., `.claude/commands/my-command.md`).
- Optional: target skill name (defaults to command filename without extension).
If input is missing, ask for the source command file path.
## Format Differences
### Claude Code Command Format
Location: `.claude/commands/<command-name>.md`
```yaml
---
description: Short description of the command
handoffs:
- label: Next Action
agent: other.command
prompt: Trigger prompt
send: true
---
## User Input
\`\`\`text
$ARGUMENTS
\`\`\`
[Command instructions...]
```
### Standard Agent Skill Format
Location: `skills/<skill-name>/SKILL.md`
```yaml
---
name: skill-name
description: Complete description including what the skill does and when to use it.
---
# Skill Title
## When to Use
- Scenario 1
- Scenario 2
## Inputs
- Required input 1
- Optional input 2
## Workflow
1. Step 1
2. Step 2
...
## Outputs
- Output file 1
- Output file 2
```
## Conversion Workflow
1. **Read the source command** from `.claude/commands/`.
2. **Extract metadata**:
- `description` from YAML frontmatter.
- `handoffs` for related skills/next steps.
- `$ARGUMENTS` handling for inputs.
3. **Determine skill name**:
- Convert `command.name.md` → `command-name` (replace dots with hyphens).
- Use kebab-case for multi-word names.
4. **Create skill directory**: `skills/<skill-name>/`
5. **Transform content** to SKILL.md format:
- **Frontmatter**: Keep `name` and `description` only.
- **Enhance description**: Expand to include when to use the skill.
- **Convert `$ARGUMENTS`**: Document as Inputs section.
- **Structure workflow**: Extract steps into numbered Workflow section.
- **Add "When to Use"**: Derive from command context and description.
- **Add "Outputs"**: List generated files/artifacts.
- **Convert handoffs**: Add "Next Steps" section referencing related skills.
6. **Remove runtime-specific content**:
- Remove `## User Input` section with `$ARGUMENTS` block.
- Remove `handoffs` from frontmatter (move to prose).
- Remove `/command.name` references (use skill names instead).
7. **Validate skill structure**:
- Frontmatter has `name` and `description` only.
- Body has clear sections (When to Use, Inputs, Workflow, Outputs).
- No TODO placeholders remain.
- No runtime-specific variables like `$ARGUMENTS`.
8. **Report conversion result**:
- Source command path.
- Generated skill path.
- Key transformations applied.
- Manual review recommendations.
## Transformation Rules
| Claude Command | Agent Skill |
| ----------------------------- | --------------------------------------------- |
| `$ARGUMENTS` | Inputs section describing expected user input |
| `handoffs:` | Next Steps section with skill references |
| `/command.name` | `skill-name` (kebab-case) |
| `agent: foo.bar` | `foo-bar` skill reference |
| `description:` in frontmatter | `description:` expanded with triggers |
| Inline `## User Input` | Removed; documented in Inputs |
## Example Conversion
**Input**: `.claude/commands/speckit.specify.md`
```yaml
---
description: Create feature specification from natural language.
handoffs:
- label: Build Technical Plan
agent: speckit.plan
---
## User Input
\`\`\`text
$ARGUMENTS
\`\`\`
The text the user typed after `/speckit.specify`...
```
**Output**: `skills/speckit-specify/SKILL.md`
```yaml
---
name: speckit-specify
description: Create or update a feature specification from a natural language feature description.
---
# Spec Kit Specify Skill
## When to Use
- The user wants a new or updated feature spec from a natural language description.
## Inputs
- Feature description from the user.
- Repo context with `.specify/` scripts and templates.
If the description is missing or unclear, ask a targeted question before continuing.
## Workflow
...
## Outputs
- `specs/<feature>/spec.md`
- `specs/<feature>/checklists/requirements.md`
## Next Steps
After generating spec.md:
- **Plan** technical implementation with speckit-plan.
- **Clarify** specification requirements with speckit-clarify.
```
## Key Rules
- Preserve all workflow logic and instructions.
- Remove runtime-specific constructs (`$ARGUMENTS`, `handoffs`, `/slash-commands`).
- Expand terse descriptions to include usage triggers.
- Use imperative voice in workflow steps.
- Keep skills self-contained and portable.
- Don't add extraneous documentation files (README, CHANGELOG, etc.).
## Next Steps
After conversion:
- Review generated SKILL.md for completeness.
- Delete unused example files in `scripts/`, `references/`, `assets/`.
- Update AGENTS.md/CLAUDE.md skill inventory if applicable.
- Create symlinks for runtime integration if needed.
Security audits
SnykPASS
SocketPASS
Gen Agent Trust HubPASS

