@biggora/claude-plugins 1.0.0 → 1.1.0
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/.claude/settings.local.json +13 -0
- package/CLAUDE.md +55 -0
- package/LICENSE +1 -1
- package/README.md +208 -39
- package/bin/cli.js +39 -0
- package/package.json +30 -17
- package/registry/registry.json +166 -1
- package/registry/schema.json +10 -0
- package/src/commands/skills/add.js +194 -0
- package/src/commands/skills/list.js +52 -0
- package/src/commands/skills/remove.js +27 -0
- package/src/commands/skills/update.js +74 -0
- package/src/config.js +5 -0
- package/src/skills/codex-cli/SKILL.md +265 -0
- package/src/skills/commafeed-api/SKILL.md +1012 -0
- package/src/skills/gemini-cli/SKILL.md +379 -0
- package/src/skills/gemini-cli/references/commands.md +145 -0
- package/src/skills/gemini-cli/references/configuration.md +182 -0
- package/src/skills/gemini-cli/references/headless-and-scripting.md +181 -0
- package/src/skills/gemini-cli/references/mcp-and-extensions.md +254 -0
- package/src/skills/n8n-api/SKILL.md +623 -0
- package/src/skills/notebook-lm/SKILL.md +217 -0
- package/src/skills/notebook-lm/references/artifact-options.md +168 -0
- package/src/skills/notebook-lm/references/auth.md +58 -0
- package/src/skills/notebook-lm/references/workflows.md +144 -0
- package/src/skills/screen-recording/SKILL.md +309 -0
- package/src/skills/screen-recording/references/approach1-programmatic.md +311 -0
- package/src/skills/screen-recording/references/approach2-xvfb.md +232 -0
- package/src/skills/screen-recording/references/design-patterns.md +168 -0
- package/src/skills/test-mobile-app/SKILL.md +212 -0
- package/src/skills/test-mobile-app/references/report-template.md +95 -0
- package/src/skills/test-mobile-app/references/setup-appium.md +154 -0
- package/src/skills/test-mobile-app/scripts/analyze_apk.py +164 -0
- package/src/skills/test-mobile-app/scripts/check_environment.py +116 -0
- package/src/skills/test-mobile-app/scripts/generate_report.py +250 -0
- package/src/skills/test-mobile-app/scripts/run_tests.py +326 -0
- package/src/skills/test-web-ui/SKILL.md +232 -0
- package/src/skills/test-web-ui/references/test_case_schema.md +102 -0
- package/src/skills/test-web-ui/scripts/discover.py +176 -0
- package/src/skills/test-web-ui/scripts/generate_report.py +237 -0
- package/src/skills/test-web-ui/scripts/run_tests.py +296 -0
- package/src/skills/text-to-speech/SKILL.md +236 -0
- package/src/skills/text-to-speech/references/espeak-cli.md +277 -0
- package/src/skills/text-to-speech/references/kokoro-onnx.md +124 -0
- package/src/skills/text-to-speech/references/online-engines.md +128 -0
- package/src/skills/text-to-speech/references/pyttsx3-espeak.md +143 -0
- package/src/skills/tm-search/SKILL.md +240 -0
- package/src/skills/tm-search/references/field-guide.md +79 -0
- package/src/skills/tm-search/references/scraping-fallback.md +140 -0
- package/src/skills/tm-search/scripts/tm_search.py +375 -0
- package/src/skills/wp-rest-api/SKILL.md +114 -0
- package/src/skills/wp-rest-api/references/authentication.md +18 -0
- package/src/skills/wp-rest-api/references/custom-content-types.md +20 -0
- package/src/skills/wp-rest-api/references/discovery-and-params.md +20 -0
- package/src/skills/wp-rest-api/references/responses-and-fields.md +30 -0
- package/src/skills/wp-rest-api/references/routes-and-endpoints.md +36 -0
- package/src/skills/wp-rest-api/references/schema.md +22 -0
- package/src/skills/youtube-search/SKILL.md +412 -0
- package/src/skills/youtube-search/references/parsing-examples.md +159 -0
- package/src/skills/youtube-search/references/youtube-api-quota.md +85 -0
- package/src/skills/youtube-thumbnail/SKILL.md +1060 -0
- package/tests/commands/info.test.js +49 -0
- package/tests/commands/install.test.js +36 -0
- package/tests/commands/list.test.js +66 -0
- package/tests/commands/publish.test.js +182 -0
- package/tests/commands/search.test.js +45 -0
- package/tests/commands/uninstall.test.js +29 -0
- package/tests/commands/update.test.js +59 -0
- package/tests/functional/skills-lifecycle.test.js +293 -0
- package/tests/helpers/fixtures.js +63 -0
- package/tests/integration/cli.test.js +83 -0
- package/tests/skills/add.test.js +138 -0
- package/tests/skills/list.test.js +63 -0
- package/tests/skills/remove.test.js +38 -0
- package/tests/skills/update.test.js +60 -0
- package/tests/unit/config.test.js +31 -0
- package/tests/unit/registry.test.js +79 -0
- package/tests/unit/utils.test.js +150 -0
- package/tests/validation/registry-schema.test.js +112 -0
- package/tests/validation/skills-validation.test.js +96 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"permissions": {
|
|
3
|
+
"allow": [
|
|
4
|
+
"WebFetch(domain:n8n.hm.neutron.lv)",
|
|
5
|
+
"WebFetch(domain:docs.n8n.io)",
|
|
6
|
+
"WebFetch(domain:deepwiki.com)",
|
|
7
|
+
"WebFetch(domain:commafeed.hm.neutron.lv)",
|
|
8
|
+
"WebFetch(domain:raw.githubusercontent.com)",
|
|
9
|
+
"Bash(done)",
|
|
10
|
+
"Bash(npm --version)"
|
|
11
|
+
]
|
|
12
|
+
}
|
|
13
|
+
}
|
package/CLAUDE.md
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# CLAUDE.md
|
|
2
|
+
|
|
3
|
+
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
4
|
+
|
|
5
|
+
## Project Overview
|
|
6
|
+
|
|
7
|
+
CLI marketplace for discovering, installing, and managing Claude Code plugins. Published as `@biggora/claude-plugins` on npm. Plugins are git-cloned into `~/.claude/plugins/` where Claude Code auto-discovers them.
|
|
8
|
+
|
|
9
|
+
## Commands
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# Run the CLI (no build step needed)
|
|
13
|
+
node bin/cli.js --help
|
|
14
|
+
|
|
15
|
+
# Test (currently just runs --help)
|
|
16
|
+
npm test
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Architecture
|
|
20
|
+
|
|
21
|
+
Pure JavaScript ESM project (`"type": "module"`) with no build/transpile step. Node.js >= 18 required.
|
|
22
|
+
|
|
23
|
+
### Entry Points
|
|
24
|
+
|
|
25
|
+
- `bin/cli.js` - CLI entry point using Commander.js. Defines all commands with lazy `await import()` for each handler.
|
|
26
|
+
- `package.json` `bin` field maps `claude-plugins` to `bin/cli.js`.
|
|
27
|
+
|
|
28
|
+
### Core Modules
|
|
29
|
+
|
|
30
|
+
- `src/config.js` - Constants and directory helpers. Defines `PLUGINS_DIR` (`~/.claude/plugins`), `CACHE_DIR`, `CACHE_TTL` (15 min), and `REGISTRY_URL` (GitHub raw URL).
|
|
31
|
+
- `src/registry.js` - Fetches registry with 3-tier fallback: remote -> local cache -> bundled `registry/registry.json`. Provides `searchPlugins()` (keyword match across name/description/keywords/author) and `findPlugin()` (exact name match).
|
|
32
|
+
- `src/utils.js` - Logging helpers (`log.info/success/warn/error/dim`), `spinner()` (ora), `formatTable()`, `truncate()`.
|
|
33
|
+
|
|
34
|
+
### Command Handlers (`src/commands/`)
|
|
35
|
+
|
|
36
|
+
Each file exports a single async function matching its command name:
|
|
37
|
+
- `search.js` - Lists/filters plugins from registry
|
|
38
|
+
- `install.js` - `git clone` from plugin's repository URL into plugins dir
|
|
39
|
+
- `uninstall.js` - Removes plugin directory
|
|
40
|
+
- `list.js` - Reads installed plugins from `~/.claude/plugins/`
|
|
41
|
+
- `info.js` - Shows detailed plugin metadata
|
|
42
|
+
- `update.js` - `git pull --ff-only` on installed plugins
|
|
43
|
+
- `publish.js` - Validates plugin structure (`.claude-plugin/plugin.json` + `README.md`) and generates registry JSON entry
|
|
44
|
+
|
|
45
|
+
### Registry (`registry/`)
|
|
46
|
+
|
|
47
|
+
- `registry.json` - Bundled fallback registry with plugin entries
|
|
48
|
+
- `schema.json` - JSON schema for registry format
|
|
49
|
+
|
|
50
|
+
## Key Patterns
|
|
51
|
+
|
|
52
|
+
- All shell operations use `execFileSync` (not `exec`) with `stdio: 'pipe'` for safety
|
|
53
|
+
- Dependencies: `chalk` (styling), `commander` (CLI framework), `ora` (spinners) - all ESM-only
|
|
54
|
+
- Plugin names must match `^[a-z0-9-]+$`
|
|
55
|
+
- Registry entries require: name, version, description, author, repository
|
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -1,67 +1,197 @@
|
|
|
1
|
-
# claude-plugins
|
|
1
|
+
# @biggora/claude-plugins
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://www.npmjs.com/package/@biggora/claude-plugins)
|
|
4
|
+
[](https://opensource.org/licenses/MIT)
|
|
5
|
+
|
|
6
|
+
CLI marketplace for discovering, installing, and managing [Claude Code](https://docs.anthropic.com/en/docs/claude-code) plugins and skills.
|
|
4
7
|
|
|
5
8
|
## Installation
|
|
6
9
|
|
|
7
10
|
```bash
|
|
8
|
-
npm install -g claude-plugins
|
|
11
|
+
npm install -g @biggora/claude-plugins
|
|
9
12
|
```
|
|
10
13
|
|
|
11
|
-
Or use directly with npx:
|
|
14
|
+
Or use directly with npx (no install required):
|
|
12
15
|
|
|
13
16
|
```bash
|
|
14
|
-
npx claude-plugins search
|
|
17
|
+
npx @biggora/claude-plugins search
|
|
15
18
|
```
|
|
16
19
|
|
|
17
|
-
##
|
|
20
|
+
## Skills
|
|
21
|
+
|
|
22
|
+
Skills are self-contained instruction sets (SKILL.md files) that teach Claude Code how to perform specific tasks. They are installed into `~/.claude/skills/` and auto-discovered by Claude Code on startup.
|
|
23
|
+
|
|
24
|
+
### Install a Skill from Git
|
|
18
25
|
|
|
19
|
-
|
|
26
|
+
Install a specific skill directly from a Git repository:
|
|
20
27
|
|
|
21
28
|
```bash
|
|
22
|
-
#
|
|
23
|
-
claude-plugins
|
|
29
|
+
# Install a single skill from a repository
|
|
30
|
+
npx skills add https://github.com/biggora/claude-plugins-registry --skill commafeed-api
|
|
24
31
|
|
|
25
|
-
#
|
|
26
|
-
claude-plugins
|
|
27
|
-
claude-plugins search code-quality
|
|
32
|
+
# With npx (no global install required)
|
|
33
|
+
npx @biggora/claude-plugins skills add https://github.com/biggora/claude-plugins-registry --skill n8n-api
|
|
28
34
|
```
|
|
29
35
|
|
|
30
|
-
|
|
36
|
+
Install a skill from a single-skill repository:
|
|
31
37
|
|
|
32
38
|
```bash
|
|
39
|
+
claude-plugins skills add https://github.com/biggora/screen-recording
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Install a skill by registry name:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
claude-plugins skills add youtube-search
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Manage Installed Skills
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
# List installed skills
|
|
52
|
+
claude-plugins skills list
|
|
53
|
+
|
|
54
|
+
# Update a specific skill
|
|
55
|
+
claude-plugins skills update commafeed-api
|
|
56
|
+
|
|
57
|
+
# Update all installed skills
|
|
58
|
+
claude-plugins skills update
|
|
59
|
+
|
|
60
|
+
# Remove a skill
|
|
61
|
+
claude-plugins skills remove commafeed-api
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Available Skills
|
|
65
|
+
|
|
66
|
+
| Skill | Category | Description |
|
|
67
|
+
|-------|----------|-------------|
|
|
68
|
+
| `codex-cli` | devops | Install, configure, and automate tasks using OpenAI Codex CLI — approval modes, sandbox policies, MCP servers, and CI integration |
|
|
69
|
+
| `commafeed-api` | workflow | Manage CommaFeed RSS reader via REST API — subscriptions, categories, feeds, entries, and OPML import/export |
|
|
70
|
+
| `gemini-cli` | devops | Install, configure, and script with Gemini CLI — headless prompts, MCP servers, custom slash commands, extensions, and CI automation |
|
|
71
|
+
| `n8n-api` | workflow | Build, debug, and manage n8n workflows via REST API — create workflows, manage credentials, execute and monitor runs |
|
|
72
|
+
| `notebook-lm` | workflow | Automate Google NotebookLM — create notebooks, add sources, chat, generate audio/video overviews, quizzes, reports, and mind maps |
|
|
73
|
+
| `screen-recording` | other | Autonomous video creation — product demos, presentation videos, UI walkthroughs, and narrated screencasts via Pillow, MoviePy, and pyttsx3 |
|
|
74
|
+
| `test-mobile-app` | testing | Automated mobile app testing — analyzes APK/source, generates use cases, runs Appium tests on emulator, and produces QA reports |
|
|
75
|
+
| `test-web-ui` | testing | Automated web QA — discovers site structure, generates use cases and test plans, runs Playwright tests, and produces HTML reports |
|
|
76
|
+
| `text-to-speech` | other | Converts text to speech audio files using pyttsx3, espeak-ng, Kokoro ONNX, or cloud TTS engines with multilingual support |
|
|
77
|
+
| `tm-search` | workflow | Search, validate, and check availability of US trademarks via USPTO APIs — keyword search, batch validation, and status lookup |
|
|
78
|
+
| `wp-rest-api` | workflow | Build, extend, and debug WordPress REST API endpoints — routes, controllers, schema validation, authentication, and custom fields |
|
|
79
|
+
| `youtube-search` | workflow | Search YouTube for videos, channels, playlists and extract metadata, transcripts, and analytics via multiple API methods |
|
|
80
|
+
| `youtube-thumbnail` | other | Generates professional YouTube thumbnails in 11 strategic styles with auto-detection of AI image backends and Pillow compositing |
|
|
81
|
+
|
|
82
|
+
#### Install Examples
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
# From the multi-skill registry repository
|
|
86
|
+
npx skills add https://github.com/biggora/claude-plugins-registry --skill codex-cli
|
|
87
|
+
npx skills add https://github.com/biggora/claude-plugins-registry --skill gemini-cli
|
|
88
|
+
npx skills add https://github.com/biggora/claude-plugins-registry --skill n8n-api
|
|
89
|
+
npx skills add https://github.com/biggora/claude-plugins-registry --skill notebook-lm
|
|
90
|
+
npx skills add https://github.com/biggora/claude-plugins-registry --skill commafeed-api
|
|
91
|
+
npx skills add https://github.com/biggora/claude-plugins-registry --skill tm-search
|
|
92
|
+
npx skills add https://github.com/biggora/claude-plugins-registry --skill wp-rest-api
|
|
93
|
+
npx skills add https://github.com/biggora/claude-plugins-registry --skill youtube-search
|
|
94
|
+
npx skills add https://github.com/biggora/claude-plugins-registry --skill youtube-thumbnail
|
|
95
|
+
|
|
96
|
+
# From standalone repositories
|
|
97
|
+
claude-plugins skills add https://github.com/biggora/screen-recording
|
|
98
|
+
claude-plugins skills add https://github.com/biggora/text-to-speech
|
|
99
|
+
claude-plugins skills add https://github.com/biggora/test-web-ui
|
|
100
|
+
claude-plugins skills add https://github.com/biggora/test-mobile-app
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Plugins
|
|
104
|
+
|
|
105
|
+
### Quick Start
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
# Browse all available plugins
|
|
109
|
+
claude-plugins search
|
|
110
|
+
|
|
111
|
+
# Search by keyword
|
|
112
|
+
claude-plugins search typescript
|
|
113
|
+
|
|
33
114
|
# Install a plugin
|
|
34
115
|
claude-plugins install code-optimizer
|
|
35
116
|
|
|
36
|
-
#
|
|
37
|
-
|
|
117
|
+
# Restart Claude Code to load the plugin
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### Plugin Commands
|
|
121
|
+
|
|
122
|
+
| Command | Description |
|
|
123
|
+
|---------|-------------|
|
|
124
|
+
| `claude-plugins search [query]` | Browse or search plugins by name, keyword, or category |
|
|
125
|
+
| `claude-plugins install <name>` | Install a plugin from the registry |
|
|
126
|
+
| `claude-plugins uninstall <name>` | Remove an installed plugin |
|
|
127
|
+
| `claude-plugins list` | List locally installed plugins |
|
|
128
|
+
| `claude-plugins info <name>` | Show detailed plugin information |
|
|
129
|
+
| `claude-plugins update [name]` | Update one or all installed plugins |
|
|
130
|
+
| `claude-plugins publish` | Validate plugin and generate registry entry for submission |
|
|
131
|
+
|
|
132
|
+
### Skills Commands
|
|
133
|
+
|
|
134
|
+
| Command | Description |
|
|
135
|
+
|---------|-------------|
|
|
136
|
+
| `claude-plugins skills add <source>` | Install a skill from a Git URL or registry name |
|
|
137
|
+
| `claude-plugins skills add <url> --skill <name>` | Install a specific skill from a multi-skill repository |
|
|
138
|
+
| `claude-plugins skills list` | List installed skills |
|
|
139
|
+
| `claude-plugins skills update [name]` | Update one or all installed skills |
|
|
140
|
+
| `claude-plugins skills remove <name>` | Remove an installed skill |
|
|
141
|
+
|
|
142
|
+
### Aliases
|
|
143
|
+
|
|
144
|
+
- `claude-plugins ls` - alias for `list`
|
|
145
|
+
- `claude-plugins remove <name>` - alias for `uninstall`
|
|
146
|
+
- `claude-plugins upgrade [name]` - alias for `update`
|
|
147
|
+
- `claude-plugins skills ls` - alias for `skills list`
|
|
148
|
+
- `claude-plugins skills rm <name>` - alias for `skills remove`
|
|
149
|
+
|
|
150
|
+
## Usage Examples
|
|
151
|
+
|
|
152
|
+
### Search & Install Plugins
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
# List all plugins in the registry
|
|
156
|
+
claude-plugins search
|
|
157
|
+
|
|
158
|
+
# Search for code quality tools
|
|
159
|
+
claude-plugins search code-quality
|
|
160
|
+
|
|
161
|
+
# Get details about a specific plugin
|
|
162
|
+
claude-plugins info typescript-eslint-fixer
|
|
163
|
+
|
|
164
|
+
# Install it
|
|
165
|
+
claude-plugins install typescript-eslint-fixer
|
|
38
166
|
```
|
|
39
167
|
|
|
40
|
-
### Manage
|
|
168
|
+
### Manage Installed Plugins
|
|
41
169
|
|
|
42
170
|
```bash
|
|
43
|
-
#
|
|
171
|
+
# See what you have installed
|
|
44
172
|
claude-plugins list
|
|
45
173
|
|
|
46
|
-
#
|
|
47
|
-
claude-plugins info code-optimizer
|
|
48
|
-
|
|
49
|
-
# Update all plugins
|
|
174
|
+
# Update all plugins to latest
|
|
50
175
|
claude-plugins update
|
|
51
176
|
|
|
52
177
|
# Update a specific plugin
|
|
53
178
|
claude-plugins update code-optimizer
|
|
179
|
+
|
|
180
|
+
# Remove a plugin
|
|
181
|
+
claude-plugins uninstall code-optimizer
|
|
54
182
|
```
|
|
55
183
|
|
|
56
|
-
### Publish
|
|
184
|
+
### Publish Your Own Plugin
|
|
57
185
|
|
|
58
186
|
```bash
|
|
59
187
|
# From your plugin directory
|
|
60
|
-
cd my-plugin
|
|
188
|
+
cd my-awesome-plugin
|
|
189
|
+
|
|
190
|
+
# Validate and generate a registry entry
|
|
61
191
|
claude-plugins publish
|
|
62
192
|
```
|
|
63
193
|
|
|
64
|
-
|
|
194
|
+
The `publish` command validates your plugin structure and outputs a JSON entry. Submit a PR to [claude-plugins-registry](https://github.com/biggora/claude-plugins-registry) to list your plugin.
|
|
65
195
|
|
|
66
196
|
## Plugin Structure
|
|
67
197
|
|
|
@@ -72,10 +202,10 @@ my-plugin/
|
|
|
72
202
|
.claude-plugin/
|
|
73
203
|
plugin.json # Required: name, version, description
|
|
74
204
|
README.md # Required
|
|
75
|
-
commands/ # Slash commands
|
|
76
|
-
agents/ # Agent definitions
|
|
77
|
-
skills/ # Skill files
|
|
78
|
-
hooks/ # Hook definitions
|
|
205
|
+
commands/ # Slash commands (optional)
|
|
206
|
+
agents/ # Agent definitions (optional)
|
|
207
|
+
skills/ # Skill files (optional)
|
|
208
|
+
hooks/ # Hook definitions (optional)
|
|
79
209
|
```
|
|
80
210
|
|
|
81
211
|
### plugin.json
|
|
@@ -84,29 +214,68 @@ my-plugin/
|
|
|
84
214
|
{
|
|
85
215
|
"name": "my-plugin",
|
|
86
216
|
"version": "1.0.0",
|
|
87
|
-
"description": "
|
|
88
|
-
"author": {
|
|
89
|
-
|
|
217
|
+
"description": "Short description of what it does",
|
|
218
|
+
"author": {
|
|
219
|
+
"name": "your-name",
|
|
220
|
+
"url": "https://github.com/your-name"
|
|
221
|
+
},
|
|
222
|
+
"repository": "https://github.com/your-name/my-plugin",
|
|
90
223
|
"keywords": ["keyword1", "keyword2"],
|
|
91
224
|
"license": "MIT"
|
|
92
225
|
}
|
|
93
226
|
```
|
|
94
227
|
|
|
228
|
+
## Skill Structure
|
|
229
|
+
|
|
230
|
+
Skills are simpler than plugins — just a SKILL.md file with optional supporting files:
|
|
231
|
+
|
|
232
|
+
```
|
|
233
|
+
my-skill/
|
|
234
|
+
SKILL.md # Required: skill instructions with YAML frontmatter
|
|
235
|
+
references/ # Reference docs (optional)
|
|
236
|
+
scripts/ # Helper scripts (optional)
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
### SKILL.md
|
|
240
|
+
|
|
241
|
+
```markdown
|
|
242
|
+
---
|
|
243
|
+
name: my-skill
|
|
244
|
+
description: What this skill teaches Claude to do
|
|
245
|
+
---
|
|
246
|
+
|
|
247
|
+
# My Skill
|
|
248
|
+
|
|
249
|
+
Instructions for Claude Code...
|
|
250
|
+
```
|
|
251
|
+
|
|
95
252
|
## Registry
|
|
96
253
|
|
|
97
|
-
The plugin registry is hosted at [
|
|
254
|
+
The plugin registry is a GitHub-hosted JSON file at [biggora/claude-plugins-registry](https://github.com/biggora/claude-plugins-registry).
|
|
255
|
+
|
|
256
|
+
- The CLI fetches the registry on demand and caches it locally for 15 minutes
|
|
257
|
+
- Falls back to cached version if GitHub is unreachable
|
|
258
|
+
- Falls back to bundled registry if no cache exists
|
|
98
259
|
|
|
99
|
-
|
|
260
|
+
### Adding a Plugin to the Registry
|
|
100
261
|
|
|
101
|
-
1.
|
|
102
|
-
2. Run `claude-plugins publish`
|
|
103
|
-
3.
|
|
262
|
+
1. Create your plugin and push it to a public GitHub repository
|
|
263
|
+
2. Run `claude-plugins publish` from your plugin directory to validate
|
|
264
|
+
3. Copy the generated registry entry
|
|
265
|
+
4. Submit a PR to [claude-plugins-registry](https://github.com/biggora/claude-plugins-registry) adding the entry to `registry/registry.json`
|
|
104
266
|
|
|
105
267
|
## How It Works
|
|
106
268
|
|
|
107
|
-
- Plugins are installed to `~/.claude/plugins/<name>`
|
|
108
|
-
-
|
|
109
|
-
-
|
|
269
|
+
- **Plugins** are installed via `git clone` to `~/.claude/plugins/<name>`
|
|
270
|
+
- **Skills** are installed via `git clone` + copy to `~/.claude/skills/<name>`
|
|
271
|
+
- Updates use `git pull --ff-only` to safely fast-forward
|
|
272
|
+
- Claude Code automatically discovers plugins and skills in `~/.claude/`
|
|
273
|
+
- Restart Claude Code after installing or removing plugins/skills
|
|
274
|
+
|
|
275
|
+
## Requirements
|
|
276
|
+
|
|
277
|
+
- Node.js >= 18.0.0
|
|
278
|
+
- Git (for install/update operations)
|
|
110
279
|
|
|
111
280
|
## License
|
|
112
281
|
|
package/bin/cli.js
CHANGED
|
@@ -76,4 +76,43 @@ program
|
|
|
76
76
|
await publish();
|
|
77
77
|
});
|
|
78
78
|
|
|
79
|
+
const skills = program
|
|
80
|
+
.command('skills')
|
|
81
|
+
.description('Manage Claude Code skills');
|
|
82
|
+
|
|
83
|
+
skills
|
|
84
|
+
.command('add <source>')
|
|
85
|
+
.description('Install a skill from a Git URL or registry name')
|
|
86
|
+
.option('--skill <name>', 'Select a specific skill from a multi-skill repo')
|
|
87
|
+
.action(async (source, options) => {
|
|
88
|
+
const { add } = await import('../src/commands/skills/add.js');
|
|
89
|
+
await add(source, options);
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
skills
|
|
93
|
+
.command('list')
|
|
94
|
+
.alias('ls')
|
|
95
|
+
.description('List installed skills')
|
|
96
|
+
.action(async () => {
|
|
97
|
+
const { list } = await import('../src/commands/skills/list.js');
|
|
98
|
+
await list();
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
skills
|
|
102
|
+
.command('remove <name>')
|
|
103
|
+
.alias('rm')
|
|
104
|
+
.description('Remove an installed skill')
|
|
105
|
+
.action(async (name) => {
|
|
106
|
+
const { remove } = await import('../src/commands/skills/remove.js');
|
|
107
|
+
await remove(name);
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
skills
|
|
111
|
+
.command('update [name]')
|
|
112
|
+
.description('Update one or all installed skills')
|
|
113
|
+
.action(async (name) => {
|
|
114
|
+
const { update } = await import('../src/commands/skills/update.js');
|
|
115
|
+
await update(name);
|
|
116
|
+
});
|
|
117
|
+
|
|
79
118
|
program.parse();
|
package/package.json
CHANGED
|
@@ -1,17 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@biggora/claude-plugins",
|
|
3
|
-
"
|
|
4
|
-
"access": "public"
|
|
5
|
-
},
|
|
6
|
-
"version": "1.0.0",
|
|
3
|
+
"version": "1.1.0",
|
|
7
4
|
"description": "CLI marketplace for discovering, installing, and managing Claude Code plugins",
|
|
8
|
-
"main": "src/index.js",
|
|
9
|
-
"bin": {
|
|
10
|
-
"claude-plugins": "bin/cli.js"
|
|
11
|
-
},
|
|
12
|
-
"scripts": {
|
|
13
|
-
"test": "node bin/cli.js --help"
|
|
14
|
-
},
|
|
15
5
|
"keywords": [
|
|
16
6
|
"claude",
|
|
17
7
|
"claude-code",
|
|
@@ -19,22 +9,45 @@
|
|
|
19
9
|
"marketplace",
|
|
20
10
|
"cli"
|
|
21
11
|
],
|
|
22
|
-
"
|
|
23
|
-
|
|
24
|
-
"url": "https://github.com/biggora"
|
|
12
|
+
"homepage": "https://github.com/biggora/claude-plugins-registry#readme",
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/biggora/claude-plugins-registry/issues"
|
|
25
15
|
},
|
|
26
|
-
"license": "MIT",
|
|
27
16
|
"repository": {
|
|
28
17
|
"type": "git",
|
|
29
|
-
"url": "https://github.com/biggora/claude-plugins"
|
|
18
|
+
"url": "git+https://github.com/biggora/claude-plugins-registry.git"
|
|
19
|
+
},
|
|
20
|
+
"license": "MIT",
|
|
21
|
+
"author": "biggora (https://github.com/biggora)",
|
|
22
|
+
"type": "module",
|
|
23
|
+
"main": "src/index.js",
|
|
24
|
+
"bin": {
|
|
25
|
+
"claude-plugins": "bin/cli.js"
|
|
26
|
+
},
|
|
27
|
+
"directories": {
|
|
28
|
+
"test": "tests"
|
|
29
|
+
},
|
|
30
|
+
"scripts": {
|
|
31
|
+
"test": "node --test tests/unit/*.test.js tests/commands/*.test.js tests/skills/*.test.js tests/validation/*.test.js tests/integration/*.test.js",
|
|
32
|
+
"test:unit": "node --test tests/unit/*.test.js",
|
|
33
|
+
"test:commands": "node --test tests/commands/*.test.js",
|
|
34
|
+
"test:skills": "node --test tests/skills/*.test.js",
|
|
35
|
+
"test:validation": "node --test tests/validation/*.test.js",
|
|
36
|
+
"test:integration": "node --test tests/integration/*.test.js",
|
|
37
|
+
"test:functional": "node --test tests/functional/*.test.js",
|
|
38
|
+
"test:all": "node --test tests/unit/*.test.js tests/commands/*.test.js tests/skills/*.test.js tests/validation/*.test.js tests/integration/*.test.js tests/functional/*.test.js",
|
|
39
|
+
"test:coverage": "node --test --experimental-test-coverage tests/unit/*.test.js tests/commands/*.test.js tests/skills/*.test.js tests/validation/*.test.js tests/integration/*.test.js"
|
|
30
40
|
},
|
|
31
41
|
"dependencies": {
|
|
32
42
|
"chalk": "^5.3.0",
|
|
33
43
|
"commander": "^12.1.0",
|
|
34
44
|
"ora": "^8.1.0"
|
|
35
45
|
},
|
|
46
|
+
"devDependencies": {},
|
|
36
47
|
"engines": {
|
|
37
48
|
"node": ">=18.0.0"
|
|
38
49
|
},
|
|
39
|
-
"
|
|
50
|
+
"publishConfig": {
|
|
51
|
+
"access": "public"
|
|
52
|
+
}
|
|
40
53
|
}
|