Plugins
Plugins are packages of AI tooling that can be shared across projects and clients.
Plugin Structure
Section titled “Plugin Structure”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.mdMarketplace Component Boundaries
Section titled “Marketplace Component Boundaries”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.
Duplicate Skill Handling
Section titled “Duplicate Skill Handling”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:
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)Choosing Install Scope and Clients
Section titled “Choosing Install Scope and Clients”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.
# Interactiveallagents plugin install code-review@claude-plugins-official
# Auto-register a marketplace from its GitHub URL, then install its pluginallagents plugin install 'my-plugin@https://github.com/owner/marketplace'
# Prompt-free automationallagents 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.
Adding Skills
Section titled “Adding Skills”You can add a specific skill from a GitHub repo without installing the full plugin first:
# Add a skill by name, specifying the plugin sourceallagents skill add reddit --from ReScienceLab/opc-skills
# Or pass a GitHub URL directlyallagents skill add https://github.com/owner/repo/tree/main/skills/my-skillSource-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.
Disabling Individual Skills
Section titled “Disabling Individual Skills”You can disable specific skills from a plugin without uninstalling the entire plugin:
# List all skills with their statusallagents plugin skills list
# Disable a skillallagents plugin skills remove brainstorming
# Re-enable a skillallagents plugin skills add brainstormingDisabled skills are stored in disabledSkills in workspace.yaml and are excluded from sync:
plugins: - superpowers@official
disabledSkills: - superpowers:brainstormingWhen a skill exists in multiple plugins, use --plugin to specify which one:
allagents plugin skills remove coding-standards --plugin my-pluginPlugin Spec Format
Section titled “Plugin Spec Format”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 |