Format Conversion
How Conversion Works
Section titled “How Conversion Works”Syllago uses a hub-and-spoke model. Content in your library is stored in syllago format — a provider-neutral representation that syllago converts to and from each provider’s native format:
Source Provider -> syllago format -> Target ProviderWhen you run syllago install my-skill --to cursor or syllago convert my-rule --to windsurf, syllago:
- Reads the content from your library (already in syllago format)
- Converts to the target provider’s format
- Translates tool names, metadata, and frontmatter automatically
Compatibility Matrix
Section titled “Compatibility Matrix”| Content Type | Coverage | Notes |
|---|---|---|
| Rules | Every provider | Format varies (Markdown, MDC) but content fully preserved |
| Skills | Most providers | Metadata rendering varies by provider capability |
| Agents | Most providers | Codex uses TOML format, Kiro uses Markdown with YAML frontmatter (auto-converted) |
| MCP configs | Every provider | Zed uses context_servers key (handled automatically) |
| Hooks | Many providers | Claude Code, Gemini CLI, Copilot CLI, Cursor, Windsurf, Codex, Cline, Kiro |
| Commands | Many providers | Claude Code, Gemini CLI, Cursor, Copilot CLI, Codex, OpenCode |
| Loadouts | Claude Code (v1) | Additional provider emitters planned |
Provider-Specific Format Notes
Section titled “Provider-Specific Format Notes”Cursor
Section titled “Cursor”Rules are converted to MDC (Markdown Component) format with .mdc extension. Frontmatter fields map to MDC metadata headers.
Agent definitions use TOML format. Syllago auto-converts between TOML and Markdown frontmatter.
Agent definitions use Markdown with YAML frontmatter (14 fields). Also supports a JSON CLI agent format with embedded MCP servers and lifecycle hooks. Rules and skills are Markdown steering files.
Rules use AGENTS.md format with globs array frontmatter. MCP configs use a provider-specific JSON key.
MCP server configs use the context_servers key instead of mcpServers. Syllago handles this mapping automatically.
OpenCode
Section titled “OpenCode”Rules use YAML format. Syllago strips Markdown frontmatter and converts to OpenCode’s YAML structure.
What Gets Preserved
Section titled “What Gets Preserved”- Content body — always preserved in full
- Metadata — mapped to provider-equivalent fields where possible
- Tool names — automatically translated (e.g., Claude Code’s
Readbecomes Gemini’sread_file) - Frontmatter — converted to provider-appropriate format (YAML, TOML, JSON, or embedded as prose)
When metadata can’t be represented in the target format, it’s either embedded as a comment or note in the content body, or reported as a portability warning during conversion.
Portability Warnings
Section titled “Portability Warnings”Both syllago convert and syllago install surface warnings when content uses features unsupported by the target provider. Warnings appear inline in text mode and in the warnings array in JSON mode.
Common warnings include:
- Unsupported hook events (e.g., Gemini’s
before_modelhas no Claude Code equivalent) - Missing capability support (e.g.,
input_rewritenot available on target) - Fields dropped during conversion (e.g.,
disabledToolson MCP servers)
Canonical Tool Names
Section titled “Canonical Tool Names”The canonical format uses provider-neutral tool names:
| Canonical | Claude Code | Gemini CLI | Cursor |
|---|---|---|---|
file_read | Read | read_file | read_file |
file_write | Write | write_file | edit_file |
file_edit | Edit | replace | edit_file |
shell | Bash | run_shell_command | run_terminal_cmd |
search | Grep | grep_search | grep_search |
find | Glob | glob | file_search |
web_fetch | WebFetch | web_fetch | — |
agent | Agent | — | — |
Translation happens automatically during conversion. You never need to manually adjust tool names.
Using the Convert Command
Section titled “Using the Convert Command”# Convert a specific item to stdoutsyllago convert my-skill --to gemini-cli
# Save to a filesyllago convert my-rule --to windsurf --output ./windsurf-rule.md
# JSON output with portability warningssyllago convert my-skill --to cursor --json
# Check compatibility across all providerssyllago compat my-skillHook Conversion
Section titled “Hook Conversion”For hooks specifically, syllago uses the Hook Interchange Format as the canonical representation. This handles:
- Event name translation between providers
- Matcher type conversion (tool vocabulary, regex, MCP targeting)
- Timeout unit normalization (seconds canonical, auto-converts to/from milliseconds)
- Capability degradation (block, warn, or exclude based on target support)
See Also
Section titled “See Also”- Content Types — what each content type supports
- Hook Interchange Format — full hook conversion specification
syllago compat— check provider compatibility