Skip to content

Commit f1d2d56

Browse files
fix(docs): correct plugin documentation to match implementation
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
1 parent 1970f45 commit f1d2d56

File tree

3 files changed

+275
-225
lines changed

3 files changed

+275
-225
lines changed

docs/cli/configuration/plugins.mdx

Lines changed: 104 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,21 @@
11
---
22
title: Plugins
3-
description: Extend Droid with shareable packages of skills, commands, hooks, and tools.
4-
keywords: ['plugins', 'extensions', 'marketplace', 'skills', 'commands', 'hooks', 'mcp', 'shareable']
3+
description: Extend Droid with shareable packages of skills, commands, and tools.
4+
keywords: ['plugins', 'extensions', 'marketplace', 'skills', 'commands', 'mcp', 'shareable']
55
---
66

7-
Plugins let you extend Droid with custom functionality that can be shared across projects and teams. A plugin bundles skills, slash commands, hooks, agents, and MCP servers into a single, distributable package.
7+
Plugins let you extend Droid with custom functionality that can be shared across projects and teams. A plugin bundles skills, slash commands, agents, and MCP servers into a single, distributable package.
88

99
## What are plugins?
1010

11-
Plugins are directories containing a manifest file (`.factory-plugin/plugin.json`) and optional components like skills, commands, hooks, and agents. Unlike standalone configuration in `.factory/`, plugins are designed for sharing and distribution.
11+
Plugins are directories containing a manifest file (`.factory-plugin/plugin.json`) and optional components like skills, commands, and agents. Unlike standalone configuration in `.factory/`, plugins are designed for sharing and distribution.
1212

1313
**Plugin components:**
1414

1515
| Component | Purpose | Invocation |
1616
|-----------|---------|------------|
1717
| **Skills** | Reusable capabilities with instructions and tools | Model-invoked automatically based on task |
18-
| **Commands** | Slash commands for specific workflows | User-invoked via `/plugin-name:command` |
19-
| **Hooks** | Event handlers for automation | Triggered by events (PreToolUse, PostToolUse, etc.) |
18+
| **Commands** | Slash commands for specific workflows | User-invoked via `/command-name` |
2019
| **Agents** | Specialized subagent definitions | Called via Task tool |
2120
| **MCP Servers** | External tool integrations | Available as tools when plugin is active |
2221

@@ -29,44 +28,49 @@ Plugins are directories containing a manifest file (`.factory-plugin/plugin.json
2928

3029
Start with standalone configuration in `.factory/` for quick iteration, then convert to a plugin when you're ready to share.
3130

32-
## Installing plugins
31+
## Managing plugins
3332

34-
### From a marketplace
33+
Droid provides two ways to manage plugins:
3534

36-
Register a marketplace first, then install plugins from it:
35+
### Interactive UI (recommended)
3736

38-
```bash
39-
# Add a marketplace
40-
/plugin marketplace add owner/repo
37+
Use the `/plugins` slash command to open the plugin manager:
4138

42-
# Install a plugin
43-
/plugin install plugin-name@marketplace-name
4439
```
45-
46-
### From a local directory
47-
48-
Test plugins during development with the `--plugin-dir` flag:
49-
50-
```bash
51-
droid --plugin-dir ./my-plugin
40+
/plugins
5241
```
5342

54-
### Managing plugins
43+
This opens a tabbed interface:
44+
- **Browse** - View and install plugins from registered marketplaces
45+
- **Installed** - Manage installed plugins (view info, update, uninstall)
46+
- **Marketplaces** - Add, update, or remove marketplaces
5547

56-
```bash
57-
# List installed plugins
58-
/plugin
48+
**Navigation:**
49+
- Left/Right arrows: Switch between tabs
50+
- Up/Down arrows: Navigate within a tab
51+
- Enter: Select/confirm
52+
- Escape: Go back or close
5953

60-
# Disable a plugin
61-
/plugin disable plugin-name@marketplace-name
54+
### CLI commands (for scripting)
6255

63-
# Re-enable a plugin
64-
/plugin enable plugin-name@marketplace-name
56+
For automation, use CLI commands from your shell (not as slash commands):
6557

66-
# Uninstall a plugin
67-
/plugin uninstall plugin-name@marketplace-name
58+
```bash
59+
# Marketplace management
60+
droid plugin marketplace add <url>
61+
droid plugin marketplace remove <name>
62+
droid plugin marketplace list
63+
droid plugin marketplace update [name]
64+
65+
# Plugin management
66+
droid plugin install <plugin@marketplace> [--scope user|project]
67+
droid plugin uninstall <plugin@marketplace> [--scope user|project]
68+
droid plugin update [plugin@marketplace] [--scope user|project]
69+
droid plugin list [--scope user|project]
6870
```
6971

72+
Plugin IDs use the format `pluginName@marketplaceName` (e.g., `security-guidance@claude-plugins-official`).
73+
7074
## Plugin structure
7175

7276
Every plugin follows this directory structure:
@@ -80,16 +84,14 @@ my-plugin/
8084
├── skills/ # Agent skills (optional)
8185
│ └── my-skill/
8286
│ └── SKILL.md
83-
├── agents/ # Subagent definitions (optional)
87+
├── droids/ # Subagent definitions (optional)
8488
│ └── my-agent.md
85-
├── hooks/ # Event handlers (optional)
86-
│ └── hooks.json
87-
├── .mcp.json # MCP server configs (optional)
89+
├── mcp.json # MCP server configs (optional)
8890
└── README.md # Documentation
8991
```
9092

9193
<Warning>
92-
Don't put `commands/`, `skills/`, `agents/`, or `hooks/` inside the `.factory-plugin/` directory. Only `plugin.json` goes inside `.factory-plugin/`. All other directories must be at the plugin root level.
94+
Don't put `commands/`, `skills/`, or `droids/` inside the `.factory-plugin/` directory. Only `plugin.json` goes inside `.factory-plugin/`. All other directories must be at the plugin root level.
9395
</Warning>
9496

9597
### Plugin manifest
@@ -109,7 +111,7 @@ The manifest at `.factory-plugin/plugin.json` defines your plugin's identity:
109111

110112
| Field | Purpose |
111113
|-------|---------|
112-
| `name` | Unique identifier and skill namespace. Commands are prefixed with this (e.g., `/my-plugin:command`). |
114+
| `name` | Unique identifier for the plugin. |
113115
| `description` | Shown in the plugin manager when browsing or installing. |
114116
| `version` | Track releases using semantic versioning. |
115117
| `author` | Optional. Helpful for attribution. |
@@ -120,63 +122,99 @@ When installing plugins, you choose an installation scope:
120122

121123
| Scope | Location | Visibility |
122124
|-------|----------|------------|
123-
| **User** | `~/.factory/plugins/` | Available across all your projects |
124-
| **Project** | `.factory/settings.json` | Shared with teammates via git |
125-
| **Local** | Local config only | Your machine, this project only |
125+
| **User** | `~/.factory/` | Available across all your projects |
126+
| **Project** | `<project>/.factory/` | Shared with teammates via git |
127+
128+
<Note>
129+
**Org scope**: Plugins enabled via organization managed settings are automatically installed with `org` scope. You cannot manually set org scope.
130+
</Note>
131+
132+
A plugin can only exist at one scope. To change scope, uninstall first and reinstall.
133+
134+
## Version tracking
135+
136+
Plugins are versioned by Git commit hash, not semantic version. When you update a plugin, Droid fetches the latest commit from the marketplace repository.
137+
138+
<Note>
139+
Version pinning is not supported. Updates always fetch the latest version from the marketplace.
140+
</Note>
126141

127142
## Marketplaces
128143

129144
Marketplaces are catalogs of plugins that you can browse and install from.
130145

131146
### Adding marketplaces
132147

148+
Via UI: `/plugins` → Marketplaces tab → "Add new marketplace" → enter URL
149+
150+
Via CLI:
151+
133152
```bash
134153
# From GitHub
135-
/plugin marketplace add owner/repo
154+
droid plugin marketplace add https://github.com/owner/repo
136155

137156
# From other Git hosts
138-
/plugin marketplace add https://gitlab.com/company/plugins.git
157+
droid plugin marketplace add https://gitlab.com/company/plugins.git
139158

140-
# From local path
141-
/plugin marketplace add ./my-marketplace
159+
# From local path (for development)
160+
droid plugin marketplace add /path/to/local/marketplace
142161
```
143162

144163
### Managing marketplaces
145164

146-
```bash
147-
# List all marketplaces
148-
/plugin marketplace list
165+
Via UI: `/plugins` → Marketplaces tab → select marketplace → choose action (Update, Disable auto-update, Delete)
149166

150-
# Update marketplace listings
151-
/plugin marketplace update marketplace-name
167+
Via CLI:
152168

153-
# Remove a marketplace
154-
/plugin marketplace remove marketplace-name
169+
```bash
170+
droid plugin marketplace list
171+
droid plugin marketplace update [marketplace-name]
172+
droid plugin marketplace remove <marketplace-name>
155173
```
156174

175+
<Note>
176+
Removing a marketplace does not uninstall plugins from that marketplace. Installed plugins remain functional from cache.
177+
</Note>
178+
157179
### Team marketplaces
158180

159-
Configure automatic marketplace installation for your team by adding to `.factory/settings.json`:
181+
Configure automatic marketplace and plugin installation by adding to `.factory/settings.json`:
160182

161183
```json
162184
{
163-
"extraKnownMarketplaces": [
164-
"your-org/internal-plugins"
165-
],
166-
"enabledPlugins": [
167-
"code-standards@your-org-internal-plugins"
168-
]
185+
"extraKnownMarketplaces": {
186+
"your-org-internal-plugins": {
187+
"source": {
188+
"source": "github",
189+
"repo": "your-org/internal-plugins"
190+
}
191+
}
192+
},
193+
"enabledPlugins": {
194+
"code-standards@your-org-internal-plugins": true
195+
}
169196
}
170197
```
171198

199+
When Droid starts, it automatically:
200+
1. Registers any marketplaces from `extraKnownMarketplaces` that aren't already registered
201+
2. Installs any plugins from `enabledPlugins` that aren't already installed
202+
203+
The installation scope depends on where the setting is defined:
204+
- Org-managed settings → `org` scope
205+
- User settings → `user` scope
206+
- Project settings → `project` scope
207+
172208
## Discovering plugins
173209

174210
### Official Factory plugins
175211

176-
Factory maintains an official plugin marketplace at `Factory-AI/factory-plugins` with curated plugins:
212+
Factory maintains an official plugin marketplace at `Factory-AI/factory-plugins` with curated plugins.
213+
214+
Add via `/plugins` UI or CLI:
177215

178216
```bash
179-
/plugin marketplace add Factory-AI/factory-plugins
217+
droid plugin marketplace add https://github.com/Factory-AI/factory-plugins
180218
```
181219

182220
**Available plugins:**
@@ -186,11 +224,11 @@ Factory maintains an official plugin marketplace at `Factory-AI/factory-plugins`
186224
| **droid-evolved** | Skills for continuous learning: session navigation, human writing, skill creation, visual design, frontend design, browser automation |
187225
| **security-engineer** | Security review, threat modeling, commit scanning, and vulnerability validation |
188226

189-
Install with:
227+
Install via `/plugins` UI (Browse tab) or CLI:
190228

191229
```bash
192-
/plugin install droid-evolved@factory-plugins
193-
/plugin install security-engineer@factory-plugins
230+
droid plugin install droid-evolved@factory-plugins
231+
droid plugin install security-engineer@factory-plugins
194232
```
195233

196234
### Community plugins
@@ -215,15 +253,15 @@ Droid is compatible with plugins built for Claude Code. If you find a Claude Cod
215253

216254
<CardGroup cols={2}>
217255
<Card title="Building plugins" href="/guides/building/building-plugins" icon="hammer">
218-
Learn how to create your own plugins with skills, commands, and hooks.
256+
Learn how to create your own plugins with skills and commands.
219257
</Card>
220258
<Card title="Skills" href="/cli/configuration/skills" icon="wand-magic-sparkles">
221259
Understand how skills work and how to create them.
222260
</Card>
223261
<Card title="Custom commands" href="/cli/configuration/custom-slash-commands" icon="terminal">
224262
Create user-invoked slash commands.
225263
</Card>
226-
<Card title="Hooks" href="/cli/configuration/hooks-guide" icon="bolt">
227-
Automate workflows with event-driven hooks.
264+
<Card title="Custom Droids" href="/cli/configuration/custom-droids" icon="robot">
265+
Create specialized subagents for your plugins.
228266
</Card>
229267
</CardGroup>

0 commit comments

Comments
 (0)