Skip to content

Plugins

Plugins are packages of AI tooling that can be shared across projects and clients.

my-plugin/
├── skills/ # Cross-client skills
├── agents/ # Agent definitions (Claude, Copilot, Factory)
├── hooks/ # Hook definitions (Claude, Copilot, Factory)
├── hooks.json # Copilot plugin hook declaration (optional)
├── commands/ # Commands (Claude, OpenCode)
├── .github/ # Project-scoped GitHub overrides (Copilot, VSCode)
│ ├── copilot-instructions.md
│ ├── instructions/ # Pattern-based instructions
│ ├── prompts/ # Prompt files
│ ├── agents/ # GitHub agent overrides
│ └── hooks/ # GitHub hook overrides
└── AGENTS.md

AllAgents recognizes marketplace manifests at both .claude-plugin/marketplace.json and .github/plugin/marketplace.json. The GitHub Copilot location takes precedence when a repository contains both.

A marketplace entry with strict: false defines the complete set of plugin components. For example, this entry syncs the repository’s top-level skills without treating its top-level hooks or .github/ development configuration as plugin artifacts:

{
"name": "skills-only",
"source": "./",
"strict": false,
"skills": ["./skills/"]
}

Without strict: false, AllAgents retains conventional plugin-directory discovery for compatibility. Top-level hooks/ remains the portable hook location; .github/ represents repository-scoped GitHub content. Component kind filtering currently uses AllAgents’ conventional root directories, so custom marketplace component paths are not yet remapped.

When multiple plugins define skills with the same folder name, AllAgents automatically resolves naming conflicts:

Conflict Type Resolution Example
Same skill folder, different plugins {plugin}_{skill} plugin-a_coding-standards
Same skill folder AND plugin name {org}_{plugin}_{skill} (GitHub) acme_my-plugin_coding-standards
Same skill folder AND plugin name {hash}_{plugin}_{skill} (local) a1b2c3_my-plugin_coding-standards

Skills with unique folder names keep their original names unchanged.

Example:

workspace.yaml
plugins:
- ./plugin-a # has skills/coding-standards/
- ./plugin-b # has skills/coding-standards/
- ./plugin-c # has skills/testing/

After sync:

.claude/skills/
├── plugin-a_coding-standards/ # renamed (conflict)
├── plugin-b_coding-standards/ # renamed (conflict)
└── testing/ # unchanged (unique)

allagents plugin install asks where to save a new declaration and which clients should receive it. The review step shows the exact config path, clients, effective install methods, and targeting behavior before anything changes.

Terminal window
# Interactive
allagents plugin install code-review@claude-plugins-official
# Auto-register a marketplace from its GitHub URL, then install its plugin
allagents plugin install 'my-plugin@https://github.com/owner/marketplace'
# Prompt-free automation
allagents plugin install code-review@claude-plugins-official \
--scope project --client claude,codex --yes

--scope and --client bypass their respective choosers. The final confirmation defaults to Yes, so Enter accepts the displayed plan; --yes skips that prompt entirely. JSON, CI, and non-TTY runs never prompt and retain the command’s deterministic defaults when a target flag is omitted.

Clients normally inherit the selected scope’s top-level clients list. A different selection is stored on that plugin declaration as a clients override. On the first install into a new scope, the selected clients initialize the top-level list. Reinstalling an existing plugin preserves its other fields.

You can add a specific skill from a GitHub repo without installing the full plugin first:

Terminal window
# Add a skill by name, specifying the plugin source
allagents skill add reddit --from ReScienceLab/opc-skills
# Or pass a GitHub URL directly
allagents skill add https://github.com/owner/repo/tree/main/skills/my-skill

Source-backed skill installs use the same scope, client, review, and confirmation flow as plugin install. Pass --scope, --client, and --yes for prompt-free automation. Re-enabling a skill from an already installed plugin does not introduce a declaration, so it keeps the existing scope and client targeting.

See the CLI reference for all source formats.

You can disable specific skills from a plugin without uninstalling the entire plugin:

Terminal window
# List all skills with their status
allagents plugin skills list
# Disable a skill
allagents plugin skills remove brainstorming
# Re-enable a skill
allagents plugin skills add brainstorming

Disabled skills are stored in disabledSkills in workspace.yaml and are excluded from sync:

plugins:
- superpowers@official
disabledSkills:
- superpowers:brainstorming

When a skill exists in multiple plugins, use --plugin to specify which one:

Terminal window
allagents plugin skills remove coding-standards --plugin my-plugin

Plugins use the plugin@marketplace format:

Format Example
Well-known code-review@claude-plugins-official
owner/repo my-plugin@owner/repo
GitHub marketplace URL my-plugin@https://github.com/owner/repo