@anytio/pspm 0.8.0 → 0.9.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/CHANGELOG.md +33 -0
- package/README.md +370 -187
- package/dist/index.js +1033 -69
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,22 +1,85 @@
|
|
|
1
1
|
# PSPM - Prompt Skill Package Manager
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
The package manager for the open agent skills ecosystem.
|
|
4
4
|
|
|
5
|
-
**
|
|
5
|
+
Supports **Claude Code**, **Cursor**, **Codex**, **Gemini CLI**, **Windsurf**, and [30+ more agents](#supported-agents).
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
**Website:** [pspm.dev](https://pspm.dev)
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
## Install a Skill
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
```bash
|
|
12
|
+
npx @anytio/pspm add vercel-labs/agent-skills
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
### Source Formats
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
# GitHub shorthand (owner/repo)
|
|
19
|
+
pspm add vercel-labs/agent-skills
|
|
20
|
+
|
|
21
|
+
# Full GitHub URL
|
|
22
|
+
pspm add https://github.com/vercel-labs/agent-skills
|
|
23
|
+
|
|
24
|
+
# Direct path to a skill in a repo
|
|
25
|
+
pspm add https://github.com/vercel-labs/agent-skills/tree/main/skills/web-design
|
|
26
|
+
|
|
27
|
+
# GitHub with prefix (explicit format)
|
|
28
|
+
pspm add github:owner/repo
|
|
29
|
+
pspm add github:owner/repo/path/to/skill@v1.0.0
|
|
30
|
+
|
|
31
|
+
# Registry (with semver versioning)
|
|
32
|
+
pspm add @user/username/skill-name
|
|
33
|
+
pspm add @user/username/skill-name@^2.0.0
|
|
12
34
|
|
|
13
|
-
|
|
35
|
+
# Well-known URL (RFC 8615 discovery)
|
|
36
|
+
pspm add https://acme.com
|
|
14
37
|
|
|
15
|
-
|
|
38
|
+
# Local path (for development)
|
|
39
|
+
pspm add ./my-local-skills
|
|
40
|
+
pspm add ../shared-skills
|
|
41
|
+
pspm add file:../my-local-skills
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Options
|
|
45
|
+
|
|
46
|
+
| Option | Description |
|
|
47
|
+
|--------|-------------|
|
|
48
|
+
| `-g, --global` | Install to user home directory instead of project |
|
|
49
|
+
| `--agent <agents>` | Comma-separated agents for symlinks (e.g., `claude-code,cursor`) |
|
|
50
|
+
| `-y, --yes` | Skip agent selection prompt and use defaults |
|
|
51
|
+
|
|
52
|
+
### Examples
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
# Add multiple skills at once
|
|
56
|
+
pspm add @user/alice/skill1 @user/bob/skill2
|
|
57
|
+
|
|
58
|
+
# Add from GitHub URL (copy-paste from browser)
|
|
59
|
+
pspm add https://github.com/vercel-labs/agent-skills/tree/main/skills/web-design
|
|
60
|
+
|
|
61
|
+
# Add from GitHub shorthand
|
|
62
|
+
pspm add vercel-labs/agent-skills/skills/web-design
|
|
16
63
|
|
|
17
|
-
|
|
64
|
+
# Install to specific agents only
|
|
65
|
+
pspm add @user/alice/my-skill --agent claude-code,cursor
|
|
18
66
|
|
|
19
|
-
|
|
67
|
+
# Install globally (available across all projects)
|
|
68
|
+
pspm add vercel-labs/agent-skills -g
|
|
69
|
+
|
|
70
|
+
# Skip prompts (CI-friendly)
|
|
71
|
+
pspm add @user/alice/my-skill -y --agent claude-code
|
|
72
|
+
|
|
73
|
+
# Add from well-known endpoint
|
|
74
|
+
pspm add https://acme.com
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Installation Scope
|
|
78
|
+
|
|
79
|
+
| Scope | Flag | Skills Location | Symlink Location |
|
|
80
|
+
|-------|------|-----------------|------------------|
|
|
81
|
+
| **Project** | (default) | `.pspm/skills/` | `./<agent>/skills/` |
|
|
82
|
+
| **Global** | `-g` | `~/.pspm/skills/` | `~/<agent>/skills/` |
|
|
20
83
|
|
|
21
84
|
## Installation
|
|
22
85
|
|
|
@@ -24,7 +87,7 @@ Skills are designed to work with any AI coding agent that supports the SKILL.md
|
|
|
24
87
|
npm install -g @anytio/pspm
|
|
25
88
|
```
|
|
26
89
|
|
|
27
|
-
Or use with npx:
|
|
90
|
+
Or use with npx (no install needed):
|
|
28
91
|
|
|
29
92
|
```bash
|
|
30
93
|
npx @anytio/pspm <command>
|
|
@@ -33,9 +96,6 @@ npx @anytio/pspm <command>
|
|
|
33
96
|
## Quick Start
|
|
34
97
|
|
|
35
98
|
```bash
|
|
36
|
-
# Login with your API key
|
|
37
|
-
pspm login
|
|
38
|
-
|
|
39
99
|
# Initialize a new skill project
|
|
40
100
|
pspm init
|
|
41
101
|
|
|
@@ -54,272 +114,395 @@ pspm install
|
|
|
54
114
|
|
|
55
115
|
## Commands
|
|
56
116
|
|
|
57
|
-
|
|
117
|
+
| Command | Description |
|
|
118
|
+
|---------|-------------|
|
|
119
|
+
| `pspm add <specifiers...>` | Add skills from registry, GitHub, local paths, or well-known URLs |
|
|
120
|
+
| `pspm install [specifiers...]` | Install from lockfile, or add specific packages (alias: `i`) |
|
|
121
|
+
| `pspm remove <name>` | Remove an installed skill (alias: `rm`) |
|
|
122
|
+
| `pspm list` | List installed skills (alias: `ls`) |
|
|
123
|
+
| `pspm update` | Update skills to latest compatible versions |
|
|
124
|
+
| `pspm outdated [packages...]` | Check for outdated skills |
|
|
125
|
+
| `pspm search [query]` | Search and discover skills from the registry (alias: `find`) |
|
|
126
|
+
| `pspm audit` | Verify integrity of installed skills |
|
|
127
|
+
| `pspm link` | Recreate agent symlinks without reinstalling |
|
|
128
|
+
| `pspm init` | Create pspm.json manifest |
|
|
129
|
+
| `pspm publish` | Publish skill to registry |
|
|
130
|
+
| `pspm login` | Authenticate via browser or API key |
|
|
131
|
+
| `pspm upgrade` | Update pspm itself to the latest version |
|
|
132
|
+
|
|
133
|
+
### `pspm install`
|
|
134
|
+
|
|
135
|
+
Install all skills from the lockfile, or add and install specific packages.
|
|
58
136
|
|
|
59
137
|
```bash
|
|
60
|
-
|
|
61
|
-
pspm
|
|
62
|
-
|
|
63
|
-
|
|
138
|
+
# Install all from lockfile
|
|
139
|
+
pspm install
|
|
140
|
+
|
|
141
|
+
# Install with frozen lockfile (CI/CD - fails if lockfile is outdated)
|
|
142
|
+
pspm install --frozen-lockfile
|
|
143
|
+
|
|
144
|
+
# Install to a custom directory
|
|
145
|
+
pspm install --dir ./custom-path
|
|
146
|
+
|
|
147
|
+
# Install specific packages
|
|
148
|
+
pspm install @user/alice/skill1 github:org/repo
|
|
64
149
|
```
|
|
65
150
|
|
|
66
|
-
###
|
|
151
|
+
### `pspm search`
|
|
152
|
+
|
|
153
|
+
Search and discover skills from the registry.
|
|
67
154
|
|
|
68
155
|
```bash
|
|
69
|
-
|
|
70
|
-
pspm
|
|
71
|
-
|
|
156
|
+
# Search by keyword
|
|
157
|
+
pspm search typescript
|
|
158
|
+
|
|
159
|
+
# Output as JSON
|
|
160
|
+
pspm search react --json
|
|
161
|
+
|
|
162
|
+
# Sort by recent or name
|
|
163
|
+
pspm search --sort recent --limit 10
|
|
72
164
|
```
|
|
73
165
|
|
|
74
|
-
###
|
|
166
|
+
### `pspm audit`
|
|
167
|
+
|
|
168
|
+
Verify integrity of installed skills and check for issues.
|
|
75
169
|
|
|
76
170
|
```bash
|
|
77
|
-
|
|
78
|
-
pspm
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
pspm
|
|
82
|
-
pspm update # Update skills to latest compatible versions
|
|
83
|
-
pspm outdated # Check for outdated packages
|
|
171
|
+
# Run audit
|
|
172
|
+
pspm audit
|
|
173
|
+
|
|
174
|
+
# Output as JSON (for CI)
|
|
175
|
+
pspm audit --json
|
|
84
176
|
```
|
|
85
177
|
|
|
86
|
-
|
|
178
|
+
Checks for: missing packages, deprecated versions, corrupted installations (missing SKILL.md).
|
|
179
|
+
|
|
180
|
+
### `pspm list`
|
|
181
|
+
|
|
87
182
|
```bash
|
|
88
|
-
|
|
89
|
-
pspm
|
|
90
|
-
|
|
183
|
+
# List all installed skills
|
|
184
|
+
pspm list
|
|
185
|
+
|
|
186
|
+
# Output as JSON
|
|
187
|
+
pspm list --json
|
|
91
188
|
```
|
|
92
189
|
|
|
93
|
-
|
|
94
|
-
- `@user/username/skillname` - Latest version
|
|
95
|
-
- `@user/username/skillname@2.0.0` - Specific version
|
|
96
|
-
- `@user/username/skillname@^2.0.0` - Semver range
|
|
190
|
+
### `pspm outdated`
|
|
97
191
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
192
|
+
```bash
|
|
193
|
+
# Check for outdated skills
|
|
194
|
+
pspm outdated
|
|
195
|
+
|
|
196
|
+
# Include up-to-date packages
|
|
197
|
+
pspm outdated --all
|
|
198
|
+
|
|
199
|
+
# Check specific packages
|
|
200
|
+
pspm outdated @user/alice/skill1
|
|
201
|
+
|
|
202
|
+
# Output as JSON
|
|
203
|
+
pspm outdated --json
|
|
204
|
+
```
|
|
103
205
|
|
|
104
|
-
|
|
105
|
-
- `file:../path/to/skill` - Install from local directory
|
|
106
|
-
- `file:./subdir/skill` - Relative path from current directory
|
|
206
|
+
### `pspm update`
|
|
107
207
|
|
|
108
|
-
**Agent symlink options:**
|
|
109
208
|
```bash
|
|
110
|
-
|
|
111
|
-
pspm
|
|
112
|
-
|
|
209
|
+
# Update all skills to latest compatible versions
|
|
210
|
+
pspm update
|
|
211
|
+
|
|
212
|
+
# Preview what would change
|
|
213
|
+
pspm update --dry-run
|
|
113
214
|
```
|
|
114
215
|
|
|
115
|
-
|
|
216
|
+
## Source Formats
|
|
116
217
|
|
|
117
|
-
###
|
|
218
|
+
### Registry Specifiers
|
|
219
|
+
|
|
220
|
+
PSPM has a built-in registry with full semver support, just like npm.
|
|
118
221
|
|
|
119
222
|
```bash
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
223
|
+
@user/username/skillname # Latest version
|
|
224
|
+
@user/username/skillname@2.0.0 # Exact version
|
|
225
|
+
@user/username/skillname@^2.0.0 # Compatible range (>=2.0.0 <3.0.0)
|
|
226
|
+
@user/username/skillname@~2.1.0 # Patch range (>=2.1.0 <2.2.0)
|
|
124
227
|
```
|
|
125
228
|
|
|
126
|
-
###
|
|
229
|
+
### GitHub Specifiers
|
|
230
|
+
|
|
231
|
+
All of these formats are supported:
|
|
127
232
|
|
|
128
233
|
```bash
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
234
|
+
# Shorthand (most common)
|
|
235
|
+
owner/repo # Entire repo (default branch)
|
|
236
|
+
owner/repo/path/to/skill # Subdirectory within repo
|
|
237
|
+
|
|
238
|
+
# Full GitHub URL (copy-paste from browser)
|
|
239
|
+
https://github.com/owner/repo
|
|
240
|
+
https://github.com/owner/repo/tree/main/path/to/skill
|
|
241
|
+
|
|
242
|
+
# Explicit prefix (with version/ref support)
|
|
243
|
+
github:owner/repo # Entire repo (default branch)
|
|
244
|
+
github:owner/repo@main # Specific branch or tag
|
|
245
|
+
github:owner/repo/path/to/skill # Subdirectory within repo
|
|
246
|
+
github:owner/repo/path/to/skill@v1.0.0 # Subdirectory with tag
|
|
134
247
|
```
|
|
135
248
|
|
|
136
|
-
|
|
249
|
+
### Local Specifiers
|
|
137
250
|
|
|
138
|
-
|
|
251
|
+
```bash
|
|
252
|
+
./my-local-skills # Relative path (no prefix needed)
|
|
253
|
+
../shared-skills # Parent directory
|
|
254
|
+
file:../path/to/skill # Explicit file: prefix (also supported)
|
|
255
|
+
```
|
|
139
256
|
|
|
257
|
+
### Well-Known URLs
|
|
140
258
|
|
|
141
|
-
|
|
259
|
+
Any HTTPS URL serving a `/.well-known/skills/index.json` endpoint. See [Well-Known Skills Discovery](../../docs/well-known-skills-discovery.md).
|
|
142
260
|
|
|
143
261
|
```bash
|
|
144
|
-
|
|
145
|
-
pspm access <spec> --public # Make specific package public
|
|
262
|
+
https://acme.com # Discovers skills at acme.com/.well-known/skills/
|
|
146
263
|
```
|
|
147
264
|
|
|
148
|
-
|
|
265
|
+
## Agent Symlinks
|
|
149
266
|
|
|
150
|
-
|
|
267
|
+
PSPM installs skills to a central `.pspm/skills/` directory and creates symlinks in each agent's expected location.
|
|
151
268
|
|
|
152
269
|
```bash
|
|
153
|
-
|
|
154
|
-
pspm
|
|
270
|
+
# Install for specific agents
|
|
271
|
+
pspm add <specifier> --agent claude-code,cursor
|
|
272
|
+
|
|
273
|
+
# Skip symlink creation
|
|
274
|
+
pspm install --agent none
|
|
275
|
+
|
|
276
|
+
# Recreate symlinks for a specific agent
|
|
277
|
+
pspm link --agent codex
|
|
278
|
+
|
|
279
|
+
# Interactive agent selection (default without -y)
|
|
280
|
+
pspm add <specifier>
|
|
155
281
|
```
|
|
156
282
|
|
|
157
|
-
|
|
283
|
+
## Supported Agents
|
|
284
|
+
|
|
285
|
+
| Agent | `--agent` value | Skills Directory |
|
|
286
|
+
|-------|----------------|------------------|
|
|
287
|
+
| AdaL | `adal` | `.adal/skills/` |
|
|
288
|
+
| Amp | `amp` | `.agents/skills/` |
|
|
289
|
+
| Antigravity | `antigravity` | `.agent/skills/` |
|
|
290
|
+
| Augment | `augment` | `.augment/skills/` |
|
|
291
|
+
| Claude Code | `claude-code` | `.claude/skills/` |
|
|
292
|
+
| Cline | `cline` | `.agents/skills/` |
|
|
293
|
+
| CodeBuddy | `codebuddy` | `.codebuddy/skills/` |
|
|
294
|
+
| Codex | `codex` | `.agents/skills/` |
|
|
295
|
+
| Command Code | `command-code` | `.commandcode/skills/` |
|
|
296
|
+
| Continue | `continue` | `.continue/skills/` |
|
|
297
|
+
| Cortex Code | `cortex` | `.cortex/skills/` |
|
|
298
|
+
| Crush | `crush` | `.crush/skills/` |
|
|
299
|
+
| Cursor | `cursor` | `.agents/skills/` |
|
|
300
|
+
| Droid | `droid` | `.factory/skills/` |
|
|
301
|
+
| Gemini CLI | `gemini-cli` | `.agents/skills/` |
|
|
302
|
+
| GitHub Copilot | `github-copilot` | `.agents/skills/` |
|
|
303
|
+
| Goose | `goose` | `.goose/skills/` |
|
|
304
|
+
| iFlow CLI | `iflow-cli` | `.iflow/skills/` |
|
|
305
|
+
| Junie | `junie` | `.junie/skills/` |
|
|
306
|
+
| Kilo Code | `kilo` | `.kilocode/skills/` |
|
|
307
|
+
| Kimi Code CLI | `kimi-cli` | `.agents/skills/` |
|
|
308
|
+
| Kiro CLI | `kiro-cli` | `.kiro/skills/` |
|
|
309
|
+
| Kode | `kode` | `.kode/skills/` |
|
|
310
|
+
| MCPJam | `mcpjam` | `.mcpjam/skills/` |
|
|
311
|
+
| Mistral Vibe | `mistral-vibe` | `.vibe/skills/` |
|
|
312
|
+
| Mux | `mux` | `.mux/skills/` |
|
|
313
|
+
| Neovate | `neovate` | `.neovate/skills/` |
|
|
314
|
+
| OpenClaw | `openclaw` | `skills/` |
|
|
315
|
+
| OpenCode | `opencode` | `.agents/skills/` |
|
|
316
|
+
| OpenHands | `openhands` | `.openhands/skills/` |
|
|
317
|
+
| Pi | `pi` | `.pi/skills/` |
|
|
318
|
+
| Pochi | `pochi` | `.pochi/skills/` |
|
|
319
|
+
| Qoder | `qoder` | `.qoder/skills/` |
|
|
320
|
+
| Qwen Code | `qwen-code` | `.qwen/skills/` |
|
|
321
|
+
| Replit | `replit` | `.agents/skills/` |
|
|
322
|
+
| Roo Code | `roo` | `.roo/skills/` |
|
|
323
|
+
| Trae | `trae` | `.trae/skills/` |
|
|
324
|
+
| Trae CN | `trae-cn` | `.trae/skills/` |
|
|
325
|
+
| Universal | `universal` | `.agents/skills/` |
|
|
326
|
+
| Windsurf | `windsurf` | `.windsurf/skills/` |
|
|
327
|
+
| Zencoder | `zencoder` | `.zencoder/skills/` |
|
|
328
|
+
|
|
329
|
+
## Publishing Skills
|
|
330
|
+
|
|
331
|
+
### Authentication
|
|
158
332
|
|
|
159
333
|
```bash
|
|
160
|
-
pspm
|
|
334
|
+
pspm login # Authenticate via browser
|
|
335
|
+
pspm login --api-key <key> # Authenticate with API key
|
|
336
|
+
pspm logout # Clear stored credentials
|
|
337
|
+
pspm whoami # Show current user info
|
|
161
338
|
```
|
|
162
339
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
## Configuration
|
|
340
|
+
### Versioning
|
|
166
341
|
|
|
167
|
-
|
|
342
|
+
```bash
|
|
343
|
+
pspm version major # 1.0.0 -> 2.0.0
|
|
344
|
+
pspm version minor # 1.0.0 -> 1.1.0
|
|
345
|
+
pspm version patch # 1.0.0 -> 1.0.1
|
|
346
|
+
pspm version patch --dry-run # Preview without writing
|
|
347
|
+
```
|
|
168
348
|
|
|
169
|
-
###
|
|
349
|
+
### Publishing
|
|
170
350
|
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
username = myuser
|
|
351
|
+
```bash
|
|
352
|
+
pspm publish --access public # Publish as public (irreversible)
|
|
353
|
+
pspm publish --access private # Publish as private (requires Pro)
|
|
354
|
+
pspm publish --access private --bump patch # Bump and publish
|
|
176
355
|
```
|
|
177
356
|
|
|
178
|
-
|
|
357
|
+
`--access` is required. Before uploading, `pspm publish` shows a preview of included files and package size. Max package size is **10MB**.
|
|
179
358
|
|
|
180
|
-
|
|
359
|
+
### Managing Published Skills
|
|
181
360
|
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
|
|
361
|
+
```bash
|
|
362
|
+
pspm unpublish <spec> --force # Remove a version (within 72 hours)
|
|
363
|
+
pspm deprecate <spec> [message] # Mark as deprecated
|
|
364
|
+
pspm deprecate <spec> --undo # Remove deprecation
|
|
365
|
+
pspm access --public # Make package public (irreversible)
|
|
366
|
+
pspm access <spec> --private # Make package private
|
|
185
367
|
```
|
|
186
368
|
|
|
187
|
-
|
|
369
|
+
## Creating a Skill
|
|
188
370
|
|
|
189
|
-
|
|
190
|
-
{
|
|
191
|
-
"lockfileVersion": 4,
|
|
192
|
-
"registryUrl": "https://registry.pspm.dev",
|
|
193
|
-
"packages": {
|
|
194
|
-
"@user/username/skillname": {
|
|
195
|
-
"version": "1.0.0",
|
|
196
|
-
"resolved": "https://registry.pspm.dev/@user/username/skillname/1.0.0",
|
|
197
|
-
"integrity": "sha256-..."
|
|
198
|
-
}
|
|
199
|
-
},
|
|
200
|
-
"githubPackages": {
|
|
201
|
-
"github:owner/repo/path": {
|
|
202
|
-
"version": "abc1234",
|
|
203
|
-
"resolved": "https://github.com/owner/repo",
|
|
204
|
-
"integrity": "sha256-...",
|
|
205
|
-
"gitCommit": "abc1234567890...",
|
|
206
|
-
"gitRef": "main"
|
|
207
|
-
}
|
|
208
|
-
},
|
|
209
|
-
"localPackages": {
|
|
210
|
-
"file:../my-local-skill": {
|
|
211
|
-
"version": "local",
|
|
212
|
-
"path": "../my-local-skill",
|
|
213
|
-
"resolvedPath": "/absolute/path/to/my-local-skill",
|
|
214
|
-
"name": "my-local-skill"
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
```
|
|
371
|
+
A skill is a directory containing at minimum a `SKILL.md`:
|
|
219
372
|
|
|
220
|
-
|
|
373
|
+
```markdown
|
|
374
|
+
---
|
|
375
|
+
name: my-skill
|
|
376
|
+
description: A helpful skill that does X
|
|
377
|
+
---
|
|
221
378
|
|
|
222
|
-
|
|
223
|
-
|----------|-------------|
|
|
224
|
-
| `PSPM_API_KEY` | Override API key |
|
|
225
|
-
| `PSPM_DEBUG` | Enable debug logging |
|
|
226
|
-
| `GITHUB_TOKEN` | GitHub token for private repos and higher rate limits |
|
|
379
|
+
# My Skill
|
|
227
380
|
|
|
228
|
-
|
|
381
|
+
Instructions for the agent to follow when this skill is activated.
|
|
382
|
+
|
|
383
|
+
## When to Use
|
|
384
|
+
|
|
385
|
+
Describe when this skill applies.
|
|
386
|
+
|
|
387
|
+
## Steps
|
|
229
388
|
|
|
389
|
+
1. First, do this
|
|
390
|
+
2. Then, do that
|
|
230
391
|
```
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
│ │ │ └── owner/
|
|
242
|
-
│ │ │ └── repo/
|
|
243
|
-
│ │ │ └── path/
|
|
244
|
-
│ │ │ └── SKILL.md
|
|
245
|
-
│ │ └── _local/ # Local skill symlinks
|
|
246
|
-
│ │ └── skillname -> ../../../path/to/local/skill
|
|
247
|
-
│ └── cache/ # Tarball cache
|
|
248
|
-
├── .claude/
|
|
249
|
-
│ └── skills/ # Symlinks for claude-code agent
|
|
250
|
-
│ ├── skillname -> ../../.pspm/skills/username/skillname
|
|
251
|
-
│ └── repo -> ../../.pspm/skills/_github/owner/repo
|
|
252
|
-
└── .cursor/
|
|
253
|
-
└── skills/ # Symlinks for cursor agent (if configured)
|
|
254
|
-
|
|
255
|
-
~/
|
|
256
|
-
└── .pspmrc # User config
|
|
392
|
+
|
|
393
|
+
For publishing to the registry, also include `pspm.json` (created with `pspm init`):
|
|
394
|
+
|
|
395
|
+
```json
|
|
396
|
+
{
|
|
397
|
+
"name": "@user/myusername/my-skill",
|
|
398
|
+
"version": "1.0.0",
|
|
399
|
+
"description": "A helpful skill for...",
|
|
400
|
+
"files": ["pspm.json", "SKILL.md"]
|
|
401
|
+
}
|
|
257
402
|
```
|
|
258
403
|
|
|
259
404
|
## Ignoring Files (.pspmignore)
|
|
260
405
|
|
|
261
|
-
Control which files are excluded when publishing
|
|
406
|
+
Control which files are excluded when publishing:
|
|
262
407
|
|
|
263
408
|
```
|
|
264
|
-
# .pspmignore
|
|
409
|
+
# .pspmignore
|
|
265
410
|
*.test.ts
|
|
266
411
|
__tests__/
|
|
267
412
|
.env*
|
|
268
413
|
*.log
|
|
269
414
|
```
|
|
270
415
|
|
|
271
|
-
**Behavior:**
|
|
272
416
|
- If `.pspmignore` exists, use it for ignore patterns
|
|
273
417
|
- Otherwise, fall back to `.gitignore` if present
|
|
274
|
-
- Always ignores `node_modules`, `.git`, and `.pspm-publish`
|
|
418
|
+
- Always ignores `node_modules`, `.git`, and `.pspm-publish`
|
|
275
419
|
|
|
276
|
-
##
|
|
420
|
+
## Directory Structure
|
|
421
|
+
|
|
422
|
+
```
|
|
423
|
+
project/
|
|
424
|
+
+-- pspm.json # Manifest with dependencies
|
|
425
|
+
+-- pspm-lock.json # Lockfile (version pinning + integrity)
|
|
426
|
+
+-- .pspmrc # Project config (optional)
|
|
427
|
+
+-- .pspm/
|
|
428
|
+
| +-- skills/ # Installed skills (central store)
|
|
429
|
+
| | +-- username/ # Registry skills
|
|
430
|
+
| | | +-- skillname/
|
|
431
|
+
| | | +-- SKILL.md
|
|
432
|
+
| | +-- _github/ # GitHub skills
|
|
433
|
+
| | | +-- owner/
|
|
434
|
+
| | | +-- repo/
|
|
435
|
+
| | +-- _wellknown/ # Well-known skills
|
|
436
|
+
| | | +-- acme.com/
|
|
437
|
+
| | | +-- skill-name/
|
|
438
|
+
| | +-- _local/ # Local skill symlinks
|
|
439
|
+
| +-- cache/ # Tarball cache
|
|
440
|
+
+-- .claude/
|
|
441
|
+
| +-- skills/ # Symlinks for Claude Code
|
|
442
|
+
+-- .cursor/
|
|
443
|
+
+-- skills/ # Symlinks for Cursor (if configured)
|
|
444
|
+
```
|
|
445
|
+
|
|
446
|
+
## CI/CD Integration
|
|
447
|
+
|
|
448
|
+
```bash
|
|
449
|
+
# Set API key via environment variable
|
|
450
|
+
export PSPM_API_KEY=sk_ci_key
|
|
451
|
+
|
|
452
|
+
# Install with frozen lockfile (fails if lockfile is outdated)
|
|
453
|
+
pspm install --frozen-lockfile
|
|
454
|
+
|
|
455
|
+
# Audit installed skills
|
|
456
|
+
pspm audit --json
|
|
457
|
+
```
|
|
277
458
|
|
|
278
|
-
|
|
459
|
+
## Configuration
|
|
279
460
|
|
|
461
|
+
### User Config (`~/.pspmrc`)
|
|
462
|
+
|
|
463
|
+
```ini
|
|
464
|
+
registry = https://registry.pspm.dev
|
|
465
|
+
authToken = sk_...
|
|
466
|
+
username = myuser
|
|
280
467
|
```
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
└── data/ # Optional: data files
|
|
468
|
+
|
|
469
|
+
### Project Config (`.pspmrc`)
|
|
470
|
+
|
|
471
|
+
```ini
|
|
472
|
+
registry = https://custom-registry.example.com
|
|
287
473
|
```
|
|
288
474
|
|
|
289
|
-
|
|
475
|
+
### Lockfile (`pspm-lock.json`)
|
|
476
|
+
|
|
477
|
+
Tracks exact versions, resolved URLs, and integrity hashes for reproducible installs:
|
|
478
|
+
|
|
290
479
|
```json
|
|
291
480
|
{
|
|
292
|
-
"
|
|
293
|
-
"
|
|
294
|
-
"
|
|
295
|
-
"
|
|
481
|
+
"lockfileVersion": 5,
|
|
482
|
+
"registryUrl": "https://registry.pspm.dev",
|
|
483
|
+
"packages": { ... },
|
|
484
|
+
"githubPackages": { ... },
|
|
485
|
+
"localPackages": { ... },
|
|
486
|
+
"wellKnownPackages": { ... }
|
|
296
487
|
}
|
|
297
488
|
```
|
|
298
489
|
|
|
299
|
-
|
|
300
|
-
```markdown
|
|
301
|
-
---
|
|
302
|
-
name: my-skill
|
|
303
|
-
description: A helpful skill that does X
|
|
304
|
-
---
|
|
305
|
-
|
|
306
|
-
# Instructions
|
|
490
|
+
## Environment Variables
|
|
307
491
|
|
|
308
|
-
|
|
309
|
-
|
|
492
|
+
| Variable | Description |
|
|
493
|
+
|----------|-------------|
|
|
494
|
+
| `PSPM_API_KEY` | Override API key for authentication |
|
|
495
|
+
| `PSPM_DEBUG` | Enable debug logging |
|
|
496
|
+
| `GITHUB_TOKEN` | GitHub token for private repos and higher rate limits |
|
|
310
497
|
|
|
311
|
-
##
|
|
498
|
+
## Self-Update
|
|
312
499
|
|
|
313
500
|
```bash
|
|
314
|
-
|
|
315
|
-
export PSPM_API_KEY=sk_ci_key
|
|
316
|
-
|
|
317
|
-
# Install with frozen lockfile (fails if lockfile is outdated)
|
|
318
|
-
pspm install --frozen-lockfile
|
|
501
|
+
pspm upgrade
|
|
319
502
|
```
|
|
320
503
|
|
|
504
|
+
Auto-detects your package manager (pnpm, npm, yarn, bun). The CLI also checks for updates every 24 hours and notifies you when a newer version is available.
|
|
505
|
+
|
|
321
506
|
## License
|
|
322
507
|
|
|
323
508
|
This project is licensed under [The Artistic License 2.0](LICENSE), the same license used by npm.
|
|
324
|
-
|
|
325
|
-
<!-- @doc-sync: 17484e41aef17ad72e470bb5511876ce0bdfcbb4 | 2026-02-20 15:00 -->
|