Free tool
Slash command converter
Wrote a /command for one coding agent and want it in another? Paste it in any supported format and get the file path, frontmatter and argument syntax for 8 targets. Formats checked against each vendor's docs on 2026-10-22. Nothing leaves your browser.
Found: 1 argument placeholder, 1 shell command, 0 file references
Detected: Claude Code. Pick the source if this is wrong: $1 means the second argument in Claude Code but the first in OpenCode.
Convert to
Save as: .gemini/commands/fix-issue.toml
description = "Fix a GitHub issue and add a test"
prompt = '''
Fix GitHub issue #{{args}}.
Current branch status:
!{git status --short}
Read the issue, find the cause, fix it, and add a test that fails without the fix.
'''Run it
/fix-issue arg1
Project commands in .gemini/commands/ beat user commands in ~/.gemini/commands/. Run /commands reload after saving.
Format source: Gemini CLI docs.
How placeholders map between agents
| Agent | Project file | All arguments | One argument | Shell output | File contents |
|---|---|---|---|---|---|
| Claude Code | .claude/skills/NAME/SKILL.md | $ARGUMENTS | $0, $1 (from 0) or named $issue | !`cmd` | - |
| Cursor | .cursor/skills/NAME/SKILL.md | not documented | not documented | - | - |
| Gemini CLI | .gemini/commands/NAME.toml | {{args}} | - | !{cmd} | @{path} |
| Qwen Code | .qwen/commands/NAME.md | {{args}} | - | !{cmd} | @{path} |
| VS Code Copilot | .github/prompts/NAME.prompt.md | text after /name | ${input:name} | - | #file:path |
| OpenCode | .opencode/commands/NAME.md | $ARGUMENTS | $1, $2 (from 1) | !`cmd` | @path (v1) |
| Junie | .junie/commands/NAME.md | $prompt | named $file, passed as file=value | - | - |
- Positional arguments count from 0 in Claude Code ($0 is the first) and from 1 in OpenCode ($1 is the first). Pick the source agent in the converter so they map correctly.
- With no placeholder, Claude Code appends ARGUMENTS: your text to the end, and Gemini CLI and Qwen Code append your input after two line breaks.
- Gemini CLI and Qwen Code ask you to confirm before a !{...} command runs, and shell-escape {{args}} inside it.
- Cursor skills need a lowercase name with hyphens that matches the folder. With disable-model-invocation: true the skill only runs when you type /name.
- OpenCode v2 still reads .opencode/commands/*.md, but its docs say stored templates do not expand @path, and subagent replaces subtask.
Related
Sources
Command formats keep changing
Get one email a week when a coding agent changes how its commands, skills or prompt files work.