@nimblebrain/mpak 0.0.1 → 0.0.2
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 +3 -1
- package/CLAUDE.md +73 -34
- package/README.md +222 -57
- package/dist/commands/search.d.ts +12 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +144 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/skills/index.d.ts +8 -0
- package/dist/commands/skills/index.d.ts.map +1 -0
- package/dist/commands/skills/index.js +8 -0
- package/dist/commands/skills/index.js.map +1 -0
- package/dist/commands/skills/install.d.ts +9 -0
- package/dist/commands/skills/install.d.ts.map +1 -0
- package/dist/commands/skills/install.js +110 -0
- package/dist/commands/skills/install.js.map +1 -0
- package/dist/commands/skills/list.d.ts +8 -0
- package/dist/commands/skills/list.d.ts.map +1 -0
- package/dist/commands/skills/list.js +89 -0
- package/dist/commands/skills/list.js.map +1 -0
- package/dist/commands/skills/pack.d.ts +22 -0
- package/dist/commands/skills/pack.d.ts.map +1 -0
- package/dist/commands/skills/pack.js +116 -0
- package/dist/commands/skills/pack.js.map +1 -0
- package/dist/commands/skills/pull.d.ts +9 -0
- package/dist/commands/skills/pull.d.ts.map +1 -0
- package/dist/commands/skills/pull.js +68 -0
- package/dist/commands/skills/pull.js.map +1 -0
- package/dist/commands/skills/search.d.ts +14 -0
- package/dist/commands/skills/search.d.ts.map +1 -0
- package/dist/commands/skills/search.js +53 -0
- package/dist/commands/skills/search.js.map +1 -0
- package/dist/commands/skills/show.d.ts +8 -0
- package/dist/commands/skills/show.d.ts.map +1 -0
- package/dist/commands/skills/show.js +64 -0
- package/dist/commands/skills/show.js.map +1 -0
- package/dist/commands/skills/validate.d.ts +25 -0
- package/dist/commands/skills/validate.d.ts.map +1 -0
- package/dist/commands/skills/validate.js +191 -0
- package/dist/commands/skills/validate.js.map +1 -0
- package/dist/lib/api/skills-client.d.ts +30 -0
- package/dist/lib/api/skills-client.d.ts.map +1 -0
- package/dist/lib/api/skills-client.js +110 -0
- package/dist/lib/api/skills-client.js.map +1 -0
- package/dist/program.d.ts +5 -1
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +98 -33
- package/dist/program.js.map +1 -1
- package/dist/schemas/generated/api-responses.d.ts +541 -0
- package/dist/schemas/generated/api-responses.d.ts.map +1 -0
- package/dist/schemas/generated/api-responses.js +313 -0
- package/dist/schemas/generated/api-responses.js.map +1 -0
- package/dist/schemas/generated/auth.d.ts +18 -0
- package/dist/schemas/generated/auth.d.ts.map +1 -0
- package/dist/schemas/generated/auth.js +18 -0
- package/dist/schemas/generated/auth.js.map +1 -0
- package/dist/schemas/generated/index.d.ts +5 -0
- package/dist/schemas/generated/index.d.ts.map +1 -0
- package/dist/schemas/generated/index.js +6 -0
- package/dist/schemas/generated/index.js.map +1 -0
- package/dist/schemas/generated/package.d.ts +43 -0
- package/dist/schemas/generated/package.d.ts.map +1 -0
- package/dist/schemas/generated/package.js +20 -0
- package/dist/schemas/generated/package.js.map +1 -0
- package/dist/schemas/generated/skill.d.ts +381 -0
- package/dist/schemas/generated/skill.d.ts.map +1 -0
- package/dist/schemas/generated/skill.js +216 -0
- package/dist/schemas/generated/skill.js.map +1 -0
- package/dist/utils/config-manager.d.ts +13 -1
- package/dist/utils/config-manager.d.ts.map +1 -1
- package/dist/utils/config-manager.js +76 -11
- package/dist/utils/config-manager.js.map +1 -1
- package/package.json +6 -2
- package/src/commands/search.ts +191 -0
- package/src/commands/skills/index.ts +7 -0
- package/src/commands/skills/install.ts +129 -0
- package/src/commands/skills/list.ts +116 -0
- package/src/commands/skills/pack.test.ts +260 -0
- package/src/commands/skills/pack.ts +145 -0
- package/src/commands/skills/pull.ts +88 -0
- package/src/commands/skills/search.ts +73 -0
- package/src/commands/skills/show.ts +72 -0
- package/src/commands/skills/validate.test.ts +466 -0
- package/src/commands/skills/validate.ts +227 -0
- package/src/lib/api/skills-client.ts +148 -0
- package/src/program.test.ts +1 -3
- package/src/program.ts +125 -35
- package/src/schemas/config.v1.schema.json +37 -0
- package/src/schemas/generated/api-responses.ts +386 -0
- package/src/schemas/generated/auth.ts +21 -0
- package/src/schemas/generated/index.ts +5 -0
- package/src/schemas/generated/package.ts +29 -0
- package/src/schemas/generated/skill.ts +271 -0
- package/src/utils/config-manager.test.ts +182 -2
- package/src/utils/config-manager.ts +126 -12
package/CLAUDE.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# mpak CLI
|
|
2
2
|
|
|
3
|
-
CLI for
|
|
3
|
+
CLI for MCP bundles and Agent Skills.
|
|
4
4
|
|
|
5
5
|
## Architecture
|
|
6
6
|
|
|
@@ -11,15 +11,24 @@ This is a standalone CLI that uses only the public v1 API. It has no dependencie
|
|
|
11
11
|
| File | Purpose |
|
|
12
12
|
|------|---------|
|
|
13
13
|
| `src/program.ts` | Commander program setup with all commands |
|
|
14
|
-
| `src/lib/api/registry-client.ts` | API client for
|
|
14
|
+
| `src/lib/api/registry-client.ts` | API client for bundle endpoints |
|
|
15
|
+
| `src/lib/api/skills-client.ts` | API client for skill endpoints |
|
|
15
16
|
| `src/lib/api/schema.d.ts` | Generated types from OpenAPI spec |
|
|
16
|
-
| `src/commands/packages
|
|
17
|
-
| `src/commands/
|
|
18
|
-
| `src/commands/packages/pull.ts` | Pull/install command implementation |
|
|
19
|
-
| `src/commands/packages/run.ts` | Run command implementation (caching, extraction, execution, user_config substitution) |
|
|
17
|
+
| `src/commands/packages/*.ts` | Bundle commands (search, show, pull, run) |
|
|
18
|
+
| `src/commands/skills/*.ts` | Skill commands (validate, pack, search, show, pull, install, list) |
|
|
20
19
|
| `src/commands/config.ts` | Config commands (set, get, list, clear) |
|
|
20
|
+
| `src/schemas/generated/skill.ts` | Skill validation schemas (Zod) |
|
|
21
21
|
| `src/utils/config-manager.ts` | Config file handling (~/.mpak/config.json) |
|
|
22
22
|
|
|
23
|
+
### Command Structure
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
mpak search <query> # Unified search (bundles + skills)
|
|
27
|
+
mpak bundle <command> # MCP bundle operations
|
|
28
|
+
mpak skill <command> # Agent skill operations
|
|
29
|
+
mpak config <command> # Configuration management
|
|
30
|
+
```
|
|
31
|
+
|
|
23
32
|
### Type Generation
|
|
24
33
|
|
|
25
34
|
Types are generated from the server's OpenAPI spec using `openapi-typescript`:
|
|
@@ -44,7 +53,7 @@ export type Bundle = BundleSearchResponse['bundles'][number];
|
|
|
44
53
|
|
|
45
54
|
## v1 API Endpoints
|
|
46
55
|
|
|
47
|
-
|
|
56
|
+
### Bundle Endpoints
|
|
48
57
|
|
|
49
58
|
| Endpoint | Description |
|
|
50
59
|
|----------|-------------|
|
|
@@ -52,9 +61,18 @@ The CLI uses these public endpoints:
|
|
|
52
61
|
| `GET /v1/bundles/@{scope}/{package}` | Get bundle details (metadata, readme) |
|
|
53
62
|
| `GET /v1/bundles/@{scope}/{package}/versions` | List versions with platform availability |
|
|
54
63
|
| `GET /v1/bundles/@{scope}/{package}/versions/{version}/download` | Get download URL for specific version/platform |
|
|
55
|
-
| `GET /v1/bundles/@{scope}/{package}/versions/latest/download` | Get download URL for latest version |
|
|
56
64
|
|
|
57
|
-
###
|
|
65
|
+
### Skill Endpoints
|
|
66
|
+
|
|
67
|
+
| Endpoint | Description |
|
|
68
|
+
|----------|-------------|
|
|
69
|
+
| `GET /v1/skills/search` | Search skills by query, tags, category |
|
|
70
|
+
| `GET /v1/skills/@{scope}/{name}` | Get skill details |
|
|
71
|
+
| `GET /v1/skills/@{scope}/{name}/download` | Get download URL for latest version |
|
|
72
|
+
| `GET /v1/skills/@{scope}/{name}/versions/{version}/download` | Get download URL for specific version |
|
|
73
|
+
| `POST /v1/skills/announce` | Announce skill version (OIDC auth) |
|
|
74
|
+
|
|
75
|
+
### Platform Selection (Bundles)
|
|
58
76
|
|
|
59
77
|
Download endpoints accept `os` and `arch` query parameters:
|
|
60
78
|
- `os`: darwin, linux, win32, any
|
|
@@ -80,12 +98,12 @@ npm run build
|
|
|
80
98
|
The CLI defaults to `https://api.mpak.dev`. For local development:
|
|
81
99
|
|
|
82
100
|
```bash
|
|
83
|
-
# Start the server (from ../server)
|
|
84
|
-
cd ../server && npm run dev
|
|
101
|
+
# Start the server (from ../mpak/server)
|
|
102
|
+
cd ../mpak/server && npm run dev
|
|
85
103
|
|
|
86
104
|
# Run CLI commands with local registry
|
|
87
|
-
MPAK_REGISTRY_URL=http://localhost:3200 npm run dev -- search echo
|
|
88
|
-
MPAK_REGISTRY_URL=http://localhost:3200 node dist/index.js
|
|
105
|
+
MPAK_REGISTRY_URL=http://localhost:3200 npm run dev -- bundle search echo
|
|
106
|
+
MPAK_REGISTRY_URL=http://localhost:3200 node dist/index.js skill search strategy
|
|
89
107
|
```
|
|
90
108
|
|
|
91
109
|
### Verification
|
|
@@ -114,20 +132,45 @@ npm publish --otp=<code>
|
|
|
114
132
|
git push && git push --tags
|
|
115
133
|
```
|
|
116
134
|
|
|
117
|
-
## Commands
|
|
135
|
+
## Commands
|
|
136
|
+
|
|
137
|
+
### Unified Search
|
|
118
138
|
|
|
119
139
|
| Command | Description |
|
|
120
140
|
|---------|-------------|
|
|
121
|
-
| `search <query>` | Search
|
|
122
|
-
| `
|
|
123
|
-
| `
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
|
128
|
-
|
|
129
|
-
| `
|
|
130
|
-
| `
|
|
141
|
+
| `mpak search <query>` | Search bundles and skills |
|
|
142
|
+
| `mpak search <query> --type bundle` | Search bundles only |
|
|
143
|
+
| `mpak search <query> --type skill` | Search skills only |
|
|
144
|
+
|
|
145
|
+
### Bundle Commands
|
|
146
|
+
|
|
147
|
+
| Command | Description |
|
|
148
|
+
|---------|-------------|
|
|
149
|
+
| `mpak bundle search <query>` | Search public bundles |
|
|
150
|
+
| `mpak bundle show <package>` | Show bundle details with platforms |
|
|
151
|
+
| `mpak bundle pull <package>` | Download a bundle |
|
|
152
|
+
| `mpak bundle run <package>` | Run an MCP server (pulls, caches, executes) |
|
|
153
|
+
|
|
154
|
+
### Skill Commands
|
|
155
|
+
|
|
156
|
+
| Command | Description |
|
|
157
|
+
|---------|-------------|
|
|
158
|
+
| `mpak skill validate <path>` | Validate skill directory against Agent Skills spec |
|
|
159
|
+
| `mpak skill pack <path>` | Create a .skill bundle |
|
|
160
|
+
| `mpak skill search <query>` | Search skills in registry |
|
|
161
|
+
| `mpak skill show <name>` | Show skill details |
|
|
162
|
+
| `mpak skill pull <name>` | Download a .skill bundle |
|
|
163
|
+
| `mpak skill install <name>` | Install to ~/.claude/skills/ |
|
|
164
|
+
| `mpak skill list` | List installed skills |
|
|
165
|
+
|
|
166
|
+
### Config Commands
|
|
167
|
+
|
|
168
|
+
| Command | Description |
|
|
169
|
+
|---------|-------------|
|
|
170
|
+
| `mpak config set <pkg> <k=v...>` | Store config values for a package |
|
|
171
|
+
| `mpak config get <pkg>` | Show stored config (values masked) |
|
|
172
|
+
| `mpak config list` | List packages with stored config |
|
|
173
|
+
| `mpak config clear <pkg> [key]` | Clear stored config |
|
|
131
174
|
|
|
132
175
|
## User Config (MCPB v0.3)
|
|
133
176
|
|
|
@@ -153,7 +196,7 @@ Packages can declare `user_config` in their manifest for values like API keys:
|
|
|
153
196
|
}
|
|
154
197
|
```
|
|
155
198
|
|
|
156
|
-
When `mpak run` executes, it substitutes `${user_config.*}` placeholders with actual values.
|
|
199
|
+
When `mpak bundle run` executes, it substitutes `${user_config.*}` placeholders with actual values.
|
|
157
200
|
|
|
158
201
|
### Two Ways to Provide Config
|
|
159
202
|
|
|
@@ -166,7 +209,7 @@ Use `mpak config set` with keys matching the manifest's `user_config` field name
|
|
|
166
209
|
mpak config set @nimblebraininc/ipinfo api_key=your_token
|
|
167
210
|
|
|
168
211
|
# Run uses stored config automatically
|
|
169
|
-
mpak run @nimblebraininc/ipinfo
|
|
212
|
+
mpak bundle run @nimblebraininc/ipinfo
|
|
170
213
|
|
|
171
214
|
# View stored config (values masked)
|
|
172
215
|
mpak config get @nimblebraininc/ipinfo
|
|
@@ -181,7 +224,7 @@ Set the actual environment variable directly in your Claude Desktop config:
|
|
|
181
224
|
"mcpServers": {
|
|
182
225
|
"ipinfo": {
|
|
183
226
|
"command": "mpak",
|
|
184
|
-
"args": ["run", "@nimblebraininc/ipinfo"],
|
|
227
|
+
"args": ["bundle", "run", "@nimblebraininc/ipinfo"],
|
|
185
228
|
"env": {
|
|
186
229
|
"IPINFO_API_TOKEN": "your_token"
|
|
187
230
|
}
|
|
@@ -214,9 +257,10 @@ manifest.user_config.api_key → mpak config set ... api_key=xxx → env IPI
|
|
|
214
257
|
## Design Decisions
|
|
215
258
|
|
|
216
259
|
1. **Standalone**: No shared dependencies with server/client. Types generated from OpenAPI.
|
|
217
|
-
2. **Public API only**:
|
|
260
|
+
2. **Public API only**: Uses v1 API. Publishing requires OIDC via GitHub Actions.
|
|
218
261
|
3. **Platform detection**: Auto-detects OS/arch, allows explicit override for cross-platform downloads.
|
|
219
262
|
4. **Config file**: Stores registry URL in `~/.mpak/config.json`, overridable via `MPAK_REGISTRY_URL`.
|
|
263
|
+
5. **Skill schemas**: Uses Zod schemas in `src/schemas/generated/skill.ts` for validation.
|
|
220
264
|
|
|
221
265
|
## Gotchas
|
|
222
266
|
|
|
@@ -224,9 +268,4 @@ manifest.user_config.api_key → mpak config set ... api_key=xxx → env IPI
|
|
|
224
268
|
- **Type generation**: Requires server running locally (`npm run generate:types` hits localhost:3200)
|
|
225
269
|
- **Schema changes**: May introduce breaking type changes; always run full verification after regenerating
|
|
226
270
|
- **Env merge order**: Use `{ ...substitutedEnv, ...process.env }` so parent env vars (Claude Desktop) take priority over manifest substitutions
|
|
227
|
-
|
|
228
|
-
## Future Considerations
|
|
229
|
-
|
|
230
|
-
- The CLI will be broken out into a completely standalone repository
|
|
231
|
-
- Authentication commands (login, publish) may be added when needed
|
|
232
|
-
- Consider adding `npx` support for zero-install usage
|
|
271
|
+
- **Skill endpoints**: Currently implemented in server code but may not be deployed to production yet
|
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
[](https://www.typescriptlang.org/)
|
|
8
8
|
[](https://www.nimblebrain.ai/discord?utm_source=github&utm_medium=readme&utm_campaign=mpak-cli&utm_content=discord-badge)
|
|
9
9
|
|
|
10
|
-
CLI for
|
|
10
|
+
CLI for MCP bundles and Agent Skills.
|
|
11
11
|
|
|
12
12
|
## Installation
|
|
13
13
|
|
|
@@ -18,36 +18,66 @@ npm install -g @nimblebrain/mpak
|
|
|
18
18
|
## Quick Start
|
|
19
19
|
|
|
20
20
|
```bash
|
|
21
|
-
# Search for bundles
|
|
21
|
+
# Search for everything (bundles + skills)
|
|
22
22
|
mpak search postgres
|
|
23
23
|
|
|
24
|
-
#
|
|
25
|
-
mpak
|
|
24
|
+
# Search bundles only
|
|
25
|
+
mpak bundle search postgres
|
|
26
26
|
|
|
27
|
-
#
|
|
28
|
-
mpak
|
|
29
|
-
|
|
27
|
+
# Run an MCP server
|
|
28
|
+
mpak bundle run @owner/my-server
|
|
29
|
+
|
|
30
|
+
# Search skills only
|
|
31
|
+
mpak skill search strategy
|
|
32
|
+
|
|
33
|
+
# Install a skill
|
|
34
|
+
mpak skill install @owner/my-skill
|
|
30
35
|
```
|
|
31
36
|
|
|
32
37
|
## Commands
|
|
33
38
|
|
|
39
|
+
### Unified Search
|
|
40
|
+
|
|
41
|
+
Search across both bundles and skills.
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
# Search everything
|
|
45
|
+
mpak search postgres
|
|
46
|
+
|
|
47
|
+
# Filter by type
|
|
48
|
+
mpak search postgres --type bundle
|
|
49
|
+
mpak search strategy --type skill
|
|
50
|
+
|
|
51
|
+
# Sort and limit
|
|
52
|
+
mpak search mcp --sort downloads --limit 10
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Options:
|
|
56
|
+
- `--type <type>` - Filter by type (bundle, skill)
|
|
57
|
+
- `--sort <field>` - Sort by: downloads, recent, name
|
|
58
|
+
- `--limit <n>` - Limit results
|
|
59
|
+
- `--offset <n>` - Pagination offset
|
|
60
|
+
- `--json` - Output as JSON
|
|
61
|
+
|
|
62
|
+
### Bundle Commands
|
|
63
|
+
|
|
64
|
+
MCP bundle operations for discovering, downloading, and running MCP servers.
|
|
65
|
+
|
|
34
66
|
| Command | Description |
|
|
35
67
|
|---------|-------------|
|
|
36
|
-
| `search <query>` | Search public bundles |
|
|
37
|
-
| `show <package>` | Show bundle details with platforms |
|
|
38
|
-
| `
|
|
39
|
-
| `
|
|
40
|
-
| `install <package>` | Alias for pull |
|
|
41
|
-
| `run <package>` | Run an MCP server from the registry |
|
|
68
|
+
| `mpak bundle search <query>` | Search public bundles |
|
|
69
|
+
| `mpak bundle show <package>` | Show bundle details with platforms |
|
|
70
|
+
| `mpak bundle pull <package>` | Download a bundle |
|
|
71
|
+
| `mpak bundle run <package>` | Run an MCP server from the registry |
|
|
42
72
|
|
|
43
|
-
|
|
73
|
+
#### bundle search
|
|
44
74
|
|
|
45
75
|
Search for bundles in the registry.
|
|
46
76
|
|
|
47
77
|
```bash
|
|
48
|
-
mpak search echo
|
|
49
|
-
mpak search --type python echo
|
|
50
|
-
mpak search --sort downloads --limit 10 mcp
|
|
78
|
+
mpak bundle search echo
|
|
79
|
+
mpak bundle search --type python echo
|
|
80
|
+
mpak bundle search --sort downloads --limit 10 mcp
|
|
51
81
|
```
|
|
52
82
|
|
|
53
83
|
Options:
|
|
@@ -57,13 +87,13 @@ Options:
|
|
|
57
87
|
- `--offset <n>` - Pagination offset
|
|
58
88
|
- `--json` - Output as JSON
|
|
59
89
|
|
|
60
|
-
|
|
90
|
+
#### bundle show
|
|
61
91
|
|
|
62
92
|
Display detailed information about a bundle.
|
|
63
93
|
|
|
64
94
|
```bash
|
|
65
|
-
mpak show @nimblebraininc/echo
|
|
66
|
-
mpak show @nimblebraininc/echo --json
|
|
95
|
+
mpak bundle show @nimblebraininc/echo
|
|
96
|
+
mpak bundle show @nimblebraininc/echo --json
|
|
67
97
|
```
|
|
68
98
|
|
|
69
99
|
Shows:
|
|
@@ -76,22 +106,22 @@ Shows:
|
|
|
76
106
|
Options:
|
|
77
107
|
- `--json` - Output as JSON
|
|
78
108
|
|
|
79
|
-
|
|
109
|
+
#### bundle pull
|
|
80
110
|
|
|
81
111
|
Download a bundle from the registry.
|
|
82
112
|
|
|
83
113
|
```bash
|
|
84
114
|
# Download latest version for current platform
|
|
85
|
-
mpak pull @nimblebraininc/echo
|
|
115
|
+
mpak bundle pull @nimblebraininc/echo
|
|
86
116
|
|
|
87
117
|
# Download specific version
|
|
88
|
-
mpak pull @nimblebraininc/echo@1.0.0
|
|
118
|
+
mpak bundle pull @nimblebraininc/echo@1.0.0
|
|
89
119
|
|
|
90
120
|
# Download for different platform (cross-compile use case)
|
|
91
|
-
mpak pull @nimblebraininc/echo --os linux --arch arm64
|
|
121
|
+
mpak bundle pull @nimblebraininc/echo --os linux --arch arm64
|
|
92
122
|
|
|
93
123
|
# Custom output path
|
|
94
|
-
mpak pull @nimblebraininc/echo -o ./bundles/echo.mcpb
|
|
124
|
+
mpak bundle pull @nimblebraininc/echo -o ./bundles/echo.mcpb
|
|
95
125
|
```
|
|
96
126
|
|
|
97
127
|
Options:
|
|
@@ -100,19 +130,19 @@ Options:
|
|
|
100
130
|
- `--arch <arch>` - Target architecture: x64, arm64
|
|
101
131
|
- `--json` - Output download info as JSON (doesn't download)
|
|
102
132
|
|
|
103
|
-
|
|
133
|
+
#### bundle run
|
|
104
134
|
|
|
105
135
|
Run an MCP server directly from the registry. Bundles are cached locally for fast subsequent runs.
|
|
106
136
|
|
|
107
137
|
```bash
|
|
108
138
|
# Run latest version
|
|
109
|
-
mpak run @nimblebraininc/echo
|
|
139
|
+
mpak bundle run @nimblebraininc/echo
|
|
110
140
|
|
|
111
141
|
# Run specific version
|
|
112
|
-
mpak run @nimblebraininc/echo@1.0.0
|
|
142
|
+
mpak bundle run @nimblebraininc/echo@1.0.0
|
|
113
143
|
|
|
114
144
|
# Force re-download (update cache)
|
|
115
|
-
mpak run @nimblebraininc/echo --update
|
|
145
|
+
mpak bundle run @nimblebraininc/echo --update
|
|
116
146
|
```
|
|
117
147
|
|
|
118
148
|
Options:
|
|
@@ -125,7 +155,7 @@ Options:
|
|
|
125
155
|
"mcpServers": {
|
|
126
156
|
"echo": {
|
|
127
157
|
"command": "mpak",
|
|
128
|
-
"args": ["run", "@nimblebraininc/echo"]
|
|
158
|
+
"args": ["bundle", "run", "@nimblebraininc/echo"]
|
|
129
159
|
}
|
|
130
160
|
}
|
|
131
161
|
}
|
|
@@ -133,6 +163,140 @@ Options:
|
|
|
133
163
|
|
|
134
164
|
Bundles are cached in `~/.mpak/cache/` and automatically extracted on first run.
|
|
135
165
|
|
|
166
|
+
### Skill Commands
|
|
167
|
+
|
|
168
|
+
Agent skill operations for validating, packaging, and installing skills.
|
|
169
|
+
|
|
170
|
+
| Command | Description |
|
|
171
|
+
|---------|-------------|
|
|
172
|
+
| `mpak skill validate <path>` | Validate a skill directory |
|
|
173
|
+
| `mpak skill pack <path>` | Create a .skill bundle |
|
|
174
|
+
| `mpak skill search <query>` | Search skills in the registry |
|
|
175
|
+
| `mpak skill show <name>` | Show skill details |
|
|
176
|
+
| `mpak skill pull <name>` | Download a .skill bundle |
|
|
177
|
+
| `mpak skill install <name>` | Install to ~/.claude/skills/ |
|
|
178
|
+
| `mpak skill list` | List installed skills |
|
|
179
|
+
|
|
180
|
+
#### skill validate
|
|
181
|
+
|
|
182
|
+
Validate a skill directory against the [Agent Skills specification](https://agentskills.io/specification).
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
mpak skill validate ./my-skill
|
|
186
|
+
mpak skill validate ./my-skill --json
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
Options:
|
|
190
|
+
- `--json` - Output as JSON
|
|
191
|
+
|
|
192
|
+
#### skill pack
|
|
193
|
+
|
|
194
|
+
Create a `.skill` bundle from a skill directory.
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
mpak skill pack ./my-skill
|
|
198
|
+
mpak skill pack ./my-skill -o ./dist/my-skill.skill
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
Options:
|
|
202
|
+
- `-o, --output <path>` - Output file path
|
|
203
|
+
- `--json` - Output as JSON
|
|
204
|
+
|
|
205
|
+
#### skill search
|
|
206
|
+
|
|
207
|
+
Search for skills in the registry.
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
mpak skill search strategy
|
|
211
|
+
mpak skill search --category development docs
|
|
212
|
+
mpak skill search --tags documentation,refactoring
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
Options:
|
|
216
|
+
- `--tags <tags>` - Filter by tags (comma-separated)
|
|
217
|
+
- `--category <category>` - Filter by category
|
|
218
|
+
- `--surface <surface>` - Filter by surface (claude-code, claude-api, claude-ai)
|
|
219
|
+
- `--sort <field>` - Sort by: downloads, recent, name
|
|
220
|
+
- `--limit <n>` - Limit results
|
|
221
|
+
- `--offset <n>` - Pagination offset
|
|
222
|
+
- `--json` - Output as JSON
|
|
223
|
+
|
|
224
|
+
#### skill show
|
|
225
|
+
|
|
226
|
+
Display detailed information about a skill.
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
mpak skill show @nimblebraininc/docs-auditor
|
|
230
|
+
mpak skill show @nimblebraininc/docs-auditor --json
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
Options:
|
|
234
|
+
- `--json` - Output as JSON
|
|
235
|
+
|
|
236
|
+
#### skill pull
|
|
237
|
+
|
|
238
|
+
Download a skill bundle from the registry.
|
|
239
|
+
|
|
240
|
+
```bash
|
|
241
|
+
mpak skill pull @nimblebraininc/docs-auditor
|
|
242
|
+
mpak skill pull @nimblebraininc/docs-auditor -o ./skills/
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
Options:
|
|
246
|
+
- `-o, --output <path>` - Output file path
|
|
247
|
+
- `--json` - Output as JSON
|
|
248
|
+
|
|
249
|
+
#### skill install
|
|
250
|
+
|
|
251
|
+
Download and install a skill to `~/.claude/skills/`.
|
|
252
|
+
|
|
253
|
+
```bash
|
|
254
|
+
mpak skill install @nimblebraininc/docs-auditor
|
|
255
|
+
mpak skill install @nimblebraininc/docs-auditor --force
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
Options:
|
|
259
|
+
- `--force` - Overwrite existing installation
|
|
260
|
+
- `--json` - Output as JSON
|
|
261
|
+
|
|
262
|
+
#### skill list
|
|
263
|
+
|
|
264
|
+
List installed skills.
|
|
265
|
+
|
|
266
|
+
```bash
|
|
267
|
+
mpak skill list
|
|
268
|
+
mpak skill list --json
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
Options:
|
|
272
|
+
- `--json` - Output as JSON
|
|
273
|
+
|
|
274
|
+
### Config Commands
|
|
275
|
+
|
|
276
|
+
Manage per-package configuration values (e.g., API keys).
|
|
277
|
+
|
|
278
|
+
| Command | Description |
|
|
279
|
+
|---------|-------------|
|
|
280
|
+
| `mpak config set <pkg> <k=v...>` | Set config values |
|
|
281
|
+
| `mpak config get <pkg>` | Show config (values masked) |
|
|
282
|
+
| `mpak config list` | List packages with config |
|
|
283
|
+
| `mpak config clear <pkg> [key]` | Clear config |
|
|
284
|
+
|
|
285
|
+
```bash
|
|
286
|
+
# Set API key for a package
|
|
287
|
+
mpak config set @nimblebraininc/ipinfo api_key=your_token
|
|
288
|
+
|
|
289
|
+
# View stored config (values are masked)
|
|
290
|
+
mpak config get @nimblebraininc/ipinfo
|
|
291
|
+
|
|
292
|
+
# List all packages with stored config
|
|
293
|
+
mpak config list
|
|
294
|
+
|
|
295
|
+
# Clear config
|
|
296
|
+
mpak config clear @nimblebraininc/ipinfo
|
|
297
|
+
mpak config clear @nimblebraininc/ipinfo api_key # Clear specific key
|
|
298
|
+
```
|
|
299
|
+
|
|
136
300
|
## Configuration
|
|
137
301
|
|
|
138
302
|
Configuration is stored in `~/.mpak/config.json`:
|
|
@@ -161,14 +325,17 @@ The CLI uses the public v1 API:
|
|
|
161
325
|
| `GET /v1/bundles/@{scope}/{pkg}` | Get bundle details |
|
|
162
326
|
| `GET /v1/bundles/@{scope}/{pkg}/versions` | List versions with platforms |
|
|
163
327
|
| `GET /v1/bundles/@{scope}/{pkg}/versions/{version}/download` | Get download URL |
|
|
328
|
+
| `GET /v1/skills/search` | Search skills |
|
|
329
|
+
| `GET /v1/skills/@{scope}/{name}` | Get skill details |
|
|
330
|
+
| `GET /v1/skills/@{scope}/{name}/download` | Get skill download URL |
|
|
164
331
|
|
|
165
332
|
## Development
|
|
166
333
|
|
|
167
334
|
### Setup
|
|
168
335
|
|
|
169
336
|
```bash
|
|
170
|
-
cd apps/mpak/cli
|
|
171
337
|
npm install
|
|
338
|
+
npm run build
|
|
172
339
|
```
|
|
173
340
|
|
|
174
341
|
### Scripts
|
|
@@ -179,7 +346,8 @@ npm install
|
|
|
179
346
|
| `npm run dev` | Run CLI in development mode |
|
|
180
347
|
| `npm run typecheck` | Type check without building |
|
|
181
348
|
| `npm run generate:types` | Generate types from OpenAPI spec |
|
|
182
|
-
| `npm test` | Run tests |
|
|
349
|
+
| `npm test` | Run unit tests |
|
|
350
|
+
| `npm run test:all` | Run all tests including integration |
|
|
183
351
|
| `npm run lint` | Lint source code |
|
|
184
352
|
|
|
185
353
|
### Publishing
|
|
@@ -188,7 +356,7 @@ npm install
|
|
|
188
356
|
# Stable release
|
|
189
357
|
npm publish
|
|
190
358
|
|
|
191
|
-
# Beta/prerelease
|
|
359
|
+
# Beta/prerelease
|
|
192
360
|
npm publish --tag beta
|
|
193
361
|
```
|
|
194
362
|
|
|
@@ -196,32 +364,15 @@ npm publish --tag beta
|
|
|
196
364
|
|
|
197
365
|
1. Start the server locally:
|
|
198
366
|
```bash
|
|
199
|
-
cd ../server
|
|
367
|
+
cd ../mpak/server
|
|
200
368
|
npm run dev
|
|
201
369
|
```
|
|
202
370
|
|
|
203
371
|
2. Run CLI with local registry:
|
|
204
372
|
```bash
|
|
205
|
-
MPAK_REGISTRY_URL=http://localhost:3200 npm run dev -- search echo
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
3. Or build and test:
|
|
209
|
-
```bash
|
|
210
|
-
npm run build
|
|
211
|
-
MPAK_REGISTRY_URL=http://localhost:3200 node dist/index.js search echo
|
|
373
|
+
MPAK_REGISTRY_URL=http://localhost:3200 npm run dev -- bundle search echo
|
|
212
374
|
```
|
|
213
375
|
|
|
214
|
-
### Type Generation
|
|
215
|
-
|
|
216
|
-
Types are generated from the server's OpenAPI spec:
|
|
217
|
-
|
|
218
|
-
```bash
|
|
219
|
-
# Requires server running locally
|
|
220
|
-
npm run generate:types
|
|
221
|
-
```
|
|
222
|
-
|
|
223
|
-
This generates `src/lib/api/schema.d.ts` from `http://localhost:3200/documentation/json`.
|
|
224
|
-
|
|
225
376
|
### Project Structure
|
|
226
377
|
|
|
227
378
|
```
|
|
@@ -229,14 +380,28 @@ src/
|
|
|
229
380
|
├── index.ts # Entry point
|
|
230
381
|
├── program.ts # Commander program setup
|
|
231
382
|
├── commands/
|
|
232
|
-
│
|
|
233
|
-
│
|
|
234
|
-
│
|
|
235
|
-
│
|
|
383
|
+
│ ├── packages/ # Bundle commands
|
|
384
|
+
│ │ ├── search.ts
|
|
385
|
+
│ │ ├── show.ts
|
|
386
|
+
│ │ ├── pull.ts
|
|
387
|
+
│ │ └── run.ts
|
|
388
|
+
│ ├── skills/ # Skill commands
|
|
389
|
+
│ │ ├── validate.ts
|
|
390
|
+
│ │ ├── pack.ts
|
|
391
|
+
│ │ ├── search.ts
|
|
392
|
+
│ │ ├── show.ts
|
|
393
|
+
│ │ ├── pull.ts
|
|
394
|
+
│ │ ├── install.ts
|
|
395
|
+
│ │ └── list.ts
|
|
396
|
+
│ └── config.ts # Config commands
|
|
236
397
|
├── lib/
|
|
237
398
|
│ └── api/
|
|
238
|
-
│ ├── registry-client.ts # API client
|
|
399
|
+
│ ├── registry-client.ts # Bundle API client
|
|
400
|
+
│ ├── skills-client.ts # Skills API client
|
|
239
401
|
│ └── schema.d.ts # Generated OpenAPI types
|
|
402
|
+
├── schemas/
|
|
403
|
+
│ └── generated/
|
|
404
|
+
│ └── skill.ts # Skill validation schemas
|
|
240
405
|
└── utils/
|
|
241
406
|
├── config-manager.ts # Config file handling
|
|
242
407
|
└── version.ts # Version helper
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface UnifiedSearchOptions {
|
|
2
|
+
type?: 'bundle' | 'skill';
|
|
3
|
+
sort?: 'downloads' | 'recent' | 'name';
|
|
4
|
+
limit?: number;
|
|
5
|
+
offset?: number;
|
|
6
|
+
json?: boolean;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Unified search across bundles and skills
|
|
10
|
+
*/
|
|
11
|
+
export declare function handleUnifiedSearch(query: string, options?: UnifiedSearchOptions): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC1B,IAAI,CAAC,EAAE,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAiBD;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,IAAI,CAAC,CA8Jf"}
|