This is the abridged developer documentation for syllago
# Welcome to syllago
> The package manager for AI coding tool content.
[Source](/)
[Installation ](/getting-started/installation.md)Install syllago and set up your first project. [Quick Start ](/getting-started/quick-start.md)Get up and running in under 5 minutes. [CLI Reference ](/using-syllago/cli-reference.md)Full reference for every syllago command. [Supported Providers ](/using-syllago/providers.md)See every supported AI coding tool.
# Registry Privacy
> How syllago prevents accidental leakage of content from private registries to public destinations.
[Source](/advanced/registry-privacy/)
Syllago includes a privacy gate system to prevent accidental leakage of content from private registries to public destinations. This is a soft gate — it prevents mistakes, not intentional circumvention. ## How It Works [Section titled “How It Works”](#how-it-works) The privacy gate operates in four layers: ### 1. Detection [Section titled “1. Detection”](#1-detection) When you add a registry, syllago determines its visibility: * **API probes**: Checks GitHub, GitLab, or Bitbucket APIs for the repository’s privacy status * **Manifest field**: An optional `visibility` field in `registry.yaml` provides explicit control * **Default**: Unknown visibility defaults to **private** (safe default) ### 2. Tainting [Section titled “2. Tainting”](#2-tainting) Content imported from private registries receives permanent metadata: ```yaml source_registry: my-private-registry source_visibility: private ``` These fields persist through the content’s entire lifecycle in your library. They are not removed by editing, re-importing from a different path, or any other library operation. ### 3. Enforcement (Four Gates) [Section titled “3. Enforcement (Four Gates)”](#3-enforcement-four-gates) | Gate | Command | Behavior | | ---- | ------------------------- | ---------------------------------------------------------------------- | | G1 | `syllago publish` | **Blocks** publishing tainted content to public registries | | G2 | `syllago share` | **Blocks** sharing tainted content to public repos | | G3 | `syllago loadout create` | **Warns** when loadout contains private items | | G4 | `syllago loadout publish` | **Blocks** publishing loadouts with private items to public registries | The `sync-and-export` command also warns when installing private-tainted content. ### 4. Scope [Section titled “4. Scope”](#4-scope) Soft Gate The privacy gate prevents accidental leakage through syllago commands. It does **not** prevent: * Direct filesystem operations (copy/paste) * Direct git commands * Content modification after export There is no override flag by design. To remove the taint, re-add the content from a public source. ## Removing Taint [Section titled “Removing Taint”](#removing-taint) The only way to remove privacy taint is to re-add the content from a public source: ```bash # Remove the tainted version syllago remove my-private-skill # Re-add from a public registry or provider syllago add skills/my-skill --from claude-code ``` ## Team Workflows [Section titled “Team Workflows”](#team-workflows) ### Private team registry [Section titled “Private team registry”](#private-team-registry) If your team uses a private registry for internal content: 1. Content added from the private registry is automatically tainted 2. Team members can freely install tainted content to their providers 3. Tainted content cannot be accidentally published to public registries 4. To share content publicly, create it fresh or re-add from a public source ### Mixed public/private [Section titled “Mixed public/private”](#mixed-publicprivate) If you use both public and private registries: ```bash # Check which registries are private syllago registry list # Inspect an item's taint status syllago inspect my-skill --json | jq '.source_visibility' ``` ## See Also [Section titled “See Also”](#see-also) * [Registries](/using-syllago/collections/registries.md) — managing git-based registries * `syllago publish` — contributing to registries * [Team Setup](/advanced/team-setup.md) — configuring syllago for team use
# Sandbox
> Run AI CLI tools in bubblewrap isolation with filesystem, network, and environment variable filtering.
[Source](/advanced/sandbox/)
The sandbox runs AI CLI tools inside a [bubblewrap](https://github.com/containers/bubblewrap) (bwrap) container that restricts filesystem access, network egress, and environment variables. When an AI tool executes code — installing packages, running scripts, making API calls — the sandbox limits what that code can reach. Linux only. macOS and Windows are not supported. ## What gets sandboxed [Section titled “What gets sandboxed”](#what-gets-sandboxed) The sandbox enforces three boundaries: **Filesystem.** The sandboxed process can only see your current working directory. The rest of the filesystem is hidden. This prevents AI-generated code from reading or modifying files outside the project. **Network.** Outbound connections are blocked by default. You explicitly allow specific domains (for API calls) and localhost ports (for local dev servers). Everything else is denied. **Environment variables.** Only env vars you explicitly allow are passed into the sandbox. API keys, tokens, and other secrets in your shell environment stay outside unless you opt them in. ## Prerequisites [Section titled “Prerequisites”](#prerequisites) Two system packages must be installed: * **bubblewrap** (`bwrap`) >= 0.4.0 — the container runtime * **socat** >= 1.7.0 — used for network proxying through the sandbox boundary Install them with your system package manager: ```bash # Debian / Ubuntu sudo apt install bubblewrap socat # Fedora sudo dnf install bubblewrap socat # Arch sudo pacman -S bubblewrap socat ``` Verify everything is ready: ```bash syllago sandbox check ``` To also verify that a specific provider works inside the sandbox: ```bash syllago sandbox check claude-code ``` ## Running a provider in the sandbox [Section titled “Running a provider in the sandbox”](#running-a-provider-in-the-sandbox) Once prerequisites are in place, run any provider inside the sandbox: ```bash syllago sandbox run claude-code ``` This starts the provider with filesystem, network, and env var restrictions active. The provider works normally from the user’s perspective, but its access is constrained to what you’ve allowed. ### One-off overrides [Section titled “One-off overrides”](#one-off-overrides) You can extend the sandbox for a single session without changing your saved configuration: ```bash # Allow an extra domain for this session only syllago sandbox run claude-code --allow-domain api.example.com # Forward an extra env var into the sandbox syllago sandbox run claude-code --allow-env MY_API_KEY # Allow a localhost port (e.g., a local dev server) syllago sandbox run claude-code --allow-port 3000 # Mount an additional path read-only syllago sandbox run claude-code --mount-ro /usr/share/dict # Block all network (no proxy at all) syllago sandbox run claude-code --no-network ``` These flags can be combined and repeated. ## Configuring allowed access [Section titled “Configuring allowed access”](#configuring-allowed-access) The sandbox maintains persistent allowlists for domains, ports, and env vars. These apply every time you run `sandbox run`. ### Domains [Section titled “Domains”](#domains) Domains control which hosts the sandboxed process can reach over the network. ```bash # Allow a domain syllago sandbox allow-domain api.anthropic.com # Remove a domain syllago sandbox deny-domain api.anthropic.com # List all allowed domains syllago sandbox domains ``` ### Localhost ports [Section titled “Localhost ports”](#localhost-ports) Ports control which localhost services are reachable from inside the sandbox. Useful for local dev servers, databases, or other services running on your machine. ```bash # Allow a port syllago sandbox allow-port 8080 # Remove a port syllago sandbox deny-port 8080 # List all allowed ports syllago sandbox ports ``` ### Environment variables [Section titled “Environment variables”](#environment-variables) Env vars control which shell variables are passed into the sandbox. By default, none are forwarded — the sandbox starts with a clean environment. ```bash # Allow an env var syllago sandbox allow-env ANTHROPIC_API_KEY # Remove an env var syllago sandbox deny-env ANTHROPIC_API_KEY # List all allowed env vars syllago sandbox env ``` ## Inspecting the configuration [Section titled “Inspecting the configuration”](#inspecting-the-configuration) To see the effective sandbox configuration (all allowed domains, ports, and env vars): ```bash syllago sandbox info ``` To see the configuration that would apply to a specific provider: ```bash syllago sandbox info claude-code ``` ## Typical setup [Section titled “Typical setup”](#typical-setup) A practical setup for using Claude Code in the sandbox: ```bash # 1. Check prerequisites syllago sandbox check claude-code # 2. Allow the API endpoint syllago sandbox allow-domain api.anthropic.com # 3. Pass through the API key syllago sandbox allow-env ANTHROPIC_API_KEY # 4. Allow a local dev server if needed syllago sandbox allow-port 3000 # 5. Run it syllago sandbox run claude-code ``` After initial setup, step 5 is the only one you repeat. The allowlists persist across sessions. ## Related [Section titled “Related”](#related) * [CLI reference: sandbox commands](/using-syllago/cli-reference/sandbox.md) — full flag and option details for all sandbox subcommands * [CLI reference: sandbox run](/using-syllago/cli-reference/sandbox-run.md) — all flags for `sandbox run` * [CLI reference: sandbox check](/using-syllago/cli-reference/sandbox-check.md) — prerequisite verification
# Team Setup
> Share and standardize AI coding tool configurations across your team with syllago.
[Source](/advanced/team-setup/)
Teams use syllago to maintain consistent AI coding tool configurations — shared rules, skills, agents, and provider settings — without manual setup on each developer’s machine. The core workflow centers on registries for distribution, loadouts for onboarding, and project-level config for per-repo settings. ## Team registry [Section titled “Team registry”](#team-registry) A [registry](/using-syllago/collections/registries.md) is a git repo that holds shared syllago content. This is the primary mechanism for distributing team standards. ### Setting up a team registry [Section titled “Setting up a team registry”](#setting-up-a-team-registry) 1. Create a git repo (GitHub, GitLab, etc.) 2. Add syllago content — rules, skills, agents, hooks, MCP configs — following the standard directory layout 3. Push to your git host 4. Share the URL with your team There is no special initialization or registry-specific metadata. Any git repo with syllago’s content structure works as a registry. ### Team members subscribe [Section titled “Team members subscribe”](#team-members-subscribe) Each team member adds the registry once: ```bash syllago registry add https://github.com/your-org/syllago-registry.git ``` To pin everyone to a stable release: ```bash syllago registry add https://github.com/your-org/syllago-registry.git --ref v1.0 ``` ### Staying up to date [Section titled “Staying up to date”](#staying-up-to-date) Sync periodically to pull the latest content: ```bash syllago registry sync ``` Syncing updates the local clone only — it does not modify anyone’s library or installed content. Team members choose when to pull updates into their own setup, keeping the workflow predictable. ## Contributing back [Section titled “Contributing back”](#contributing-back) Registries are not read-only. When a team member creates content that belongs in the shared registry, they contribute it via PR: ```bash syllago publish useful-skill --registry your-registry ``` This creates a branch in the registry clone, copies the content, commits, pushes, and opens a pull request if the `gh` CLI is installed. The registry maintainer reviews and merges through the normal PR workflow — no special tooling required on their end. For sharing directly with a team repo (without a registry), use `syllago share`: ```bash syllago share useful-skill ``` This means team standards can evolve from the bottom up. Individual developers experiment locally, and the best content gets published to the shared registry for everyone. ## Loadouts for onboarding [Section titled “Loadouts for onboarding”](#loadouts-for-onboarding) A [loadout](/using-syllago/collections/loadouts.md) bundles multiple content items into a single apply-as-a-unit configuration. For team onboarding, this turns a multi-step manual setup into one command. ### Creating a team loadout [Section titled “Creating a team loadout”](#creating-a-team-loadout) A team lead or maintainer creates the loadout: ```bash syllago loadout create team-standards ``` The interactive creator walks through selecting which content items to include — team rules, shared skills, standard MCP configs, etc. ### New member onboarding [Section titled “New member onboarding”](#new-member-onboarding) A new team member’s setup becomes: ```bash # 1. Add the team registry syllago registry add https://github.com/your-org/syllago-registry.git # 2. Sync to pull content syllago registry sync # 3. Apply the team loadout syllago loadout apply team-standards --keep ``` The `--keep` flag writes the configuration permanently. Three commands replace what would otherwise be a checklist of individual content installations and provider configurations. ### Verifying the setup [Section titled “Verifying the setup”](#verifying-the-setup) After applying, team members can confirm what is active: ```bash syllago loadout status ``` ## Project-level config [Section titled “Project-level config”](#project-level-config) Running `syllago init` in a project root creates `.syllago/config.json` with project-specific provider settings: ```bash cd your-project syllago init ``` Syllago detects which AI coding tools are in use and writes the config accordingly. Commit `.syllago/config.json` to the repo so all team members share the same provider settings without manual configuration. This is separate from registry content. The registry holds the **what** (rules, skills, agents). The project config holds the **where** (which providers to target for this repo). ## CI/CD integration [Section titled “CI/CD integration”](#cicd-integration) Use `syllago sync-and-export` or `syllago install` in CI pipelines to automate content distribution. The `--json` flag produces machine-readable output suitable for scripting: ```bash syllago install --to claude-code --json ``` Examples of CI use cases: ```bash # Install all skills to a specific provider syllago install --to cursor --type skills --json # Sync registries and install in one step syllago sync-and-export --to claude-code --json # Install only rules syllago install --to claude-code --type rules --json ``` This lets you enforce that project repos always have up-to-date provider configurations — for example, regenerating provider config files on every PR merge or as part of a dev environment setup script. ## Putting it together [Section titled “Putting it together”](#putting-it-together) A typical team workflow combines all of these: ```plaintext Team registry (git repo) ├── Rules, skills, agents, hooks ├── Team members sync periodically └── Contributors promote content via PR Loadout (team-standards) ├── Bundles registry content └── New members apply in one command Project config (.syllago/config.json) ├── Committed to each repo └── Sets provider targets per project CI pipeline └── Exports content on merge/deploy ``` The registry is the source of truth. Loadouts make it easy to apply. Project config ties it to specific repos. CI keeps everything in sync automatically. ## Related [Section titled “Related”](#related) * [Registries](/using-syllago/collections/registries.md) — full reference on adding, syncing, and browsing registries * [Loadouts](/using-syllago/collections/loadouts.md) — creating, applying, and managing loadouts * [`syllago init`](/using-syllago/cli-reference/init.md) — project initialization * `syllago install` — installing content to providers * `syllago publish` — contributing content to a registry * `syllago share` — contributing content to a team repo
# Troubleshooting
> Common issues, debug tools, and where to get help with syllago.
[Source](/advanced/troubleshooting/)
## Debug Flags [Section titled “Debug Flags”](#debug-flags) syllago provides several flags to help diagnose problems. These work with any command. | Flag | Description | | ------------------ | -------------------------------------------------------------- | | `--verbose` / `-v` | Verbose output showing what syllago is doing step by step | | `--json` | Machine-readable JSON output for all commands | | `--no-color` | Disable color output (also available via `NO_COLOR=1` env var) | | `--dry-run` | Preview changes without writing (supported on select commands) | Combine flags for maximum visibility: ```bash syllago add --from claude-code --dry-run ``` *** ## Common Issues [Section titled “Common Issues”](#common-issues) ### Provider not detected [Section titled “Provider not detected”](#provider-not-detected) `syllago init` doesn’t find your AI coding tool. **Symptoms:** * `syllago init` reports no providers found * Provider missing from `syllago list` output **Fix:** 1. Verify the tool is installed and available in your `PATH`: ```bash which ``` 2. If the tool is installed but not detected, add it manually: ```bash syllago config add ``` 3. Run [`syllago info providers`](/using-syllago/cli-reference/info-providers.md) to see all supported providers. *** ### Content not appearing after add [Section titled “Content not appearing after add”](#content-not-appearing-after-add) You ran `syllago add` but can’t find the content. **Symptoms:** * Content missing from expected provider config * `syllago list` shows fewer items than expected **Fix:** 1. Run [`syllago list`](/using-syllago/cli-reference/list.md) to verify what’s actually imported. 2. Check the `--source` filter — content may be in a different source (registry vs library): ```bash syllago list --source registry syllago list --source library ``` 3. Run `syllago list --verbose` for details on where each item came from. *** ### Format conversion issues [Section titled “Format conversion issues”](#format-conversion-issues) A conversion between providers fails or produces unexpected results. **Symptoms:** * Error during `syllago add`, `syllago install`, or `syllago convert` * Content type mismatch warnings **Fix:** 1. Check [`syllago info providers`](/using-syllago/cli-reference/info-providers.md) to see which content types each provider supports. 2. Not all content types work with all providers. Verify your source and target are compatible. 3. Check the [format conversion reference](/using-syllago/format-conversion.md) for the compatibility matrix. **Related error codes:** * [CONVERT\_001](/errors/convert-001.md) — Conversion not supported * [EXPORT\_001](/errors/export-001.md) — Export failed *** ### Registry sync failures [Section titled “Registry sync failures”](#registry-sync-failures) `syllago registry sync` fails to pull updates. **Symptoms:** * Sync command errors out * Registry content is stale or missing **Fix:** 1. Check network connectivity — registries are fetched over the network (typically git). 2. Verify you have access to the registry repository. 3. Run sync with verbose output for details: ```bash syllago registry sync --verbose ``` 4. Check [`syllago registry list`](/using-syllago/cli-reference/registry-list.md) to confirm the registry URL is correct. **Related error codes:** * [REGISTRY\_001](/errors/registry-001.md) — Registry not found * [REGISTRY\_002](/errors/registry-002.md) — Registry sync failed *** ### Permission errors on install [Section titled “Permission errors on install”](#permission-errors-on-install) syllago can’t write to the provider’s configuration directory. **Symptoms:** * “Permission denied” errors during import or sync * Content fails to write to the target location **Fix:** 1. Check file permissions on the provider’s config directory. 2. Ensure your user owns the directory, or has write access. 3. On macOS/Linux: ```bash ls -la ~/.config// ``` **Related error codes:** * [INSTALL\_001](/errors/install-001.md) — Installation failed *** ## Error Codes [Section titled “Error Codes”](#error-codes) Every syllago error includes a code like `CONVERT_001` or `REGISTRY_002`. Each code has a dedicated page with explanations, common causes, and fixes. See the full [error codes reference](/errors.md) for the complete list. *** ## Getting Help [Section titled “Getting Help”](#getting-help) * **Inline docs:** Run `syllago --help` or `syllago --help` for usage information on any command. * **CLI reference:** Browse the full [CLI reference](/using-syllago/cli-reference.md) for detailed documentation. * **GitHub issues:** Report bugs or ask questions at [github.com/OpenScribbler/syllago/issues](https://github.com/OpenScribbler/syllago/issues).
# Error Codes
> Reference for all syllago error codes with explanations and fixes.
[Source](/errors/)
When syllago encounters an error, it displays a structured error with a code, message, and suggestion. Run `syllago explain ` for offline help, or click any code below for the full reference. ## Catalog Errors [Section titled “Catalog Errors”](#catalog-errors) | Code | Name | Description | | ------------------------------------ | ------------------- | -------------------------------- | | [CATALOG\_001](/errors/catalog-001.md) | Catalog Not Found | no syllago repo or library found | | [CATALOG\_002](/errors/catalog-002.md) | Catalog Scan Failed | catalog scan returned an error | ## Config Errors [Section titled “Config Errors”](#config-errors) | Code | Name | Description | | ---------------------------------- | ---------------- | -------------------------------------------------- | | [CONFIG\_001](/errors/config-001.md) | Config Invalid | configuration file is malformed | | [CONFIG\_002](/errors/config-002.md) | Config Not Found | configuration file does not exist | | [CONFIG\_003](/errors/config-003.md) | Config Path | invalid path override (not absolute, unknown type) | | [CONFIG\_004](/errors/config-004.md) | Config Save | failed to save configuration | ## Convert Errors [Section titled “Convert Errors”](#convert-errors) | Code | Name | Description | | ------------------------------------ | --------------------- | ---------------------------------------- | | [CONVERT\_001](/errors/convert-001.md) | Convert Not Supported | content type does not support conversion | | [CONVERT\_002](/errors/convert-002.md) | Convert Parse Failed | parsing content for conversion failed | | [CONVERT\_003](/errors/convert-003.md) | Convert Render Failed | rendering to target format failed | ## Export Errors [Section titled “Export Errors”](#export-errors) | Code | Name | Description | | ---------------------------------- | -------------------- | ------------------------------------- | | [EXPORT\_001](/errors/export-001.md) | Export Not Supported | export not supported for content type | | [EXPORT\_002](/errors/export-002.md) | Export Failed | export operation failed | ## Import Errors [Section titled “Import Errors”](#import-errors) | Code | Name | Description | | ---------------------------------- | ------------------- | -------------------------------------- | | [IMPORT\_001](/errors/import-001.md) | Import Clone Failed | cloning import source failed | | [IMPORT\_002](/errors/import-002.md) | Import Conflict | import conflicts with existing content | ## Init Errors [Section titled “Init Errors”](#init-errors) | Code | Name | Description | | ------------------------------ | ----------- | --------------------------- | | [INIT\_001](/errors/init-001.md) | Init Exists | project already initialized | ## Input Errors [Section titled “Input Errors”](#input-errors) | Code | Name | Description | | -------------------------------- | -------------- | -------------------------------------------------- | | [INPUT\_001](/errors/input-001.md) | Input Missing | required flag or argument not provided | | [INPUT\_002](/errors/input-002.md) | Input Conflict | mutually exclusive flags used together | | [INPUT\_003](/errors/input-003.md) | Input Invalid | flag value is invalid (wrong format, out of range) | | [INPUT\_004](/errors/input-004.md) | Input Terminal | command requires interactive terminal | ## Install Errors [Section titled “Install Errors”](#install-errors) | Code | Name | Description | | ------------------------------------ | ---------------------- | ------------------------------------------------- | | [INSTALL\_001](/errors/install-001.md) | Install Not Writable | install path not writable | | [INSTALL\_002](/errors/install-002.md) | Install Item Not Found | item not found in library for install | | [INSTALL\_003](/errors/install-003.md) | Install Method Invalid | invalid install method for content type | | [INSTALL\_004](/errors/install-004.md) | Install Conflict | active loadout or other conflict prevents install | | [INSTALL\_005](/errors/install-005.md) | Install Not Installed | item is not currently installed | ## Item Errors [Section titled “Item Errors”](#item-errors) | Code | Name | Description | | ------------------------------ | ----------------- | ---------------------------------- | | [ITEM\_001](/errors/item-001.md) | Item Not Found | named item not found in library | | [ITEM\_002](/errors/item-002.md) | Item Ambiguous | item name exists in multiple types | | [ITEM\_003](/errors/item-003.md) | Item Type Unknown | unknown content type specified | ## Loadout Errors [Section titled “Loadout Errors”](#loadout-errors) | Code | Name | Description | | ------------------------------------ | ----------------- | ---------------------------------------- | | [LOADOUT\_001](/errors/loadout-001.md) | Loadout Not Found | loadout not found in library or registry | | [LOADOUT\_002](/errors/loadout-002.md) | Loadout Parse | loadout.yaml is malformed | | [LOADOUT\_003](/errors/loadout-003.md) | Loadout Conflict | another loadout is already active | | [LOADOUT\_004](/errors/loadout-004.md) | Loadout Provider | loadout references unknown provider | | [LOADOUT\_005](/errors/loadout-005.md) | Loadout No Items | no items selected for loadout | ## Privacy Errors [Section titled “Privacy Errors”](#privacy-errors) | Code | Name | Description | | ------------------------------------ | ----------------------- | ------------------------------------------------------ | | [PRIVACY\_001](/errors/privacy-001.md) | Privacy Publish Blocked | private content cannot be published to public registry | | [PRIVACY\_002](/errors/privacy-002.md) | Privacy Share Blocked | private content cannot be shared to public repo | | [PRIVACY\_003](/errors/privacy-003.md) | Privacy Loadout Warn | loadout contains private items (warning) | ## Promote Errors [Section titled “Promote Errors”](#promote-errors) | Code | Name | Description | | ------------------------------------ | ------------------ | ------------------------------------------- | | [PROMOTE\_001](/errors/promote-001.md) | Promote Dirty Tree | uncommitted changes in working tree | | [PROMOTE\_002](/errors/promote-002.md) | Promote Validation | content validation failed before promote | | [PROMOTE\_003](/errors/promote-003.md) | Promote Git Failed | git operation (branch, commit, push) failed | ## Provider Errors [Section titled “Provider Errors”](#provider-errors) | Code | Name | Description | | -------------------------------------- | --------------------- | ----------------------------- | | [PROVIDER\_001](/errors/provider-001.md) | Provider Not Found | unknown provider slug | | [PROVIDER\_002](/errors/provider-002.md) | Provider Not Detected | provider not detected on disk | ## Registry Errors [Section titled “Registry Errors”](#registry-errors) | Code | Name | Description | | -------------------------------------- | -------------------- | ------------------------------------------------ | | [REGISTRY\_001](/errors/registry-001.md) | Registry Clone | git clone of registry failed | | [REGISTRY\_002](/errors/registry-002.md) | Registry Not Found | named registry not in config | | [REGISTRY\_003](/errors/registry-003.md) | Registry Not Allowed | URL blocked by allowedRegistries policy | | [REGISTRY\_004](/errors/registry-004.md) | Registry Invalid | invalid registry name or structure | | [REGISTRY\_005](/errors/registry-005.md) | Registry Duplicate | registry with this name already exists | | [REGISTRY\_006](/errors/registry-006.md) | Registry Not Cloned | registry exists in config but not cloned locally | | [REGISTRY\_007](/errors/registry-007.md) | Registry Sync Failed | git pull failed during sync | | [REGISTRY\_008](/errors/registry-008.md) | Registry Save Failed | could not save registry config changes | ## System Errors [Section titled “System Errors”](#system-errors) | Code | Name | Description | | ---------------------------------- | -------------- | ----------------------------------- | | [SYSTEM\_001](/errors/system-001.md) | System Homedir | cannot determine home directory | | [SYSTEM\_002](/errors/system-002.md) | System IO | filesystem read/write/mkdir failure |
# CATALOG_001 — Catalog Not Found
> Syllago could not find a repository or library to work with. The catalog requires a `.syllago` directory to discover and manage content.
[Source](/errors/catalog-001/)
## What This Means [Section titled “What This Means”](#what-this-means) Syllago could not find a repository or library to work with. The catalog requires a `.syllago` directory to discover and manage content. ## Common Causes [Section titled “Common Causes”](#common-causes) * Running a syllago command outside of a project directory * The `.syllago` directory is missing or was deleted * You haven’t initialized syllago in this project yet ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. Navigate to your project directory and run `syllago init` to create a new syllago repository. 2. If you already have a syllago project, make sure you’re running commands from within that directory (or a subdirectory of it). ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error CATALOG_001: no syllago repository found Suggestion: run 'syllago init' to create one, or navigate to an existing syllago project ```
# CATALOG_002 — Catalog Scan Failed
> Syllago encountered an error while scanning the catalog for content items. The scan could not complete successfully.
[Source](/errors/catalog-002/)
## What This Means [Section titled “What This Means”](#what-this-means) Syllago encountered an error while scanning the catalog for content items. The scan could not complete successfully. ## Common Causes [Section titled “Common Causes”](#common-causes) * Corrupted or malformed content files (invalid YAML/JSON syntax) * Permission issues on content directories or files * Broken symlinks in the content tree * Disk I/O errors ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. Check file permissions on your `.syllago` directory and its contents: `ls -la .syllago/` 2. Validate the syntax of recently modified content files. 3. Look for broken symlinks: `find .syllago -xtype l` 4. If the issue persists, try removing and re-importing the problematic content. ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error CATALOG_002: failed to scan catalog Suggestion: check file permissions and content file syntax in .syllago/ ```
# CONFIG_001 — Config Invalid
> The syllago configuration file exists but contains invalid or malformed content and cannot be parsed.
[Source](/errors/config-001/)
## What This Means [Section titled “What This Means”](#what-this-means) The syllago configuration file exists but contains invalid or malformed content and cannot be parsed. ## Common Causes [Section titled “Common Causes”](#common-causes) * Syntax error in `.syllago/config.json` from manual editing * Incomplete JSON (missing closing braces, trailing commas) * File was corrupted or partially written ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. Open `.syllago/config.json` and check for JSON syntax errors 2. Validate with `jq . < .syllago/config.json` to pinpoint the issue 3. Fix the syntax error, or if the file is beyond repair, delete it and re-initialize: ```plaintext rm .syllago/config.json syllago init ``` ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error CONFIG_001: invalid configuration file ".syllago/config.json": unexpected end of JSON input Suggestion: fix JSON syntax or re-initialize with 'syllago init' ```
# CONFIG_002 — Config Not Found
> Syllago could not find a configuration file. The command requires a syllago project to be initialized in the current directory or a parent directory.
[Source](/errors/config-002/)
## What This Means [Section titled “What This Means”](#what-this-means) Syllago could not find a configuration file. The command requires a syllago project to be initialized in the current directory or a parent directory. ## Common Causes [Section titled “Common Causes”](#common-causes) * Running a syllago command outside of a syllago project directory * The `.syllago` directory was deleted or never created * Running from a directory that is not within a syllago project tree ## How to Fix [Section titled “How to Fix”](#how-to-fix) Initialize a syllago project in the current directory: ```plaintext syllago init ``` Or navigate to an existing syllago project directory before running the command. ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error CONFIG_002: configuration file not found Suggestion: run 'syllago init' to create project configuration ```
# CONFIG_003 — Config Path
> A path override in the configuration is invalid. The path is either not absolute or references an unknown configuration path key.
[Source](/errors/config-003/)
## What This Means [Section titled “What This Means”](#what-this-means) A path override in the configuration is invalid. The path is either not absolute or references an unknown configuration path key. ## Common Causes [Section titled “Common Causes”](#common-causes) * A relative path was used where an absolute path is required * An unknown or misspelled configuration path key was specified * The path override was set manually with an invalid value ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. Use absolute paths (starting with `/` on Linux/macOS or a drive letter on Windows) for all config path overrides 2. Check valid path keys: ```plaintext syllago config paths show ``` 3. Correct the path override to use a valid absolute path and recognized key ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error CONFIG_003: invalid path override: "library" path must be absolute, got "./my-library" Suggestion: use absolute paths for config overrides; see 'syllago config paths show' for valid keys ```
# CONFIG_004 — Config Save
> Syllago was unable to write the configuration file to disk.
[Source](/errors/config-004/)
## What This Means [Section titled “What This Means”](#what-this-means) Syllago was unable to write the configuration file to disk. ## Common Causes [Section titled “Common Causes”](#common-causes) * Permission denied on the `.syllago/` directory or config file * Disk is full or has insufficient space * The `.syllago/` directory was deleted while syllago was running * The filesystem is mounted as read-only ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. Check write permissions on the `.syllago/` directory: `ls -la .syllago/` 2. Verify available disk space: `df -h` 3. If the directory is missing, re-initialize: `syllago init` 4. If permissions are wrong, fix with: `chmod u+w .syllago/` ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error CONFIG_004: failed to save configuration: permission denied Suggestion: check write permissions on the .syllago/ directory ```
# CONVERT_001 — Convert Not Supported
> The content type you are trying to convert does not support conversion between the specified providers.
[Source](/errors/convert-001/)
## What This Means [Section titled “What This Means”](#what-this-means) The content type you are trying to convert does not support conversion between the specified providers. ## Common Causes [Section titled “Common Causes”](#common-causes) * The content type is provider-specific and has no equivalent in the target provider * The conversion path between the source and target providers is not implemented * The content type does not have a canonical format defined ## How to Fix [Section titled “How to Fix”](#how-to-fix) Check which conversion paths are supported: ```plaintext syllago info formats ``` If the content type cannot be converted, you may need to manually recreate it for the target provider. ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error CONVERT_001: conversion not supported for content type "commands" (claude-code → gemini) Suggestion: check 'syllago info formats' for supported conversion paths ```
# CONVERT_002 — Convert Parse Failed
> The source content could not be parsed during conversion. The file exists but its contents are not valid for the expected format.
[Source](/errors/convert-002/)
## What This Means [Section titled “What This Means”](#what-this-means) The source content could not be parsed during conversion. The file exists but its contents are not valid for the expected format. ## Common Causes [Section titled “Common Causes”](#common-causes) * Malformed source file with syntax errors * YAML or JSON syntax errors (missing quotes, unclosed brackets, invalid indentation) * File encoding issues (non-UTF-8 content) * File is empty or contains only whitespace ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. Open the source file and check for syntax errors 2. For YAML files, validate with a YAML linter or online validator 3. For JSON files, validate with `jq . < file.json` or an online JSON validator 4. Ensure the file uses UTF-8 encoding ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error CONVERT_002: failed to parse "rules/my-rule.yaml": yaml: line 5: mapping values are not allowed here Suggestion: check the source file for syntax errors ```
# CONVERT_003 — Convert Render Failed
> The content was parsed successfully but could not be rendered into the target provider's format.
[Source](/errors/convert-003/)
## What This Means [Section titled “What This Means”](#what-this-means) The content was parsed successfully but could not be rendered into the target provider’s format. ## Common Causes [Section titled “Common Causes”](#common-causes) * The content uses features not supported by the target provider * Encoding issues when writing the output format * The target format has constraints that the source content violates (e.g., field length limits) ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. Review the content for provider-specific features that may not translate 2. Simplify the content to use only features common across providers 3. Check provider compatibility with `syllago info formats` 4. Try converting to a different target provider to isolate the issue ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error CONVERT_003: failed to render content to gemini format: unsupported hook event type "on_tool_error" Suggestion: simplify content or check target provider compatibility ```
# EXPORT_001 — Export Not Supported
> The content type you are trying to export is not supported for the specified target provider.
[Source](/errors/export-001/)
## What This Means [Section titled “What This Means”](#what-this-means) The content type you are trying to export is not supported for the specified target provider. ## Common Causes [Section titled “Common Causes”](#common-causes) * The content type has no equivalent in the target provider’s format * The export path between the content type and target provider is not implemented * The content type is internal to syllago and not exportable ## How to Fix [Section titled “How to Fix”](#how-to-fix) Check which export targets are supported for your content type: ```plaintext syllago info formats ``` If the target provider is not supported, consider exporting to a different provider or manually adapting the content. ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error EXPORT_001: export not supported for content type "agents" to provider "gemini" Suggestion: check 'syllago info formats' for supported export targets ```
# EXPORT_002 — Export Failed
> The export operation failed while writing content to the target location.
[Source](/errors/export-002/)
## What This Means [Section titled “What This Means”](#what-this-means) The export operation failed while writing content to the target location. ## Common Causes [Section titled “Common Causes”](#common-causes) * Write permission denied on the target directory * The target directory does not exist * Disk is full or has insufficient space * The target path is on a read-only filesystem ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. Ensure the target directory exists: `mkdir -p /path/to/target` 2. Check write permissions on the target directory: `ls -la /path/to/target` 3. Verify available disk space: `df -h` 4. If permissions are the issue, adjust with `chmod` or run from a writable location ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error EXPORT_002: failed to export "my-skill" to /home/user/.config/provider/skills/: permission denied Suggestion: ensure the target directory exists and is writable ```
# IMPORT_001 — Import Clone Failed
> Syllago failed to clone the import source repository. The content could not be fetched from the specified location.
[Source](/errors/import-001/)
## What This Means [Section titled “What This Means”](#what-this-means) Syllago failed to clone the import source repository. The content could not be fetched from the specified location. ## Common Causes [Section titled “Common Causes”](#common-causes) * Invalid or mistyped repository URL * Network connectivity issues (firewall, proxy, DNS resolution) * The repository requires authentication (private repo) * The repository no longer exists or has been moved ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. Verify the import URL is correct and accessible in a browser 2. Check your network connectivity (`ping github.com` or equivalent) 3. For private repositories, ensure your Git credentials are configured 4. If the repository has moved, update the URL to the new location ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error IMPORT_001: failed to clone "https://github.com/org/repo": authentication required Suggestion: verify the import URL is accessible and check network connectivity ```
# IMPORT_002 — Import Conflict
> The content you are importing conflicts with content that already exists in your library. An item with the same name is already present.
[Source](/errors/import-002/)
## What This Means [Section titled “What This Means”](#what-this-means) The content you are importing conflicts with content that already exists in your library. An item with the same name is already present. ## Common Causes [Section titled “Common Causes”](#common-causes) * An item with the same name was previously imported from a different source * The same content was imported twice * Locally created content has the same name as the import ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. Check existing items with `syllago list` to find the conflict 2. Rename the existing item if you want to keep both 3. Remove the existing item first with `syllago remove` if you want to replace it 4. Use the `--force` flag if available to overwrite the existing item ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error IMPORT_002: import conflicts with existing item "team-rules" in library Suggestion: rename or remove the existing item, or use --force to overwrite ```
# INIT_001 — Init Exists
> The project has already been initialized with syllago. A `.syllago` directory already exists in the current directory.
[Source](/errors/init-001/)
## What This Means [Section titled “What This Means”](#what-this-means) The project has already been initialized with syllago. A `.syllago` directory already exists in the current directory. ## Common Causes [Section titled “Common Causes”](#common-causes) * Running `syllago init` in a directory that was previously initialized * A `.syllago` directory was manually created or left behind from a previous setup ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. If the project is already initialized, no action is needed — you can use syllago normally 2. If you want to reinitialize from scratch, remove the `.syllago` directory first: `rm -rf .syllago` 3. Then run `syllago init` again ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error INIT_001: project already initialized Suggestion: the project is already initialized; to reinitialize, remove the .syllago directory first ```
# INPUT_001 — Input Missing
> A required flag or positional argument was not provided for the command.
[Source](/errors/input-001/)
## What This Means [Section titled “What This Means”](#what-this-means) A required flag or positional argument was not provided for the command. ## Common Causes [Section titled “Common Causes”](#common-causes) * Running a command without its required arguments (e.g., `syllago install` with no item name) * Omitting a required flag (e.g., `--to` when a target provider is needed) ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. Check the command’s usage with `syllago --help` 2. Provide all required arguments and flags ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error INPUT_001: missing required argument: item name Suggestion: see 'syllago install --help' for usage ```
# INPUT_002 — Input Conflict
> Two or more flags that cannot be used together were provided in the same command.
[Source](/errors/input-002/)
## What This Means [Section titled “What This Means”](#what-this-means) Two or more flags that cannot be used together were provided in the same command. ## Common Causes [Section titled “Common Causes”](#common-causes) * Using `--local` and `--registry` together when only one source is allowed * Combining `--json` with interactive-only flags * Specifying conflicting output or filter options ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. Review the command help with `syllago --help` to understand which flags conflict 2. Use only one of the conflicting flags per invocation ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error INPUT_002: flags --local and --registry are mutually exclusive Suggestion: use only one of the conflicting flags ```
# INPUT_003 — Input Invalid
> A flag or argument value has an invalid format or is out of the expected range.
[Source](/errors/input-003/)
## What This Means [Section titled “What This Means”](#what-this-means) A flag or argument value has an invalid format or is out of the expected range. ## Common Causes [Section titled “Common Causes”](#common-causes) * Invalid provider slug (e.g., `--to=not-a-provider`) * Malformed argument value (e.g., a path with invalid characters) * Numeric value out of expected range ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. Check the expected format in the command help: `syllago --help` 2. For provider slugs, run `syllago info providers` to see valid values 3. Verify the argument value matches the expected format ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error INPUT_003: invalid provider slug "not-a-provider" Suggestion: run 'syllago info providers' for valid provider slugs ```
# INPUT_004 — Input Terminal
> The command requires an interactive terminal (TTY) but is running in a non-interactive context.
[Source](/errors/input-004/)
## What This Means [Section titled “What This Means”](#what-this-means) The command requires an interactive terminal (TTY) but is running in a non-interactive context. ## Common Causes [Section titled “Common Causes”](#common-causes) * Running the TUI or an interactive command through a pipe (e.g., `echo | syllago`) * Running syllago in a CI/CD pipeline without interactive support * Redirecting stdin from a file ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. Run the command in an interactive terminal 2. For scripted or CI usage, use `--json` or other non-interactive flags 3. Use specific CLI subcommands instead of the TUI for automation ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error INPUT_004: this command requires an interactive terminal Suggestion: use --json or non-interactive flags for scripted usage ```
# INSTALL_001 — Install Not Writable
> Syllago cannot write to the target install path. The content cannot be installed because the destination is not writable.
[Source](/errors/install-001/)
## What This Means [Section titled “What This Means”](#what-this-means) Syllago cannot write to the target install path. The content cannot be installed because the destination is not writable. ## Common Causes [Section titled “Common Causes”](#common-causes) * Permission issues on the provider’s configuration directory * The target path is on a read-only filesystem * The directory is owned by another user or root * SELinux or other security policies restricting write access ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. Check permissions on the provider’s config directory: `ls -la ` 2. Ensure your user owns the directory or has write access. 3. If the directory is owned by root, check if the provider was installed system-wide and adjust permissions accordingly. ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error INSTALL_001: install path not writable Suggestion: check permissions on the provider config directory ```
# INSTALL_002 — Install Item Not Found
> The item you tried to install could not be found. It is not present in your local library or any configured registry.
[Source](/errors/install-002/)
## What This Means [Section titled “What This Means”](#what-this-means) The item you tried to install could not be found. It is not present in your local library or any configured registry. ## Common Causes [Section titled “Common Causes”](#common-causes) * Typo in the item name * The item hasn’t been imported into your local library yet * The item exists in a registry that hasn’t been added * The item was removed or renamed ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. List available items: `syllago list` 2. Check for typos in the item name. 3. If the item is in a registry, make sure the registry is added and synced: `syllago registry list` 4. Import the item first if it’s from an external source. ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error INSTALL_002: item "my-rule" not found Suggestion: run 'syllago list' to see available items ```
# INSTALL_003 — Install Method Invalid
> The requested install method is not supported for this content type. Different content types require different installation strategies.
[Source](/errors/install-003/)
## What This Means [Section titled “What This Means”](#what-this-means) The requested install method is not supported for this content type. Different content types require different installation strategies. ## Common Causes [Section titled “Common Causes”](#common-causes) * Trying to symlink a content type that requires JSON merge (hooks, MCP configs) * Specifying an install method that doesn’t exist for the content type * Mismatched content type and provider capabilities ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. Hooks and MCP configs are installed via JSON merge into provider settings files, not as filesystem symlinks. 2. Rules, skills, agents, commands, and prompts use filesystem installation (files, directories, or symlinks). 3. Let syllago choose the default install method by omitting the method flag. ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error INSTALL_003: invalid install method "symlink" for content type "hooks" Suggestion: hooks use JSON merge — omit the method flag to use the default ```
# INSTALL_004 — Install Conflict
> The install cannot proceed because of a conflict with an active loadout or an already-installed item.
[Source](/errors/install-004/)
## What This Means [Section titled “What This Means”](#what-this-means) The install cannot proceed because of a conflict with an active loadout or an already-installed item. ## Common Causes [Section titled “Common Causes”](#common-causes) * An active loadout already manages this content, and installing directly would conflict * A different version of the same item is already installed * Two items would write to the same destination path ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. If a loadout is managing this content, remove the loadout first: `syllago loadout remove ` 2. If a conflicting item is already installed, uninstall it before installing the new one. 3. Check which loadouts are active: `syllago loadout list` ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error INSTALL_004: conflict with active loadout "dev-setup" Suggestion: run 'syllago loadout remove dev-setup' first, then retry the install ```
# INSTALL_005 — Install Not Installed
> The item you are trying to uninstall is not currently installed in your system.
[Source](/errors/install-005/)
## What This Means [Section titled “What This Means”](#what-this-means) The item you are trying to uninstall is not currently installed in your system. ## Common Causes [Section titled “Common Causes”](#common-causes) * Trying to uninstall an item that was never installed * The item was already removed in a previous operation * Typo in the item name or identifier ## How to Fix [Section titled “How to Fix”](#how-to-fix) Check what is currently installed by running: ```plaintext syllago list --installed ``` Verify the exact name of the item you want to remove and try again. ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error INSTALL_005: item "my-rule" is not installed Suggestion: run 'syllago list --installed' to see installed items ```
# ITEM_001 — Item Not Found
> The specified item could not be found in your local library or any configured registries.
[Source](/errors/item-001/)
## What This Means [Section titled “What This Means”](#what-this-means) The specified item could not be found in your local library or any configured registries. ## Common Causes [Section titled “Common Causes”](#common-causes) * Typo in the item name * The item does not exist in the local library * The item exists in a registry that is not configured or has not been synced * The item was removed or renamed ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. Check the spelling of the item name 2. Run `syllago list` to browse available items in your library 3. Run `syllago list --registry ` to browse items in a specific registry 4. If the item is in a registry, run `syllago registry sync` to pull the latest content ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error ITEM_001: item "my-ruel" not found Suggestion: run 'syllago list' to browse available items; check spelling ```
# ITEM_002 — Item Ambiguous
> The item name matches content in multiple content types, so syllago cannot determine which one you mean.
[Source](/errors/item-002/)
## What This Means [Section titled “What This Means”](#what-this-means) The item name matches content in multiple content types, so syllago cannot determine which one you mean. ## Common Causes [Section titled “Common Causes”](#common-causes) * The same name is used for both a rule and a skill (e.g., `my-config` exists as both `rules/my-config` and `skills/my-config`) * A registry contains duplicate names across different content types ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. Qualify the item with its content type prefix: `syllago install rules/my-item` instead of `syllago install my-item` 2. Run `syllago list` to see all items grouped by type and identify the correct one ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error ITEM_002: item "my-config" is ambiguous: found in rules, skills Suggestion: qualify with content type, e.g. 'syllago install rules/my-config' ```
# ITEM_003 — Item Type Unknown
> The specified content type is not recognized by syllago.
[Source](/errors/item-003/)
## What This Means [Section titled “What This Means”](#what-this-means) The specified content type is not recognized by syllago. ## Common Causes [Section titled “Common Causes”](#common-causes) * Typo in the content type (e.g., `--type=ruls` instead of `--type=rules`) * Using a singular form instead of plural (e.g., `rule` instead of `rules`) * Using a content type that does not exist in syllago ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. Use one of the valid content types: `rules`, `skills`, `agents`, `commands`, `hooks`, `mcp`, `prompts`, `loadouts` 2. Check command help for accepted values: `syllago --help` ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error ITEM_003: unknown content type "ruls" Suggestion: valid types are: rules, skills, agents, commands, hooks, mcp, prompts, loadouts ```
# LOADOUT_001 — Loadout Not Found
> The specified loadout could not be found in your local library or any configured registry.
[Source](/errors/loadout-001/)
## What This Means [Section titled “What This Means”](#what-this-means) The specified loadout could not be found in your local library or any configured registry. ## Common Causes [Section titled “Common Causes”](#common-causes) * Typo in the loadout name * The loadout is not in your local library * The loadout is not available in any configured registry * The registry has not been synced recently ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. Check available loadouts: ```plaintext syllago loadout list ``` 2. Verify the exact name of the loadout you are looking for 3. If the loadout is in a registry, ensure the registry is configured and synced ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error LOADOUT_001: loadout "kubernetes-setup" not found Suggestion: run 'syllago loadout list' to see available loadouts ```
# LOADOUT_002 — Loadout Parse
> The loadout's `loadout.yaml` manifest file exists but contains invalid content and cannot be parsed.
[Source](/errors/loadout-002/)
## What This Means [Section titled “What This Means”](#what-this-means) The loadout’s `loadout.yaml` manifest file exists but contains invalid content and cannot be parsed. ## Common Causes [Section titled “Common Causes”](#common-causes) * YAML syntax errors (bad indentation, missing colons, unclosed quotes) * Missing required fields (`name`, `provider`, `items`) * Invalid content type references in the items list * File encoding issues ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. Open the `loadout.yaml` file and check for YAML syntax errors 2. Ensure all required fields are present: ```yaml name: my-loadout provider: claude-code items: - type: rules path: my-rule.md ``` 3. Validate YAML syntax with a linter or online validator 4. Ensure content type references match valid syllago content types ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error LOADOUT_002: failed to parse "my-loadout/loadout.yaml": yaml: line 3: did not find expected key Suggestion: check YAML syntax and ensure required fields (name, provider, items) are present ```
# LOADOUT_003 — Loadout Conflict
> You are trying to apply a loadout, but another loadout is already active for the same provider. Only one loadout can be active at a time per provider.
[Source](/errors/loadout-003/)
## What This Means [Section titled “What This Means”](#what-this-means) You are trying to apply a loadout, but another loadout is already active for the same provider. Only one loadout can be active at a time per provider. ## Common Causes [Section titled “Common Causes”](#common-causes) * A previously applied loadout was not removed before applying a new one * A loadout was applied in a different session and is still active ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. Check which loadout is currently active: ```plaintext syllago loadout list ``` 2. Remove the current loadout before applying the new one: ```plaintext syllago loadout remove ``` 3. Apply the new loadout: ```plaintext syllago loadout apply ``` ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error LOADOUT_003: loadout "team-defaults" is already active for provider "claude-code" Suggestion: run 'syllago loadout remove' before applying a new loadout ```
# LOADOUT_004 — Loadout Provider
> The loadout references a provider that syllago does not recognize or support.
[Source](/errors/loadout-004/)
## What This Means [Section titled “What This Means”](#what-this-means) The loadout references a provider that syllago does not recognize or support. ## Common Causes [Section titled “Common Causes”](#common-causes) * The `provider` field in `loadout.yaml` contains a typo (e.g., `cladue-code` instead of `claude-code`) * The loadout was created for a provider that has since been removed or renamed * The loadout was authored for a provider that your version of syllago does not support ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. Open the loadout’s `loadout.yaml` and check the `provider` field 2. Run `syllago info providers` to see the list of supported provider slugs 3. Update the `provider` field to match one of the supported slugs ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error LOADOUT_004: loadout references unknown provider "cladue-code" Suggestion: check the provider field in loadout.yaml; run 'syllago info providers' for supported providers ```
# LOADOUT_005 — Loadout No Items
> A loadout was created or modified with no content items selected.
[Source](/errors/loadout-005/)
## What This Means [Section titled “What This Means”](#what-this-means) A loadout was created or modified with no content items selected. ## Common Causes [Section titled “Common Causes”](#common-causes) * All items were deselected during interactive loadout creation * A loadout was created programmatically with an empty items list * Items were removed from a loadout without adding replacements ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. When creating a loadout, select at least one content item (rule, skill, agent, etc.) 2. If using the TUI, ensure at least one item is checked before confirming 3. If editing `loadout.yaml` directly, ensure the `items` list is non-empty ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error LOADOUT_005: no items selected for loadout Suggestion: select at least one content item when creating a loadout ```
# PRIVACY_001 — Privacy Publish Blocked
> Content from a private registry cannot be published to a public registry. The privacy gate prevents private content from leaking into public spaces.
[Source](/errors/privacy-001/)
## What This Means [Section titled “What This Means”](#what-this-means) Content from a private registry cannot be published to a public registry. The privacy gate prevents private content from leaking into public spaces. ## Common Causes [Section titled “Common Causes”](#common-causes) * Attempting to publish content that was imported from a private (enterprise/team) registry * Running `syllago promote` targeting a public registry with private-origin content * The content’s source registry is marked as private in its configuration ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. Move the content to a public registry first, then publish from there 2. Or publish to a private registry instead of a public one 3. If the content should be public, copy it to your local library (removing the private origin) and publish from there ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error PRIVACY_001: cannot publish private content to public registry "community-rules" Suggestion: move content to a public registry first, or publish to a private registry ```
# PRIVACY_002 — Privacy Share Blocked
> Content from a private registry cannot be shared to a public repository. The privacy gate prevents accidental exposure of private content.
[Source](/errors/privacy-002/)
## What This Means [Section titled “What This Means”](#what-this-means) Content from a private registry cannot be shared to a public repository. The privacy gate prevents accidental exposure of private content. ## Common Causes [Section titled “Common Causes”](#common-causes) * Running `syllago share` targeting a public git repository with content that originates from a private registry * The target repository is publicly accessible but the content’s source registry is private ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. Share to a private repository instead 2. Or move the content to your local library first (which strips the private-origin metadata), then share from there 3. Verify the target repository’s visibility matches your intent ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error PRIVACY_002: cannot share private content to public repo "github.com/org/public-rules" Suggestion: share to a private repository, or move content to your local library first ```
# PRIVACY_003 — Privacy Loadout Warn
> A loadout being created or applied includes items that originate from private registries. This is a warning, not a blocking error.
[Source](/errors/privacy-003/)
## What This Means [Section titled “What This Means”](#what-this-means) A loadout being created or applied includes items that originate from private registries. This is a warning, not a blocking error. ## Common Causes [Section titled “Common Causes”](#common-causes) * A loadout mixes items from both private and public registries * A loadout is being created from items that include private registry content * An existing loadout was updated and now references private items ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. This is a warning — no action is required if mixing private and public content is intentional 2. Review the listed items to confirm you intend to include private content 3. If the loadout will be shared publicly, consider replacing private items with public equivalents ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error PRIVACY_003: loadout "my-setup" contains 2 items from private registries Suggestion: review private items; this is a warning if mixing private/public content is intended ```
# PROMOTE_001 — Promote Dirty Tree
> The working tree has uncommitted changes that must be resolved before promoting content.
[Source](/errors/promote-001/)
## What This Means [Section titled “What This Means”](#what-this-means) The working tree has uncommitted changes that must be resolved before promoting content. ## Common Causes [Section titled “Common Causes”](#common-causes) * Modified files in the syllago library that have not been committed * Untracked files in the content directory * A previous promote operation was interrupted, leaving partial changes ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. Run `git status` in your syllago library to see uncommitted changes 2. Commit your changes: `git add . && git commit -m "your message"` 3. Or stash them temporarily: `git stash` 4. Then retry the promote operation ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error PROMOTE_001: uncommitted changes in working tree Suggestion: commit or stash your changes before promoting content ```
# PROMOTE_002 — Promote Validation
> The content failed validation checks that run before promotion. Content must be structurally valid before it can be shared.
[Source](/errors/promote-002/)
## What This Means [Section titled “What This Means”](#what-this-means) The content failed validation checks that run before promotion. Content must be structurally valid before it can be shared. ## Common Causes [Section titled “Common Causes”](#common-causes) * Missing required fields in content metadata (e.g., no `name` or `description`) * Invalid YAML syntax in configuration files * Content references files that do not exist * Hook definitions with invalid event names or tool names ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. Review the validation errors in the command output — each will describe the specific issue 2. Fix the structural issues in your content files 3. Run `syllago inspect - ` to verify the content is valid 4. Retry the promote operation ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error PROMOTE_002: content validation failed: missing required field "description" in rules/my-rule Suggestion: fix validation errors shown above, then retry ```
# PROMOTE_003 — Promote Git Failed
> A git operation (creating a branch, committing, or pushing) failed during the promote process.
[Source](/errors/promote-003/)
## What This Means [Section titled “What This Means”](#what-this-means) A git operation (creating a branch, committing, or pushing) failed during the promote process. ## Common Causes [Section titled “Common Causes”](#common-causes) * No git remote configured for the repository * Push was rejected (e.g., remote branch has diverged) * Git authentication failed (expired token, missing SSH key) * Network connectivity issues ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. Verify a git remote is configured: `git remote -v` 2. Check that you have push access to the remote repository 3. If authentication failed, refresh your credentials (SSH key, personal access token, etc.) 4. If the remote branch has diverged, pull the latest changes first: `git pull --rebase` ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error PROMOTE_003: git push failed: authentication required Suggestion: ensure git remote is configured and you have push access ```
# PROVIDER_001 — Provider Not Found
> The provider name you specified is not recognized by syllago. The slug does not match any supported AI coding tool provider.
[Source](/errors/provider-001/)
## What This Means [Section titled “What This Means”](#what-this-means) The provider name you specified is not recognized by syllago. The slug does not match any supported AI coding tool provider. ## Common Causes [Section titled “Common Causes”](#common-causes) * Typo in the provider name * Using the full tool name instead of the slug (e.g., “Claude Code” instead of “claude-code”) * The provider is not yet supported by syllago ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. List supported providers: `syllago info providers` 2. Use the exact provider slug shown in the list. 3. Check for typos in the provider name you specified. ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error PROVIDER_001: unknown provider "claudecode" Suggestion: run 'syllago info providers' to see supported providers ```
# PROVIDER_002 — Provider Not Detected
> The specified provider was not detected on your system. Syllago looks for provider-specific configuration directories to determine which AI coding ...
[Source](/errors/provider-002/)
## What This Means [Section titled “What This Means”](#what-this-means) The specified provider was not detected on your system. Syllago looks for provider-specific configuration directories to determine which AI coding tools are installed. ## Common Causes [Section titled “Common Causes”](#common-causes) * The AI coding tool is not installed on this machine * The tool’s configuration directory is missing or in a non-standard location * The tool was installed but hasn’t been run yet (config directory created on first run) ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. Install the AI coding tool if you haven’t already. 2. Run the tool at least once so it creates its configuration directory. 3. Check if the provider’s config directory exists in the expected location (e.g., `~/.claude/` for Claude Code). ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error PROVIDER_002: provider "claude-code" not detected Suggestion: install Claude Code or verify its config directory exists ```
# REGISTRY_001 — Registry Clone
> Syllago failed to clone a registry repository using git. The remote repository could not be fetched.
[Source](/errors/registry-001/)
## What This Means [Section titled “What This Means”](#what-this-means) Syllago failed to clone a registry repository using git. The remote repository could not be fetched. ## Common Causes [Section titled “Common Causes”](#common-causes) * Network connectivity issues * Invalid or mistyped registry URL * Private repository without proper authentication configured * Git not installed or not in PATH * Remote server is down or unreachable ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. Verify the registry URL is correct and accessible: `git ls-remote ` 2. Check your network connection. 3. For private registries, ensure your git credentials are configured (SSH key or token). 4. Verify git is installed: `git --version` ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error REGISTRY_001: failed to clone registry Suggestion: check the registry URL and your network connection ```
# REGISTRY_002 — Registry Not Found
> The specified registry name was not found in your syllago configuration. No registry with that name has been added.
[Source](/errors/registry-002/)
## What This Means [Section titled “What This Means”](#what-this-means) The specified registry name was not found in your syllago configuration. No registry with that name has been added. ## Common Causes [Section titled “Common Causes”](#common-causes) * Typo in the registry name * The registry has not been added yet * The registry was previously removed ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. List your configured registries: `syllago registry list` 2. Check for typos in the registry name you specified. 3. If the registry isn’t listed, add it: `syllago registry add ` ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error REGISTRY_002: registry "my-reg" not found Suggestion: run 'syllago registry list' to see available registries ```
# REGISTRY_003 — Registry Not Allowed
> The registry URL you tried to use is blocked by the `allowedRegistries` policy in your configuration. This is a security control that restricts whi...
[Source](/errors/registry-003/)
## What This Means [Section titled “What This Means”](#what-this-means) The registry URL you tried to use is blocked by the `allowedRegistries` policy in your configuration. This is a security control that restricts which registries can be used. ## Common Causes [Section titled “Common Causes”](#common-causes) * Your organization has configured an allowlist of approved registries * The registry URL doesn’t match any entry in the `allowedRegistries` list * A workspace or global config restricts registry sources ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. Check the allowed registries in your config: look for `allowedRegistries` in `.syllago/config.json`. 2. If you believe this registry should be allowed, contact your administrator to update the policy. 3. Use a registry that is already on the approved list. ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error REGISTRY_003: registry URL not in allowedRegistries Suggestion: check your allowedRegistries policy or contact your admin ```
# REGISTRY_004 — Registry Invalid
> The registry name or structure is invalid. Syllago requires registry names to follow a specific format and registry directories to contain the expe...
[Source](/errors/registry-004/)
## What This Means [Section titled “What This Means”](#what-this-means) The registry name or structure is invalid. Syllago requires registry names to follow a specific format and registry directories to contain the expected layout. ## Common Causes [Section titled “Common Causes”](#common-causes) * Registry name contains invalid characters (spaces, special characters) * Registry directory is missing required structure or metadata * Corrupted registry clone ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. Use alphanumeric characters and hyphens for registry names (e.g., `my-registry`). 2. Verify the registry repository has the expected directory structure. 3. If the registry was partially cloned, try removing it and re-adding: `syllago registry remove ` then `syllago registry add `. ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error REGISTRY_004: invalid registry "my registry!" Suggestion: use alphanumeric characters and hyphens only ```
# REGISTRY_005 — Registry Duplicate
> A registry with the specified name already exists in your configuration. Registry names must be unique.
[Source](/errors/registry-005/)
## What This Means [Section titled “What This Means”](#what-this-means) A registry with the specified name already exists in your configuration. Registry names must be unique. ## Common Causes [Section titled “Common Causes”](#common-causes) * Trying to add a registry that was previously added * Using a name that collides with an existing registry ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. List existing registries to confirm: `syllago registry list` 2. Choose a different name for the new registry. 3. If you want to replace the existing one, remove it first: `syllago registry remove ` ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error REGISTRY_005: registry "community" already exists Suggestion: use a different name or remove the existing registry first ```
# REGISTRY_006 — Registry Not Cloned
> The registry is listed in your configuration but its local clone is missing. Syllago knows about the registry but cannot access its content.
[Source](/errors/registry-006/)
## What This Means [Section titled “What This Means”](#what-this-means) The registry is listed in your configuration but its local clone is missing. Syllago knows about the registry but cannot access its content. ## Common Causes [Section titled “Common Causes”](#common-causes) * The local cache was cleared or deleted * The registry directory was manually removed * First run after importing a config from another machine * The clone was interrupted and never completed ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. Sync your registries to re-clone missing ones: `syllago registry sync` 2. If sync fails, try removing and re-adding the registry: `syllago registry remove ` then `syllago registry add ` ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error REGISTRY_006: registry "community" not cloned Suggestion: run 'syllago registry sync' to fetch missing registries ```
# REGISTRY_007 — Registry Sync Failed
> Syllago failed to update a registry's local clone during sync. The git pull operation did not complete successfully.
[Source](/errors/registry-007/)
## What This Means [Section titled “What This Means”](#what-this-means) Syllago failed to update a registry’s local clone during sync. The git pull operation did not complete successfully. ## Common Causes [Section titled “Common Causes”](#common-causes) * Network connectivity issues * Merge conflicts in the local clone (local modifications) * The remote branch was force-pushed, causing history divergence * Remote server is temporarily unavailable ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. Check your network connection. 2. Try syncing again: `syllago registry sync` 3. If the problem persists, remove and re-add the registry to get a fresh clone: `syllago registry remove ` then `syllago registry add ` ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error REGISTRY_007: failed to sync registry "community" Suggestion: check your network connection, or try removing and re-adding the registry ```
# REGISTRY_008 — Registry Save Failed
> Syllago could not save changes to the registry configuration file. The operation completed in memory but failed to persist to disk.
[Source](/errors/registry-008/)
## What This Means [Section titled “What This Means”](#what-this-means) Syllago could not save changes to the registry configuration file. The operation completed in memory but failed to persist to disk. ## Common Causes [Section titled “Common Causes”](#common-causes) * Permission issues on the config file or its parent directory * Disk is full * The config file is locked by another process * The `.syllago` directory was deleted mid-operation ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. Check write permissions on the config file: `ls -la .syllago/config.json` 2. Verify available disk space: `df -h .` 3. Ensure no other process has the file locked. 4. Check that the `.syllago` directory still exists. ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error REGISTRY_008: failed to save registry config Suggestion: check write permissions on .syllago/config.json ```
# SYSTEM_001 — System Homedir
> Syllago could not determine the user's home directory, which is needed for locating configuration and content files.
[Source](/errors/system-001/)
## What This Means [Section titled “What This Means”](#what-this-means) Syllago could not determine the user’s home directory, which is needed for locating configuration and content files. ## Common Causes [Section titled “Common Causes”](#common-causes) * The `HOME` environment variable is not set * Running under an unusual OS configuration or containerized environment without a home directory * Running as a system user without a home directory assigned ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. Set the `HOME` environment variable: `export HOME=/home/youruser` 2. Run syllago from a standard user account that has a home directory 3. In containers, ensure the `HOME` variable is set in the Dockerfile or entrypoint ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error SYSTEM_001: cannot determine home directory Suggestion: set the HOME environment variable, or run from a standard user account ```
# SYSTEM_002 — System IO
> A filesystem operation (reading, writing, or creating directories) failed unexpectedly.
[Source](/errors/system-002/)
## What This Means [Section titled “What This Means”](#what-this-means) A filesystem operation (reading, writing, or creating directories) failed unexpectedly. ## Common Causes [Section titled “Common Causes”](#common-causes) * Permission denied on the target path * Disk is full * Path is too long for the filesystem * Corrupted filesystem or inaccessible mount * Another process holds a lock on the file ## How to Fix [Section titled “How to Fix”](#how-to-fix) 1. Check available disk space: `df -h` 2. Verify permissions on the target path: `ls -la ` 3. If permission denied, adjust ownership or permissions: `chmod` / `chown` 4. If the path is on a network mount, verify the mount is accessible ## Example Output [Section titled “Example Output”](#example-output) ```plaintext Error SYSTEM_002: failed to create directory "/home/user/.syllago/library": permission denied Suggestion: check disk space and verify permissions on the target path ```
# For AI assistants
> Machine-readable documentation for AI coding assistants and LLMs to learn about syllago.
[Source](/for-ai-assistants/)
Syllago supports the [llms.txt](https://llmstxt.org/) standard — a convention that makes documentation machine-readable for Large Language Models. ## Available resources [Section titled “Available resources”](#available-resources) These files are generated automatically from the same source as this documentation site. | Resource | Description | Best for | | --------------------------------- | ------------------------------------- | ----------------------------- | | [llms.txt](/llms.txt) | Index of available documentation sets | Discovery | | [llms-small.txt](/llms-small.txt) | Condensed documentation | Quick context, smaller models | | [llms-full.txt](/llms-full.txt) | Complete documentation | Comprehensive understanding | ## How to use these [Section titled “How to use these”](#how-to-use-these) Feed these resources to your AI coding assistant when you need help working with syllago. **Paste into a chat:** Copy the content of `llms-full.txt` into Claude, ChatGPT, or any LLM chat, then ask your question. **Use with CLI tools:** ```bash # Feed syllago docs to Claude Code curl -s https://syllago.dev/llms-full.txt | pbcopy # Use with any tool that accepts URLs # Many AI tools can fetch URLs directly ``` **Context window tips:** * Use `llms-small.txt` when you just need an overview or are working with smaller context windows * Use `llms-full.txt` when you need detailed information about specific features * The **Copy page** button (top-right of any page) copies individual page content for focused questions
# Core Concepts
> How syllago works — providers, content types, collections, and format conversion.
[Source](/getting-started/core-concepts/)
syllago manages AI coding tool content across multiple providers. This page covers the four concepts you need to understand how everything fits together: **providers**, **content types**, **collections**, and **format conversion**. ## Providers [Section titled “Providers”](#providers) A **provider** is an AI coding tool that syllago supports. Each provider has its own file format and stores content in different locations on your system. syllago handles these differences automatically — you work with one set of content, and syllago adapts it to each provider’s requirements. syllago supports the following providers: | Provider | Description | | ----------- | ------------------------ | | Claude Code | Anthropic’s CLI agent | | Gemini CLI | Google’s CLI agent | | Cursor | AI-powered code editor | | Copilot CLI | GitHub’s CLI agent | | Codex | OpenAI’s CLI agent | | Kiro | AWS AI IDE | | Windsurf | AI-powered code editor | | OpenCode | Terminal-based AI agent | | Roo Code | VS Code extension | | Cline | VS Code extension | | Amp | AI coding assistant | | Zed | Editor with AI assistant | syllago auto-detects which providers are installed on your system. You don’t need to configure them manually. For details on each provider’s capabilities and file locations, see [Supported Providers](/using-syllago/providers.md). ## Content Types [Section titled “Content Types”](#content-types) syllago manages six kinds of content: | Content Type | What it is | | --------------- | -------------------------------------- | | **Rules** | System prompts and custom instructions | | **Skills** | Multi-file workflow packages | | **Agents** | AI agent definitions and personas | | **MCP Configs** | MCP server configurations | | **Hooks** | Event-driven automation scripts | | **Commands** | Custom slash commands | Not every provider supports every content type. For example, some providers have no concept of hooks, and others don’t support slash commands. syllago tracks the support matrix so you know what will work where. For the full compatibility matrix and details on each type, see [Content Types](/using-syllago/content-types.md). ## Collections [Section titled “Collections”](#collections) Content in syllago is organized into three collections, each serving a different purpose: ### Library [Section titled “Library”](#library) Your personal content store, located at `~/.syllago/content/`. This is read-write — it’s where your content lives. Content arrives in the library when you add it from a provider: ```bash syllago add --from # pull content from an installed provider ``` ### Registries [Section titled “Registries”](#registries) Git-based repositories of shared content. A registry lets a team (or the community) publish and maintain a collection of rules, skills, agents, and other content that anyone can consume locally. You add a registry to your system, sync it to pull updates, and browse its items: ```bash syllago registry add syllago registry sync syllago registry items ``` When you’ve created content locally that you want to share back, you can publish it to a registry — syllago opens a PR against the registry repo: ```bash syllago publish my-skill --registry team-registry ``` Or share directly with your team repo: ```bash syllago share my-skill ``` ### Loadouts [Section titled “Loadouts”](#loadouts) A loadout is a bundled set of content that applies as a unit. Think of it as a named configuration profile — “my Python stack,” “frontend review setup,” or “security audit kit.” ```bash syllago loadout create # define a loadout syllago loadout apply # preview what would happen (default) syllago loadout apply --try # apply temporarily, auto-reverts on session end syllago loadout apply --keep # apply permanently syllago loadout remove # revert and clean up ``` Loadouts apply and revert cleanly, so you can switch contexts without leaving stale content behind. For more on how these three collections work together, see [Collections](/using-syllago/collections.md). ## Format Conversion [Section titled “Format Conversion”](#format-conversion) This is the mechanism that makes everything else work. syllago uses a **hub-and-spoke model** for format conversion: ```plaintext Source Provider ──→ syllago format ──→ Target Provider ``` **syllago format** is a provider-neutral representation of content. It’s the internal format syllago uses to store everything in your library, registries, and loadouts. The conversion flow works in two directions: * **Inbound** — When you `syllago add` content from a provider, syllago reads the provider’s native format and converts it to syllago format for storage. * **Outbound** — When you install content to a provider (or convert it for sharing), syllago converts from syllago format to the provider’s native format. This hub-and-spoke design means you add content once and install it anywhere. A rule written for Claude Code can be installed into Cursor, Windsurf, or any other supported provider — syllago handles the format translation automatically. For implementation details, see [Format Conversion](/using-syllago/format-conversion.md). *** These four concepts — providers as the tools you target, content types as the things you manage, collections as how content is organized, and format conversion as the translation layer — form the complete mental model for syllago. Every command in the CLI maps to an operation on one of these concepts.
# Installation
> Install syllago on Linux, macOS, or Windows.
[Source](/getting-started/installation/)
## System Requirements [Section titled “System Requirements”](#system-requirements) | Requirement | Details | | ---------------- | ----------------------------------------------------- | | **OS** | Linux, macOS, Windows (WSL or msys/mingw/cygwin) | | **Architecture** | x86\_64 (amd64) or arm64 | | **Go** | 1.25+ (only for `go install` or building from source) | ## Install Script (Recommended) [Section titled “Install Script (Recommended)”](#install-script-recommended) Downloads the latest release binary and verifies its SHA-256 checksum. Works on Linux, macOS, and Windows. ```bash curl -fsSL https://raw.githubusercontent.com/OpenScribbler/syllago/main/install.sh | sh ``` Installs to `~/.local/bin` by default. To override the install directory: ```bash curl -fsSL https://raw.githubusercontent.com/OpenScribbler/syllago/main/install.sh | INSTALL_DIR=/usr/local/bin sh ``` The install script creates a `syl` alias symlink automatically, so you can use either `syllago` or `syl` to run commands. ## Homebrew [Section titled “Homebrew”](#homebrew) ```bash brew install openscribbler/tap/syllago ``` ## Go Install [Section titled “Go Install”](#go-install) ```bash go install github.com/OpenScribbler/syllago/cli/cmd/syllago@latest ``` Requires Go 1.25+. ## From Source [Section titled “From Source”](#from-source) Requires Go 1.25+. ```bash git clone https://github.com/OpenScribbler/syllago.git cd syllago make build ``` ## Verify Installation [Section titled “Verify Installation”](#verify-installation) ```bash syllago version ``` ## Self-Update [Section titled “Self-Update”](#self-update) ```bash syllago update ``` Updates syllago to the latest release. ## Shell Completions [Section titled “Shell Completions”](#shell-completions) syllago generates completions for bash, zsh, fish, and PowerShell. * Bash Current session: ```bash source <(syllago completion bash) ``` Permanent (Linux): ```bash syllago completion bash > /etc/bash_completion.d/syllago ``` Permanent (macOS): ```bash syllago completion bash > $(brew --prefix)/etc/bash_completion.d/syllago ``` * Zsh Current session: ```bash source <(syllago completion zsh) ``` Permanent (Linux): ```bash syllago completion zsh > "${fpath[1]}/_syllago" ``` Permanent (macOS): ```bash syllago completion zsh > $(brew --prefix)/share/zsh/site-functions/_syllago ``` * Fish Current session: ```bash syllago completion fish | source ``` Permanent: ```bash syllago completion fish > ~/.config/fish/completions/syllago.fish ``` * PowerShell Current session: ```powershell syllago completion powershell | Out-String | Invoke-Expression ``` ## Next Steps [Section titled “Next Steps”](#next-steps) Head to the [Quick Start](/getting-started/quick-start.md) to start managing your AI coding tool content.
# Quick Start
> Get up and running with syllago in under five minutes.
[Source](/getting-started/quick-start/)
This guide covers two paths to get started with syllago: 1. **Import from your existing tools** — pull in rules, skills, or context you already have configured in an AI coding tool 2. **Browse a registry** — discover and install shared content from a team or community registry Both paths start with `syllago init`. ## Import from your existing tools [Section titled “Import from your existing tools”](#import-from-your-existing-tools) If you already have AI coding tools configured (Claude Code rules, Cursor rules, etc.), syllago can discover that content and bring it into your library. ### Initialize syllago [Section titled “Initialize syllago”](#initialize-syllago) ```bash syllago init ``` This detects AI coding tools (providers) on your machine and creates your config at `.syllago/config.json`. Follow the interactive prompts, or pass `--yes` to accept defaults. ### Discover available content [Section titled “Discover available content”](#discover-available-content) ```bash syllago add --from claude-code ``` Without a positional argument, `add` runs in **discovery mode** — it shows what content the provider has available without importing anything. ### Add content to your library [Section titled “Add content to your library”](#add-content-to-your-library) Once you know what’s there, add it: ```bash # Add all rules from a provider syllago add rules --from claude-code # Add a specific item syllago add rules/security --from claude-code ``` Content is copied into your library (`~/.syllago/content/`), where syllago manages it independently of the original provider. > **Tip:** Use `--dry-run` to preview what would be written without making changes. Use `--all` to add everything at once. ### See what you have [Section titled “See what you have”](#see-what-you-have) ```bash syllago list ``` Output is grouped by type (rules, skills, agents, etc.). Use `--source` to filter by origin and `--type` to filter by content type. ### Install to another provider [Section titled “Install to another provider”](#install-to-another-provider) ```bash syllago install my-rule --to cursor ``` This installs the item from your library into Cursor’s expected location, converting the format automatically. By default, syllago uses a **symlink** so changes stay in sync. Pass `--method copy` if you need a standalone file. ```bash # Preview what would happen without writing anything syllago install my-rule --to cursor --dry-run ``` That’s it — you’ve moved content from one AI coding tool to another with format conversion handled for you. ## Browse a registry [Section titled “Browse a registry”](#browse-a-registry) Registries are git-based repos of shared content. Use them to pull in team standards, community collections, or curated configurations. ### Initialize syllago [Section titled “Initialize syllago”](#initialize-syllago-1) Skip this if you already ran it above. ```bash syllago init ``` ### Add a registry [Section titled “Add a registry”](#add-a-registry) ```bash syllago registry add https://github.com/team/ai-configs.git ``` You can optionally pass `--name` to give it a short alias, or `--ref` to pin a specific branch or tag. ### Sync registry content [Section titled “Sync registry content”](#sync-registry-content) ```bash syllago registry sync ``` This pulls the latest content from all registered registries. To sync a specific one, pass its name: `syllago registry sync my-registry`. ### Browse available items [Section titled “Browse available items”](#browse-available-items) ```bash syllago registry items ``` Filter by type to narrow results: ```bash syllago registry items --type skills ``` ### Install from the registry [Section titled “Install from the registry”](#install-from-the-registry) ```bash syllago install some-skill --to claude-code ``` Same `install` command as before — syllago resolves the item from your registries, converts the format for the target provider, and symlinks it into place. ### Or use the TUI [Section titled “Or use the TUI”](#or-use-the-tui) Launch the interactive terminal UI to browse and install content visually: ```bash syllago ``` Running `syllago` with no arguments opens the TUI, where you can explore your library, registries, and providers in one place. ## Next steps [Section titled “Next steps”](#next-steps) Now that you have content flowing between tools, learn how the pieces fit together in [Core Concepts](/getting-started/core-concepts.md).
# Hook Interchange Format Specification
> Provider-neutral interchange format for AI coding tool hooks (v1.0.0-draft)
[Source](/reference/hooks-v1/)
**Version:** 1.0.0-draft | **License:** CC-BY-4.0 This specification defines a provider-neutral interchange format for AI coding tool hooks. It enables hook authors to write lifecycle hooks once and deploy them across multiple AI coding tool providers through a canonical representation, capability model, and conversion pipeline. For a user-friendly overview, see [Hooks content type](/using-syllago/content-types/hooks.md). This page is the full technical specification. *** ## 1. Introduction [Section titled “1. Introduction”](#1-introduction) AI coding tools provide hook systems that let developers run custom logic at lifecycle points: before a tool executes, when a session starts, after the agent stops. These hooks enforce policy, audit actions, inject context, and customize behavior. Every provider’s hook system is different. Event names, JSON schemas, output contracts, matcher syntax, timeout units, and configuration file layouts vary across providers. A hook written for one tool cannot run on another without manual adaptation. This specification defines a **canonical hook format** that serves as an interchange representation between providers. It does not replace any provider’s native format. Instead, it provides a neutral hub through which hooks are converted: decode from a source provider’s format into canonical, then encode from canonical into a target provider’s format. ### What This Spec Defines [Section titled “What This Spec Defines”](#what-this-spec-defines) * A canonical JSON format for hook manifests * An exit code contract for hook processes * A canonical output schema for structured hook responses * A typed matcher system for tool filtering * A registry of canonical event names with provider mappings * A capability model describing optional features with provider support matrices * A tool vocabulary mapping canonical tool names to provider-native names * Degradation strategies for handling capability gaps during conversion * Conformance levels for implementations *** ## 2. Canonical Format [Section titled “2. Canonical Format”](#2-canonical-format) ### Top-Level Structure [Section titled “Top-Level Structure”](#top-level-structure) ```json { "spec": "hooks/1.0", "hooks": [ { "event": "before_tool_execute", "matcher": "shell", "handler": { "type": "command", "command": "./safety-check.sh", "timeout": 10 }, "blocking": true } ] } ``` | Field | Type | Required | Description | | ------- | ------ | -------- | ----------------------------------- | | `spec` | string | Yes | Must be `"hooks/1.0"` | | `hooks` | array | Yes | Non-empty array of hook definitions | ### Hook Definition [Section titled “Hook Definition”](#hook-definition) | Field | Type | Required | Description | | --------------- | ------------------------ | -------- | --------------------------------------------------------------------- | | `event` | string | Yes | Canonical event name (see Event Registry) | | `matcher` | string, object, or array | No | Tool matcher expression (see Matcher Types) | | `handler` | object | Yes | Handler definition | | `blocking` | boolean | No | Whether this hook can prevent the triggering action. Default: `false` | | `degradation` | object | No | Per-capability fallback strategies | | `provider_data` | object | No | Opaque provider-specific data, keyed by provider slug | ### Handler Definition [Section titled “Handler Definition”](#handler-definition) | Field | Type | Required | Description | | ---------- | ------- | ----------- | --------------------------------------------------- | | `type` | string | Yes | `"command"`, `"http"`, `"prompt"`, or `"agent"` | | `command` | string | Conditional | Shell command (required when type is `"command"`) | | `platform` | object | No | Per-OS command overrides: `windows`, `linux`, `osx` | | `cwd` | string | No | Working directory relative to project root | | `env` | object | No | Environment variables for the hook process | | `timeout` | number | No | Max execution time in seconds (default: 30) | | `async` | boolean | No | Fire-and-forget execution. Default: `false` | *** ## 3. Exit Code Contract [Section titled “3. Exit Code Contract”](#3-exit-code-contract) | Exit Code | Name | Behavior | | --------- | ---------- | ------------------------------------------------- | | 0 | Success | Action proceeds. Stdout parsed as JSON if present | | 1 | Hook Error | Non-blocking warning. Action proceeds | | 2 | Block | Action prevented (only when `blocking: true`) | | Other | Hook Error | Same as exit code 1 | *** ## 4. Canonical Output Schema [Section titled “4. Canonical Output Schema”](#4-canonical-output-schema) When a hook exits 0 with JSON on stdout: | Field | Type | Description | | ---------- | ------- | -------------------------------------------------- | | `decision` | string | `"allow"`, `"deny"`, or `"ask"` | | `reason` | string | Human-readable explanation | | `continue` | boolean | Whether agent continues its loop (default: `true`) | | `context` | string | Context injected into agent conversation | Advanced fields (capability-specific): * `updated_input` — modified tool arguments (requires `input_rewrite` capability) * `suppress_output` — suppress tool output display (requires `structured_output`) * `system_message` — inject system prompt message (requires `structured_output`) *** ## 5. Matcher Types [Section titled “5. Matcher Types”](#5-matcher-types) ### Bare String [Section titled “Bare String”](#bare-string) Tool vocabulary lookup: ```json "matcher": "shell" ``` ### Pattern Object [Section titled “Pattern Object”](#pattern-object) Regex on tool name: ```json "matcher": {"pattern": "file_(read|write|edit)"} ``` ### MCP Object [Section titled “MCP Object”](#mcp-object) Target MCP server/tool: ```json "matcher": {"mcp": {"server": "github", "tool": "create_issue"}} ``` ### Array (OR) [Section titled “Array (OR)”](#array-or) Match any element: ```json "matcher": ["shell", "file_write", {"mcp": {"server": "github"}}] ``` *** ## 6. Event Registry [Section titled “6. Event Registry”](#6-event-registry) ### Core Events [Section titled “Core Events”](#core-events) | Event | Description | Blocking Semantic | | --------------------- | ------------------------------ | --------------------------------- | | `before_tool_execute` | Before any tool runs | Can prevent tool execution | | `after_tool_execute` | After tool completes | Observational only | | `session_start` | Session begins/resumes | Observational; may inject context | | `session_end` | Session terminates | Observational | | `before_prompt` | After user input, before agent | Can modify/reject input | | `agent_stop` | Agent main loop ends | Can trigger retry | ### Extended Events [Section titled “Extended Events”](#extended-events) `before_compact`, `notification`, `error_occurred`, `subagent_start`, `subagent_stop`, `permission_request` ### Provider-Exclusive Events [Section titled “Provider-Exclusive Events”](#provider-exclusive-events) | Event | Origin Provider | | ------------------------------------------------------ | --------------- | | `before_model`, `after_model`, `before_tool_selection` | Gemini CLI | | `config_change` | Claude Code | | `file_created`, `file_saved`, `file_deleted` | Kiro | | `before_task`, `after_task` | Kiro | ### Event Name Mapping [Section titled “Event Name Mapping”](#event-name-mapping) | Canonical | claude-code | gemini-cli | cursor | copilot-cli | kiro | | --------------------- | ---------------- | ----------- | -------------------- | ------------------- | ---------------- | | `before_tool_execute` | PreToolUse | BeforeTool | beforeShellExecution | preToolUse | preToolUse | | `after_tool_execute` | PostToolUse | AfterTool | afterFileEdit | postToolUse | postToolUse | | `before_prompt` | UserPromptSubmit | BeforeAgent | beforeSubmitPrompt | userPromptSubmitted | userPromptSubmit | | `agent_stop` | Stop | AfterAgent | stop | — | stop | *** ## 7. Tool Vocabulary [Section titled “7. Tool Vocabulary”](#7-tool-vocabulary) | Canonical | claude-code | gemini-cli | cursor | copilot-cli | kiro | | ------------ | ----------- | ------------------- | ------------------ | ----------- | ------------- | | `shell` | Bash | run\_shell\_command | run\_terminal\_cmd | bash | execute\_bash | | `file_read` | Read | read\_file | read\_file | view | fs\_read | | `file_write` | Write | write\_file | edit\_file | create | fs\_write | | `file_edit` | Edit | replace | edit\_file | edit | fs\_write | | `search` | Grep | grep\_search | grep\_search | grep | grep | | `find` | Glob | glob | file\_search | glob | glob | | `web_search` | WebSearch | google\_web\_search | web\_search | — | web\_search | | `web_fetch` | WebFetch | web\_fetch | — | web\_fetch | web\_fetch | | `agent` | Agent | — | — | task | use\_subagent | *** ## 8. Capability Registry [Section titled “8. Capability Registry”](#8-capability-registry) | Capability | Description | Default Degradation | | ------------------- | --------------------------------------- | ------------------- | | `structured_output` | JSON output with rich fields | `warn` | | `input_rewrite` | Modify tool arguments (safety-critical) | `block` | | `llm_evaluated` | LLM logic, not deterministic script | `exclude` | | `http_handler` | HTTP POST handler | `warn` | | `async_execution` | Fire-and-forget | `warn` | | `platform_commands` | OS-specific overrides | `warn` | | `custom_env` | Environment variables | `warn` | | `configurable_cwd` | Working directory | `warn` | *** ## 9. Degradation Strategies [Section titled “9. Degradation Strategies”](#9-degradation-strategies) | Strategy | Behavior | | --------- | ----------------------------------------------------------------------------------- | | `block` | Converted hook blocks action entirely instead of running with reduced functionality | | `warn` | Hook runs with reduced functionality; warning emitted | | `exclude` | Hook excluded from target provider’s configuration | Authors specify per-capability strategies in the `degradation` field. Absent strategies use safe defaults from the capability registry. *** ## 10. Conversion Pipeline [Section titled “10. Conversion Pipeline”](#10-conversion-pipeline) 1. **Decode** — Source adapter reads provider-native config → canonical manifest 2. **Validate** — Check capabilities against target provider, apply degradation 3. **Encode** — Target adapter writes canonical → provider-native config 4. **Verify** — Re-decode output to check structural fidelity *** ## 11. Conformance Levels [Section titled “11. Conformance Levels”](#11-conformance-levels) | Level | Requirements | | ------------ | ---------------------------------------------------------------------------------------------- | | **Core** | Parse/produce manifests, core events, exit codes, bare string matchers, event+tool translation | | **Extended** | + All matcher types, output schema, capability inference, degradation, extended events | | **Full** | + Provider data round-trip, verification, all capabilities, provider-exclusive events | *** ## Appendix: Provider Strengths [Section titled “Appendix: Provider Strengths”](#appendix-provider-strengths) * **Claude Code** — Richest output contract, four handler types, 25+ events * **Gemini CLI** — Unique LLM-interaction hooks (`before_model`, `after_model`) * **Kiro** — File system lifecycle hooks, spec task integration * **Cursor** — Pre-read file access control * **Windsurf** — Enterprise deployment infrastructure * **OpenCode** — Programmatic TypeScript/JavaScript extensibility * **Copilot CLI** — Conservative safety design, repository-bound hooks
# CLI Reference
> Complete reference for all syllago commands and flags.
[Source](/using-syllago/cli-reference/)
Auto-generated from syllago dev on 2026-03-24. ### Core Commands [Section titled “Core Commands”](#core-commands) | Command | Description | | -------------------------------------------------------------------------- | ------------------------------------------------------------- | | [`syllago add`](/using-syllago/cli-reference/add.md) | Add content to your library from a provider | | [`syllago compat`](/using-syllago/cli-reference/compat.md) | Show provider compatibility matrix for a content item | | [`syllago convert`](/using-syllago/cli-reference/convert.md) | Convert library content to a provider format | | [`syllago create`](/using-syllago/cli-reference/create.md) | Scaffold a new content item in the global library | | [`syllago explain`](/using-syllago/cli-reference/explain.md) | Show detailed documentation for an error code | | [`syllago init`](/using-syllago/cli-reference/init.md) | Initialize syllago for this project | | [`syllago inspect`](/using-syllago/cli-reference/inspect.md) | Show details about a content item | | [`syllago install`](/using-syllago/cli-reference/install.md) | Activate library content in a provider | | [`syllago list`](/using-syllago/cli-reference/list.md) | List content items in the library | | [`syllago publish`](/using-syllago/cli-reference/publish.md) | Contribute library content to a registry | | [`syllago remove`](/using-syllago/cli-reference/remove.md) | Remove content from your library and uninstall from providers | | [`syllago share`](/using-syllago/cli-reference/share.md) | Contribute library content to a team repo | | [`syllago sync-and-export`](/using-syllago/cli-reference/sync-and-export.md) | Sync registries then export content to a provider | | [`syllago uninstall`](/using-syllago/cli-reference/uninstall.md) | Deactivate content from a provider | | [`syllago update`](/using-syllago/cli-reference/update.md) | Check for and apply content updates from registries | | [`syllago update`](/using-syllago/cli-reference/update.md) | Update syllago to the latest release | | [`syllago version`](/using-syllago/cli-reference/version.md) | Print syllago version | ### [`syllago completion`](/using-syllago/cli-reference/completion.md) [Section titled “syllago completion”](#syllago-completion) Generate the autocompletion script for the specified shell | Command | Description | | -------------------------------------------------------------------------------------- | ------------------------------------------------- | | [`syllago completion bash`](/using-syllago/cli-reference/completion-bash.md) | Generate the autocompletion script for bash | | [`syllago completion fish`](/using-syllago/cli-reference/completion-fish.md) | Generate the autocompletion script for fish | | [`syllago completion powershell`](/using-syllago/cli-reference/completion-powershell.md) | Generate the autocompletion script for powershell | | [`syllago completion zsh`](/using-syllago/cli-reference/completion-zsh.md) | Generate the autocompletion script for zsh | ### [`syllago config`](/using-syllago/cli-reference/config.md) [Section titled “syllago config”](#syllago-config) View and edit syllago configuration | Command | Description | | ---------------------------------------------------------------------- | ---------------------------------------- | | [`syllago config add`](/using-syllago/cli-reference/config-add.md) | Add a provider to the configuration | | [`syllago config list`](/using-syllago/cli-reference/config-list.md) | List current configuration | | [`syllago config paths`](/using-syllago/cli-reference/config-paths.md) | Manage custom provider path overrides | | [`syllago config remove`](/using-syllago/cli-reference/config-remove.md) | Remove a provider from the configuration | ### [`syllago info`](/using-syllago/cli-reference/info.md) [Section titled “syllago info”](#syllago-info) Show syllago capabilities | Command | Description | | ------------------------------------------------------------------------ | --------------------------- | | [`syllago info formats`](/using-syllago/cli-reference/info-formats.md) | List supported file formats | | [`syllago info providers`](/using-syllago/cli-reference/info-providers.md) | List all known providers | ### [`syllago loadout`](/using-syllago/cli-reference/loadout.md) [Section titled “syllago loadout”](#syllago-loadout) Apply, create, and manage loadouts | Command | Description | | ------------------------------------------------------------------------ | ------------------------------------------------------------ | | [`syllago loadout apply`](/using-syllago/cli-reference/loadout-apply.md) | Apply a loadout | | [`syllago loadout create`](/using-syllago/cli-reference/loadout-create.md) | Interactively create a new loadout | | [`syllago loadout list`](/using-syllago/cli-reference/loadout-list.md) | List available loadouts | | [`syllago loadout remove`](/using-syllago/cli-reference/loadout-remove.md) | Remove the active loadout and restore original configuration | | [`syllago loadout status`](/using-syllago/cli-reference/loadout-status.md) | Show active loadout status | ### [`syllago registry`](/using-syllago/cli-reference/registry.md) [Section titled “syllago registry”](#syllago-registry) Manage git-based content registries | Command | Description | | -------------------------------------------------------------------------- | ---------------------------------------------- | | [`syllago registry add`](/using-syllago/cli-reference/registry-add.md) | Add a git registry | | [`syllago registry create`](/using-syllago/cli-reference/registry-create.md) | Create a new registry | | [`syllago registry items`](/using-syllago/cli-reference/registry-items.md) | Browse content available in registries | | [`syllago registry list`](/using-syllago/cli-reference/registry-list.md) | List registered registries | | [`syllago registry remove`](/using-syllago/cli-reference/registry-remove.md) | Remove a registry and delete its local clone | | [`syllago registry sync`](/using-syllago/cli-reference/registry-sync.md) | Pull latest content from one or all registries | ### [`syllago sandbox`](/using-syllago/cli-reference/sandbox.md) [Section titled “syllago sandbox”](#syllago-sandbox) Run and manage AI CLI tools in bubblewrap sandboxes | Command | Description | | ------------------------------------------------------------------------------------ | --------------------------------------------------- | | [`syllago sandbox allow-domain`](/using-syllago/cli-reference/sandbox-allow-domain.md) | Add a domain to the sandbox allowlist | | [`syllago sandbox allow-env`](/using-syllago/cli-reference/sandbox-allow-env.md) | Add an env var to the sandbox allowlist | | [`syllago sandbox allow-port`](/using-syllago/cli-reference/sandbox-allow-port.md) | Add a localhost port to the sandbox allowlist | | [`syllago sandbox check`](/using-syllago/cli-reference/sandbox-check.md) | Verify bubblewrap, socat, and optionally a provider | | [`syllago sandbox deny-domain`](/using-syllago/cli-reference/sandbox-deny-domain.md) | Remove a domain from the sandbox allowlist | | [`syllago sandbox deny-env`](/using-syllago/cli-reference/sandbox-deny-env.md) | Remove an env var from the sandbox allowlist | | [`syllago sandbox deny-port`](/using-syllago/cli-reference/sandbox-deny-port.md) | Remove a localhost port from the sandbox allowlist | | [`syllago sandbox domains`](/using-syllago/cli-reference/sandbox-domains.md) | List allowed domains | | [`syllago sandbox env`](/using-syllago/cli-reference/sandbox-env.md) | List allowed env vars | | [`syllago sandbox info`](/using-syllago/cli-reference/sandbox-info.md) | Show effective sandbox configuration | | [`syllago sandbox ports`](/using-syllago/cli-reference/sandbox-ports.md) | List allowed localhost ports | | [`syllago sandbox run`](/using-syllago/cli-reference/sandbox-run.md) | Run a provider in a sandbox |
# syllago add
> Add content to your library from a provider
[Source](/using-syllago/cli-reference/add/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago add [[/]] --from [flags] ``` ## Description [Section titled “Description”](#description) Discovers content from a provider and adds it to your library (\~/.syllago/content/). Without a positional argument, shows what content is available (discovery mode). Provide a type or type/name to add content. Syllago handles format conversion automatically. Once added, content can be installed to any supported provider with “syllago install —to \”. After adding, use “syllago install” to activate content in a provider. Hooks-specific flags (—exclude, —scope) are only meaningful when adding hooks. ## Options [Section titled “Options”](#options) | Flag | Type | Default | Required | Description | | --------------------- | ------------- | ------- | -------- | --------------------------------------------------------------------- | | `--all` | `bool` | — | No | Add all discovered content (cannot combine with positional target) | | `--base-dir` | `string` | — | No | Override base directory for content discovery | | `--dry-run` | `bool` | — | No | Show what would be written without actually writing | | `--exclude` | `stringArray` | — | No | Skip hooks by auto-derived name (hooks only) | | `-f`, `--force` | `bool` | — | No | Overwrite existing item without prompting | | `--from` | `string` | — | Yes | Provider to add from (required) | | `--no-input` | `bool` | — | No | Disable interactive prompts, use defaults | | `--scope` | `string` | `all` | No | Settings scope to read from: global, project, or all (hooks/mcp only) | | `--source-registry` | `string` | — | No | Registry name for taint tracking | | `--source-visibility` | `string` | — | No | Source registry visibility (public, private, unknown) | ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash # Discover available content (read-only) syllago add --from claude-code # Add all rules from a provider syllago add rules --from claude-code # Add a specific rule by name syllago add rules/security --from claude-code # Add everything syllago add --all --from claude-code # Preview what would be written syllago add --from claude-code --dry-run ``` *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/add.go)
# syllago compat
> Show provider compatibility matrix for a content item
[Source](/using-syllago/cli-reference/compat/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago compat ``` ## Description [Section titled “Description”](#description) Analyzes a library item and shows which providers support it, what warnings arise during conversion, and which providers cannot handle the content type at all. For each provider, syllago attempts the full canonicalize-then-render pipeline and reports the result. ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash # Show compatibility for a skill syllago compat my-skill # JSON output for scripting syllago compat my-skill --json ``` *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/compat.go)
# syllago completion
> Generate the autocompletion script for the specified shell
[Source](/using-syllago/cli-reference/completion/)
Generate the autocompletion script for syllago for the specified shell. See each sub-command’s help for details on how to use the generated script. ## Subcommands [Section titled “Subcommands”](#subcommands) | Command | Description | | ------------------------------------------------------------------- | ------------------------------------------------- | | [`bash`](/using-syllago/cli-reference/completion-bash.md) | Generate the autocompletion script for bash | | [`fish`](/using-syllago/cli-reference/completion-fish.md) | Generate the autocompletion script for fish | | [`powershell`](/using-syllago/cli-reference/completion-powershell.md) | Generate the autocompletion script for powershell | | [`zsh`](/using-syllago/cli-reference/completion-zsh.md) | Generate the autocompletion script for zsh | ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/completion_cmd.go)
# syllago completion bash
> Generate the autocompletion script for bash
[Source](/using-syllago/cli-reference/completion-bash/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago completion bash ``` ## Description [Section titled “Description”](#description) Generate the autocompletion script for the bash shell. This script depends on the ‘bash-completion’ package. If it is not installed already, you can install it via your OS’s package manager. To load completions in your current shell session: ```bash source <(syllago completion bash) ``` To load completions for every new session, execute once: #### Linux: [Section titled “Linux:”](#linux) ```bash syllago completion bash > /etc/bash_completion.d/syllago ``` #### macOS: [Section titled “macOS:”](#macos) ```bash syllago completion bash > $(brew --prefix)/etc/bash_completion.d/syllago ``` You will need to start a new shell for this setup to take effect. ## Options [Section titled “Options”](#options) | Flag | Type | Default | Required | Description | | ------------------- | ------ | ------- | -------- | ------------------------------- | | `--no-descriptions` | `bool` | — | No | disable completion descriptions | ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## See Also [Section titled “See Also”](#see-also) * [syllago completion](/using-syllago/cli-reference/completion.md) * [syllago completion fish](/using-syllago/cli-reference/completion-fish.md) * [syllago completion powershell](/using-syllago/cli-reference/completion-powershell.md) * [syllago completion zsh](/using-syllago/cli-reference/completion-zsh.md) *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/completion_cmd.go)
# syllago completion fish
> Generate the autocompletion script for fish
[Source](/using-syllago/cli-reference/completion-fish/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago completion fish [flags] ``` ## Description [Section titled “Description”](#description) Generate the autocompletion script for the fish shell. To load completions in your current shell session: ```bash syllago completion fish | source ``` To load completions for every new session, execute once: ```bash syllago completion fish > ~/.config/fish/completions/syllago.fish ``` You will need to start a new shell for this setup to take effect. ## Options [Section titled “Options”](#options) | Flag | Type | Default | Required | Description | | ------------------- | ------ | ------- | -------- | ------------------------------- | | `--no-descriptions` | `bool` | — | No | disable completion descriptions | ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## See Also [Section titled “See Also”](#see-also) * [syllago completion](/using-syllago/cli-reference/completion.md) * [syllago completion bash](/using-syllago/cli-reference/completion-bash.md) * [syllago completion powershell](/using-syllago/cli-reference/completion-powershell.md) * [syllago completion zsh](/using-syllago/cli-reference/completion-zsh.md) *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/completion_cmd.go)
# syllago completion powershell
> Generate the autocompletion script for powershell
[Source](/using-syllago/cli-reference/completion-powershell/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago completion powershell [flags] ``` ## Description [Section titled “Description”](#description) Generate the autocompletion script for powershell. To load completions in your current shell session: ```bash syllago completion powershell | Out-String | Invoke-Expression ``` To load completions for every new session, add the output of the above command to your powershell profile. ## Options [Section titled “Options”](#options) | Flag | Type | Default | Required | Description | | ------------------- | ------ | ------- | -------- | ------------------------------- | | `--no-descriptions` | `bool` | — | No | disable completion descriptions | ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## See Also [Section titled “See Also”](#see-also) * [syllago completion](/using-syllago/cli-reference/completion.md) * [syllago completion bash](/using-syllago/cli-reference/completion-bash.md) * [syllago completion fish](/using-syllago/cli-reference/completion-fish.md) * [syllago completion zsh](/using-syllago/cli-reference/completion-zsh.md) *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/completion_cmd.go)
# syllago completion zsh
> Generate the autocompletion script for zsh
[Source](/using-syllago/cli-reference/completion-zsh/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago completion zsh [flags] ``` ## Description [Section titled “Description”](#description) Generate the autocompletion script for the zsh shell. If shell completion is not already enabled in your environment you will need to enable it. You can execute the following once: ```bash echo "autoload -U compinit; compinit" >> ~/.zshrc ``` To load completions in your current shell session: ```bash source <(syllago completion zsh) ``` To load completions for every new session, execute once: #### Linux: [Section titled “Linux:”](#linux) ```bash syllago completion zsh > "${fpath[1]}/_syllago" ``` #### macOS: [Section titled “macOS:”](#macos) ```bash syllago completion zsh > $(brew --prefix)/share/zsh/site-functions/_syllago ``` You will need to start a new shell for this setup to take effect. ## Options [Section titled “Options”](#options) | Flag | Type | Default | Required | Description | | ------------------- | ------ | ------- | -------- | ------------------------------- | | `--no-descriptions` | `bool` | — | No | disable completion descriptions | ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## See Also [Section titled “See Also”](#see-also) * [syllago completion](/using-syllago/cli-reference/completion.md) * [syllago completion bash](/using-syllago/cli-reference/completion-bash.md) * [syllago completion fish](/using-syllago/cli-reference/completion-fish.md) * [syllago completion powershell](/using-syllago/cli-reference/completion-powershell.md) *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/completion_cmd.go)
# syllago config
> View and edit syllago configuration
[Source](/using-syllago/cli-reference/config/)
Manage provider selection and preferences in .syllago/config.json. ## Subcommands [Section titled “Subcommands”](#subcommands) | Command | Description | | ------------------------------------------------------- | ---------------------------------------- | | [`add`](/using-syllago/cli-reference/config-add.md) | Add a provider to the configuration | | [`list`](/using-syllago/cli-reference/config-list.md) | List current configuration | | [`paths`](/using-syllago/cli-reference/config-paths.md) | Manage custom provider path overrides | | [`remove`](/using-syllago/cli-reference/config-remove.md) | Remove a provider from the configuration | ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/config_cmd.go)
# syllago config add
> Add a provider to the configuration
[Source](/using-syllago/cli-reference/config-add/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago config add ``` ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash syllago config add cursor ``` ## See Also [Section titled “See Also”](#see-also) * [syllago config](/using-syllago/cli-reference/config.md) * [syllago config list](/using-syllago/cli-reference/config-list.md) * [syllago config paths](/using-syllago/cli-reference/config-paths.md) * [syllago config remove](/using-syllago/cli-reference/config-remove.md) *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/config_cmd.go)
# syllago config list
> List current configuration
[Source](/using-syllago/cli-reference/config-list/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago config list ``` ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash # Show configured providers syllago config list # JSON output syllago config list --json ``` ## See Also [Section titled “See Also”](#see-also) * [syllago config](/using-syllago/cli-reference/config.md) * [syllago config add](/using-syllago/cli-reference/config-add.md) * [syllago config paths](/using-syllago/cli-reference/config-paths.md) * [syllago config remove](/using-syllago/cli-reference/config-remove.md) *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/config_cmd.go)
# syllago config paths
> Manage custom provider path overrides
[Source](/using-syllago/cli-reference/config-paths/)
Configure custom base directories or per-type path overrides for providers. Overrides are stored in the global config (\~/.syllago/config.json) since paths are machine-specific. ## Subcommands [Section titled “Subcommands”](#subcommands) | Command | Description | | ----------------------------------------------------------- | ----------------------------------- | | [`clear`](/using-syllago/cli-reference/config-paths-clear.md) | Clear path overrides for a provider | | [`set`](/using-syllago/cli-reference/config-paths-set.md) | Set path overrides for a provider | | [`show`](/using-syllago/cli-reference/config-paths-show.md) | Show configured path overrides | ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/config_cmd.go)
# syllago config paths clear
> Clear path overrides for a provider
[Source](/using-syllago/cli-reference/config-paths-clear/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago config paths clear [flags] ``` ## Options [Section titled “Options”](#options) | Flag | Type | Default | Required | Description | | -------- | -------- | ------- | -------- | -------------------------------------------------- | | `--type` | `string` | — | No | specific content type to clear (omit to clear all) | ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash # Clear all overrides for a provider syllago config paths clear claude-code # Clear only a specific type override syllago config paths clear cursor --type rules ``` ## See Also [Section titled “See Also”](#see-also) * [syllago config paths](/using-syllago/cli-reference/config-paths.md) * [syllago config paths set](/using-syllago/cli-reference/config-paths-set.md) * [syllago config paths show](/using-syllago/cli-reference/config-paths-show.md) *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/paths_cmd.go)
# syllago config paths set
> Set path overrides for a provider
[Source](/using-syllago/cli-reference/config-paths-set/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago config paths set [flags] ``` ## Description [Section titled “Description”](#description) Set a base directory or per-type path override for a provider. Paths must be absolute (start with / or \~/). ## Options [Section titled “Options”](#options) | Flag | Type | Default | Required | Description | | ------------ | -------- | ------- | -------- | ------------------------------------------- | | `--base-dir` | `string` | — | No | base directory override (replaces home dir) | | `--path` | `string` | — | No | absolute path for the content type | | `--type` | `string` | — | No | content type (e.g., skills, hooks) | ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash # Set a base directory for a provider syllago config paths set claude-code --base-dir ~/custom/claude # Set a per-type path override syllago config paths set cursor --type rules --path ~/my-rules ``` ## See Also [Section titled “See Also”](#see-also) * [syllago config paths](/using-syllago/cli-reference/config-paths.md) * [syllago config paths clear](/using-syllago/cli-reference/config-paths-clear.md) * [syllago config paths show](/using-syllago/cli-reference/config-paths-show.md) *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/paths_cmd.go)
# syllago config paths show
> Show configured path overrides
[Source](/using-syllago/cli-reference/config-paths-show/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago config paths show [flags] ``` ## Options [Section titled “Options”](#options) | Flag | Type | Default | Required | Description | | ------------ | -------- | ------- | -------- | ----------------------- | | `--provider` | `string` | — | No | filter by provider slug | ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash # Show all path overrides syllago config paths show # Show overrides for a specific provider syllago config paths show --provider claude-code ``` ## See Also [Section titled “See Also”](#see-also) * [syllago config paths](/using-syllago/cli-reference/config-paths.md) * [syllago config paths clear](/using-syllago/cli-reference/config-paths-clear.md) * [syllago config paths set](/using-syllago/cli-reference/config-paths-set.md) *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/paths_cmd.go)
# syllago config remove
> Remove a provider from the configuration
[Source](/using-syllago/cli-reference/config-remove/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago config remove ``` ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash syllago config remove windsurf ``` ## See Also [Section titled “See Also”](#see-also) * [syllago config](/using-syllago/cli-reference/config.md) * [syllago config add](/using-syllago/cli-reference/config-add.md) * [syllago config list](/using-syllago/cli-reference/config-list.md) * [syllago config paths](/using-syllago/cli-reference/config-paths.md) *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/config_cmd.go)
# syllago convert
> Convert library content to a provider format
[Source](/using-syllago/cli-reference/convert/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago convert [flags] ``` ## Description [Section titled “Description”](#description) Renders a library item to a target provider’s format without installing it. Output goes to stdout by default, or to a file with —output. No state changes are made — this is purely for ad-hoc sharing. ## Options [Section titled “Options”](#options) | Flag | Type | Default | Required | Description | | ---------------- | -------- | ------- | -------- | ----------------------------------------------------------------------------- | | `--batch` | `string` | — | No | Directory of hook files to batch-canonicalize (mutual exclusive with \) | | `--dry-run` | `bool` | — | No | Show what would be converted without writing files | | `--from` | `string` | — | No | Source provider slug (required with —batch) | | `-o`, `--output` | `string` | — | No | Write output to this file path (default: stdout) | | `--to` | `string` | — | Yes | Target provider (required) | ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash # Convert a skill to Cursor format (stdout) syllago convert my-skill --to cursor # Convert and save to a file syllago convert my-rule --to windsurf --output ./windsurf-rule.md # Batch-canonicalize a directory of hooks syllago convert --batch ./hooks/ --from claude-code --to canonical # Batch dry-run syllago convert --batch ./hooks/ --from claude-code --to canonical --dry-run ``` *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/convert.go)
# syllago create
> Scaffold a new content item in the global library
[Source](/using-syllago/cli-reference/create/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago create [flags] ``` ## Description [Section titled “Description”](#description) Creates a new content item directory under \~/.syllago/content/ with .syllago.yaml metadata. ## Options [Section titled “Options”](#options) | Flag | Type | Default | Required | Description | | ------------------ | -------- | ------- | -------- | --------------------------------------------------- | | `-p`, `--provider` | `string` | — | No | Provider slug (required for rules, hooks, commands) | ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash # Create a new skill syllago create skills my-new-skill # Create a provider-specific rule syllago create rules my-rule --provider claude-code # Create a new agent syllago create agents my-agent ``` *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/create.go)
# syllago explain
> Show detailed documentation for an error code
[Source](/using-syllago/cli-reference/explain/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago explain CODE [flags] ``` ## Description [Section titled “Description”](#description) Display documentation for a syllago error code. Each error code has a detailed explanation including what it means, common causes, and how to fix it. ## Options [Section titled “Options”](#options) | Flag | Type | Default | Required | Description | | -------- | ------ | ------- | -------- | ------------------------------ | | `--list` | `bool` | — | No | list all available error codes | ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash syllago explain CATALOG_001 syllago explain --list ``` *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/explain.go)
# syllago info
> Show syllago capabilities
[Source](/using-syllago/cli-reference/info/)
Machine-readable capability manifest. Useful for agents discovering syllago’s features. ## Subcommands [Section titled “Subcommands”](#subcommands) | Command | Description | | ----------------------------------------------------------- | --------------------------- | | [`formats`](/using-syllago/cli-reference/info-formats.md) | List supported file formats | | [`providers`](/using-syllago/cli-reference/info-providers.md) | List all known providers | ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/info_cmd.go)
# syllago info formats
> List supported file formats
[Source](/using-syllago/cli-reference/info-formats/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago info formats ``` ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash syllago info formats ``` ## See Also [Section titled “See Also”](#see-also) * [syllago info](/using-syllago/cli-reference/info.md) * [syllago info providers](/using-syllago/cli-reference/info-providers.md) *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/info_cmd.go)
# syllago info providers
> List all known providers
[Source](/using-syllago/cli-reference/info-providers/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago info providers ``` ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash # List providers and their supported types syllago info providers # JSON output syllago info providers --json ``` ## See Also [Section titled “See Also”](#see-also) * [syllago info](/using-syllago/cli-reference/info.md) * [syllago info formats](/using-syllago/cli-reference/info-formats.md) *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/info_cmd.go)
# syllago init
> Initialize syllago for this project
[Source](/using-syllago/cli-reference/init/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago init [flags] ``` ## Description [Section titled “Description”](#description) Detects AI coding tools in use, creates .syllago/config.json with provider selection. ## Options [Section titled “Options”](#options) | Flag | Type | Default | Required | Description | | ------------- | ------ | ------- | -------- | ----------------------------- | | `--force` | `bool` | — | No | Overwrite existing config | | `-y`, `--yes` | `bool` | — | No | Skip interactive confirmation | ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash # Interactive setup syllago init # Skip confirmation prompts syllago init --yes # Overwrite existing config syllago init --force ``` *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/init.go)
# syllago inspect
> Show details about a content item
[Source](/using-syllago/cli-reference/inspect/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago inspect / [flags] ``` ## Description [Section titled “Description”](#description) Display full details about a content item for pre-install auditing. By default, shows metadata and the primary content file. Use —as to preview what the content would look like converted to a specific provider’s format. Path formats: skills/my-skill Universal content (type/name) rules/claude-code/my-rule Provider-specific (type/provider/name) ## Options [Section titled “Options”](#options) | Flag | Type | Default | Required | Description | | ----------------- | -------- | ------- | -------- | --------------------------------------------------- | | `--as` | `string` | — | No | Preview content converted to a provider’s format | | `--compatibility` | `bool` | — | No | Show per-provider compatibility matrix (hooks only) | | `--files` | `bool` | — | No | Show file contents | | `--risk` | `bool` | — | No | Show detailed risk analysis | ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash # Inspect a skill (shows metadata + content) syllago inspect skills/my-skill # Preview what a rule looks like in Cursor format syllago inspect rules/coding-standards --as cursor # Compare formats side by side syllago inspect rules/coding-standards --as claude-code syllago inspect rules/coding-standards --as cursor # JSON output for scripting syllago inspect --json skills/my-skill ``` *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/inspect.go)
# syllago install
> Activate library content in a provider
[Source](/using-syllago/cli-reference/install/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago install [name] [flags] ``` ## Description [Section titled “Description”](#description) Install content from your library into a provider’s location. By default uses a symlink so edits in your library are reflected immediately. Use —method copy to place a standalone copy instead. ## Options [Section titled “Options”](#options) | Flag | Type | Default | Required | Description | | ----------------- | -------- | --------- | -------- | ------------------------------------------------ | | `--base-dir` | `string` | — | No | Override base directory for content installation | | `-n`, `--dry-run` | `bool` | — | No | Show what would happen without making changes | | `--method` | `string` | `symlink` | No | Install method: symlink (default) or copy | | `--no-input` | `bool` | — | No | Disable interactive prompts, use defaults | | `--to` | `string` | — | Yes | Provider to install into (required) | | `--type` | `string` | — | No | Filter to a specific content type | ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash # Install a skill to Claude Code syllago install my-skill --to claude-code # Install with a standalone copy instead of symlink syllago install my-skill --to cursor --method copy # Install all skills to a provider syllago install --to claude-code --type skills # Preview what would happen syllago install my-skill --to claude-code --dry-run ``` *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/install.go)
# syllago list
> List content items in the library
[Source](/using-syllago/cli-reference/list/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago list [flags] ``` ## Description [Section titled “Description”](#description) Show a quick inventory of all content without launching the TUI. By default, lists all content grouped by type. Use flags to filter. ## Options [Section titled “Options”](#options) | Flag | Type | Default | Required | Description | | ---------- | -------- | ------- | -------- | --------------------------------------------------------- | | `--source` | `string` | `all` | No | Filter by source: library, shared, registry, builtin, all | | `--type` | `string` | — | No | Filter to one content type (e.g., skills, rules) | ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash # List all content grouped by type syllago list # Show only library items syllago list --source library # Show only skills syllago list --type skills # JSON output for scripting syllago list --json ``` *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/list.go)
# syllago loadout
> Apply, create, and manage loadouts
[Source](/using-syllago/cli-reference/loadout/)
Loadouts bundle a curated set of syllago content — rules, hooks, skills, agents, MCP servers — into a single shareable configuration. Use “syllago loadout apply” to try or apply a loadout. Use “syllago loadout create” to build a new loadout interactively. Use “syllago loadout remove” to revert an active loadout. ## Subcommands [Section titled “Subcommands”](#subcommands) | Command | Description | | -------------------------------------------------------- | ------------------------------------------------------------ | | [`apply`](/using-syllago/cli-reference/loadout-apply.md) | Apply a loadout | | [`create`](/using-syllago/cli-reference/loadout-create.md) | Interactively create a new loadout | | [`list`](/using-syllago/cli-reference/loadout-list.md) | List available loadouts | | [`remove`](/using-syllago/cli-reference/loadout-remove.md) | Remove the active loadout and restore original configuration | | [`status`](/using-syllago/cli-reference/loadout-status.md) | Show active loadout status | ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/loadout_cmd.go)
# syllago loadout apply
> Apply a loadout
[Source](/using-syllago/cli-reference/loadout-apply/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago loadout apply [name] [flags] ``` ## Description [Section titled “Description”](#description) Apply a loadout to configure the current project for Claude Code. Default mode (no flags): preview what would happen without making changes. —try: apply temporarily; reverts automatically when the session ends. —keep: apply permanently; run “syllago loadout remove” to undo. ## Options [Section titled “Options”](#options) | Flag | Type | Default | Required | Description | | ------------ | -------- | --------- | -------- | ------------------------------------------------------------------------------- | | `--base-dir` | `string` | — | No | Override base directory for content installation | | `--keep` | `bool` | — | No | Apply permanently | | `--method` | `string` | `symlink` | No | Install method: symlink (default) or copy | | `--preview` | `bool` | — | No | Dry run: show planned actions without applying | | `--to` | `string` | — | No | Target provider (overrides manifest provider; defaults to claude-code if unset) | | `--try` | `bool` | — | No | Apply temporarily; auto-revert on session end | ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash # Preview what a loadout would do syllago loadout apply my-loadout # Try temporarily (auto-reverts on session end) syllago loadout apply my-loadout --try # Apply permanently syllago loadout apply my-loadout --keep # Apply to a specific provider syllago loadout apply my-loadout --keep --to cursor ``` ## See Also [Section titled “See Also”](#see-also) * [syllago loadout](/using-syllago/cli-reference/loadout.md) * [syllago loadout create](/using-syllago/cli-reference/loadout-create.md) * [syllago loadout list](/using-syllago/cli-reference/loadout-list.md) * [syllago loadout remove](/using-syllago/cli-reference/loadout-remove.md) * [syllago loadout status](/using-syllago/cli-reference/loadout-status.md) *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/loadout_apply.go)
# syllago loadout create
> Interactively create a new loadout
[Source](/using-syllago/cli-reference/loadout-create/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago loadout create ``` ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash syllago loadout create ``` ## See Also [Section titled “See Also”](#see-also) * [syllago loadout](/using-syllago/cli-reference/loadout.md) * [syllago loadout apply](/using-syllago/cli-reference/loadout-apply.md) * [syllago loadout list](/using-syllago/cli-reference/loadout-list.md) * [syllago loadout remove](/using-syllago/cli-reference/loadout-remove.md) * [syllago loadout status](/using-syllago/cli-reference/loadout-status.md) *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/loadout_create.go)
# syllago loadout list
> List available loadouts
[Source](/using-syllago/cli-reference/loadout-list/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago loadout list ``` ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash # List all available loadouts syllago loadout list # JSON output syllago loadout list --json ``` ## See Also [Section titled “See Also”](#see-also) * [syllago loadout](/using-syllago/cli-reference/loadout.md) * [syllago loadout apply](/using-syllago/cli-reference/loadout-apply.md) * [syllago loadout create](/using-syllago/cli-reference/loadout-create.md) * [syllago loadout remove](/using-syllago/cli-reference/loadout-remove.md) * [syllago loadout status](/using-syllago/cli-reference/loadout-status.md) *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/loadout_list.go)
# syllago loadout remove
> Remove the active loadout and restore original configuration
[Source](/using-syllago/cli-reference/loadout-remove/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago loadout remove [flags] ``` ## Options [Section titled “Options”](#options) | Flag | Type | Default | Required | Description | | -------- | ------ | ------- | -------- | ------------------------------------------- | | `--auto` | `bool` | — | No | Skip confirmation (used by SessionEnd hook) | ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash syllago loadout remove ``` ## See Also [Section titled “See Also”](#see-also) * [syllago loadout](/using-syllago/cli-reference/loadout.md) * [syllago loadout apply](/using-syllago/cli-reference/loadout-apply.md) * [syllago loadout create](/using-syllago/cli-reference/loadout-create.md) * [syllago loadout list](/using-syllago/cli-reference/loadout-list.md) * [syllago loadout status](/using-syllago/cli-reference/loadout-status.md) *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/loadout_remove.go)
# syllago loadout status
> Show active loadout status
[Source](/using-syllago/cli-reference/loadout-status/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago loadout status ``` ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash # Check if a loadout is active syllago loadout status # JSON output syllago loadout status --json ``` ## See Also [Section titled “See Also”](#see-also) * [syllago loadout](/using-syllago/cli-reference/loadout.md) * [syllago loadout apply](/using-syllago/cli-reference/loadout-apply.md) * [syllago loadout create](/using-syllago/cli-reference/loadout-create.md) * [syllago loadout list](/using-syllago/cli-reference/loadout-list.md) * [syllago loadout remove](/using-syllago/cli-reference/loadout-remove.md) *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/loadout_status.go)
# syllago publish
> Contribute library content to a registry
[Source](/using-syllago/cli-reference/publish/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago publish [flags] ``` ## Description [Section titled “Description”](#description) Copies a library item to a registry clone, stages the change, and optionally creates a branch and PR. ## Options [Section titled “Options”](#options) | Flag | Type | Default | Required | Description | | ------------ | -------- | ------- | -------- | ----------------------------------------------- | | `--no-input` | `bool` | — | No | Skip interactive git prompts, stage only | | `--registry` | `string` | — | Yes | Registry name to publish to (required) | | `--type` | `string` | — | No | Disambiguate when name exists in multiple types | ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash # Publish a skill to a registry syllago publish my-skill --registry my-registry # Publish a specific rule type syllago publish my-rule --registry team-rules --type rules # Non-interactive mode syllago publish my-skill --registry my-registry --no-input ``` *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/publish.go)
# syllago registry
> Manage git-based content registries
[Source](/using-syllago/cli-reference/registry/)
Add, remove, list, and sync git repositories as content registries. Registries are read-only git repos containing shared content (skills, rules, hooks, MCP configs, etc.). Use “registry sync” to pull updates, and “registry items” to browse what’s available. To use registry content, browse it in the TUI (“syllago”) or install it directly with “syllago install —to \”. ## Subcommands [Section titled “Subcommands”](#subcommands) | Command | Description | | --------------------------------------------------------- | ---------------------------------------------- | | [`add`](/using-syllago/cli-reference/registry-add.md) | Add a git registry | | [`create`](/using-syllago/cli-reference/registry-create.md) | Create a new registry | | [`items`](/using-syllago/cli-reference/registry-items.md) | Browse content available in registries | | [`list`](/using-syllago/cli-reference/registry-list.md) | List registered registries | | [`remove`](/using-syllago/cli-reference/registry-remove.md) | Remove a registry and delete its local clone | | [`sync`](/using-syllago/cli-reference/registry-sync.md) | Pull latest content from one or all registries | ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/registry_cmd.go)
# syllago registry add
> Add a git registry
[Source](/using-syllago/cli-reference/registry-add/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago registry add [flags] ``` ## Options [Section titled “Options”](#options) | Flag | Type | Default | Required | Description | | -------- | -------- | ------- | -------- | ----------------------------------------------------------------- | | `--name` | `string` | — | No | Override the registry name (default: derived from URL) | | `--ref` | `string` | — | No | Branch, tag, or commit to checkout (default: repo default branch) | ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash # Add a registry by URL syllago registry add https://github.com/team/rules.git # Add with a custom name syllago registry add https://github.com/team/rules.git --name team-rules # Pin to a specific branch syllago registry add https://github.com/team/rules.git --ref main ``` ## See Also [Section titled “See Also”](#see-also) * [syllago registry](/using-syllago/cli-reference/registry.md) * [syllago registry create](/using-syllago/cli-reference/registry-create.md) * [syllago registry items](/using-syllago/cli-reference/registry-items.md) * [syllago registry list](/using-syllago/cli-reference/registry-list.md) * [syllago registry remove](/using-syllago/cli-reference/registry-remove.md) * [syllago registry sync](/using-syllago/cli-reference/registry-sync.md) *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/registry_cmd.go)
# syllago registry create
> Create a new registry
[Source](/using-syllago/cli-reference/registry-create/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago registry create [flags] ``` ## Description [Section titled “Description”](#description) Create a new registry in one of two modes: —new \ Scaffold an empty registry directory structure —from-native Index provider-native content in the current repo ## Options [Section titled “Options”](#options) | Flag | Type | Default | Required | Description | | --------------- | -------- | ------- | -------- | --------------------------------------------------- | | `--description` | `string` | — | No | Short description of the registry (used with —new) | | `--from-native` | `bool` | — | No | Index provider-native content in the current repo | | `--new` | `string` | — | No | Scaffold an empty registry directory with this name | | `--no-git` | `bool` | — | No | Skip git init and initial commit (used with —new) | ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash # Scaffold an empty registry syllago registry create --new my-rules # Scaffold with a description syllago registry create --new my-rules --description "Team coding standards" # Index existing provider-native content syllago registry create --from-native ``` ## See Also [Section titled “See Also”](#see-also) * [syllago registry](/using-syllago/cli-reference/registry.md) * [syllago registry add](/using-syllago/cli-reference/registry-add.md) * [syllago registry items](/using-syllago/cli-reference/registry-items.md) * [syllago registry list](/using-syllago/cli-reference/registry-list.md) * [syllago registry remove](/using-syllago/cli-reference/registry-remove.md) * [syllago registry sync](/using-syllago/cli-reference/registry-sync.md) *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/registry_cmd.go)
# syllago registry items
> Browse content available in registries
[Source](/using-syllago/cli-reference/registry-items/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago registry items [name] [flags] ``` ## Description [Section titled “Description”](#description) Lists content items from one or all registries. Use —type to filter by content type. To install registry content, use “syllago install —to \” or browse in the TUI with “syllago”. ## Options [Section titled “Options”](#options) | Flag | Type | Default | Required | Description | | -------- | -------- | ------- | -------- | --------------------------------------------------- | | `--type` | `string` | — | No | Filter by content type (skills, rules, hooks, etc.) | ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash # List all items from all registries syllago registry items # List items from a specific registry syllago registry items my-rules # Filter by content type syllago registry items --type skills ``` ## See Also [Section titled “See Also”](#see-also) * [syllago registry](/using-syllago/cli-reference/registry.md) * [syllago registry add](/using-syllago/cli-reference/registry-add.md) * [syllago registry create](/using-syllago/cli-reference/registry-create.md) * [syllago registry list](/using-syllago/cli-reference/registry-list.md) * [syllago registry remove](/using-syllago/cli-reference/registry-remove.md) * [syllago registry sync](/using-syllago/cli-reference/registry-sync.md) *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/registry_cmd.go)
# syllago registry list
> List registered registries
[Source](/using-syllago/cli-reference/registry-list/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago registry list ``` ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash # List all configured registries syllago registry list # JSON output syllago registry list --json ``` ## See Also [Section titled “See Also”](#see-also) * [syllago registry](/using-syllago/cli-reference/registry.md) * [syllago registry add](/using-syllago/cli-reference/registry-add.md) * [syllago registry create](/using-syllago/cli-reference/registry-create.md) * [syllago registry items](/using-syllago/cli-reference/registry-items.md) * [syllago registry remove](/using-syllago/cli-reference/registry-remove.md) * [syllago registry sync](/using-syllago/cli-reference/registry-sync.md) *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/registry_cmd.go)
# syllago registry remove
> Remove a registry and delete its local clone
[Source](/using-syllago/cli-reference/registry-remove/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago registry remove ``` ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash syllago registry remove team-rules ``` ## See Also [Section titled “See Also”](#see-also) * [syllago registry](/using-syllago/cli-reference/registry.md) * [syllago registry add](/using-syllago/cli-reference/registry-add.md) * [syllago registry create](/using-syllago/cli-reference/registry-create.md) * [syllago registry items](/using-syllago/cli-reference/registry-items.md) * [syllago registry list](/using-syllago/cli-reference/registry-list.md) * [syllago registry sync](/using-syllago/cli-reference/registry-sync.md) *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/registry_cmd.go)
# syllago registry sync
> Pull latest content from one or all registries
[Source](/using-syllago/cli-reference/registry-sync/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago registry sync [name] ``` ## Description [Section titled “Description”](#description) Runs git pull on registry clones to fetch the latest content. Sync updates the local clone only — it does not modify your library or installed provider content. Use “syllago registry items” to see what changed, and “syllago install” to activate updated content. ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash # Sync all registries syllago registry sync # Sync a specific registry syllago registry sync my-rules ``` ## See Also [Section titled “See Also”](#see-also) * [syllago registry](/using-syllago/cli-reference/registry.md) * [syllago registry add](/using-syllago/cli-reference/registry-add.md) * [syllago registry create](/using-syllago/cli-reference/registry-create.md) * [syllago registry items](/using-syllago/cli-reference/registry-items.md) * [syllago registry list](/using-syllago/cli-reference/registry-list.md) * [syllago registry remove](/using-syllago/cli-reference/registry-remove.md) *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/registry_cmd.go)
# syllago remove
> Remove content from your library and uninstall from providers
[Source](/using-syllago/cli-reference/remove/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago remove [flags] ``` ## Description [Section titled “Description”](#description) Removes a content item from your library (\~/.syllago/content/) and uninstalls it from any providers where it is currently installed. ## Options [Section titled “Options”](#options) | Flag | Type | Default | Required | Description | | ----------------- | -------- | ------- | -------- | ----------------------------------------------- | | `-n`, `--dry-run` | `bool` | — | No | Show what would happen without making changes | | `-f`, `--force` | `bool` | — | No | Skip confirmation prompt | | `--no-input` | `bool` | — | No | Disable interactive prompts, use defaults | | `--type` | `string` | — | No | Disambiguate when name exists in multiple types | ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash # Remove a skill from library and all providers syllago remove my-skill # Disambiguate by type when name exists in multiple types syllago remove my-rule --type rules # Skip confirmation prompt syllago remove my-skill --force # Preview what would happen syllago remove my-skill --dry-run ``` *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/remove.go)
# syllago sandbox
> Run and manage AI CLI tools in bubblewrap sandboxes
[Source](/using-syllago/cli-reference/sandbox/)
Sandbox wraps AI CLI tools in bubblewrap to restrict filesystem access, network egress, and environment variables. Linux only: requires bubblewrap >= 0.4.0 and socat >= 1.7.0. ## Subcommands [Section titled “Subcommands”](#subcommands) | Command | Description | | -------------------------------------------------------------------- | --------------------------------------------------- | | [`allow-domain`](/using-syllago/cli-reference/sandbox-allow-domain.md) | Add a domain to the sandbox allowlist | | [`allow-env`](/using-syllago/cli-reference/sandbox-allow-env.md) | Add an env var to the sandbox allowlist | | [`allow-port`](/using-syllago/cli-reference/sandbox-allow-port.md) | Add a localhost port to the sandbox allowlist | | [`check`](/using-syllago/cli-reference/sandbox-check.md) | Verify bubblewrap, socat, and optionally a provider | | [`deny-domain`](/using-syllago/cli-reference/sandbox-deny-domain.md) | Remove a domain from the sandbox allowlist | | [`deny-env`](/using-syllago/cli-reference/sandbox-deny-env.md) | Remove an env var from the sandbox allowlist | | [`deny-port`](/using-syllago/cli-reference/sandbox-deny-port.md) | Remove a localhost port from the sandbox allowlist | | [`domains`](/using-syllago/cli-reference/sandbox-domains.md) | List allowed domains | | [`env`](/using-syllago/cli-reference/sandbox-env.md) | Add an env var to the sandbox allowlist | | [`info`](/using-syllago/cli-reference/sandbox-info.md) | Show effective sandbox configuration | | [`ports`](/using-syllago/cli-reference/sandbox-ports.md) | List allowed localhost ports | | [`run`](/using-syllago/cli-reference/sandbox-run.md) | Run a provider in a sandbox | ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/sandbox_cmd.go)
# syllago sandbox allow-domain
> Add a domain to the sandbox allowlist
[Source](/using-syllago/cli-reference/sandbox-allow-domain/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago sandbox allow-domain ``` ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash syllago sandbox allow-domain api.example.com ``` ## See Also [Section titled “See Also”](#see-also) * [syllago sandbox](/using-syllago/cli-reference/sandbox.md) * [syllago sandbox allow-env](/using-syllago/cli-reference/sandbox-allow-env.md) * [syllago sandbox allow-port](/using-syllago/cli-reference/sandbox-allow-port.md) * [syllago sandbox check](/using-syllago/cli-reference/sandbox-check.md) * [syllago sandbox deny-domain](/using-syllago/cli-reference/sandbox-deny-domain.md) * [syllago sandbox deny-env](/using-syllago/cli-reference/sandbox-deny-env.md) * [syllago sandbox deny-port](/using-syllago/cli-reference/sandbox-deny-port.md) * [syllago sandbox domains](/using-syllago/cli-reference/sandbox-domains.md) * [syllago sandbox env](/using-syllago/cli-reference/sandbox-env.md) * [syllago sandbox info](/using-syllago/cli-reference/sandbox-info.md) * [syllago sandbox ports](/using-syllago/cli-reference/sandbox-ports.md) * [syllago sandbox run](/using-syllago/cli-reference/sandbox-run.md) *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/sandbox_cmd.go)
# syllago sandbox allow-env
> Add an env var to the sandbox allowlist
[Source](/using-syllago/cli-reference/sandbox-allow-env/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago sandbox allow-env ``` ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash syllago sandbox allow-env OPENAI_API_KEY ``` ## See Also [Section titled “See Also”](#see-also) * [syllago sandbox](/using-syllago/cli-reference/sandbox.md) * [syllago sandbox allow-domain](/using-syllago/cli-reference/sandbox-allow-domain.md) * [syllago sandbox allow-port](/using-syllago/cli-reference/sandbox-allow-port.md) * [syllago sandbox check](/using-syllago/cli-reference/sandbox-check.md) * [syllago sandbox deny-domain](/using-syllago/cli-reference/sandbox-deny-domain.md) * [syllago sandbox deny-env](/using-syllago/cli-reference/sandbox-deny-env.md) * [syllago sandbox deny-port](/using-syllago/cli-reference/sandbox-deny-port.md) * [syllago sandbox domains](/using-syllago/cli-reference/sandbox-domains.md) * [syllago sandbox env](/using-syllago/cli-reference/sandbox-env.md) * [syllago sandbox info](/using-syllago/cli-reference/sandbox-info.md) * [syllago sandbox ports](/using-syllago/cli-reference/sandbox-ports.md) * [syllago sandbox run](/using-syllago/cli-reference/sandbox-run.md) *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/sandbox_cmd.go)
# syllago sandbox allow-port
> Add a localhost port to the sandbox allowlist
[Source](/using-syllago/cli-reference/sandbox-allow-port/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago sandbox allow-port ``` ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash syllago sandbox allow-port 8080 ``` ## See Also [Section titled “See Also”](#see-also) * [syllago sandbox](/using-syllago/cli-reference/sandbox.md) * [syllago sandbox allow-domain](/using-syllago/cli-reference/sandbox-allow-domain.md) * [syllago sandbox allow-env](/using-syllago/cli-reference/sandbox-allow-env.md) * [syllago sandbox check](/using-syllago/cli-reference/sandbox-check.md) * [syllago sandbox deny-domain](/using-syllago/cli-reference/sandbox-deny-domain.md) * [syllago sandbox deny-env](/using-syllago/cli-reference/sandbox-deny-env.md) * [syllago sandbox deny-port](/using-syllago/cli-reference/sandbox-deny-port.md) * [syllago sandbox domains](/using-syllago/cli-reference/sandbox-domains.md) * [syllago sandbox env](/using-syllago/cli-reference/sandbox-env.md) * [syllago sandbox info](/using-syllago/cli-reference/sandbox-info.md) * [syllago sandbox ports](/using-syllago/cli-reference/sandbox-ports.md) * [syllago sandbox run](/using-syllago/cli-reference/sandbox-run.md) *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/sandbox_cmd.go)
# syllago sandbox check
> Verify bubblewrap, socat, and optionally a provider
[Source](/using-syllago/cli-reference/sandbox-check/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago sandbox check [provider] ``` ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash # Check sandbox prerequisites syllago sandbox check # Check prerequisites for a specific provider syllago sandbox check claude-code ``` ## See Also [Section titled “See Also”](#see-also) * [syllago sandbox](/using-syllago/cli-reference/sandbox.md) * [syllago sandbox allow-domain](/using-syllago/cli-reference/sandbox-allow-domain.md) * [syllago sandbox allow-env](/using-syllago/cli-reference/sandbox-allow-env.md) * [syllago sandbox allow-port](/using-syllago/cli-reference/sandbox-allow-port.md) * [syllago sandbox deny-domain](/using-syllago/cli-reference/sandbox-deny-domain.md) * [syllago sandbox deny-env](/using-syllago/cli-reference/sandbox-deny-env.md) * [syllago sandbox deny-port](/using-syllago/cli-reference/sandbox-deny-port.md) * [syllago sandbox domains](/using-syllago/cli-reference/sandbox-domains.md) * [syllago sandbox env](/using-syllago/cli-reference/sandbox-env.md) * [syllago sandbox info](/using-syllago/cli-reference/sandbox-info.md) * [syllago sandbox ports](/using-syllago/cli-reference/sandbox-ports.md) * [syllago sandbox run](/using-syllago/cli-reference/sandbox-run.md) *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/sandbox_cmd.go)
# syllago sandbox deny-domain
> Remove a domain from the sandbox allowlist
[Source](/using-syllago/cli-reference/sandbox-deny-domain/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago sandbox deny-domain ``` ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash syllago sandbox deny-domain api.example.com ``` ## See Also [Section titled “See Also”](#see-also) * [syllago sandbox](/using-syllago/cli-reference/sandbox.md) * [syllago sandbox allow-domain](/using-syllago/cli-reference/sandbox-allow-domain.md) * [syllago sandbox allow-env](/using-syllago/cli-reference/sandbox-allow-env.md) * [syllago sandbox allow-port](/using-syllago/cli-reference/sandbox-allow-port.md) * [syllago sandbox check](/using-syllago/cli-reference/sandbox-check.md) * [syllago sandbox deny-env](/using-syllago/cli-reference/sandbox-deny-env.md) * [syllago sandbox deny-port](/using-syllago/cli-reference/sandbox-deny-port.md) * [syllago sandbox domains](/using-syllago/cli-reference/sandbox-domains.md) * [syllago sandbox env](/using-syllago/cli-reference/sandbox-env.md) * [syllago sandbox info](/using-syllago/cli-reference/sandbox-info.md) * [syllago sandbox ports](/using-syllago/cli-reference/sandbox-ports.md) * [syllago sandbox run](/using-syllago/cli-reference/sandbox-run.md) *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/sandbox_cmd.go)
# syllago sandbox deny-env
> Remove an env var from the sandbox allowlist
[Source](/using-syllago/cli-reference/sandbox-deny-env/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago sandbox deny-env ``` ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash syllago sandbox deny-env OPENAI_API_KEY ``` ## See Also [Section titled “See Also”](#see-also) * [syllago sandbox](/using-syllago/cli-reference/sandbox.md) * [syllago sandbox allow-domain](/using-syllago/cli-reference/sandbox-allow-domain.md) * [syllago sandbox allow-env](/using-syllago/cli-reference/sandbox-allow-env.md) * [syllago sandbox allow-port](/using-syllago/cli-reference/sandbox-allow-port.md) * [syllago sandbox check](/using-syllago/cli-reference/sandbox-check.md) * [syllago sandbox deny-domain](/using-syllago/cli-reference/sandbox-deny-domain.md) * [syllago sandbox deny-port](/using-syllago/cli-reference/sandbox-deny-port.md) * [syllago sandbox domains](/using-syllago/cli-reference/sandbox-domains.md) * [syllago sandbox env](/using-syllago/cli-reference/sandbox-env.md) * [syllago sandbox info](/using-syllago/cli-reference/sandbox-info.md) * [syllago sandbox ports](/using-syllago/cli-reference/sandbox-ports.md) * [syllago sandbox run](/using-syllago/cli-reference/sandbox-run.md) *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/sandbox_cmd.go)
# syllago sandbox deny-port
> Remove a localhost port from the sandbox allowlist
[Source](/using-syllago/cli-reference/sandbox-deny-port/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago sandbox deny-port ``` ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash syllago sandbox deny-port 8080 ``` ## See Also [Section titled “See Also”](#see-also) * [syllago sandbox](/using-syllago/cli-reference/sandbox.md) * [syllago sandbox allow-domain](/using-syllago/cli-reference/sandbox-allow-domain.md) * [syllago sandbox allow-env](/using-syllago/cli-reference/sandbox-allow-env.md) * [syllago sandbox allow-port](/using-syllago/cli-reference/sandbox-allow-port.md) * [syllago sandbox check](/using-syllago/cli-reference/sandbox-check.md) * [syllago sandbox deny-domain](/using-syllago/cli-reference/sandbox-deny-domain.md) * [syllago sandbox deny-env](/using-syllago/cli-reference/sandbox-deny-env.md) * [syllago sandbox domains](/using-syllago/cli-reference/sandbox-domains.md) * [syllago sandbox env](/using-syllago/cli-reference/sandbox-env.md) * [syllago sandbox info](/using-syllago/cli-reference/sandbox-info.md) * [syllago sandbox ports](/using-syllago/cli-reference/sandbox-ports.md) * [syllago sandbox run](/using-syllago/cli-reference/sandbox-run.md) *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/sandbox_cmd.go)
# syllago sandbox domains
> List allowed domains
[Source](/using-syllago/cli-reference/sandbox-domains/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago sandbox domains ``` ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash syllago sandbox domains ``` ## See Also [Section titled “See Also”](#see-also) * [syllago sandbox](/using-syllago/cli-reference/sandbox.md) * [syllago sandbox allow-domain](/using-syllago/cli-reference/sandbox-allow-domain.md) * [syllago sandbox allow-env](/using-syllago/cli-reference/sandbox-allow-env.md) * [syllago sandbox allow-port](/using-syllago/cli-reference/sandbox-allow-port.md) * [syllago sandbox check](/using-syllago/cli-reference/sandbox-check.md) * [syllago sandbox deny-domain](/using-syllago/cli-reference/sandbox-deny-domain.md) * [syllago sandbox deny-env](/using-syllago/cli-reference/sandbox-deny-env.md) * [syllago sandbox deny-port](/using-syllago/cli-reference/sandbox-deny-port.md) * [syllago sandbox env](/using-syllago/cli-reference/sandbox-env.md) * [syllago sandbox info](/using-syllago/cli-reference/sandbox-info.md) * [syllago sandbox ports](/using-syllago/cli-reference/sandbox-ports.md) * [syllago sandbox run](/using-syllago/cli-reference/sandbox-run.md) *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/sandbox_cmd.go)
# syllago sandbox env
> List allowed env vars
[Source](/using-syllago/cli-reference/sandbox-env/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago sandbox env ``` ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash syllago sandbox env ``` ## See Also [Section titled “See Also”](#see-also) * [syllago sandbox](/using-syllago/cli-reference/sandbox.md) * [syllago sandbox allow-domain](/using-syllago/cli-reference/sandbox-allow-domain.md) * [syllago sandbox allow-env](/using-syllago/cli-reference/sandbox-allow-env.md) * [syllago sandbox allow-port](/using-syllago/cli-reference/sandbox-allow-port.md) * [syllago sandbox check](/using-syllago/cli-reference/sandbox-check.md) * [syllago sandbox deny-domain](/using-syllago/cli-reference/sandbox-deny-domain.md) * [syllago sandbox deny-env](/using-syllago/cli-reference/sandbox-deny-env.md) * [syllago sandbox deny-port](/using-syllago/cli-reference/sandbox-deny-port.md) * [syllago sandbox domains](/using-syllago/cli-reference/sandbox-domains.md) * [syllago sandbox info](/using-syllago/cli-reference/sandbox-info.md) * [syllago sandbox ports](/using-syllago/cli-reference/sandbox-ports.md) * [syllago sandbox run](/using-syllago/cli-reference/sandbox-run.md) *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/sandbox_cmd.go)
# syllago sandbox info
> Show effective sandbox configuration
[Source](/using-syllago/cli-reference/sandbox-info/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago sandbox info [provider] ``` ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash # Show sandbox config syllago sandbox info # Show config with provider mount profile syllago sandbox info claude-code ``` ## See Also [Section titled “See Also”](#see-also) * [syllago sandbox](/using-syllago/cli-reference/sandbox.md) * [syllago sandbox allow-domain](/using-syllago/cli-reference/sandbox-allow-domain.md) * [syllago sandbox allow-env](/using-syllago/cli-reference/sandbox-allow-env.md) * [syllago sandbox allow-port](/using-syllago/cli-reference/sandbox-allow-port.md) * [syllago sandbox check](/using-syllago/cli-reference/sandbox-check.md) * [syllago sandbox deny-domain](/using-syllago/cli-reference/sandbox-deny-domain.md) * [syllago sandbox deny-env](/using-syllago/cli-reference/sandbox-deny-env.md) * [syllago sandbox deny-port](/using-syllago/cli-reference/sandbox-deny-port.md) * [syllago sandbox domains](/using-syllago/cli-reference/sandbox-domains.md) * [syllago sandbox env](/using-syllago/cli-reference/sandbox-env.md) * [syllago sandbox ports](/using-syllago/cli-reference/sandbox-ports.md) * [syllago sandbox run](/using-syllago/cli-reference/sandbox-run.md) *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/sandbox_cmd.go)
# syllago sandbox ports
> List allowed localhost ports
[Source](/using-syllago/cli-reference/sandbox-ports/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago sandbox ports ``` ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash syllago sandbox ports ``` ## See Also [Section titled “See Also”](#see-also) * [syllago sandbox](/using-syllago/cli-reference/sandbox.md) * [syllago sandbox allow-domain](/using-syllago/cli-reference/sandbox-allow-domain.md) * [syllago sandbox allow-env](/using-syllago/cli-reference/sandbox-allow-env.md) * [syllago sandbox allow-port](/using-syllago/cli-reference/sandbox-allow-port.md) * [syllago sandbox check](/using-syllago/cli-reference/sandbox-check.md) * [syllago sandbox deny-domain](/using-syllago/cli-reference/sandbox-deny-domain.md) * [syllago sandbox deny-env](/using-syllago/cli-reference/sandbox-deny-env.md) * [syllago sandbox deny-port](/using-syllago/cli-reference/sandbox-deny-port.md) * [syllago sandbox domains](/using-syllago/cli-reference/sandbox-domains.md) * [syllago sandbox env](/using-syllago/cli-reference/sandbox-env.md) * [syllago sandbox info](/using-syllago/cli-reference/sandbox-info.md) * [syllago sandbox run](/using-syllago/cli-reference/sandbox-run.md) *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/sandbox_cmd.go)
# syllago sandbox run
> Run a provider in a sandbox
[Source](/using-syllago/cli-reference/sandbox-run/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago sandbox run [flags] ``` ## Options [Section titled “Options”](#options) | Flag | Type | Default | Required | Description | | ---------------- | ------------- | ------- | -------- | ---------------------------------------------- | | `--allow-domain` | `stringArray` | — | No | Allow an additional domain for this session | | `--allow-env` | `stringArray` | — | No | Forward an additional env var into the sandbox | | `--allow-port` | `stringArray` | — | No | Allow a localhost port inside the sandbox | | `--force-dir` | `bool` | — | No | Skip directory safety checks | | `--mount-ro` | `stringArray` | — | No | Mount additional path read-only inside sandbox | | `--no-network` | `bool` | — | No | Block all network egress (no proxy) | ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash # Run Claude Code in a sandbox syllago sandbox run claude-code # Run with additional domain access syllago sandbox run claude-code --allow-domain api.example.com # Run with no network at all syllago sandbox run gemini-cli --no-network ``` ## See Also [Section titled “See Also”](#see-also) * [syllago sandbox](/using-syllago/cli-reference/sandbox.md) * [syllago sandbox allow-domain](/using-syllago/cli-reference/sandbox-allow-domain.md) * [syllago sandbox allow-env](/using-syllago/cli-reference/sandbox-allow-env.md) * [syllago sandbox allow-port](/using-syllago/cli-reference/sandbox-allow-port.md) * [syllago sandbox check](/using-syllago/cli-reference/sandbox-check.md) * [syllago sandbox deny-domain](/using-syllago/cli-reference/sandbox-deny-domain.md) * [syllago sandbox deny-env](/using-syllago/cli-reference/sandbox-deny-env.md) * [syllago sandbox deny-port](/using-syllago/cli-reference/sandbox-deny-port.md) * [syllago sandbox domains](/using-syllago/cli-reference/sandbox-domains.md) * [syllago sandbox env](/using-syllago/cli-reference/sandbox-env.md) * [syllago sandbox info](/using-syllago/cli-reference/sandbox-info.md) * [syllago sandbox ports](/using-syllago/cli-reference/sandbox-ports.md) *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/sandbox_cmd.go)
# syllago share
> Contribute library content to a team repo
[Source](/using-syllago/cli-reference/share/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago share [flags] ``` ## Description [Section titled “Description”](#description) Copies a library item to your team repo, stages the change, and optionally creates a branch and PR. ## Options [Section titled “Options”](#options) | Flag | Type | Default | Required | Description | | ------------ | -------- | ------- | -------- | ----------------------------------------------- | | `--no-input` | `bool` | — | No | Skip interactive git prompts, stage only | | `--type` | `string` | — | No | Disambiguate when name exists in multiple types | ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash # Share a skill to the team repo syllago share my-skill # Disambiguate by type syllago share my-rule --type rules # Non-interactive mode (stage only, no git prompts) syllago share my-skill --no-input ``` *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/share.go)
# syllago sync-and-export
> Sync registries then export content to a provider
[Source](/using-syllago/cli-reference/sync-and-export/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago sync-and-export [flags] ``` ## Description [Section titled “Description”](#description) Convenience command that syncs all registries then installs. Equivalent to running: syllago registry sync && syllago install —to \ This is useful in CI/CD or automation where you want a single command to ensure registries are up-to-date before installing. ## Options [Section titled “Options”](#options) | Flag | Type | Default | Required | Description | | ------------- | -------- | ------- | -------- | ------------------------------------------------------------------------------------------------ | | `--llm-hooks` | `string` | `skip` | No | How to handle LLM-evaluated hooks: skip (drop with warning) or generate (create wrapper scripts) | | `--name` | `string` | — | No | Filter by item name (substring match) | | `--source` | `string` | `local` | No | Which items to export: local (default), shared, registry, builtin, all | | `--to` | `string` | — | Yes | Provider slug to export to, or “all” for every provider (required) | | `--type` | `string` | — | No | Filter to a specific content type (e.g., skills, rules) | ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash # Sync registries and export to Cursor syllago sync-and-export --to cursor # Export to all providers syllago sync-and-export --to all --type skills # Export only registry content to Kiro syllago sync-and-export --to kiro --source registry ``` *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/sync-and-export.go)
# syllago uninstall
> Deactivate content from a provider
[Source](/using-syllago/cli-reference/uninstall/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago uninstall [flags] ``` ## Description [Section titled “Description”](#description) Removes installed content from a provider’s location. For symlinked content: removes the symlink. For copied content: removes the copied file or directory. For hooks/MCP: reverses the JSON merge from the provider’s settings file. The content remains in your library (\~/.syllago/content/) and can be reinstalled at any time with “syllago install”. ## Options [Section titled “Options”](#options) | Flag | Type | Default | Required | Description | | ----------------- | -------- | ------- | -------- | ------------------------------------------------------- | | `-n`, `--dry-run` | `bool` | — | No | Show what would happen without making changes | | `-f`, `--force` | `bool` | — | No | Skip confirmation prompt | | `--from` | `string` | — | No | Provider to uninstall from (omit to uninstall from all) | | `--no-input` | `bool` | — | No | Disable interactive prompts, use defaults | | `--type` | `string` | — | No | Disambiguate when name exists in multiple types | ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash # Uninstall from a specific provider syllago uninstall my-skill --from claude-code # Uninstall from all providers syllago uninstall my-agent # Skip confirmation prompt syllago uninstall my-rule --from cursor --force # Preview what would happen syllago uninstall my-skill --dry-run ``` *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/uninstall.go)
# syllago update
> Update syllago to the latest release
[Source](/using-syllago/cli-reference/update/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago update ``` ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash syllago update ``` *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/update.go)
# syllago version
> Print syllago version
[Source](/using-syllago/cli-reference/version/)
## Synopsis [Section titled “Synopsis”](#synopsis) ```plaintext syllago version ``` ## Global Options [Section titled “Global Options”](#global-options) | Flag | Type | Default | Required | Description | | ----------------- | ------ | ------- | -------- | ----------------------------- | | `--json` | `bool` | — | No | Output in JSON format | | `--no-color` | `bool` | — | No | Disable color output | | `-q`, `--quiet` | `bool` | — | No | Suppress non-essential output | | `-v`, `--verbose` | `bool` | — | No | Verbose output | ## Examples [Section titled “Examples”](#examples) ```bash syllago version ``` *** [Source](https://github.com/OpenScribbler/syllago/blob/main/cli/cmd/syllago/version.go)
# Collections
> How content is organized in syllago — your library, registries, and loadouts.
[Source](/using-syllago/collections/)
Syllago organizes content into three collection types, each serving a different role in your workflow. Your **library** holds content you own and manage directly. **Registries** connect you to shared content from teams or the community. **Loadouts** bundle content together so you can apply entire configurations at once. ## Quick comparison [Section titled “Quick comparison”](#quick-comparison) | Aspect | Library | Registries | Loadouts | | ------------ | ------------------------ | ------------------------------- | ----------------------------- | | Location | `~/.syllago/content/` | Git repos (cloned locally) | Defined in config | | Access | Read-write | Read locally, contribute via PR | Apply/revert | | Purpose | Your personal content | Shared team/community content | Bundled configurations | | Key commands | `add`, `install`, `list` | `registry add/sync/items` | `loadout create/apply/remove` | ## Library [Section titled “Library”](#library) Your personal content store at `~/.syllago/content/`. This is where syllago manages the content you acquire from providers. You have full read-write access — add, edit, or remove content as needed. ```bash syllago add --from syllago list syllago install --to ``` [Library deep-dive](/using-syllago/collections/library.md) ## Registries [Section titled “Registries”](#registries) Git-based repositories of shared content maintained by teams or the community. You consume registry content locally and can contribute back via pull request using `syllago publish`. ```bash syllago registry add syllago registry sync syllago registry items ``` [Registries deep-dive](/using-syllago/collections/registries.md) ## Loadouts [Section titled “Loadouts”](#loadouts) Bundled sets of content — rules, skills, agents, hooks, MCP configs — that apply as a unit. Loadouts let you switch between configurations quickly, either temporarily for testing or permanently. ```bash syllago loadout create syllago loadout apply --try # temporary syllago loadout apply --keep # permanent syllago loadout remove ``` [Loadouts deep-dive](/using-syllago/collections/loadouts.md)
# Library
> Your personal content store — the read-write collection you own and manage directly.
[Source](/using-syllago/collections/library/)
The library is your personal content store at `~/.syllago/content/`. Unlike [registries](/using-syllago/collections/registries.md) (shared, read-only locally) or [loadouts](/using-syllago/collections/loadouts.md) (bundled configurations), the library is fully read-write. You own this content and can add, edit, or remove it freely. ## Directory structure [Section titled “Directory structure”](#directory-structure) Content is organized by type. Each item is a directory containing a `.syllago.yaml` metadata file and one or more content files. ```plaintext ~/.syllago/content/ ├── rules/ │ ├── typescript/ │ │ ├── .syllago.yaml │ │ └── typescript.md │ └── security/ │ ├── .syllago.yaml │ └── security.md ├── skills/ │ └── develop-docs/ │ ├── .syllago.yaml │ └── develop-docs.md ├── agents/ ├── hooks/ ├── commands/ └── loadouts/ ``` The `.syllago.yaml` file stores metadata like the item’s name, description, content type, and provider compatibility. The accompanying files hold the actual content that gets exported to providers. ## Adding content [Section titled “Adding content”](#adding-content) There are three ways to get content into your library. ### Import from a provider [Section titled “Import from a provider”](#import-from-a-provider) Pull content from an existing provider setup into syllago. This is the most common starting point — bring in what you already have. ```bash # Discover what a provider has syllago add --from claude-code # Add only a specific content type syllago add skills --from claude-code # Add a specific item by name syllago add rules/my-rule --from cursor # Preview what would be written without actually writing syllago add --from claude-code --dry-run # Add everything syllago add --all --from claude-code ``` Syllago handles format conversion automatically. A Cursor rule becomes a universal syllago item that can later be installed to Claude Code, Kiro, or any other supported provider. See `syllago add --help` for full options. ### Create from scratch [Section titled “Create from scratch”](#create-from-scratch) Scaffold a new content item with the correct directory structure and metadata template. ```bash # Create a new skill syllago create skills my-new-skill # Create a provider-specific rule syllago create rules my-rule --provider claude-code ``` This creates the directory, `.syllago.yaml`, and a starter content file — ready for you to edit. See [`syllago create`](/using-syllago/cli-reference/create.md) for full options. ## Browsing and inspecting content [Section titled “Browsing and inspecting content”](#browsing-and-inspecting-content) ### List content [Section titled “List content”](#list-content) ```bash # Show all content grouped by type syllago list # Show only library content syllago list --source library # Filter by content type syllago list --type skills # JSON output for scripting syllago list --json ``` The `--source` flag accepts: `library`, `shared`, `registry`, `builtin`, or `all` (default). See [`syllago list`](/using-syllago/cli-reference/list.md) for full options. ### Inspect an item [Section titled “Inspect an item”](#inspect-an-item) View the full metadata and content details for any item. ```bash # Inspect by type/name syllago inspect skills/my-skill # Provider-specific content uses type/provider/name syllago inspect rules/claude-code/my-rule ``` See [`syllago inspect`](/using-syllago/cli-reference/inspect.md) for full options. ## Exporting to providers [Section titled “Exporting to providers”](#exporting-to-providers) Once content is in your library, install it to any supported provider. Syllago converts between provider formats automatically. ```bash # Install a specific item to Cursor syllago install my-rule --to cursor # Install all skills to Kiro syllago install --to kiro --type skills ``` For project-scoped providers (Kiro, Cline, Zed), content is written to the current working directory’s provider config. See `syllago install --help` for full options. ## How it connects [Section titled “How it connects”](#how-it-connects) The library sits at the center of the syllago workflow: * **Providers** are the source and destination. Import from one, export to many. * **[Registries](/using-syllago/collections/registries.md)** are shared content you consume. Registry items appear alongside library items when you run `syllago list --source all`, but they live in separate cloned repos. * **[Loadouts](/using-syllago/collections/loadouts.md)** bundle library content into named configurations that can be applied or reverted as a unit. For an overview of how all three collections work together, see [Collections](/using-syllago/collections.md).
# Loadouts
> Bundle and apply curated sets of AI coding tool content as named configuration profiles.
[Source](/using-syllago/collections/loadouts/)
Loadouts are bundled sets of content — rules, skills, agents, hooks, MCP configs — that apply as a unit. Think of them as named configuration profiles: instead of adding content piece by piece, you define a loadout once and apply everything in a single command. Loadouts currently emit configuration for **Claude Code** only. Additional provider emitters are planned. ## How loadouts fit in [Section titled “How loadouts fit in”](#how-loadouts-fit-in) Your [library](/using-syllago/collections/library.md) stores individual content items. [Registries](/using-syllago/collections/registries.md) share content across teams. Loadouts sit on top of both — they bundle content from your library into apply-as-a-unit configurations. ```plaintext Library (individual items) --> Loadouts (bundled profiles) --> Provider config (Claude Code) ``` ## Creating a loadout [Section titled “Creating a loadout”](#creating-a-loadout) Use the interactive creator to define a new loadout: ```bash syllago loadout create ``` This walks you through selecting which content items to include. The result is a named loadout stored in your syllago configuration. ## Applying a loadout [Section titled “Applying a loadout”](#applying-a-loadout) The `apply` command has three modes controlled by flags: ```bash # Preview what would change (default, no flags) syllago loadout apply # Apply temporarily — auto-reverts when the session ends syllago loadout apply --try # Apply permanently — persists until you explicitly remove it syllago loadout apply --keep ``` To target a specific provider: ```bash syllago loadout apply --keep --to ``` The default (no flags) is a dry run — it shows what files would be created or modified without touching anything. This lets you inspect the effect before committing. ### Temporary vs. permanent [Section titled “Temporary vs. permanent”](#temporary-vs-permanent) **`--try`** is designed for experimentation. Apply a loadout, test it during your coding session, and it automatically reverts when the session ends. Nothing to clean up. **`--keep`** writes the configuration to disk permanently. To undo it, use `syllago loadout remove`. ## Managing loadouts [Section titled “Managing loadouts”](#managing-loadouts) ```bash # List all available loadouts syllago loadout list # Check what's currently active syllago loadout status # Remove the active loadout and restore original configuration syllago loadout remove ``` ## Use cases [Section titled “Use cases”](#use-cases) **Per-project configurations.** Define loadouts for different work contexts — a Python backend stack, a frontend stack, a security audit profile — and switch between them as needed. **Team onboarding.** New team members apply the team’s standard loadout in one command instead of manually configuring rules, skills, and MCP servers. **Temporary experimentation.** Use `--try` to test a new set of rules or skills without risk. If it doesn’t work out, it reverts automatically. ## Related [Section titled “Related”](#related) * [Collections overview](/using-syllago/collections.md) — how library, registries, and loadouts work together * [Library](/using-syllago/collections/library.md) — your personal content store * [Registries](/using-syllago/collections/registries.md) — shared team and community content * [CLI reference: loadout commands](/using-syllago/cli-reference/loadout-apply.md) — full flag and option details
# Registries
> Share and consume content through git-based registries.
[Source](/using-syllago/collections/registries/)
Registries are git repositories that hold shared syllago content. Teams publish content to a registry, and consumers add, sync, and browse it locally. Unlike a read-only package feed, registries support contributing back — `syllago publish` opens a pull request against the registry repo. ## How registries work [Section titled “How registries work”](#how-registries-work) When you add a registry, syllago clones the git repo locally. Syncing pulls the latest commits. Browsing lists the content available in the clone. Nothing is installed into your [library](/using-syllago/collections/library.md) until you explicitly install an item. ```plaintext Remote git repo Local clone Your library ┌──────────────┐ add ┌──────────┐ install ┌──────────┐ │ registry.git │──────→ │ .syllago/ │────────→ │ content/ │ └──────────────┘ sync └──────────┘ └──────────┘ ↑ │ └──────────────────────┘ publish (PR) ``` ## Adding a registry [Section titled “Adding a registry”](#adding-a-registry) ```bash syllago registry add https://github.com/your-org/syllago-registry.git ``` Options: * `--name` — override the registry name (defaults to name derived from the URL) * `--ref` — pin to a specific branch, tag, or commit (defaults to the repo’s default branch) ```bash # Pin to a release tag syllago registry add https://github.com/your-org/syllago-registry.git --ref v2.1 # Custom local name syllago registry add https://github.com/your-org/syllago-registry.git --name team-rules ``` ## Syncing [Section titled “Syncing”](#syncing) Pull the latest content from one or all registries: ```bash # Sync all registries syllago registry sync # Sync a specific registry syllago registry sync team-rules ``` Syncing only updates the local clone. It does not modify your library or any installed content. This keeps your workflow predictable — you choose when to pull updates into your library. ## Browsing content [Section titled “Browsing content”](#browsing-content) List what a registry offers: ```bash # All items across all registries syllago registry items # Items from a specific registry syllago registry items team-rules # Filter by content type syllago registry items --type rules ``` ## Installing registry content [Section titled “Installing registry content”](#installing-registry-content) Install content from a registry into your library using the same `install` command you use for any content: ```bash syllago install --to ``` Syllago resolves the item from your registered registries. Once installed, the content lives in your library and behaves like any other library content. ## Managing registries [Section titled “Managing registries”](#managing-registries) ```bash # List all registered registries syllago registry list # Remove a registry (deletes the local clone) syllago registry remove team-rules ``` ## Contributing back [Section titled “Contributing back”](#contributing-back) Registries are not read-only. If you have content in your library that belongs in a shared registry, publish it: ```bash syllago publish my-skill --registry team-rules ``` This opens a pull request against the registry’s git repo. The registry maintainers review and merge through their normal PR workflow — no special tooling required on their end. For team repos (non-registry), use `syllago share` instead: ```bash syllago share my-skill ``` ## Privacy gate [Section titled “Privacy gate”](#privacy-gate) Content from private registries is automatically tainted with source metadata. Syllago blocks publishing tainted content to public registries to prevent accidental leakage. See [Registry Privacy](/advanced/registry-privacy.md) for details. ## Creating your own registry [Section titled “Creating your own registry”](#creating-your-own-registry) You can scaffold a new registry with `syllago registry create`: ```bash # Scaffold an empty registry syllago registry create --new my-rules --description "Team coding standards" # Index existing provider-native content in a repo syllago registry create --from-native ``` Or create one manually — a registry is just a git repo with syllago’s content structure: 1. Create a new git repo 2. Add syllago content following the standard directory layout 3. Push to a git host (GitHub, GitLab, etc.) 4. Share the URL — others add it with `syllago registry add` ## Relationship to other collections [Section titled “Relationship to other collections”](#relationship-to-other-collections) | Collection | Role | Access model | | ------------------------------------------------ | ----------------------------- | ---------------------------------- | | [Library](/using-syllago/collections/library.md) | Your personal content | Full read-write | | **Registries** | Shared team/community content | Consume locally, contribute via PR | | [Loadouts](/using-syllago/collections/loadouts.md) | Bundled configurations | Apply and revert as a unit | Registries feed your library. You browse what is available, install what you need, and the installed content becomes part of your library. Loadouts can then bundle library content into switchable configurations. ## Command reference [Section titled “Command reference”](#command-reference) * [`syllago registry add`](/using-syllago/cli-reference/registry-add.md) * [`syllago registry sync`](/using-syllago/cli-reference/registry-sync.md) * [`syllago registry items`](/using-syllago/cli-reference/registry-items.md) * [`syllago registry list`](/using-syllago/cli-reference/registry-list.md) * [`syllago registry remove`](/using-syllago/cli-reference/registry-remove.md) * `syllago registry create` * `syllago publish` * `syllago share`
# Content Types
> Overview of syllago content types and provider compatibility.
[Source](/using-syllago/content-types/)
Syllago manages several content types, each stored in a provider-neutral **syllago format**. When installed to a provider, syllago automatically converts to the provider’s native format. See [Format Conversion](/using-syllago/format-conversion.md) for details. ## Provider Compatibility Matrix [Section titled “Provider Compatibility Matrix”](#provider-compatibility-matrix) | Content Type | CC | Gemini | Cursor | Copilot | Codex | Kiro | Windsurf | OpenCode | Roo | Cline | Amp | Zed | | ------------ | -- | ------ | ------ | ------- | ----- | ---- | -------- | -------- | --- | ----- | --- | --- | | Rules | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | Skills | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — | ✅ | — | | Agents | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — | ✅ | ✅ | — | — | — | | MCP Configs | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | Hooks | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — | — | ✅ | — | — | | Commands | ✅ | ✅ | ✅ | ✅ | ✅ | — | — | ✅ | — | — | — | — | | Loadouts | ✅ | — | — | — | — | — | — | — | — | — | — | — | ## Content Type Reference [Section titled “Content Type Reference”](#content-type-reference) **[Rules](/using-syllago/content-types/rules.md)** — System prompts and custom instructions that guide AI behavior. Supported by every provider. **[Skills](/using-syllago/content-types/skills.md)** — Multi-file workflow packages that teach the AI specific capabilities. **[Agents](/using-syllago/content-types/agents.md)** — AI agent definitions and personas with specialized roles. **[MCP Configs](/using-syllago/content-types/mcp-configs.md)** — MCP server configurations for tool and resource access. **[Hooks](/using-syllago/content-types/hooks.md)** — Event-driven automation scripts triggered by AI tool lifecycle events. **[Commands](/using-syllago/content-types/commands.md)** — Custom slash commands that extend the AI tool’s command palette. **[Loadouts](/using-syllago/collections/loadouts.md)** — Curated content bundles that apply as a unit. Loadouts bundle other content types together so they can be installed and removed in one operation.
# Agents
> How syllago manages AI agent definitions and personas across providers.
[Source](/using-syllago/content-types/agents/)
Agents are named personas with specialized roles. An agent defines a description and a set of instructions that an AI coding tool can assume, letting you switch between focused behaviors — an API design expert, a security reviewer, a documentation writer — without rewriting prompts. Supported by most providers: Claude Code, Gemini CLI, Cursor, Copilot CLI, Codex, Roo Code, OpenCode, and Kiro. ## Canonical Fields [Section titled “Canonical Fields”](#canonical-fields) Agents support the following metadata fields: | Field | Description | Provider Support | | ---------------- | -------------------------------------------------- | ------------------------------------- | | `name` | Agent name (required) | All providers | | `description` | What the agent does (required) | All providers | | `permissionMode` | Permission level (5 values) | Claude Code (all 5); others as prose | | `effort` | Time/complexity: `min`, `moderate`, `large`, `max` | Claude Code (native); others as prose | ### Permission Modes [Section titled “Permission Modes”](#permission-modes) The `permissionMode` field supports five values: | Value | Meaning | | ------------------- | ------------------------------ | | `default` | Normal permission checking | | `acceptEdits` | Auto-accept file edits | | `plan` | Plan-only mode (no execution) | | `dontAsk` | Skip permission prompts | | `bypassPermissions` | Full bypass (use with caution) | Claude Code supports all five modes natively. Other providers embed non-native modes as behavioral prose notes. See the [Content Types overview](/using-syllago/content-types.md) for the full compatibility matrix. ## Syllago Format [Section titled “Syllago Format”](#syllago-format) Each agent in your library has a `.syllago.yaml` manifest and a Markdown source file. **Manifest** (`.syllago.yaml`): ```yaml id: 4369aa21-9660-4511-a9bb-7cea37751529 name: api-agent type: agents source_format: md source_type: provider added_at: 2026-03-13T00:13:24Z added_by: syllago ``` **Source file** (`api-agent.md`): ```markdown --- name: api-agent description: REST API design agent --- Design RESTful endpoints with OpenAPI conventions. Follow resource naming best practices and use proper HTTP methods. Return consistent error shapes with appropriate status codes. ``` The Markdown body contains the agent’s instructions — what the AI should know and do when assuming this persona. The YAML frontmatter carries metadata (name, description) that providers use for display and selection. ## Provider Format Differences [Section titled “Provider Format Differences”](#provider-format-differences) Most providers use Markdown with YAML frontmatter, so agents install with minimal transformation. Two providers use different native formats: ### Codex (TOML) [Section titled “Codex (TOML)”](#codex-toml) Codex stores agent definitions in TOML. Syllago auto-converts between TOML and Markdown frontmatter on import and install: ```toml [agent] name = "api-agent" description = "REST API design agent" [agent.instructions] content = """ Design RESTful endpoints with OpenAPI conventions. Follow resource naming best practices and use proper HTTP methods. Return consistent error shapes with appropriate status codes. """ ``` When you import a Codex agent, syllago parses the TOML and stores it as standard Markdown with frontmatter. When you install to Codex, syllago converts back. No manual format handling needed. ### Kiro (JSON) [Section titled “Kiro (JSON)”](#kiro-json) Kiro uses JSON-based steering files. Syllago embeds the Markdown content into Kiro’s JSON structure automatically during install. ## Workflow [Section titled “Workflow”](#workflow) ```bash # Add an agent from a provider syllago add agents/api-agent --from claude-code # List agents in your library syllago list --type agents # Install to a different provider syllago install api-agent --to codex # Inspect the stored format syllago inspect api-agent ``` ## Further Reading [Section titled “Further Reading”](#further-reading) * [Content Types overview](/using-syllago/content-types.md) — compatibility matrix and all content types * [Format Conversion](/using-syllago/format-conversion.md) — how syllago converts between provider formats
# Commands
> How syllago manages custom slash commands across providers.
[Source](/using-syllago/content-types/commands/)
Commands are custom slash commands that extend an AI tool’s command palette. They let you define reusable prompts or workflows that users invoke with a slash prefix (e.g., `/fix-typo`). ## Provider Support [Section titled “Provider Support”](#provider-support) Commands are supported by the following providers: | Provider | Format | Notes | | ----------- | -------- | -------------------------------------- | | Claude Code | Markdown | Command files in `.claude/commands/` | | Gemini CLI | Markdown | Command files in `.gemini/commands/` | | Cursor | Markdown | Command files in `.cursor/commands/` | | Copilot CLI | Markdown | Command files in `.copilot/commands/` | | Codex | Markdown | Command files in `.codex/commands/` | | OpenCode | Markdown | Command files in `.opencode/commands/` | ## Canonical Fields [Section titled “Canonical Fields”](#canonical-fields) Commands support the following metadata: | Field | Description | Provider Support | | -------- | -------------------------------------------------- | ------------------------------------------------ | | `effort` | Time/complexity: `min`, `moderate`, `large`, `max` | Claude Code (native); others as behavioral notes | ## Syllago Format [Section titled “Syllago Format”](#syllago-format) Commands are stored in your library using syllago’s provider-neutral format. The metadata file (`.syllago.yaml`) describes the content, and a separate source file holds the command definition. ### Catalog Entry [Section titled “Catalog Entry”](#catalog-entry) ```yaml id: 6c0ce509-7960-490f-9100-4d5009d6261c name: fix_typo type: commands source_format: toml source_type: provider has_source: true added_at: 2026-03-11T19:23:53Z added_by: syllago ``` Key fields: * **type** — always `commands` for this content type * **source\_format** — the format of the source file (`toml`, `md`, `yaml`) * **has\_source** — indicates the item includes a source file with the command definition ### Command Source [Section titled “Command Source”](#command-source) The source file contains the actual command definition. The format depends on where the command was imported from. Here is a TOML example (Codex-style): ```toml description = "Fix a typo in a document." [variables] file_path = "{{FILE_PATH}}" file_content = "{{FILE_CONTENT}}" [instructions] preamble = "You are a documentation editor..." steps = [ "Read the file content carefully.", "Find and fix the reported typo.", ] ``` A Markdown-based command (Claude Code or Gemini CLI style) would instead be a `.md` file with the prompt content directly as prose, optionally with frontmatter for metadata. ## Format Conversion [Section titled “Format Conversion”](#format-conversion) When you export a command to a provider, syllago converts between formats automatically. See [Format Conversion](/using-syllago/format-conversion.md) for details on how syllago handles cross-format translation. ## Working with Commands [Section titled “Working with Commands”](#working-with-commands) ```bash # Add a command from a provider syllago add commands/fix-typo --from claude-code # List commands in your library syllago list --type commands # Install a command to a different provider syllago install fix_typo --to gemini-cli # Inspect a command's metadata and source syllago inspect fix_typo ``` ## See Also [Section titled “See Also”](#see-also) * [Content Types Overview](/using-syllago/content-types.md) — compatibility matrix and all content types * [Format Conversion](/using-syllago/format-conversion.md) — how syllago converts between provider formats
# Hooks
> How syllago manages hooks across providers.
[Source](/using-syllago/content-types/hooks/)
Hooks are event-driven automation scripts triggered by AI tool lifecycle events. They let you run custom logic when specific events occur — before or after a tool call, on session start, on file change, and so on. Supported by Claude Code, Gemini CLI, Copilot CLI, Cursor, Windsurf, Codex, Cline, and Kiro. ## Canonical Format [Section titled “Canonical Format”](#canonical-format) Syllago uses a provider-neutral canonical format for hooks, defined by the [Hook Interchange Format Specification](/reference/hooks-v1.md). ### Handler Types [Section titled “Handler Types”](#handler-types) Hooks support four handler types: | Type | Description | | --------- | ---------------------------------------------------- | | `command` | Shell command executed as a subprocess | | `http` | HTTP POST to a URL | | `prompt` | LLM-evaluated logic (not all providers support this) | | `agent` | Delegated to an agent subprocess | ### Event Names (Canonical) [Section titled “Event Names (Canonical)”](#event-names-canonical) Hook events use provider-neutral names in the canonical format: | Canonical Event | Claude Code | Gemini CLI | | --------------------- | ------------------ | ------------------ | | `before_tool_execute` | `PreToolUse` | `before_tool_call` | | `after_tool_execute` | `PostToolUse` | `after_tool_call` | | `before_prompt` | `UserPromptSubmit` | `before_send` | | `agent_stop` | `Stop` | `on_complete` | | `session_start` | `SessionStart` | `session_start` | | `session_end` | `SessionEnd` | `session_end` | Syllago translates event names automatically when converting between providers. ### Matcher Types [Section titled “Matcher Types”](#matcher-types) Hooks use matchers to target specific tools or events: * **Bare string**: Tool vocabulary lookup (e.g., `"shell"`, `"file_read"`) * **Pattern object**: Regex on tool name (`{"pattern": "file_(read|write|edit)"}`) * **MCP object**: Server+tool targeting (`{"mcp": {"server": "github", "tool": "create_issue"}}`) * **Array**: OR logic across multiple matchers ### Exit Code Contract [Section titled “Exit Code Contract”](#exit-code-contract) | Code | Meaning | | ----- | --------------------------------------- | | `0` | Success — parse JSON output | | `1` | Non-blocking warning | | `2` | Block action (only if `blocking: true`) | | Other | Treated as warning | ## Provider Support [Section titled “Provider Support”](#provider-support) | Provider | Hook Support | Notes | | ---------------------------- | ------------ | --------------------------------------------------------------------- | | Claude Code | Full | Richest output contract, all event types | | Gemini CLI | Full | Unique events: `before_model`, `after_model`, `before_tool_selection` | | Copilot CLI | Full | Conservative safety design | | Cursor | Yes | JSON merge into `.cursor/settings.json` | | Windsurf | Yes | JSON merge | | Codex | Yes | JSON hooks in `.codex/hooks.json` | | Cline | Yes | File-based executables in `.clinerules/hooks/` | | Kiro | Yes | Embedded in agent JSON files | | Zed, Roo Code, OpenCode, Amp | No | — | ## Hook Security [Section titled “Hook Security”](#hook-security) Syllago includes a **hook security scanner** that detects dangerous patterns when converting hooks: | Risk Level | Patterns Detected | | ---------- | --------------------------------------------------- | | **HIGH** | `curl`, `rm -rf`, piped execution, network commands | | **MEDIUM** | Broad matchers, wildcard patterns | | **LOW** | System paths, environment variable access | Security warnings appear in `syllago convert` and `syllago install` output. ## Portability Warnings [Section titled “Portability Warnings”](#portability-warnings) When converting hooks between providers, syllago surfaces warnings for: * **Unsupported events**: e.g., Gemini’s `before_model` has no Claude Code equivalent * **Capability mismatches**: e.g., `updated_input` (input rewriting) not supported by target * **Degradation applied**: hooks that use the `block`, `warn`, or `exclude` degradation strategy ## See Also [Section titled “See Also”](#see-also) * [Hook Interchange Format Specification](/reference/hooks-v1.md) — full canonical format specification * [Content Types Overview](/using-syllago/content-types.md) — full provider compatibility matrix * [Format Conversion](/using-syllago/format-conversion.md) — how syllago converts between provider formats
# MCP Configs
> How syllago manages MCP server configurations across providers.
[Source](/using-syllago/content-types/mcp-configs/)
MCP (Model Context Protocol) server configurations define external tools and data sources that AI coding tools can connect to — things like database access, API integrations, or custom tool servers. Syllago stores these in a provider-neutral format and converts them to each provider’s native configuration on install. ## Syllago Format [Section titled “Syllago Format”](#syllago-format) MCP configs are stored as JSON with a `mcpServers` key. Each server entry specifies the command to run, its arguments, and any environment variables: ```json { "mcpServers": { "postgres": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-postgres"], "env": { "DATABASE_URL": "postgresql://localhost:5432/mydb" } }, "github": { "command": "node", "args": ["github-server.js"], "env": { "GITHUB_TOKEN": "..." } } } } ``` Each server entry supports: * **`command`** — the executable to launch the MCP server * **`args`** — command-line arguments passed to the server process * **`env`** — environment variables available to the server at runtime * **`disabledTools`** — list of tools to disable on this server (supported by Kiro, Windsurf, Roo Code) ### disabledTools [Section titled “disabledTools”](#disabledtools) The `disabledTools` field lets you selectively disable specific tools from an MCP server: ```json { "mcpServers": { "github": { "command": "node", "args": ["github-server.js"], "disabledTools": ["create_issue", "delete_repo"] } } } ``` This field round-trips through Kiro, Windsurf, and Roo Code. Other providers drop it with a portability warning during conversion. ## Provider Support [Section titled “Provider Support”](#provider-support) MCP configs are supported by every provider: | Provider | Supported | Notes | | ----------- | --------- | ---------------------------------- | | Claude Code | Yes | `.claude.json`, `.mcp.json` | | Gemini CLI | Yes | `.gemini/settings.json` | | Cursor | Yes | `.cursor/mcp.json` | | Copilot CLI | Yes | `.copilot/mcp-config.json` | | Codex | Yes | JSON merge | | Kiro | Yes | `.kiro/settings/mcp.json` | | Windsurf | Yes | JSON merge | | Zed | Yes | Uses `context_servers` key | | Cline | Yes | VS Code globalStorage | | Roo Code | Yes | `.roo/mcp.json` | | OpenCode | Yes | `opencode.json` / `opencode.jsonc` | | Amp | Yes | `.amp/settings.json` | ## Format Differences [Section titled “Format Differences”](#format-differences) Most providers use the same `mcpServers` JSON structure, so conversion is straightforward. The notable exception is Zed. ### Zed: `context_servers` Mapping [Section titled “Zed: context\_servers Mapping”](#zed-context_servers-mapping) Zed uses the key `context_servers` instead of `mcpServers` in its configuration. Syllago handles this mapping automatically during install and import — no manual adjustment needed. Zed native format: ```json { "context_servers": { "postgres": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-postgres"] } } } ``` When you import from Zed, syllago reads `context_servers` and normalizes it to `mcpServers`. When you install to Zed, syllago converts `mcpServers` back to `context_servers`. ## See Also [Section titled “See Also”](#see-also) * [Content Types Overview](/using-syllago/content-types.md) — full compatibility matrix and content type listing * [Format Conversion](/using-syllago/format-conversion.md) — how syllago converts between provider formats
# Rules
> How syllago manages rules — system prompts and custom instructions — across all providers.
[Source](/using-syllago/content-types/rules/)
Rules are system prompts and custom instructions that guide AI behavior. They define coding standards, project conventions, response styles, and any other behavioral guidance for the AI tool. Rules are the most universal content type — every provider supports them. ## What Rules Do [Section titled “What Rules Do”](#what-rules-do) Rules tell the AI tool *how to behave*. Common uses: * Coding conventions (language preferences, formatting, patterns) * Project-specific context (architecture decisions, tech stack) * Response style (verbosity, tone, explanation depth) * Workflow instructions (testing requirements, review processes) ## syllago Format [Section titled “syllago Format”](#syllago-format) Rules in your library are stored as a directory containing two files: a `.syllago.yaml` metadata file and a Markdown content file. **Metadata** (`.syllago.yaml`): ```yaml id: d21d767c-1654-46a5-bc5c-d6aa8d5fbe2c name: typescript type: rules source_format: md source_type: provider added_at: 2026-03-11T19:23:53Z added_by: syllago ``` **Content** (`typescript.md`): ```markdown --- description: TypeScript coding conventions for this project globs: "**/*.ts" --- Use strict TypeScript with explicit return types. Prefer functional patterns over classes. Write Vitest tests for all new functions. ``` The `source_format` field records the original format the rule was imported from. The `source_type` field indicates whether it came from a provider config or was created directly. ## Provider Compatibility [Section titled “Provider Compatibility”](#provider-compatibility) Rules are supported by every provider: | Provider | Format | Extension | Notes | | ----------- | -------- | --------- | ------------------------------------------------ | | Claude Code | Markdown | `.md` | `CLAUDE.md` or `.claude/rules/` | | Gemini CLI | Markdown | `.md` | `GEMINI.md` | | Copilot CLI | Markdown | `.md` | `.github/copilot-instructions.md` or `AGENTS.md` | | Codex | Markdown | `.md` | `AGENTS.md` | | Cursor | MDC | `.mdc` | `.cursor/rules/` or `.cursorrules` | | Windsurf | Markdown | `.md` | `.windsurfrules` or `.windsurf/rules/` | | Zed | Markdown | `.md` | `.rules`, `.cursorrules`, or `CLAUDE.md` | | Cline | Markdown | `.md` | `.clinerules/` | | Roo Code | Markdown | `.md` | `.roo/rules/` with mode-specific subdirectories | | OpenCode | Markdown | `.md` | `AGENTS.md` or `CLAUDE.md` | | Kiro | Markdown | `.md` | `.kiro/steering/` | | Amp | Markdown | `.md` | `AGENTS.md`, `AGENT.md`, `CLAUDE.md` | ## Format Differences [Section titled “Format Differences”](#format-differences) Most providers use plain Markdown, but two require conversion: ### Cursor (MDC format) [Section titled “Cursor (MDC format)”](#cursor-mdc-format) Cursor uses MDC (Markdown Component) format with `.mdc` extension. Syllago maps Markdown frontmatter fields to MDC metadata headers automatically. **syllago format** (Markdown with frontmatter): ```markdown --- description: TypeScript coding conventions globs: "**/*.ts" alwaysApply: false --- Use strict TypeScript with explicit return types. ``` **Cursor output** (`.mdc`): ```plaintext --- description: TypeScript coding conventions globs: "**/*.ts" alwaysApply: false --- Use strict TypeScript with explicit return types. ``` The structure looks similar, but the file extension and how the metadata is parsed differs. Cursor expects `.mdc` and interprets the header block as MDC metadata rather than YAML frontmatter. ### OpenCode (YAML format) [Section titled “OpenCode (YAML format)”](#opencode-yaml-format) OpenCode stores rules as YAML files. Syllago strips the Markdown frontmatter and converts the content into OpenCode’s YAML structure. **syllago format** (Markdown): ```markdown --- description: TypeScript coding conventions globs: "**/*.ts" --- Use strict TypeScript with explicit return types. ``` **OpenCode output** (`.yaml`): ```yaml name: typescript description: TypeScript coding conventions globs: - "**/*.ts" content: | Use strict TypeScript with explicit return types. ``` ## Working with Rules [Section titled “Working with Rules”](#working-with-rules) ### Creating a rule [Section titled “Creating a rule”](#creating-a-rule) ```bash syllago create rules my-rule --provider claude-code ``` This scaffolds a new rule directory under `local/` with template files and `.syllago.yaml` metadata. ### Importing from a provider [Section titled “Importing from a provider”](#importing-from-a-provider) ```bash syllago add --from claude-code ``` This scans the provider’s config directory and imports any rules into your syllago library in the provider-neutral format. ### Installing to a provider [Section titled “Installing to a provider”](#installing-to-a-provider) Rules install to the target provider’s rules directory, converting format automatically: ```bash syllago install my-rule --to cursor ``` ### Inspecting a rule [Section titled “Inspecting a rule”](#inspecting-a-rule) ```bash syllago inspect rules/claude-code/my-rule ``` Shows the full metadata and content for pre-install auditing. ## Further Reading [Section titled “Further Reading”](#further-reading) * [Content Types Overview](/using-syllago/content-types.md) — provider compatibility matrix and other content types * [Format Conversion](/using-syllago/format-conversion.md) — how syllago converts between provider formats
# Skills
> How syllago manages skills across providers.
[Source](/using-syllago/content-types/skills/)
Skills are multi-file workflow packages that teach the AI specific capabilities. Unlike [rules](/using-syllago/content-types/rules.md), which provide general behavioral guidance, skills encode structured procedures — they include metadata (name, description, triggers) in frontmatter and detailed step-by-step instructions in the body. ## Syllago Format [Section titled “Syllago Format”](#syllago-format) Each skill in your library has a `.syllago.yaml` manifest and a Markdown content file with YAML frontmatter. ### Manifest (.syllago.yaml) [Section titled “Manifest (.syllago.yaml)”](#manifest-syllagoyaml) ```yaml id: a1c7bba3-d8ed-4590-8338-b96895737bf2 name: develop-docs type: skills source_format: md source_type: provider added_at: 2026-03-16T17:09:06Z added_by: syllago ``` The `type: skills` field identifies this content as a skill. The `source_format` records the original format so syllago can track provenance. ### Content File [Section titled “Content File”](#content-file) Skill content is a Markdown file with YAML frontmatter containing metadata: ```markdown --- name: develop-docs description: Documentation design and planning workflow. --- # DevelopDocs Orchestrates the complete documentation development lifecycle. ## Steps 1. Analyze the target audience and scope 2. Create an outline with section headings 3. Draft each section following the style guide 4. Review for technical accuracy 5. Format for the target platform ``` The frontmatter `name` and `description` fields are the skill’s identity — they determine how the AI discovers and activates the skill. The body contains the actual instructions. ## Canonical Fields [Section titled “Canonical Fields”](#canonical-fields) Skills support the following metadata fields in YAML frontmatter: | Field | Description | Provider Support | | --------------- | -------------------------------------------------- | ------------------------------------- | | `name` | Skill name (required) | All providers | | `description` | What the skill does (required) | All providers | | `license` | License identifier (Agent Skills spec) | Claude Code, Cursor | | `compatibility` | Tool/version constraints | Claude Code, Cursor | | `metadata` | Arbitrary key-value pairs | Claude Code, Cursor | | `effort` | Time/complexity: `min`, `moderate`, `large`, `max` | Claude Code (native); others as prose | | `hooks` | Skill-scoped event hooks | Claude Code (native); others warn | ## Provider Compatibility [Section titled “Provider Compatibility”](#provider-compatibility) Skills are supported by most providers: | Provider | Format | Notes | | ----------- | --------------------------- | ------------------------------------------ | | Claude Code | Markdown + YAML frontmatter | Full field support including effort, hooks | | Gemini CLI | Markdown | Metadata embedded in body | | Cursor | Markdown | Full field support | | Copilot CLI | Markdown | Skills in `.github/skills/` | | Codex | Markdown | Skills in `.agents/skills/` | | Kiro | Markdown steering files | Skills in `.kiro/steering/` | | Windsurf | Markdown | Skills in `.windsurf/skills/` | | OpenCode | Markdown | Skills in `.opencode/skills/` | | Roo Code | Markdown | Skills in `.roo/skills/` | | Amp | Markdown | Skills in `.agents/skills/` | Zed and Cline do not support skills. ## Format Differences [Section titled “Format Differences”](#format-differences) ### Frontmatter Handling [Section titled “Frontmatter Handling”](#frontmatter-handling) The key conversion challenge for skills is frontmatter. Claude Code uses standard YAML frontmatter (`---` delimiters), but other providers handle metadata differently: * **Claude Code** stores `name` and `description` as YAML frontmatter. The AI reads these fields to understand when and how to apply the skill. * **Gemini CLI** does not use YAML frontmatter. When converting, syllago either embeds the metadata as a heading/description in the Markdown body or omits it if Gemini can infer the skill’s purpose from context. * **Kiro** uses JSON-based steering files. Syllago wraps the Markdown content into JSON string fields and maps frontmatter keys to their JSON equivalents. * **OpenCode** uses Markdown-based skills with its own conventions for metadata. ### Conversion Example [Section titled “Conversion Example”](#conversion-example) Converting a skill from Claude Code format to Gemini CLI: ```bash syllago convert develop-docs --to gemini-cli ``` The Claude Code source with frontmatter: ```markdown --- name: develop-docs description: Documentation design and planning workflow. --- # DevelopDocs Orchestrates the complete documentation development lifecycle... ``` Becomes a Gemini CLI file without frontmatter, with metadata folded into the body: ```markdown # DevelopDocs Documentation design and planning workflow. Orchestrates the complete documentation development lifecycle... ``` The `description` field is preserved as prose rather than lost, and tool name references in the body are automatically translated to Gemini’s equivalents. See [Format Conversion](/using-syllago/format-conversion.md) for the full conversion model. ## Working with Skills [Section titled “Working with Skills”](#working-with-skills) ```bash # Import a skill from your current provider syllago add --from claude-code # List all skills in your library syllago list --type skills # Install a skill to a specific provider syllago install develop-docs --to gemini-cli # Inspect a skill's metadata and content syllago inspect develop-docs ``` ## See Also [Section titled “See Also”](#see-also) * [Content Types Overview](/using-syllago/content-types.md) — compatibility matrix and all content types * [Format Conversion](/using-syllago/format-conversion.md) — how syllago converts between provider formats
# Format Conversion
> How syllago converts content between AI coding tool formats.
[Source](/using-syllago/format-conversion/)
## How Conversion Works [Section titled “How Conversion Works”](#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: ```plaintext Source Provider -> syllago format -> Target Provider ``` When you run `syllago install my-skill --to cursor` or `syllago convert my-rule --to windsurf`, syllago: 1. Reads the content from your library (already in syllago format) 2. Converts to the target provider’s format 3. Translates tool names, metadata, and frontmatter automatically ## Compatibility Matrix [Section titled “Compatibility Matrix”](#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”](#provider-specific-format-notes) ### Cursor [Section titled “Cursor”](#cursor) Rules are converted to MDC (Markdown Component) format with `.mdc` extension. Frontmatter fields map to MDC metadata headers. ### Codex [Section titled “Codex”](#codex) Agent definitions use TOML format. Syllago auto-converts between TOML and Markdown frontmatter. ### Kiro [Section titled “Kiro”](#kiro) 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. ### Amp [Section titled “Amp”](#amp) Rules use `AGENTS.md` format with globs array frontmatter. MCP configs use a provider-specific JSON key. ### Zed [Section titled “Zed”](#zed) MCP server configs use the `context_servers` key instead of `mcpServers`. Syllago handles this mapping automatically. ### OpenCode [Section titled “OpenCode”](#opencode) Rules use YAML format. Syllago strips Markdown frontmatter and converts to OpenCode’s YAML structure. ## What Gets Preserved [Section titled “What Gets Preserved”](#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 `Read` becomes Gemini’s `read_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”](#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_model` has no Claude Code equivalent) * Missing capability support (e.g., `input_rewrite` not available on target) * Fields dropped during conversion (e.g., `disabledTools` on MCP servers) ## Canonical Tool Names [Section titled “Canonical Tool Names”](#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”](#using-the-convert-command) ```bash # Convert a specific item to stdout syllago convert my-skill --to gemini-cli # Save to a file syllago convert my-rule --to windsurf --output ./windsurf-rule.md # JSON output with portability warnings syllago convert my-skill --to cursor --json # Check compatibility across all providers syllago compat my-skill ``` ## Hook Conversion [Section titled “Hook Conversion”](#hook-conversion) For hooks specifically, syllago uses the [Hook Interchange Format](/reference/hooks-v1.md) 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”](#see-also) * [Content Types](/using-syllago/content-types.md) — what each content type supports * [Hook Interchange Format](/reference/hooks-v1.md) — full hook conversion specification * `syllago compat` — check provider compatibility
# Providers
> The AI coding tools syllago integrates with, their supported content types, and how provider detection works.
[Source](/using-syllago/providers/)
A **provider** is an AI coding tool that syllago can read from and write to. Each provider has its own configuration format, file locations, and set of supported content types. syllago handles the differences so you can share configuration between them. ## Checking available providers [Section titled “Checking available providers”](#checking-available-providers) To see the full list of providers and what each one supports: ```bash syllago info providers ``` ## Content type support matrix [Section titled “Content type support matrix”](#content-type-support-matrix) Not every provider supports every content type. The matrix below shows what each provider can handle. | Provider | Slug | Rules | Skills | Agents | MCP | Hooks | Commands | | ---------------------------------------------------- | ------------- | :---: | :----: | :----: | :-: | :---: | :------: | | [Claude Code](/using-syllago/providers/claude-code.md) | `claude-code` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | [Gemini CLI](/using-syllago/providers/gemini-cli.md) | `gemini-cli` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | [Cursor](/using-syllago/providers/cursor.md) | `cursor` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | [Copilot CLI](/using-syllago/providers/copilot.md) | `copilot-cli` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | [Codex](/using-syllago/providers/codex.md) | `codex` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | [Kiro](/using-syllago/providers/kiro.md) | `kiro` | ✅ | ✅ | ✅ | ✅ | ✅ | — | | [Windsurf](/using-syllago/providers/windsurf.md) | `windsurf` | ✅ | ✅ | — | ✅ | ✅ | — | | [OpenCode](/using-syllago/providers/opencode.md) | `opencode` | ✅ | ✅ | ✅ | ✅ | — | ✅ | | [Roo Code](/using-syllago/providers/roo-code.md) | `roo-code` | ✅ | ✅ | ✅ | ✅ | — | — | | [Cline](/using-syllago/providers/cline.md) | `cline` | ✅ | — | — | ✅ | ✅ | — | | [Amp](/using-syllago/providers/amp.md) | `amp` | ✅ | ✅ | — | ✅ | — | — | | [Zed](/using-syllago/providers/zed.md) | `zed` | ✅ | — | — | ✅ | — | — | Every provider supports rules. Beyond that, support varies based on what each tool’s configuration format can express. ## Auto-detection [Section titled “Auto-detection”](#auto-detection) When you run `syllago init`, syllago scans your system for installed providers and configures itself to work with the ones it finds. You don’t need to manually specify which providers you use. ## The `--from` and `--to` flags [Section titled “The --from and --to flags”](#the---from-and---to-flags) When working with content, the `--from` flag tells syllago which provider to read from, and the `--to` flag tells it which provider to write to. Use the provider slug as the value: ```bash # Add content from Cursor to your library syllago add --from cursor # Install a rule to Gemini CLI syllago install my-rule --to gemini-cli ``` If the source and target providers use different configuration formats, syllago converts automatically. See [Format Conversion](/using-syllago/format-conversion.md) for details. ## Provider compatibility [Section titled “Provider compatibility”](#provider-compatibility) Use `syllago compat` to check which providers support a specific content item: ```bash syllago compat my-skill ``` This shows a matrix of which providers can handle the item, with any conversion warnings. ## Provider descriptions [Section titled “Provider descriptions”](#provider-descriptions) * **Claude Code** (`claude-code`) — Anthropic’s CLI and IDE agent with full support for all content types including loadouts. * **Gemini CLI** (`gemini-cli`) — Google’s CLI agent with full support for all six standard content types. * **Cursor** (`cursor`) — AI-native code editor supporting all six content types with MDC format for rules. * **Copilot CLI** (`copilot-cli`) — GitHub’s CLI agent supporting all six content types. * **Codex** (`codex`) — OpenAI’s CLI agent supporting all six content types with TOML agent format. * **Kiro** (`kiro`) — AWS’s AI IDE supporting rules, skills, agents, MCP, and hooks with Markdown/YAML frontmatter agent format. * **Windsurf** (`windsurf`) — AI-native code editor supporting rules, skills, hooks, and MCP. * **OpenCode** (`opencode`) — Terminal-based AI coding tool supporting rules, skills, agents, MCP, and commands. * **Roo Code** (`roo-code`) — VS Code extension supporting rules, skills, agents, and MCP with mode-specific rule directories. * **Cline** (`cline`) — VS Code extension supporting rules, hooks (file-based), and MCP. * **Amp** (`amp`) — AI coding assistant supporting rules (AGENTS.md), skills, and MCP. * **Zed** (`zed`) — High-performance editor supporting rules and MCP with unique `context_servers` JSON key.
# Amp
> How syllago works with Amp.
[Source](/using-syllago/providers/amp/)
Amp is an AI coding assistant that uses `AGENTS.md` for its rule files. ## Provider Details [Section titled “Provider Details”](#provider-details) | Detail | Value | | --------------------------- | -------------------------- | | **Slug** | `amp` | | **Config directory** | `~/.config/amp` | | **Supported content types** | Rules, Skills, MCP Configs | ## Supported Content Types [Section titled “Supported Content Types”](#supported-content-types) | Content Type | Supported | Install Method | | ------------ | --------- | -------------- | | Rules | Yes | Symlink | | Skills | Yes | Symlink | | MCP Configs | Yes | JSON merge | | Agents | No | — | | Hooks | No | — | | Commands | No | — | ## File Format and Location [Section titled “File Format and Location”](#file-format-and-location) | Content Type | Project Location | Global Location | Format | | ------------ | -------------------- | -------------------------- | -------- | | Rules | `AGENTS.md` | `~/.config/amp/AGENTS.md` | Markdown | | Skills | `.agents/skills/` | `~/.config/agents/skills/` | Markdown | | MCP Configs | `.amp/settings.json` | — | JSON | ## Discovery Paths [Section titled “Discovery Paths”](#discovery-paths) When adding content from Amp, syllago looks in these locations: | Content Type | Discovery Paths | | ------------ | ---------------------------------------------------------------------- | | Rules | `AGENTS.md`, `AGENT.md`, `CLAUDE.md` | | Skills | `.agents/skills/`, `.claude/skills/` (compatibility fallback) | | MCP Configs | `.amp/settings.json` (workspace-scoped, requires user approval in Amp) | ## Format Notes [Section titled “Format Notes”](#format-notes) Amp adds an implicit `**/` prefix to glob patterns at runtime. When converting rules to Amp format, syllago strips any existing `**/` prefix from globs to avoid double-prefixing. ## Detection [Section titled “Detection”](#detection) Syllago detects Amp by checking for the `~/.config/amp` directory. ## Working with Amp [Section titled “Working with Amp”](#working-with-amp) ```bash # Add content from Amp syllago add --from amp # Install content to Amp syllago install my-rule --to amp # Check compatibility with Amp syllago compat my-skill ``` ## See Also [Section titled “See Also”](#see-also) * [Providers Overview](/using-syllago/providers.md) * [Format Conversion](/using-syllago/format-conversion.md)
# Claude Code
> How syllago works with Claude Code.
[Source](/using-syllago/providers/claude-code/)
Anthropic’s CLI and IDE agent, with the broadest content type support of any provider. ## Provider Details [Section titled “Provider Details”](#provider-details) | Detail | Value | | --------------------------- | ------------------------------------------------------------- | | **Slug** | `claude-code` | | **Config directory** | `~/.claude` | | **Supported content types** | Rules, Skills, Agents, MCP Configs, Hooks, Commands, Loadouts | ## Supported Content Types [Section titled “Supported Content Types”](#supported-content-types) | Content Type | Supported | Install Method | | ------------ | --------- | -------------- | | Rules | Yes | Symlink | | Skills | Yes | Symlink | | Agents | Yes | Symlink | | MCP Configs | Yes | JSON merge | | Hooks | Yes | JSON merge | | Commands | Yes | Symlink | | Loadouts | Yes | JSON merge | ## File Format and Location [Section titled “File Format and Location”](#file-format-and-location) | Content Type | Project Location | Global Location | Format | | ------------ | ----------------------------- | --------------------- | -------- | | Rules | `CLAUDE.md`, `.claude/rules/` | `~/.claude/rules/` | Markdown | | Skills | `.claude/skills/` | `~/.claude/skills/` | Markdown | | Agents | `.claude/agents/` | `~/.claude/agents/` | Markdown | | MCP Configs | `.claude.json`, `.mcp.json` | — | JSON | | Hooks | `.claude/settings.json` | — | JSON | | Commands | `.claude/commands/` | `~/.claude/commands/` | Markdown | | Loadouts | `.claude/settings.json` | — | JSON | ## Discovery Paths [Section titled “Discovery Paths”](#discovery-paths) | Content Type | Discovery Paths | | ------------ | ----------------------------- | | Rules | `CLAUDE.md`, `.claude/rules/` | | Skills | `.claude/skills/` | | Agents | `.claude/agents/` | | MCP Configs | `.claude.json`, `.mcp.json` | | Hooks | `.claude/settings.json` | | Commands | `.claude/commands/` | ## Format Notes [Section titled “Format Notes”](#format-notes) Claude Code uses plain Markdown for most content types, making its files straightforward to read and edit manually. MCP configurations, hooks, and loadouts are stored as JSON within settings files. Claude Code supports all seven content types that syllago tracks, so no conversion or feature gaps apply when working with this provider. ## Detection [Section titled “Detection”](#detection) Syllago detects Claude Code by checking for the `~/.claude` directory. ## Working with Claude Code [Section titled “Working with Claude Code”](#working-with-claude-code) ```bash # Add content from Claude Code syllago add --from claude-code # Install content to Claude Code syllago install my-rule --to claude-code ``` ## See Also [Section titled “See Also”](#see-also) * [Providers Overview](/using-syllago/providers.md) * [Format Conversion](/using-syllago/format-conversion.md)
# Cline
> How syllago works with Cline.
[Source](/using-syllago/providers/cline/)
A VS Code extension for AI-assisted coding with support for rules, hooks, and MCP configurations. ## Provider Details [Section titled “Provider Details”](#provider-details) | Detail | Value | | --------------------------- | ------------------------- | | **Slug** | `cline` | | **Config directory** | `.clinerules` | | **Supported content types** | Rules, Hooks, MCP Configs | ## Supported Content Types [Section titled “Supported Content Types”](#supported-content-types) | Content Type | Supported | Install Method | | ------------ | --------- | -------------------------------- | | Rules | Yes | Symlink | | Hooks | Yes | Symlink (file-based executables) | | MCP Configs | Yes | JSON merge | | Skills | No | — | | Agents | No | — | | Commands | No | — | ## File Format and Location [Section titled “File Format and Location”](#file-format-and-location) | Content Type | Project Location | Global Location | Format | | ------------ | --------------------- | -------------------------- | -------- | | Rules | `.clinerules/` | `~/Documents/Cline/Rules/` | Markdown | | Hooks | `.clinerules/hooks/` | — | Markdown | | MCP Configs | VS Code globalStorage | — | JSON | ## Discovery Paths [Section titled “Discovery Paths”](#discovery-paths) | Content Type | Discovery Paths | | ------------ | ------------------------------------------- | | Rules | `.clinerules/`, `~/Documents/Cline/Rules/` | | Hooks | `.clinerules/hooks/` | | MCP Configs | VS Code globalStorage (platform-aware path) | ## Format Notes [Section titled “Format Notes”](#format-notes) Cline’s MCP configuration is stored in VS Code’s `globalStorage` directory, which varies by platform. Syllago detects the correct path automatically. Hooks in Cline are file-based executables in the `.clinerules/hooks/` directory, unlike the JSON-based hooks used by most other providers. ## Detection [Section titled “Detection”](#detection) Syllago detects Cline by checking for the `~/Documents/Cline/Rules` directory. ## Working with Cline [Section titled “Working with Cline”](#working-with-cline) ```bash # Add content from Cline syllago add --from cline # Install content to Cline syllago install my-rule --to cline ``` ## See Also [Section titled “See Also”](#see-also) * [Providers Overview](/using-syllago/providers.md) * [Format Conversion](/using-syllago/format-conversion.md)
# Codex
> How syllago works with Codex.
[Source](/using-syllago/providers/codex/)
OpenAI’s CLI agent with support for rules, skills, agents, MCP, hooks, and commands. ## Provider Details [Section titled “Provider Details”](#provider-details) | Detail | Value | | --------------------------- | --------------------------------------------------- | | **Slug** | `codex` | | **Config directory** | `~/.codex` | | **Supported content types** | Rules, Skills, Agents, MCP Configs, Hooks, Commands | ## Supported Content Types [Section titled “Supported Content Types”](#supported-content-types) | Content Type | Supported | Install Method | | ------------ | --------- | -------------- | | Rules | Yes | Symlink | | Skills | Yes | Symlink | | Agents | Yes | Symlink | | MCP Configs | Yes | JSON merge | | Hooks | Yes | File-based | | Commands | Yes | Symlink | ## File Format and Location [Section titled “File Format and Location”](#file-format-and-location) | Content Type | Project Location | Global Location | Format | | ------------ | ------------------- | ------------------- | -------- | | Rules | `AGENTS.md` | `~/.codex/` | Markdown | | Skills | `.agents/skills/` | `~/.agents/skills/` | Markdown | | Agents | `.codex/agents/` | `~/.codex/` | TOML | | Hooks | `.codex/hooks.json` | `~/.codex/` | JSON | | Commands | `.codex/commands/` | `~/.codex/` | Markdown | ## Discovery Paths [Section titled “Discovery Paths”](#discovery-paths) | Content Type | Discovery Paths | | ------------ | ------------------- | | Rules | `AGENTS.md` | | Skills | `.agents/skills/` | | Agents | `.codex/agents/` | | Hooks | `.codex/hooks.json` | | Commands | `.codex/commands/` | ## Format Notes [Section titled “Format Notes”](#format-notes) Codex uses **TOML** for agent configuration files, which is unique among providers. Syllago handles the conversion between TOML and other agent formats (Markdown, YAML) automatically. Rules and commands use standard Markdown. ## Detection [Section titled “Detection”](#detection) Syllago detects Codex by checking for the `~/.codex` directory or the `codex` command in PATH. ## Working with Codex [Section titled “Working with Codex”](#working-with-codex) ```bash # Add content from Codex syllago add --from codex # Install content to Codex syllago install my-skill --to codex ``` ## See Also [Section titled “See Also”](#see-also) * [Providers Overview](/using-syllago/providers.md) * [Format Conversion](/using-syllago/format-conversion.md)
# Copilot CLI
> How syllago works with Copilot CLI.
[Source](/using-syllago/providers/copilot/)
GitHub’s CLI agent supporting rules, skills, agents, MCP, hooks, and commands. ## Provider Details [Section titled “Provider Details”](#provider-details) | Detail | Value | | --------------------------- | --------------------------------------------------- | | **Slug** | `copilot-cli` | | **Config directory** | `~/.copilot` | | **Supported content types** | Rules, Skills, Agents, MCP Configs, Hooks, Commands | ## Supported Content Types [Section titled “Supported Content Types”](#supported-content-types) | Content Type | Supported | Install Method | | ------------ | --------- | -------------- | | Rules | Yes | Symlink | | Skills | Yes | Symlink | | Agents | Yes | Symlink | | MCP Configs | Yes | JSON merge | | Hooks | Yes | JSON merge | | Commands | Yes | Symlink | ## File Format and Location [Section titled “File Format and Location”](#file-format-and-location) | Content Type | Project Location | Global Location | Format | | ------------ | ---------------------------------------------- | ---------------------- | -------- | | Rules | `.github/copilot-instructions.md`, `AGENTS.md` | `~/.copilot/` | Markdown | | Skills | `.github/skills/` | `~/.github/skills/` | Markdown | | Agents | `.copilot/agents/`, `.github/agents/` | `~/.github/agents/` | Markdown | | MCP Configs | `.copilot/mcp-config.json` | — | JSON | | Hooks | `.github/hooks/` | — | JSON | | Commands | `.copilot/commands/` | `~/.copilot/commands/` | Markdown | ## Discovery Paths [Section titled “Discovery Paths”](#discovery-paths) | Content Type | Discovery Paths | | ------------ | ------------------------------------------------------------------- | | Rules | `.github/copilot-instructions.md`, `AGENTS.md` | | Skills | `.github/skills/` | | Agents | `.copilot/agents/`, `.github/agents/`, `.claude/agents/` (fallback) | | MCP Configs | `.copilot/mcp-config.json` | | Hooks | `.github/hooks/` | | Commands | `.copilot/commands/` | ## Detection [Section titled “Detection”](#detection) Syllago detects Copilot CLI by checking for the `~/.copilot` directory or the `gh` command in PATH. ## Working with Copilot CLI [Section titled “Working with Copilot CLI”](#working-with-copilot-cli) ```bash # Add content from Copilot CLI syllago add --from copilot-cli # Install content to Copilot CLI syllago install my-rule --to copilot-cli ``` ## See Also [Section titled “See Also”](#see-also) * [Providers Overview](/using-syllago/providers.md) * [Format Conversion](/using-syllago/format-conversion.md)
# Cursor
> How syllago works with Cursor.
[Source](/using-syllago/providers/cursor/)
An AI-native code editor with broad content type support. Cursor uses MDC (Markdown Component) format for rule files. ## Provider Details [Section titled “Provider Details”](#provider-details) | Detail | Value | | --------------------------- | --------------------------------------------------- | | **Slug** | `cursor` | | **Config directory** | `~/.cursor` | | **Supported content types** | Rules, Skills, Agents, MCP Configs, Hooks, Commands | ## Supported Content Types [Section titled “Supported Content Types”](#supported-content-types) | Content Type | Supported | Install Method | | ------------ | --------- | -------------- | | Rules | Yes | Symlink | | Skills | Yes | Symlink | | Agents | Yes | Symlink | | MCP Configs | Yes | JSON merge | | Hooks | Yes | JSON merge | | Commands | Yes | Symlink | ## File Format and Location [Section titled “File Format and Location”](#file-format-and-location) | Content Type | Project Location | Global Location | Format | | ------------ | ------------------------------ | --------------------- | ------------ | | Rules | `.cursor/rules/` | `~/.cursor/` | MDC (`.mdc`) | | Skills | `.cursor/skills/` | `~/.cursor/skills/` | Markdown | | Agents | `.cursor/agents/`, `AGENTS.md` | `~/.cursor/agents/` | Markdown | | MCP Configs | `.cursor/mcp.json` | — | JSON | | Hooks | `.cursor/settings.json` | — | JSON | | Commands | `.cursor/commands/` | `~/.cursor/commands/` | Markdown | ## Discovery Paths [Section titled “Discovery Paths”](#discovery-paths) When adding content from Cursor, syllago looks in these locations: | Content Type | Discovery Paths | | ------------ | -------------------------------- | | Rules | `.cursor/rules/`, `.cursorrules` | | Skills | `.cursor/skills/` | | Agents | `.cursor/agents/`, `AGENTS.md` | | MCP Configs | `.cursor/mcp.json` | | Hooks | `.cursor/settings.json` | | Commands | `.cursor/commands/` | ## Format Notes [Section titled “Format Notes”](#format-notes) Cursor uses **MDC (Markdown Component)** format for rule files. MDC has a metadata header delimited by `---` containing fields like `description`, `globs`, and `alwaysApply`. Syllago converts between standard Markdown and MDC automatically. Example MDC structure: ```plaintext --- description: Rule description here globs: "**/*.ts" alwaysApply: false --- Rule content in Markdown. ``` Other content types (skills, agents, commands) use standard Markdown. MCP and hooks are stored as JSON. ## Detection [Section titled “Detection”](#detection) Syllago detects Cursor by checking for the `~/.cursor` directory. ## Working with Cursor [Section titled “Working with Cursor”](#working-with-cursor) ```bash # Add content from Cursor syllago add --from cursor # Install content to Cursor syllago install my-rule --to cursor # Check what converts cleanly to Cursor syllago compat my-skill ``` ## See Also [Section titled “See Also”](#see-also) * [Providers Overview](/using-syllago/providers.md) * [Format Conversion](/using-syllago/format-conversion.md)
# Gemini CLI
> How syllago works with Gemini CLI.
[Source](/using-syllago/providers/gemini-cli/)
Google’s CLI agent with full support for all six standard content types. ## Provider Details [Section titled “Provider Details”](#provider-details) | Detail | Value | | --------------------------- | --------------------------------------------------- | | **Slug** | `gemini-cli` | | **Config directory** | `~/.gemini` | | **Supported content types** | Rules, Skills, Agents, MCP Configs, Hooks, Commands | ## Supported Content Types [Section titled “Supported Content Types”](#supported-content-types) | Content Type | Supported | Install Method | | ------------ | --------- | -------------- | | Rules | Yes | Symlink | | Skills | Yes | Symlink | | Agents | Yes | Symlink | | MCP Configs | Yes | JSON merge | | Hooks | Yes | JSON merge | | Commands | Yes | Symlink | ## File Format and Location [Section titled “File Format and Location”](#file-format-and-location) | Content Type | Project Location | Global Location | Format | | ------------ | ------------------------------------ | --------------------- | -------- | | Rules | `GEMINI.md` | `~/.gemini/` | Markdown | | Skills | `.gemini/skills/`, `.agents/skills/` | `~/.gemini/skills/` | Markdown | | Agents | `.gemini/agents/` | `~/.gemini/agents/` | Markdown | | MCP Configs | `.gemini/settings.json` | — | JSON | | Hooks | `.gemini/settings.json` | — | JSON | | Commands | `.gemini/commands/` | `~/.gemini/commands/` | Markdown | ## Discovery Paths [Section titled “Discovery Paths”](#discovery-paths) | Content Type | Discovery Paths | | ------------ | ----------------------------------------------- | | Rules | `GEMINI.md` | | Skills | `.gemini/skills/`, `.agents/skills/` (fallback) | | Agents | `.gemini/agents/` | | MCP Configs | `.gemini/settings.json` | | Hooks | `.gemini/settings.json` | | Commands | `.gemini/commands/` | ## Format Notes [Section titled “Format Notes”](#format-notes) Gemini CLI uses Markdown for text-based content types and JSON for structured configurations. Gemini CLI supports unique hook events (`before_model`, `after_model`, `before_tool_selection`) not available in other providers. ## Detection [Section titled “Detection”](#detection) Syllago detects Gemini CLI by checking for the `~/.gemini` directory. ## Working with Gemini CLI [Section titled “Working with Gemini CLI”](#working-with-gemini-cli) ```bash # Add content from Gemini CLI syllago add --from gemini-cli # Install content to Gemini CLI syllago install my-rule --to gemini-cli ``` ## See Also [Section titled “See Also”](#see-also) * [Providers Overview](/using-syllago/providers.md) * [Format Conversion](/using-syllago/format-conversion.md)
# Kiro
> How syllago works with Kiro.
[Source](/using-syllago/providers/kiro/)
AWS’s AI IDE with support for rules, skills, agents, MCP configs, and hooks. ## Provider Details [Section titled “Provider Details”](#provider-details) | Detail | Value | | --------------------------- | ----------------------------------------- | | **Slug** | `kiro` | | **Config directory** | `~/.kiro` | | **Supported content types** | Rules, Skills, Agents, MCP Configs, Hooks | ## Supported Content Types [Section titled “Supported Content Types”](#supported-content-types) | Content Type | Supported | Install Method | | ------------ | --------- | -------------- | | Rules | Yes | Symlink | | Skills | Yes | Symlink | | Agents | Yes | Symlink | | MCP Configs | Yes | JSON merge | | Hooks | Yes | JSON merge | | Commands | No | — | ## File Format and Location [Section titled “File Format and Location”](#file-format-and-location) | Content Type | Project Location | Global Location | Format | | ------------ | -------------------------- | ----------------- | --------------------------- | | Rules | `.kiro/steering/` | — | Markdown | | Skills | `.kiro/steering/` | — | Markdown | | Agents | `.kiro/agents/` | `~/.kiro/agents/` | Markdown (YAML frontmatter) | | MCP Configs | `.kiro/settings/mcp.json` | — | JSON | | Hooks | `.kiro/agents/` (embedded) | — | JSON | ## Discovery Paths [Section titled “Discovery Paths”](#discovery-paths) | Content Type | Discovery Paths | | ------------ | ------------------------- | | Rules | `.kiro/steering/` | | Skills | `.kiro/steering/` | | Agents | `.kiro/agents/` | | MCP Configs | `.kiro/settings/mcp.json` | | Hooks | `.kiro/agents/` | ## Format Notes [Section titled “Format Notes”](#format-notes) Kiro agents use **Markdown with YAML frontmatter** containing up to 14 fields. There is also a **JSON CLI agent format** with support for embedded MCP servers, per-tool settings, lifecycle hooks, and keyboard shortcuts. Rules and skills are stored as Markdown “steering” files in `.kiro/steering/`. Hooks are embedded within agent JSON files rather than stored separately. ## Detection [Section titled “Detection”](#detection) Syllago detects Kiro by checking for the `~/.kiro` directory. ## Working with Kiro [Section titled “Working with Kiro”](#working-with-kiro) ```bash # Add content from Kiro syllago add --from kiro # Install content to Kiro syllago install my-rule --to kiro ``` ## See Also [Section titled “See Also”](#see-also) * [Providers Overview](/using-syllago/providers.md) * [Format Conversion](/using-syllago/format-conversion.md)
# OpenCode
> How syllago works with OpenCode.
[Source](/using-syllago/providers/opencode/)
A terminal-based AI coding tool supporting rules, skills, agents, MCP, and commands. ## Provider Details [Section titled “Provider Details”](#provider-details) | Detail | Value | | --------------------------- | -------------------------------------------- | | **Slug** | `opencode` | | **Config directory** | `~/.config/opencode` | | **Supported content types** | Rules, Skills, Agents, MCP Configs, Commands | ## Supported Content Types [Section titled “Supported Content Types”](#supported-content-types) | Content Type | Supported | Install Method | | ------------ | --------- | -------------- | | Rules | Yes | Symlink | | Skills | Yes | Symlink | | Agents | Yes | Symlink | | MCP Configs | Yes | JSON merge | | Commands | Yes | Symlink | | Hooks | No | — | ## File Format and Location [Section titled “File Format and Location”](#file-format-and-location) | Content Type | Project Location | Global Location | Format | | ------------ | --------------------------------- | ------------------------------ | -------- | | Rules | `AGENTS.md`, `CLAUDE.md` | `~/.config/opencode/` | Markdown | | Skills | `.opencode/skills/` | `~/.config/opencode/skills/` | Markdown | | Agents | `.opencode/agents/` | `~/.config/opencode/agents/` | Markdown | | MCP Configs | `opencode.json`, `opencode.jsonc` | — | JSONC | | Commands | `.opencode/commands/` | `~/.config/opencode/commands/` | Markdown | ## Discovery Paths [Section titled “Discovery Paths”](#discovery-paths) | Content Type | Discovery Paths | | ------------ | --------------------------------- | | Rules | `AGENTS.md`, `CLAUDE.md` | | Skills | `.opencode/skills/` | | Agents | `.opencode/agents/` | | MCP Configs | `opencode.json`, `opencode.jsonc` | | Commands | `.opencode/commands/` | ## Format Notes [Section titled “Format Notes”](#format-notes) OpenCode uses **JSONC** (JSON with comments) for MCP configurations. Syllago handles the conversion automatically. Rules are discovered from both `AGENTS.md` and `CLAUDE.md` files. ## Detection [Section titled “Detection”](#detection) Syllago detects OpenCode by checking for the `~/.config/opencode/` directory or the `opencode` command in PATH. ## Working with OpenCode [Section titled “Working with OpenCode”](#working-with-opencode) ```bash # Add content from OpenCode syllago add --from opencode # Install content to OpenCode syllago install my-rule --to opencode ``` ## See Also [Section titled “See Also”](#see-also) * [Providers Overview](/using-syllago/providers.md) * [Format Conversion](/using-syllago/format-conversion.md)
# Roo Code
> How syllago works with Roo Code.
[Source](/using-syllago/providers/roo-code/)
A VS Code extension supporting rules, skills, agents, and MCP configurations. ## Provider Details [Section titled “Provider Details”](#provider-details) | Detail | Value | | --------------------------- | ---------------------------------- | | **Slug** | `roo-code` | | **Config directory** | `~/.roo` | | **Supported content types** | Rules, Skills, Agents, MCP Configs | ## Supported Content Types [Section titled “Supported Content Types”](#supported-content-types) | Content Type | Supported | Install Method | | ------------ | --------- | -------------- | | Rules | Yes | Symlink | | Skills | Yes | Symlink | | Agents | Yes | Symlink | | MCP Configs | Yes | JSON merge | | Hooks | No | — | | Commands | No | — | ## File Format and Location [Section titled “File Format and Location”](#file-format-and-location) | Content Type | Project Location | Global Location | Format | | ------------ | --------------------------------- | ---------------- | -------- | | Rules | `.roo/rules/`, `.roorules` | `~/.roo/rules/` | Markdown | | Skills | `.roo/skills/`, `.agents/skills/` | `~/.roo/skills/` | Markdown | | Agents | `.roomodes`, `.roo/` | — | YAML | | MCP Configs | `.roo/mcp.json` | — | JSON | ## Discovery Paths [Section titled “Discovery Paths”](#discovery-paths) | Content Type | Discovery Paths | | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Rules | `.roo/rules/`, `.roo/rules-code/`, `.roo/rules-architect/`, `.roo/rules-ask/`, `.roo/rules-debug/`, `.roo/rules-orchestrator/`, `.roorules`, `~/.roo/rules/` | | Skills | `.roo/skills/`, `.agents/skills/` (fallback) | | MCP Configs | `.roo/mcp.json` | ## Format Notes [Section titled “Format Notes”](#format-notes) Roo Code uses **mode-specific rule directories** (e.g., `rules-code/`, `rules-architect/`), which syllago discovers automatically. Agent configurations use YAML format. ## Detection [Section titled “Detection”](#detection) Syllago detects Roo Code by checking for the `~/.roo` directory. ## Working with Roo Code [Section titled “Working with Roo Code”](#working-with-roo-code) ```bash # Add content from Roo Code syllago add --from roo-code # Install content to Roo Code syllago install my-skill --to roo-code ``` ## See Also [Section titled “See Also”](#see-also) * [Providers Overview](/using-syllago/providers.md) * [Format Conversion](/using-syllago/format-conversion.md)
# Windsurf
> How syllago works with Windsurf.
[Source](/using-syllago/providers/windsurf/)
An AI-native code editor from Codeium with support for rules, skills, hooks, and MCP configurations. ## Provider Details [Section titled “Provider Details”](#provider-details) | Detail | Value | | --------------------------- | --------------------------------- | | **Slug** | `windsurf` | | **Config directory** | `~/.codeium/windsurf` | | **Supported content types** | Rules, Skills, Hooks, MCP Configs | ## Supported Content Types [Section titled “Supported Content Types”](#supported-content-types) | Content Type | Supported | Install Method | | ------------ | --------- | -------------- | | Rules | Yes | Symlink | | Skills | Yes | Symlink | | Hooks | Yes | JSON merge | | MCP Configs | Yes | JSON merge | | Agents | No | — | | Commands | No | — | ## File Format and Location [Section titled “File Format and Location”](#file-format-and-location) | Content Type | Project Location | Global Location | Format | | ------------ | -------------------------------------- | ----------------------------- | -------- | | Rules | `.windsurfrules`, `.windsurf/rules/` | `~/.codeium/windsurf/` | Markdown | | Skills | `.windsurf/skills/`, `.agents/skills/` | `~/.codeium/windsurf/skills/` | Markdown | | Hooks | — | — | JSON | | MCP Configs | — | — | JSON | ## Discovery Paths [Section titled “Discovery Paths”](#discovery-paths) | Content Type | Discovery Paths | | ------------ | ------------------------------------------------- | | Rules | `.windsurfrules`, `.windsurf/rules/` | | Skills | `.windsurf/skills/`, `.agents/skills/` (fallback) | ## Detection [Section titled “Detection”](#detection) Syllago detects Windsurf by checking for the `~/.codeium/windsurf` directory. ## Working with Windsurf [Section titled “Working with Windsurf”](#working-with-windsurf) ```bash # Add content from Windsurf syllago add --from windsurf # Install content to Windsurf syllago install my-rule --to windsurf ``` ## See Also [Section titled “See Also”](#see-also) * [Providers Overview](/using-syllago/providers.md) * [Format Conversion](/using-syllago/format-conversion.md)
# Zed
> How syllago works with Zed.
[Source](/using-syllago/providers/zed/)
A high-performance editor with a built-in AI assistant, supporting rules and MCP configurations. ## Provider Details [Section titled “Provider Details”](#provider-details) | Detail | Value | | --------------------------- | ------------------ | | **Slug** | `zed` | | **Config directory** | `~/.config/zed` | | **Supported content types** | Rules, MCP Configs | ## Supported Content Types [Section titled “Supported Content Types”](#supported-content-types) | Content Type | Supported | Install Method | | ------------ | --------- | -------------- | | Rules | Yes | Symlink | | MCP Configs | Yes | JSON merge | | Skills | No | — | | Agents | No | — | | Hooks | No | — | | Commands | No | — | ## File Format and Location [Section titled “File Format and Location”](#file-format-and-location) | Content Type | Project Location | Global Location | Format | | ------------ | ---------------- | ----------------------------- | -------- | | Rules | `.rules` | — | Markdown | | MCP Configs | — | `~/.config/zed/settings.json` | JSON | ## Discovery Paths [Section titled “Discovery Paths”](#discovery-paths) | Content Type | Discovery Paths | | ------------ | ------------------------------------- | | Rules | `.rules`, `.cursorrules`, `CLAUDE.md` | ## Format Notes [Section titled “Format Notes”](#format-notes) Zed uses a different JSON key for MCP server definitions. Where most providers use `mcpServers`, Zed uses `context_servers`. Syllago handles this key mapping automatically. Zed discovers rules from three file formats: `.rules`, `.cursorrules`, and `CLAUDE.md`. ## Detection [Section titled “Detection”](#detection) Syllago detects Zed by checking for the `~/.config/zed` directory or the `zed` command in PATH. ## Working with Zed [Section titled “Working with Zed”](#working-with-zed) ```bash # Add content from Zed syllago add --from zed # Install content to Zed syllago install my-rule --to zed ``` ## See Also [Section titled “See Also”](#see-also) * [Providers Overview](/using-syllago/providers.md) * [Format Conversion](/using-syllago/format-conversion.md)
# .syllago.yaml Format
> Reference for the .syllago.yaml metadata file that accompanies every content item in your library.
[Source](/using-syllago/syllago-yaml/)
Every content item in your [library](/using-syllago/collections/library.md) has a `.syllago.yaml` file in its directory. This file tracks the item’s identity, provenance, and [type](/using-syllago/content-types.md) — syllago uses it to manage, inspect, and export content. You rarely need to edit `.syllago.yaml` by hand. Syllago generates and maintains it automatically when you [`create`](/using-syllago/cli-reference/create.md), `add`, or sync content. ## Field Reference [Section titled “Field Reference”](#field-reference) | Field | Type | Required | Description | | ----------------- | ----------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------ | | `id` | string (UUID) | Yes | Unique identifier for this content item. | | `name` | string | Yes | Human-readable name. Used in CLI output and directory naming. | | `type` | string | Yes | Content type: `rules`, `skills`, `agents`, `hooks`, `commands`, or `loadouts`. | | `source_format` | string | Conditional | Original file format (`md`, `json`, `toml`). Present for imported/synced content. | | `source_type` | string | Conditional | How the content was acquired: `provider` or `created`. Present for imported/synced content. | | `source_provider` | string | Conditional | Which provider the content came from (e.g., `claude-code`). Only present when `source_type` is `provider`. | | `source_hash` | string | Conditional | SHA-256 hash of the original content, prefixed with `sha256:`. Used for change detection. | | `has_source` | boolean | Conditional | Whether the original source file is preserved alongside the converted content. | | `source` | string | Conditional | Alternate source descriptor. Used instead of `source_type`/`source_format` for locally created items (value: `created`). | | `added_at` | string (ISO 8601) | Yes | Timestamp when the item was added to the library. | | `added_by` | string | Yes | Who or what added the item — `syllago`, a version number like `0.6.1`, or a person’s name. | **Conditional fields** appear based on how the content was acquired. Imported content has `source_format`, `source_type`, and usually `source_hash`. Locally created content uses `source: created` instead. ## Examples [Section titled “Examples”](#examples) ### Rules (imported from a provider) [Section titled “Rules (imported from a provider)”](#rules-imported-from-a-provider) ```yaml id: 671fbd47-ce51-4d2b-8b4c-dc04fa4764d7 name: typescript type: rules source_format: md source_type: provider source_hash: sha256:9fa5fdb87b29dac26eb947717d8a0e0b39d8dc2268393f682f061097c0410206 added_at: 2026-03-16T17:09:06Z added_by: syllago ``` Standard pattern for content pulled from a provider. The `source_hash` lets syllago detect when the upstream content has changed. ### Hooks (imported with source file preserved) [Section titled “Hooks (imported with source file preserved)”](#hooks-imported-with-source-file-preserved) ```yaml id: 0e15bb54-3187-4673-9e2e-d1d44e40c951 name: settings type: hooks source_provider: claude-code source_format: json source_type: provider has_source: true added_at: 2026-03-05T22:08:18Z added_by: 0.6.1 ``` When `has_source` is `true`, the original file (here, a JSON file) is stored in the item’s directory alongside any converted versions. The `source_provider` field records which provider it came from. ### Loadouts (locally created) [Section titled “Loadouts (locally created)”](#loadouts-locally-created) ```yaml id: 3b9656ca-ce37-4146-aed6-5f67244688df name: testing type: loadouts source: created added_at: 2026-03-12T17:16:18Z added_by: Holden Hewett ``` Content created with [`syllago create`](/using-syllago/cli-reference/create.md) uses `source: created` instead of the `source_type`/`source_format`/`source_hash` fields. The `added_by` field records the user who created it. ## Directory Layout [Section titled “Directory Layout”](#directory-layout) Each content item lives in its own directory within the library. The `.syllago.yaml` file sits alongside the actual content files: ```plaintext library/ rules/ typescript/ .syllago.yaml typescript.md hooks/ settings/ .syllago.yaml settings.json loadouts/ testing/ .syllago.yaml testing.yaml ``` The directory name matches the `name` field in `.syllago.yaml`. Content files use whatever format is appropriate for their [type](/using-syllago/content-types.md).
# The TUI
> How to navigate the syllago terminal user interface.
[Source](/using-syllago/tui/)
Running `syllago` with no arguments launches the interactive terminal user interface (TUI). It gives you a visual way to browse and manage your library, registries, and providers without memorizing CLI commands. ```sh syllago # or use the alias syl ``` ## What you can do [Section titled “What you can do”](#what-you-can-do) * Browse your library, registries, and providers in one place * Install and uninstall content to/from providers * Add content from providers * Search and filter content with live results * Inspect content details ## Keyboard shortcuts [Section titled “Keyboard shortcuts”](#keyboard-shortcuts) ### Navigation [Section titled “Navigation”](#navigation) | Key | Action | | -------------- | ---------------------------------------- | | Up/Down or j/k | Navigate lists and scroll | | PgUp/PgDn | Jump a full viewport | | Home/End | Jump to first/last item | | Enter | Open item / confirm action | | Esc | Go back one level | | Tab/Shift+Tab | Switch focus between sidebar and content | | Ctrl+N/Ctrl+P | Next/previous item in detail view | ### Actions [Section titled “Actions”](#actions) | Key | Action | | --- | ---------------------------------------- | | / | Search (live filtering with match count) | | ? | Toggle keyboard shortcut help | | i | Install selected item | | u | Uninstall selected item | | a | Add content (context-specific) | | r | Remove item | | c | Copy content to clipboard | | H | Toggle hidden items | ## Mouse support [Section titled “Mouse support”](#mouse-support) Click to select cards, items, tabs, breadcrumbs, and modal buttons. The scroll wheel works in all scrollable areas. ## TUI vs CLI [Section titled “TUI vs CLI”](#tui-vs-cli) The TUI and CLI are equivalent — anything you can do in the TUI, you can do with [CLI commands](/using-syllago/cli-reference.md). The TUI is for interactive exploration; the CLI is for scripting and automation (`--json` output on all commands). ## Accessibility [Section titled “Accessibility”](#accessibility) For screen reader users, CLI commands with `--json` output are recommended. Colors can be disabled with `NO_COLOR=1` or `--no-color`.