Marketplaces & plugins
This is where agentsync earns its keep. A plugin is a bag of components — MCP servers, skills, subagents, commands, hooks, LSP servers. Install it once and every enabled agent gets the components it understands.
Install a plugin
Section titled “Install a plugin”-
Add a marketplace (a registry of plugins):
Terminal window agentsync marketplace add github:anthropics/claude-plugins-official -
Install a plugin from it:
Terminal window agentsync plugin add atlassian@anthropic -
Fetch from the network —
plugin outdatedis the polling verb of the daily loop:Terminal window agentsync plugin outdated -
Apply — renders from the local cache to all agents:
Terminal window agentsync apply
The translation report
Section titled “The translation report”Each component in a plugin is projected independently per agent — fully, lossily, or skipped — and the report tells you exactly which:
plugin: atlassian@anthropic claude ✓ full (1 mcp, 5 commands) opencode ◐ partial (1 mcp; 5 commands → projected)Inspect a plugin’s coverage without applying:
agentsync plugin explain atlassian@anthropicagentsync plugin explain atlassian@anthropic --jsonControlling per-plugin fan-out
Section titled “Controlling per-plugin fan-out”Two keys in a plugin’s TOML decide which agents its components render to:
[plugin]id = "atlassian@anthropic"agents = ["claude"] # only fan this plugin out to Claude# native_agents = ["claude"] # OMIT unless an agent installs this itself (see below)agents is your allowlist — ["*"], or omitted, means every enabled agent. It
is a deliberate, security-relevant choice: a plugin’s MCP servers, hooks, and
skills can carry ${secret:…} credentials, so agents = ["claude"] keeps that
blast radius scoped to Claude only.
native_agents is different in kind — not a preference but a fact about your
machine. An agent whose own plugin manager installs a plugin (you ran
/plugin install in Claude Code) already serves its components. agentsync never
disables a plugin inside another tool’s plugin manager, so projecting the same
components into that agent’s standalone paths would simply duplicate them: two
of every skill, subagent and command, and every hook firing twice. Listing the
agent here stops the projection for that agent only.
A component renders for an agent when agents targets it and
native_agents does not claim it.
Plugin lifecycle
Section titled “Plugin lifecycle”agentsync plugin add <id[@marketplace]>agentsync plugin upgrade <id[@marketplace]>agentsync plugin enable <id[@marketplace]>agentsync plugin disable <id[@marketplace]>agentsync plugin remove <id[@marketplace]>agentsync plugin listdisable/enable flip only the disabled bit. add rewrites only the three
fields it re-fetches (id, version, manifest_sha) and carries every other
field agentsync models in plugins/<id>.toml forward from the file you have; a
key you omitted, or an agents or update you left empty, is written with its
default.
The file is rewritten, so comments and unmodelled keys are not kept. Your
agents and native_agents targeting survives the full lifecycle.