You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
8
8
9
9
## What are plugins?
10
10
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.
12
12
13
13
**Plugin components:**
14
14
15
15
| Component | Purpose | Invocation |
16
16
|-----------|---------|------------|
17
17
|**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`|
20
19
|**Agents**| Specialized subagent definitions | Called via Task tool |
21
20
|**MCP Servers**| External tool integrations | Available as tools when plugin is active |
22
21
@@ -29,44 +28,49 @@ Plugins are directories containing a manifest file (`.factory-plugin/plugin.json
29
28
30
29
Start with standalone configuration in `.factory/` for quick iteration, then convert to a plugin when you're ready to share.
31
30
32
-
## Installing plugins
31
+
## Managing plugins
33
32
34
-
### From a marketplace
33
+
Droid provides two ways to manage plugins:
35
34
36
-
Register a marketplace first, then install plugins from it:
35
+
### Interactive UI (recommended)
37
36
38
-
```bash
39
-
# Add a marketplace
40
-
/plugin marketplace add owner/repo
37
+
Use the `/plugins` slash command to open the plugin manager:
41
38
42
-
# Install a plugin
43
-
/plugin install plugin-name@marketplace-name
44
39
```
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
52
41
```
53
42
54
-
### Managing plugins
43
+
This opens a tabbed interface:
44
+
-**Browse** - View and install plugins from registered marketplaces
Plugin IDs use the format `pluginName@marketplaceName` (e.g., `security-guidance@claude-plugins-official`).
73
+
70
74
## Plugin structure
71
75
72
76
Every plugin follows this directory structure:
@@ -80,16 +84,14 @@ my-plugin/
80
84
├── skills/ # Agent skills (optional)
81
85
│ └── my-skill/
82
86
│ └── SKILL.md
83
-
├── agents/ # Subagent definitions (optional)
87
+
├── droids/ # Subagent definitions (optional)
84
88
│ └── 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)
88
90
└── README.md # Documentation
89
91
```
90
92
91
93
<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.
93
95
</Warning>
94
96
95
97
### Plugin manifest
@@ -109,7 +111,7 @@ The manifest at `.factory-plugin/plugin.json` defines your plugin's identity:
109
111
110
112
| Field | Purpose |
111
113
|-------|---------|
112
-
|`name`| Unique identifier and skill namespace. Commands are prefixed with this (e.g., `/my-plugin:command`). |
114
+
|`name`| Unique identifier for the plugin. |
113
115
|`description`| Shown in the plugin manager when browsing or installing. |
114
116
|`version`| Track releases using semantic versioning. |
115
117
|`author`| Optional. Helpful for attribution. |
@@ -120,63 +122,99 @@ When installing plugins, you choose an installation scope:
120
122
121
123
| Scope | Location | Visibility |
122
124
|-------|----------|------------|
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>
126
141
127
142
## Marketplaces
128
143
129
144
Marketplaces are catalogs of plugins that you can browse and install from.
130
145
131
146
### Adding marketplaces
132
147
148
+
Via UI: `/plugins` → Marketplaces tab → "Add new marketplace" → enter URL
0 commit comments