Plugins
A plugin is a self-contained bundle that extends your agents with skills, toolkits, commands, rules, hooks, sub-agents, and MCP servers. Package related capabilities into one installable unit and distribute it to Cursor, Claude, GitHub Copilot, and Codex through a marketplace. Open it from Build > Plugins.

Table columns
The list page is your organization's inventory of plugins. It supports search and sortable columns.
| Column | Description |
|---|---|
| Name | Display name of the plugin. Select a row to open its edit page. |
| Content | Summary of the components the plugin bundles (skills, toolkits, commands, rules, hooks, sub-agents, MCP servers). |
| Status | Publish state: draft or active. |
Select the ... menu on a row to edit or remove a plugin.
Publish states
A plugin is created as a draft. Draft plugins are visible only to admins in this list. A plugin must have status: active to appear in the marketplace. Only organization-level plugins (no owner) are published; user-owned plugins remain private. See Distribute a Plugin for the full publish and sync flow.
Marketplace sync status
When marketplace sync is active, a status banner appears at the top of the list page showing:
- Sync status: Active (green indicator) or Paused
- Sync mode: Push to GitHub, Pull from GitHub, or Two-way sync
- Target repository: a link to the GitHub repository
- Target platforms: icons for each enabled platform (Cursor, Claude, GitHub Copilot, Codex)
If managed marketplace sync is available but not yet configured, a setup prompt appears with a Set up button.
Plugin Settings
Select Plugins Settings (or the gear icon on the list page) to configure organization-wide plugin behavior.

Marketplace name
A human-readable identifier used in the install commands generated for end users (for example, /plugin install my-plugin@<marketplace-name>).
Sync options
Control whether a wrapper plugin is created automatically when you add certain entities. Renaming or deleting the entity updates its plugin.
| Toggle | Effect |
|---|---|
| MCP Servers | Creating an MCP server also creates a plugin that wraps it. |
| Toolkits | Creating an organization toolkit also creates a plugin that wraps it. |
| Skills | Creating an organization skill also creates a plugin that wraps it. |
Target marketplace platforms
Select which platforms the organization targets by default: Cursor, Claude, GitHub Copilot, and Codex. Individual plugins can override this from their edit page.
GitHub sync
Two mechanisms are available and can run side by side:
- Managed (Willow-hosted): a private GitHub repo maintained by Willow. See Managed Marketplace Sync.
- Custom (your GitHub): your own GitHub Integration with configurable sync modes, branches, and webhooks.
Sync from GitHub
Import plugins from one or more external GitHub repositories, with optional daily auto-sync. See Sync Plugins from GitHub.
Custom install command
Optionally define a JSONata expression to override the default install command shown to users. The expression receives an env object with platform, pluginSlug, pluginName, pluginVersion, marketplaceName, and downloadUrl.
Select Save Changes to apply. Changes do not take effect until saved.
What to do next
- Create a Plugin: create one and add components
- Plugin Components Reference: every component type and field
- Distribute a Plugin: publish, download, and sync