@amsterdamdatalabs/enact-extensions 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +94 -20
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/install.d.ts +89 -0
- package/dist/install.d.ts.map +1 -1
- package/dist/install.js +219 -18
- package/dist/install.js.map +1 -1
- package/dist/validate/index.d.ts +21 -0
- package/dist/validate/index.d.ts.map +1 -1
- package/dist/validate/index.js +77 -0
- package/dist/validate/index.js.map +1 -1
- package/extensions/cmux/.agents/plugin.json +37 -0
- package/extensions/cmux/skills/cmux/SKILL.md +82 -0
- package/extensions/cmux/skills/cmux/agents/openai.yaml +4 -0
- package/extensions/cmux/skills/cmux/references/handles-and-identify.md +35 -0
- package/extensions/cmux/skills/cmux/references/panes-surfaces.md +37 -0
- package/extensions/cmux/skills/cmux/references/trigger-flash-and-health.md +23 -0
- package/extensions/cmux/skills/cmux/references/windows-workspaces.md +31 -0
- package/extensions/cmux/skills/cmux-vm-monitor/SKILL.md +122 -0
- package/extensions/cmux/skills/cmux-vm-monitor/agents/openai.yaml +4 -0
- package/extensions/cmux/skills/cmux-vm-monitor/references/cmux-commands.md +66 -0
- package/extensions/cmux/skills/cmux-vm-monitor/scripts/codex_vm_monitor.sh +45 -0
- package/extensions/cmux/skills/cmux-workspace/SKILL.md +93 -0
- package/extensions/dev-state/.agents/plugin.json +35 -0
- package/extensions/dev-state/skills/dev-state-plan-graduation/SKILL.md +194 -0
- package/extensions/dev-state/skills/dev-state-plan-graduation/agents/openai.yaml +4 -0
- package/extensions/dev-state/skills/dev-state-plan-graduation/references/reference.md +130 -0
- package/extensions/devops/.agents/plugin.json +36 -0
- package/extensions/devops/skills/azure-devops-cli/SKILL.md +431 -0
- package/extensions/devops/skills/azure-devops-cli/agents/openai.yaml +4 -0
- package/extensions/devops/skills/ci-pipeline-strategy/SKILL.md +217 -0
- package/extensions/devops/skills/ci-pipeline-strategy/agents/openai.yaml +4 -0
- package/{plugins/net-revenue-management/.codex-plugin → extensions/net-revenue-management/.agents}/plugin.json +10 -6
- package/extensions/plugin-dev/.agents/plugin.json +42 -0
- package/extensions/plugin-dev/.mcp.json +3 -0
- package/extensions/plugin-dev/agents/agent-creator.md +199 -0
- package/extensions/plugin-dev/agents/plugin-validator.md +91 -0
- package/extensions/plugin-dev/agents/skill-reviewer.md +212 -0
- package/extensions/plugin-dev/commands/_archive/create-marketplace.md +427 -0
- package/extensions/plugin-dev/commands/_archive/plugin-dev-guide.md +12 -0
- package/extensions/plugin-dev/commands/create-plugin.md +498 -0
- package/extensions/plugin-dev/commands/start.md +81 -0
- package/extensions/plugin-dev/hooks/hooks.json +3 -0
- package/extensions/plugin-dev/skills/agent-development/SKILL.md +641 -0
- package/extensions/plugin-dev/skills/agent-development/examples/agent-creation-prompt.md +250 -0
- package/extensions/plugin-dev/skills/agent-development/examples/complete-agent-examples.md +461 -0
- package/extensions/plugin-dev/skills/agent-development/references/advanced-agent-fields.md +246 -0
- package/extensions/plugin-dev/skills/agent-development/references/agent-creation-system-prompt.md +216 -0
- package/extensions/plugin-dev/skills/agent-development/references/permission-modes-rules.md +226 -0
- package/extensions/plugin-dev/skills/agent-development/references/system-prompt-design.md +464 -0
- package/extensions/plugin-dev/skills/agent-development/references/triggering-examples.md +474 -0
- package/extensions/plugin-dev/skills/agent-development/scripts/create-agent-skeleton.sh +176 -0
- package/extensions/plugin-dev/skills/agent-development/scripts/test-agent-trigger.sh +227 -0
- package/extensions/plugin-dev/skills/agent-development/scripts/validate-agent.sh +227 -0
- package/extensions/plugin-dev/skills/command-development/SKILL.md +763 -0
- package/extensions/plugin-dev/skills/command-development/examples/plugin-commands.md +612 -0
- package/extensions/plugin-dev/skills/command-development/examples/simple-commands.md +527 -0
- package/extensions/plugin-dev/skills/command-development/references/advanced-workflows.md +762 -0
- package/extensions/plugin-dev/skills/command-development/references/documentation-patterns.md +769 -0
- package/extensions/plugin-dev/skills/command-development/references/frontmatter-reference.md +508 -0
- package/extensions/plugin-dev/skills/command-development/references/interactive-commands.md +966 -0
- package/extensions/plugin-dev/skills/command-development/references/marketplace-considerations.md +943 -0
- package/extensions/plugin-dev/skills/command-development/references/plugin-features-reference.md +637 -0
- package/extensions/plugin-dev/skills/command-development/references/plugin-integration.md +191 -0
- package/extensions/plugin-dev/skills/command-development/references/skill-tool.md +447 -0
- package/extensions/plugin-dev/skills/command-development/references/testing-strategies.md +723 -0
- package/extensions/plugin-dev/skills/command-development/scripts/check-frontmatter.sh +234 -0
- package/extensions/plugin-dev/skills/command-development/scripts/validate-command.sh +160 -0
- package/extensions/plugin-dev/skills/hook-development/SKILL.md +861 -0
- package/extensions/plugin-dev/skills/hook-development/examples/load-context.sh +55 -0
- package/extensions/plugin-dev/skills/hook-development/examples/validate-bash.sh +57 -0
- package/extensions/plugin-dev/skills/hook-development/examples/validate-write.sh +48 -0
- package/extensions/plugin-dev/skills/hook-development/references/advanced.md +871 -0
- package/extensions/plugin-dev/skills/hook-development/references/hook-input-schemas.md +145 -0
- package/extensions/plugin-dev/skills/hook-development/references/migration.md +392 -0
- package/extensions/plugin-dev/skills/hook-development/references/patterns.md +430 -0
- package/extensions/plugin-dev/skills/hook-development/scripts/README.md +181 -0
- package/extensions/plugin-dev/skills/hook-development/scripts/hook-linter.sh +153 -0
- package/extensions/plugin-dev/skills/hook-development/scripts/test-hook.sh +276 -0
- package/extensions/plugin-dev/skills/hook-development/scripts/validate-hook-schema.sh +159 -0
- package/extensions/plugin-dev/skills/mcp-integration/SKILL.md +775 -0
- package/extensions/plugin-dev/skills/mcp-integration/examples/http-server.json +20 -0
- package/extensions/plugin-dev/skills/mcp-integration/examples/sse-server.json +19 -0
- package/extensions/plugin-dev/skills/mcp-integration/examples/stdio-server.json +38 -0
- package/extensions/plugin-dev/skills/mcp-integration/examples/ws-server.json +26 -0
- package/extensions/plugin-dev/skills/mcp-integration/references/authentication.md +601 -0
- package/extensions/plugin-dev/skills/mcp-integration/references/server-discovery.md +190 -0
- package/extensions/plugin-dev/skills/mcp-integration/references/server-types.md +572 -0
- package/extensions/plugin-dev/skills/mcp-integration/references/tool-usage.md +623 -0
- package/extensions/plugin-dev/skills/plugin-dev-guide/SKILL.md +222 -0
- package/extensions/plugin-dev/skills/plugin-structure/SKILL.md +705 -0
- package/extensions/plugin-dev/skills/plugin-structure/examples/advanced-plugin.md +774 -0
- package/extensions/plugin-dev/skills/plugin-structure/examples/minimal-plugin.md +83 -0
- package/extensions/plugin-dev/skills/plugin-structure/examples/standard-plugin.md +611 -0
- package/extensions/plugin-dev/skills/plugin-structure/references/advanced-topics.md +289 -0
- package/extensions/plugin-dev/skills/plugin-structure/references/component-patterns.md +592 -0
- package/extensions/plugin-dev/skills/plugin-structure/references/github-actions.md +233 -0
- package/extensions/plugin-dev/skills/plugin-structure/references/headless-ci-mode.md +193 -0
- package/extensions/plugin-dev/skills/plugin-structure/references/manifest-reference.md +625 -0
- package/extensions/plugin-dev/skills/plugin-structure/references/output-styles.md +116 -0
- package/extensions/plugin-dev/skills/skill-development/SKILL.md +564 -0
- package/extensions/plugin-dev/skills/skill-development/examples/complete-skill.md +465 -0
- package/extensions/plugin-dev/skills/skill-development/examples/frontmatter-templates.md +167 -0
- package/extensions/plugin-dev/skills/skill-development/examples/minimal-skill.md +111 -0
- package/extensions/plugin-dev/skills/skill-development/references/advanced-frontmatter.md +225 -0
- package/extensions/plugin-dev/skills/skill-development/references/commands-vs-skills.md +39 -0
- package/extensions/plugin-dev/skills/skill-development/references/skill-creation-workflow.md +379 -0
- package/extensions/plugin-dev/skills/skill-development/references/skill-creator-original.md +210 -0
- package/package.json +8 -11
- package/scripts/enact-extensions.mjs +751 -16
- package/scripts/hooks/session-start-drift-check.mjs +58 -0
- package/scripts/lib/build-index.mjs +50 -0
- package/scripts/lib/bundle-hash.mjs +137 -0
- package/scripts/lib/hooks.mjs +389 -0
- package/scripts/lib/ledger.mjs +162 -0
- package/scripts/lib/list-bundles.mjs +70 -0
- package/scripts/lib/outdated.mjs +144 -0
- package/scripts/lib/provision-mcp.mjs +369 -0
- package/scripts/lib/resolve-bundle.mjs +121 -0
- package/scripts/lib/run-install.mjs +321 -39
- package/scripts/lib/run-uninstall.mjs +220 -0
- package/scripts/lib/run-update.mjs +152 -0
- package/scripts/lib/run-validate.mjs +12 -18
- package/scripts/lib/serve.mjs +454 -0
- package/scripts/postinstall.mjs +63 -0
- package/scripts/setup-enact-context.sh +2 -2
- package/spec/index.json +59 -0
- package/web/assets/README.md +111 -0
- package/web/assets/logo-full.png +0 -0
- package/web/assets/logo-slim.png +0 -0
- package/web/assets/tokens/base.css +45 -0
- package/web/assets/tokens/colors.css +248 -0
- package/web/assets/tokens/effects.css +24 -0
- package/web/assets/tokens/fonts.css +8 -0
- package/web/assets/tokens/index.css +18 -0
- package/web/assets/tokens/spacing.css +50 -0
- package/web/index.html +1188 -0
- package/.agents/plugins/marketplace.json +0 -20
- package/catalog/enact-context.json +0 -9
- package/catalog/enact-factory.json +0 -7
- package/catalog/enact-operator.json +0 -7
- package/catalog/enact-wiki.json +0 -7
- package/catalog/net-revenue-management.json +0 -8
- package/scripts/rename-supervisor-to-operator.pl +0 -66
- package/scripts/sync-manifests.mjs +0 -23
- package/scripts/validate-catalog.mjs +0 -37
- package/scripts/validate-plugin.mjs +0 -10
- /package/{plugins → extensions}/net-revenue-management/.mcp.json +0 -0
- /package/{plugins → extensions}/net-revenue-management/skills/net-revenue-risks/SKILL.md +0 -0
- /package/{plugins → extensions}/net-revenue-management/skills/net-revenue-scenario/SKILL.md +0 -0
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
# Advanced Plugin Topics
|
|
2
|
+
|
|
3
|
+
This reference covers specialized topics that plugin developers may encounter in advanced use cases. Each section is self-contained.
|
|
4
|
+
|
|
5
|
+
## Keybindings Plugin Context
|
|
6
|
+
|
|
7
|
+
Claude Code's keybindings system (`~/.claude/keybindings.json`) includes a `plugin:` context with actions for plugin management:
|
|
8
|
+
|
|
9
|
+
| Action | Description |
|
|
10
|
+
| ---------------- | ----------------------- |
|
|
11
|
+
| `plugin:toggle` | Enable/disable a plugin |
|
|
12
|
+
| `plugin:install` | Install a plugin |
|
|
13
|
+
|
|
14
|
+
**Configuration:**
|
|
15
|
+
|
|
16
|
+
```json
|
|
17
|
+
{
|
|
18
|
+
"bindings": [
|
|
19
|
+
{
|
|
20
|
+
"context": "Plugin",
|
|
21
|
+
"bindings": {
|
|
22
|
+
"ctrl+p": "plugin:toggle"
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
]
|
|
26
|
+
}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
**Plugin developer relevance:** Low. This is user-facing configuration. Plugins cannot define custom keybindings. If your plugin has frequently used commands, document keyboard shortcuts users can configure.
|
|
30
|
+
|
|
31
|
+
## Status Line Integration
|
|
32
|
+
|
|
33
|
+
Plugins can provide status line scripts that display contextual information in the Claude Code footer.
|
|
34
|
+
|
|
35
|
+
### How It Works
|
|
36
|
+
|
|
37
|
+
Users configure a status line command in `.claude/settings.json`:
|
|
38
|
+
|
|
39
|
+
```json
|
|
40
|
+
{
|
|
41
|
+
"statusLine": {
|
|
42
|
+
"type": "command",
|
|
43
|
+
"command": "~/.claude/statusline.sh",
|
|
44
|
+
"padding": 0
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
The script receives JSON via stdin with session context (model, cost, tokens, workspace info) and outputs a single line of text (ANSI colors supported).
|
|
50
|
+
|
|
51
|
+
### Available Data
|
|
52
|
+
|
|
53
|
+
The JSON input includes:
|
|
54
|
+
|
|
55
|
+
- `model.display_name` — Current model name
|
|
56
|
+
- `cost.total_cost_usd` — Session cost
|
|
57
|
+
- `cost.total_lines_added` / `total_lines_removed` — Code changes
|
|
58
|
+
- `context_window.used_percentage` — Context usage
|
|
59
|
+
- `context_window.total_input_tokens` / `total_output_tokens` — Token counts
|
|
60
|
+
- `workspace.current_dir` / `project_dir` — Directory info
|
|
61
|
+
- `version` — Claude Code version
|
|
62
|
+
|
|
63
|
+
### Plugin Use Case
|
|
64
|
+
|
|
65
|
+
A plugin could bundle a status line script that displays plugin-specific information:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
#!/bin/bash
|
|
69
|
+
input=$(cat)
|
|
70
|
+
model=$(echo "$input" | jq -r '.model.display_name')
|
|
71
|
+
cost=$(echo "$input" | jq -r '.cost.total_cost_usd')
|
|
72
|
+
echo "[$model] \$${cost}"
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
**Note:** Users must manually configure their status line to use the plugin's script. There is no auto-configuration mechanism.
|
|
76
|
+
|
|
77
|
+
## Claude Code as MCP Server
|
|
78
|
+
|
|
79
|
+
Claude Code can itself act as an MCP server, exposing its capabilities to other MCP clients:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
claude mcp serve
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
**Plugin developer relevance:** Edge case. This is useful when building toolchains where one Claude Code instance needs to communicate with another, or when integrating Claude Code into a larger MCP-based system. Plugin MCP servers are unaffected by this feature.
|
|
86
|
+
|
|
87
|
+
## MCP `@` Resource Reference Syntax
|
|
88
|
+
|
|
89
|
+
Users can reference MCP resources inline using the `@` syntax:
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
@server-name:protocol://resource/path
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Common Patterns
|
|
96
|
+
|
|
97
|
+
| Syntax | Example |
|
|
98
|
+
| ------------- | ------------------------------------------- |
|
|
99
|
+
| File resource | `@filesystem:file:///path/to/file.txt` |
|
|
100
|
+
| Database | `@database:postgres://localhost/mydb/users` |
|
|
101
|
+
| GitHub | `@github:https://github.com/user/repo` |
|
|
102
|
+
| Custom | `@myserver:custom://resource/id` |
|
|
103
|
+
|
|
104
|
+
### Discovery
|
|
105
|
+
|
|
106
|
+
Type `@` in Claude Code to see available resources from connected MCP servers.
|
|
107
|
+
|
|
108
|
+
### Plugin Design Note
|
|
109
|
+
|
|
110
|
+
If your plugin's MCP server exposes resources, document the available resource URIs and protocols in your README. Users can then reference them with `@plugin-server:protocol://path`.
|
|
111
|
+
|
|
112
|
+
## Hook Agent Type Details
|
|
113
|
+
|
|
114
|
+
The `agent` hook type (covered briefly in the hook-development SKILL.md) spawns a full subagent for complex verification workflows.
|
|
115
|
+
|
|
116
|
+
For comprehensive coverage including configuration, behavior, supported events, when to use agent hooks, and detailed examples, see the hook-development skill's `references/advanced.md` file.
|
|
117
|
+
|
|
118
|
+
**Quick summary:** Agent hooks spawn a subagent with full tool access (Read, Bash, Grep, etc.) for multi-step verification. They're significantly slower (30-120 seconds) but more capable than command or prompt hooks. Only supported on `Stop` and `SubagentStop` events.
|
|
119
|
+
|
|
120
|
+
## Auto-Update Behavior
|
|
121
|
+
|
|
122
|
+
### Default Behavior
|
|
123
|
+
|
|
124
|
+
- **Official marketplaces:** Auto-update enabled by default
|
|
125
|
+
- **Third-party/local marketplaces:** Auto-update disabled by default
|
|
126
|
+
|
|
127
|
+
### Environment Variables
|
|
128
|
+
|
|
129
|
+
| Variable | Effect |
|
|
130
|
+
| ------------------------------- | -------------------------------------- |
|
|
131
|
+
| `DISABLE_AUTOUPDATER=true` | Disable all auto-updates |
|
|
132
|
+
| `FORCE_AUTOUPDATE_PLUGINS=true` | Force auto-update for all marketplaces |
|
|
133
|
+
|
|
134
|
+
### Plugin Versioning Implications
|
|
135
|
+
|
|
136
|
+
- Use semantic versioning (`MAJOR.MINOR.PATCH`)
|
|
137
|
+
- Breaking changes should bump MAJOR version
|
|
138
|
+
- Users on auto-update receive MINOR/PATCH changes automatically
|
|
139
|
+
- Document breaking changes in CHANGELOG
|
|
140
|
+
- Consider pre-release versions (`2.0.0-beta.1`) for testing
|
|
141
|
+
|
|
142
|
+
## Plugin Caching
|
|
143
|
+
|
|
144
|
+
### How Caching Works
|
|
145
|
+
|
|
146
|
+
When a plugin is installed, Claude Code copies plugin content to a cache directory. Plugins run from the cache, not from their source location.
|
|
147
|
+
|
|
148
|
+
### Key Implications
|
|
149
|
+
|
|
150
|
+
1. **No `../` paths:** Plugins cannot reference files outside their directory via `../` — the cache copy doesn't include parent directories
|
|
151
|
+
2. **`${CLAUDE_PLUGIN_ROOT}` resolves to cache:** The variable points to the cached copy, not the source
|
|
152
|
+
3. **Symlinks are followed:** Symlinks within the plugin directory are resolved during the copy, so the target content is included
|
|
153
|
+
|
|
154
|
+
### Workarounds for External Files
|
|
155
|
+
|
|
156
|
+
If your plugin needs content from outside its directory:
|
|
157
|
+
|
|
158
|
+
- **Symlinks:** Create symlinks to external files within the plugin directory (followed during cache copy)
|
|
159
|
+
- **Restructure:** Move shared content into the plugin directory
|
|
160
|
+
- **Environment variables:** Reference external paths via environment variables, not file paths
|
|
161
|
+
- **MCP servers:** Use MCP tools to access external resources at runtime
|
|
162
|
+
|
|
163
|
+
### Cache Management
|
|
164
|
+
|
|
165
|
+
Users can clear the plugin cache:
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
rm -rf ~/.claude/plugins/cache
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
This forces re-caching on next session start.
|
|
172
|
+
|
|
173
|
+
## Plugin CLI Management Commands
|
|
174
|
+
|
|
175
|
+
Users manage plugins through CLI commands (or the `/plugin` interactive interface):
|
|
176
|
+
|
|
177
|
+
### Installation
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
# Install from marketplace
|
|
181
|
+
claude plugin install plugin-name@marketplace-name
|
|
182
|
+
|
|
183
|
+
# Installation scopes
|
|
184
|
+
claude plugin install plugin-name@marketplace --scope user # Personal (default)
|
|
185
|
+
claude plugin install plugin-name@marketplace --scope project # Team (in .claude/settings.json)
|
|
186
|
+
claude plugin install plugin-name@marketplace --scope local # Personal project (gitignored)
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
### Management
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
# List installed plugins
|
|
193
|
+
claude plugin list
|
|
194
|
+
|
|
195
|
+
# Enable/disable without uninstalling
|
|
196
|
+
claude plugin enable plugin-name@marketplace
|
|
197
|
+
claude plugin disable plugin-name@marketplace
|
|
198
|
+
|
|
199
|
+
# Update to latest version
|
|
200
|
+
claude plugin update plugin-name@marketplace
|
|
201
|
+
|
|
202
|
+
# Remove completely
|
|
203
|
+
claude plugin uninstall plugin-name@marketplace
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
### Marketplace Management
|
|
207
|
+
|
|
208
|
+
```bash
|
|
209
|
+
# Add a marketplace
|
|
210
|
+
claude plugin marketplace add owner/repo # GitHub
|
|
211
|
+
claude plugin marketplace add https://gitlab.com/org/repo.git # Git URL
|
|
212
|
+
claude plugin marketplace add ./local-path # Local
|
|
213
|
+
|
|
214
|
+
# List/update/remove
|
|
215
|
+
claude plugin marketplace list
|
|
216
|
+
claude plugin marketplace update marketplace-name
|
|
217
|
+
claude plugin marketplace remove marketplace-name
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
### Plugin Developer Note
|
|
221
|
+
|
|
222
|
+
Document the exact install command in your README:
|
|
223
|
+
|
|
224
|
+
```markdown
|
|
225
|
+
## Installation
|
|
226
|
+
|
|
227
|
+
\`\`\`bash
|
|
228
|
+
claude plugin install my-plugin@my-marketplace
|
|
229
|
+
\`\`\`
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
## Installation Scopes
|
|
233
|
+
|
|
234
|
+
Plugins can be installed at different scopes, affecting who has access:
|
|
235
|
+
|
|
236
|
+
| Scope | Location | Shared | Gitignored | Use Case |
|
|
237
|
+
| --------- | ----------------------------- | --------- | ---------- | ------------------------ |
|
|
238
|
+
| `user` | `~/.claude/settings.json` | No | N/A | Personal tools (default) |
|
|
239
|
+
| `project` | `.claude/settings.json` | Yes (git) | No | Team standards |
|
|
240
|
+
| `local` | `.claude/settings.local.json` | No | Yes | Personal project tools |
|
|
241
|
+
| `managed` | System paths | Yes (MDM) | N/A | Enterprise enforcement |
|
|
242
|
+
|
|
243
|
+
### Scope Precedence
|
|
244
|
+
|
|
245
|
+
When the same plugin is configured at multiple scopes, local overrides project, which overrides user.
|
|
246
|
+
|
|
247
|
+
### Team Plugin Distribution
|
|
248
|
+
|
|
249
|
+
For team plugins, install at `project` scope and commit `.claude/settings.json`:
|
|
250
|
+
|
|
251
|
+
```json
|
|
252
|
+
{
|
|
253
|
+
"enabledPlugins": {
|
|
254
|
+
"my-plugin@my-marketplace": true
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
Team members get the plugin when they clone the repo.
|
|
260
|
+
|
|
261
|
+
### Enterprise Plugin Control
|
|
262
|
+
|
|
263
|
+
Organizations can use managed settings to:
|
|
264
|
+
|
|
265
|
+
- **Allowlist marketplaces:** `strictKnownMarketplaces` restricts which marketplaces users can add
|
|
266
|
+
- **Force plugins:** Pre-configure required plugins via managed settings
|
|
267
|
+
- **Block plugins:** Prevent specific plugins from being installed
|
|
268
|
+
|
|
269
|
+
### Enterprise Hook and Permission Control
|
|
270
|
+
|
|
271
|
+
Managed settings can also restrict hook and permission rule sources:
|
|
272
|
+
|
|
273
|
+
| Setting | Effect |
|
|
274
|
+
| --------------------------------- | --------------------------------------------------------------- |
|
|
275
|
+
| `allowManagedPermissionRulesOnly` | Only managed permission rules apply; user/project rules ignored |
|
|
276
|
+
| `allowManagedHooksOnly` | Only managed hooks execute; plugin/user hooks disabled |
|
|
277
|
+
|
|
278
|
+
**Plugin developer implications:**
|
|
279
|
+
|
|
280
|
+
- Test plugins with these settings enabled to verify graceful degradation
|
|
281
|
+
- Document which hooks are critical for plugin functionality
|
|
282
|
+
- Provide fallback behavior when hooks are disabled by enterprise policy
|
|
283
|
+
|
|
284
|
+
### Plugin Developer Implications
|
|
285
|
+
|
|
286
|
+
- Document recommended scope in README
|
|
287
|
+
- Test plugin at both user and project scopes
|
|
288
|
+
- For team plugins, provide `.claude/settings.json` snippets
|
|
289
|
+
- Note that managed settings can override plugin availability
|