caruso 0.5.4

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.
@@ -0,0 +1,376 @@
1
+ # Plugins reference
2
+
3
+ > Complete technical reference for Claude Code plugin system, including schemas, CLI commands, and component specifications.
4
+
5
+ <Tip>
6
+ For hands-on tutorials and practical usage, see [Plugins](/en/plugins). For plugin management across teams and communities, see [Plugin marketplaces](/en/plugin-marketplaces).
7
+ </Tip>
8
+
9
+ This reference provides complete technical specifications for the Claude Code plugin system, including component schemas, CLI commands, and development tools.
10
+
11
+ ## Plugin components reference
12
+
13
+ This section documents the five types of components that plugins can provide.
14
+
15
+ ### Commands
16
+
17
+ Plugins add custom slash commands that integrate seamlessly with Claude Code's command system.
18
+
19
+ **Location**: `commands/` directory in plugin root
20
+
21
+ **File format**: Markdown files with frontmatter
22
+
23
+ For complete details on plugin command structure, invocation patterns, and features, see [Plugin commands](/en/slash-commands#plugin-commands).
24
+
25
+ ### Agents
26
+
27
+ Plugins can provide specialized subagents for specific tasks that Claude can invoke automatically when appropriate.
28
+
29
+ **Location**: `agents/` directory in plugin root
30
+
31
+ **File format**: Markdown files describing agent capabilities
32
+
33
+ **Agent structure**:
34
+
35
+ ```markdown theme={null}
36
+ ---
37
+ description: What this agent specializes in
38
+ capabilities: ["task1", "task2", "task3"]
39
+ ---
40
+
41
+ # Agent Name
42
+
43
+ Detailed description of the agent's role, expertise, and when Claude should invoke it.
44
+
45
+ ## Capabilities
46
+ - Specific task the agent excels at
47
+ - Another specialized capability
48
+ - When to use this agent vs others
49
+
50
+ ## Context and examples
51
+ Provide examples of when this agent should be used and what kinds of problems it solves.
52
+ ```
53
+
54
+ **Integration points**:
55
+
56
+ * Agents appear in the `/agents` interface
57
+ * Claude can invoke agents automatically based on task context
58
+ * Agents can be invoked manually by users
59
+ * Plugin agents work alongside built-in Claude agents
60
+
61
+ ### Skills
62
+
63
+ Plugins can provide Agent Skills that extend Claude's capabilities. Skills are model-invoked—Claude autonomously decides when to use them based on the task context.
64
+
65
+ **Location**: `skills/` directory in plugin root
66
+
67
+ **File format**: Directories containing `SKILL.md` files with frontmatter
68
+
69
+ **Skill structure**:
70
+
71
+ ```
72
+ skills/
73
+ ├── pdf-processor/
74
+ │ ├── SKILL.md
75
+ │ ├── reference.md (optional)
76
+ │ └── scripts/ (optional)
77
+ └── code-reviewer/
78
+ └── SKILL.md
79
+ ```
80
+
81
+ **Integration behavior**:
82
+
83
+ * Plugin Skills are automatically discovered when the plugin is installed
84
+ * Claude autonomously invokes Skills based on matching task context
85
+ * Skills can include supporting files alongside SKILL.md
86
+
87
+ For SKILL.md format and complete Skill authoring guidance, see:
88
+
89
+ * [Use Skills in Claude Code](/en/skills)
90
+ * [Agent Skills overview](https://docs.claude.com/en/docs/agents-and-tools/agent-skills/overview#skill-structure)
91
+
92
+ ### Hooks
93
+
94
+ Plugins can provide event handlers that respond to Claude Code events automatically.
95
+
96
+ **Location**: `hooks/hooks.json` in plugin root, or inline in plugin.json
97
+
98
+ **Format**: JSON configuration with event matchers and actions
99
+
100
+ **Hook configuration**:
101
+
102
+ ```json theme={null}
103
+ {
104
+ "hooks": {
105
+ "PostToolUse": [
106
+ {
107
+ "matcher": "Write|Edit",
108
+ "hooks": [
109
+ {
110
+ "type": "command",
111
+ "command": "${CLAUDE_PLUGIN_ROOT}/scripts/format-code.sh"
112
+ }
113
+ ]
114
+ }
115
+ ]
116
+ }
117
+ }
118
+ ```
119
+
120
+ **Available events**:
121
+
122
+ * `PreToolUse`: Before Claude uses any tool
123
+ * `PostToolUse`: After Claude uses any tool
124
+ * `UserPromptSubmit`: When user submits a prompt
125
+ * `Notification`: When Claude Code sends notifications
126
+ * `Stop`: When Claude attempts to stop
127
+ * `SubagentStop`: When a subagent attempts to stop
128
+ * `SessionStart`: At the beginning of sessions
129
+ * `SessionEnd`: At the end of sessions
130
+ * `PreCompact`: Before conversation history is compacted
131
+
132
+ **Hook types**:
133
+
134
+ * `command`: Execute shell commands or scripts
135
+ * `validation`: Validate file contents or project state
136
+ * `notification`: Send alerts or status updates
137
+
138
+ ### MCP servers
139
+
140
+ Plugins can bundle Model Context Protocol (MCP) servers to connect Claude Code with external tools and services.
141
+
142
+ **Location**: `.mcp.json` in plugin root, or inline in plugin.json
143
+
144
+ **Format**: Standard MCP server configuration
145
+
146
+ **MCP server configuration**:
147
+
148
+ ```json theme={null}
149
+ {
150
+ "mcpServers": {
151
+ "plugin-database": {
152
+ "command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server",
153
+ "args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"],
154
+ "env": {
155
+ "DB_PATH": "${CLAUDE_PLUGIN_ROOT}/data"
156
+ }
157
+ },
158
+ "plugin-api-client": {
159
+ "command": "npx",
160
+ "args": ["@company/mcp-server", "--plugin-mode"],
161
+ "cwd": "${CLAUDE_PLUGIN_ROOT}"
162
+ }
163
+ }
164
+ }
165
+ ```
166
+
167
+ **Integration behavior**:
168
+
169
+ * Plugin MCP servers start automatically when the plugin is enabled
170
+ * Servers appear as standard MCP tools in Claude's toolkit
171
+ * Server capabilities integrate seamlessly with Claude's existing tools
172
+ * Plugin servers can be configured independently of user MCP servers
173
+
174
+ ***
175
+
176
+ ## Plugin manifest schema
177
+
178
+ The `plugin.json` file defines your plugin's metadata and configuration. This section documents all supported fields and options.
179
+
180
+ ### Complete schema
181
+
182
+ ```json theme={null}
183
+ {
184
+ "name": "plugin-name",
185
+ "version": "1.2.0",
186
+ "description": "Brief plugin description",
187
+ "author": {
188
+ "name": "Author Name",
189
+ "email": "author@example.com",
190
+ "url": "https://github.com/author"
191
+ },
192
+ "homepage": "https://docs.example.com/plugin",
193
+ "repository": "https://github.com/author/plugin",
194
+ "license": "MIT",
195
+ "keywords": ["keyword1", "keyword2"],
196
+ "commands": ["./custom/commands/special.md"],
197
+ "agents": "./custom/agents/",
198
+ "hooks": "./config/hooks.json",
199
+ "mcpServers": "./mcp-config.json"
200
+ }
201
+ ```
202
+
203
+ ### Required fields
204
+
205
+ | Field | Type | Description | Example |
206
+ | :----- | :----- | :---------------------------------------- | :------------------- |
207
+ | `name` | string | Unique identifier (kebab-case, no spaces) | `"deployment-tools"` |
208
+
209
+ ### Metadata fields
210
+
211
+ | Field | Type | Description | Example |
212
+ | :------------ | :----- | :---------------------------------- | :------------------------------------------------- |
213
+ | `version` | string | Semantic version | `"2.1.0"` |
214
+ | `description` | string | Brief explanation of plugin purpose | `"Deployment automation tools"` |
215
+ | `author` | object | Author information | `{"name": "Dev Team", "email": "dev@company.com"}` |
216
+ | `homepage` | string | Documentation URL | `"https://docs.example.com"` |
217
+ | `repository` | string | Source code URL | `"https://github.com/user/plugin"` |
218
+ | `license` | string | License identifier | `"MIT"`, `"Apache-2.0"` |
219
+ | `keywords` | array | Discovery tags | `["deployment", "ci-cd"]` |
220
+
221
+ ### Component path fields
222
+
223
+ | Field | Type | Description | Example |
224
+ | :----------- | :------------- | :----------------------------------- | :------------------------------------- |
225
+ | `commands` | string\|array | Additional command files/directories | `"./custom/cmd.md"` or `["./cmd1.md"]` |
226
+ | `agents` | string\|array | Additional agent files | `"./custom/agents/"` |
227
+ | `hooks` | string\|object | Hook config path or inline config | `"./hooks.json"` |
228
+ | `mcpServers` | string\|object | MCP config path or inline config | `"./mcp.json"` |
229
+
230
+ ### Path behavior rules
231
+
232
+ **Important**: Custom paths supplement default directories - they don't replace them.
233
+
234
+ * If `commands/` exists, it's loaded in addition to custom command paths
235
+ * All paths must be relative to plugin root and start with `./`
236
+ * Commands from custom paths use the same naming and namespacing rules
237
+ * Multiple paths can be specified as arrays for flexibility
238
+
239
+ **Path examples**:
240
+
241
+ ```json theme={null}
242
+ {
243
+ "commands": [
244
+ "./specialized/deploy.md",
245
+ "./utilities/batch-process.md"
246
+ ],
247
+ "agents": [
248
+ "./custom-agents/reviewer.md",
249
+ "./custom-agents/tester.md"
250
+ ]
251
+ }
252
+ ```
253
+
254
+ ### Environment variables
255
+
256
+ **`${CLAUDE_PLUGIN_ROOT}`**: Contains the absolute path to your plugin directory. Use this in hooks, MCP servers, and scripts to ensure correct paths regardless of installation location.
257
+
258
+ ```json theme={null}
259
+ {
260
+ "hooks": {
261
+ "PostToolUse": [
262
+ {
263
+ "hooks": [
264
+ {
265
+ "type": "command",
266
+ "command": "${CLAUDE_PLUGIN_ROOT}/scripts/process.sh"
267
+ }
268
+ ]
269
+ }
270
+ ]
271
+ }
272
+ }
273
+ ```
274
+
275
+ ***
276
+
277
+ ## Plugin directory structure
278
+
279
+ ### Standard plugin layout
280
+
281
+ A complete plugin follows this structure:
282
+
283
+ ```
284
+ enterprise-plugin/
285
+ ├── .claude-plugin/ # Metadata directory
286
+ │ └── plugin.json # Required: plugin manifest
287
+ ├── commands/ # Default command location
288
+ │ ├── status.md
289
+ │ └── logs.md
290
+ ├── agents/ # Default agent location
291
+ │ ├── security-reviewer.md
292
+ │ ├── performance-tester.md
293
+ │ └── compliance-checker.md
294
+ ├── skills/ # Agent Skills
295
+ │ ├── code-reviewer/
296
+ │ │ └── SKILL.md
297
+ │ └── pdf-processor/
298
+ │ ├── SKILL.md
299
+ │ └── scripts/
300
+ ├── hooks/ # Hook configurations
301
+ │ ├── hooks.json # Main hook config
302
+ │ └── security-hooks.json # Additional hooks
303
+ ├── .mcp.json # MCP server definitions
304
+ ├── scripts/ # Hook and utility scripts
305
+ │ ├── security-scan.sh
306
+ │ ├── format-code.py
307
+ │ └── deploy.js
308
+ ├── LICENSE # License file
309
+ └── CHANGELOG.md # Version history
310
+ ```
311
+
312
+ <Warning>
313
+ The `.claude-plugin/` directory contains the `plugin.json` file. All other directories (commands/, agents/, skills/, hooks/) must be at the plugin root, not inside `.claude-plugin/`.
314
+ </Warning>
315
+
316
+ ### File locations reference
317
+
318
+ | Component | Default Location | Purpose |
319
+ | :-------------- | :--------------------------- | :------------------------------- |
320
+ | **Manifest** | `.claude-plugin/plugin.json` | Required metadata file |
321
+ | **Commands** | `commands/` | Slash command markdown files |
322
+ | **Agents** | `agents/` | Subagent markdown files |
323
+ | **Skills** | `skills/` | Agent Skills with SKILL.md files |
324
+ | **Hooks** | `hooks/hooks.json` | Hook configuration |
325
+ | **MCP servers** | `.mcp.json` | MCP server definitions |
326
+
327
+ ***
328
+
329
+ ## Debugging and development tools
330
+
331
+ ### Debugging commands
332
+
333
+ Use `claude --debug` to see plugin loading details:
334
+
335
+ ```bash theme={null}
336
+ claude --debug
337
+ ```
338
+
339
+ This shows:
340
+
341
+ * Which plugins are being loaded
342
+ * Any errors in plugin manifests
343
+ * Command, agent, and hook registration
344
+ * MCP server initialization
345
+
346
+ ### Common issues
347
+
348
+ | Issue | Cause | Solution |
349
+ | :--------------------- | :------------------------------ | :--------------------------------------------------- |
350
+ | Plugin not loading | Invalid `plugin.json` | Validate JSON syntax |
351
+ | Commands not appearing | Wrong directory structure | Ensure `commands/` at root, not in `.claude-plugin/` |
352
+ | Hooks not firing | Script not executable | Run `chmod +x script.sh` |
353
+ | MCP server fails | Missing `${CLAUDE_PLUGIN_ROOT}` | Use variable for all plugin paths |
354
+ | Path errors | Absolute paths used | All paths must be relative and start with `./` |
355
+
356
+ ***
357
+
358
+ ## Distribution and versioning reference
359
+
360
+ ### Version management
361
+
362
+ Follow semantic versioning for plugin releases:
363
+
364
+ ```json theme={null}
365
+
366
+ ## See also
367
+
368
+ - [Plugins](/en/plugins) - Tutorials and practical usage
369
+ - [Plugin marketplaces](/en/plugin-marketplaces) - Creating and managing marketplaces
370
+ - [Slash commands](/en/slash-commands) - Command development details
371
+ - [Subagents](/en/sub-agents) - Agent configuration and capabilities
372
+ - [Agent Skills](/en/skills) - Extend Claude's capabilities
373
+ - [Hooks](/en/hooks) - Event handling and automation
374
+ - [MCP](/en/mcp) - External tool integration
375
+ - [Settings](/en/settings) - Configuration options for plugins
376
+ ```
metadata ADDED
@@ -0,0 +1,176 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: caruso
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.4
5
+ platform: ruby
6
+ authors:
7
+ - Philipp Comans
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: faraday
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '2.0'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: '2.0'
26
+ - !ruby/object:Gem::Dependency
27
+ name: git
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '1.19'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '1.19'
40
+ - !ruby/object:Gem::Dependency
41
+ name: thor
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '1.3'
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '1.3'
54
+ - !ruby/object:Gem::Dependency
55
+ name: aruba
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '2.1'
61
+ type: :development
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '2.1'
68
+ - !ruby/object:Gem::Dependency
69
+ name: rake
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '13.0'
75
+ type: :development
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '13.0'
82
+ - !ruby/object:Gem::Dependency
83
+ name: rspec
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '3.13'
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '3.13'
96
+ - !ruby/object:Gem::Dependency
97
+ name: rubocop
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '1.60'
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '1.60'
110
+ - !ruby/object:Gem::Dependency
111
+ name: timecop
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '0.9'
117
+ type: :development
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '0.9'
124
+ description: A tool to fetch Claude Code plugins and adapt them into Cursor Rules
125
+ or other agent contexts.
126
+ email:
127
+ - philipp.comans@gmail.com
128
+ executables:
129
+ - caruso
130
+ extensions: []
131
+ extra_rdoc_files: []
132
+ files:
133
+ - ".rspec"
134
+ - ".rubocop.yml"
135
+ - CHANGELOG.md
136
+ - CLAUDE.md
137
+ - IMPROVEMENTS.md
138
+ - LICENSE.txt
139
+ - README.md
140
+ - Rakefile
141
+ - bin/caruso
142
+ - caruso.gemspec
143
+ - lib/caruso.rb
144
+ - lib/caruso/adapter.rb
145
+ - lib/caruso/cli.rb
146
+ - lib/caruso/config_manager.rb
147
+ - lib/caruso/fetcher.rb
148
+ - lib/caruso/marketplace_registry.rb
149
+ - lib/caruso/version.rb
150
+ - reference/marketplace.md
151
+ - reference/plugins.md
152
+ - reference/plugins_reference.md
153
+ homepage: https://github.com/pcomans/caruso
154
+ licenses:
155
+ - MIT
156
+ metadata:
157
+ homepage_uri: https://github.com/pcomans/caruso
158
+ source_code_uri: https://github.com/pcomans/caruso
159
+ rdoc_options: []
160
+ require_paths:
161
+ - lib
162
+ required_ruby_version: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: 3.0.0
167
+ required_rubygems_version: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - ">="
170
+ - !ruby/object:Gem::Version
171
+ version: '0'
172
+ requirements: []
173
+ rubygems_version: 3.6.9
174
+ specification_version: 4
175
+ summary: Sync steering docs from Claude Marketplaces to other agents.
176
+ test_files: []