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 TypeResolutionExample
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)

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

This installs the plugin and enables only the specified skill. 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:

FormatExample
Well-knowncode-review@claude-plugins-official
owner/repomy-plugin@owner/repo