@anytio/pspm 0.7.3 → 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 +42 -0
- package/README.md +374 -183
- package/dist/index.js +1193 -75
- 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
|
|
34
|
+
|
|
35
|
+
# Well-known URL (RFC 8615 discovery)
|
|
36
|
+
pspm add https://acme.com
|
|
37
|
+
|
|
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
|
|
12
63
|
|
|
13
|
-
|
|
64
|
+
# Install to specific agents only
|
|
65
|
+
pspm add @user/alice/my-skill --agent claude-code,cursor
|
|
14
66
|
|
|
15
|
-
|
|
67
|
+
# Install globally (available across all projects)
|
|
68
|
+
pspm add vercel-labs/agent-skills -g
|
|
16
69
|
|
|
17
|
-
|
|
70
|
+
# Skip prompts (CI-friendly)
|
|
71
|
+
pspm add @user/alice/my-skill -y --agent claude-code
|
|
18
72
|
|
|
19
|
-
|
|
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,264 +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
|
-
|
|
95
|
-
|
|
96
|
-
|
|
190
|
+
### `pspm outdated`
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
# Check for outdated skills
|
|
194
|
+
pspm outdated
|
|
195
|
+
|
|
196
|
+
# Include up-to-date packages
|
|
197
|
+
pspm outdated --all
|
|
97
198
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
- `github:owner/repo@main` - Entire repository (specific branch/tag)
|
|
101
|
-
- `github:owner/repo/path/to/skill` - Subdirectory within repo
|
|
102
|
-
- `github:owner/repo/path/to/skill@v1.0.0` - Subdirectory with tag
|
|
199
|
+
# Check specific packages
|
|
200
|
+
pspm outdated @user/alice/skill1
|
|
103
201
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
202
|
+
# Output as JSON
|
|
203
|
+
pspm outdated --json
|
|
204
|
+
```
|
|
205
|
+
|
|
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
|
|
155
|
-
```
|
|
270
|
+
# Install for specific agents
|
|
271
|
+
pspm add <specifier> --agent claude-code,cursor
|
|
156
272
|
|
|
157
|
-
|
|
273
|
+
# Skip symlink creation
|
|
274
|
+
pspm install --agent none
|
|
158
275
|
|
|
159
|
-
|
|
276
|
+
# Recreate symlinks for a specific agent
|
|
277
|
+
pspm link --agent codex
|
|
160
278
|
|
|
161
|
-
|
|
279
|
+
# Interactive agent selection (default without -y)
|
|
280
|
+
pspm add <specifier>
|
|
281
|
+
```
|
|
162
282
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
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
|
|
332
|
+
|
|
333
|
+
```bash
|
|
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
|
|
168
338
|
```
|
|
169
339
|
|
|
170
|
-
###
|
|
340
|
+
### Versioning
|
|
171
341
|
|
|
172
|
-
|
|
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
|
+
```
|
|
173
348
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
349
|
+
### Publishing
|
|
350
|
+
|
|
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
|
|
177
355
|
```
|
|
178
356
|
|
|
179
|
-
|
|
357
|
+
`--access` is required. Before uploading, `pspm publish` shows a preview of included files and package size. Max package size is **10MB**.
|
|
180
358
|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
"integrity": "sha256-..."
|
|
190
|
-
}
|
|
191
|
-
},
|
|
192
|
-
"githubPackages": {
|
|
193
|
-
"github:owner/repo/path": {
|
|
194
|
-
"version": "abc1234",
|
|
195
|
-
"resolved": "https://github.com/owner/repo",
|
|
196
|
-
"integrity": "sha256-...",
|
|
197
|
-
"gitCommit": "abc1234567890...",
|
|
198
|
-
"gitRef": "main"
|
|
199
|
-
}
|
|
200
|
-
},
|
|
201
|
-
"localPackages": {
|
|
202
|
-
"file:../my-local-skill": {
|
|
203
|
-
"version": "local",
|
|
204
|
-
"path": "../my-local-skill",
|
|
205
|
-
"resolvedPath": "/absolute/path/to/my-local-skill",
|
|
206
|
-
"name": "my-local-skill"
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
}
|
|
359
|
+
### Managing Published Skills
|
|
360
|
+
|
|
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
|
|
210
367
|
```
|
|
211
368
|
|
|
212
|
-
##
|
|
369
|
+
## Creating a Skill
|
|
213
370
|
|
|
214
|
-
|
|
215
|
-
|----------|-------------|
|
|
216
|
-
| `PSPM_API_KEY` | Override API key |
|
|
217
|
-
| `PSPM_DEBUG` | Enable debug logging |
|
|
218
|
-
| `GITHUB_TOKEN` | GitHub token for private repos and higher rate limits |
|
|
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
|
+
---
|
|
378
|
+
|
|
379
|
+
# My Skill
|
|
380
|
+
|
|
381
|
+
Instructions for the agent to follow when this skill is activated.
|
|
382
|
+
|
|
383
|
+
## When to Use
|
|
384
|
+
|
|
385
|
+
Describe when this skill applies.
|
|
221
386
|
|
|
387
|
+
## Steps
|
|
388
|
+
|
|
389
|
+
1. First, do this
|
|
390
|
+
2. Then, do that
|
|
222
391
|
```
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
│ │ │ └── owner/
|
|
234
|
-
│ │ │ └── repo/
|
|
235
|
-
│ │ │ └── path/
|
|
236
|
-
│ │ │ └── SKILL.md
|
|
237
|
-
│ │ └── _local/ # Local skill symlinks
|
|
238
|
-
│ │ └── skillname -> ../../../path/to/local/skill
|
|
239
|
-
│ └── cache/ # Tarball cache
|
|
240
|
-
├── .claude/
|
|
241
|
-
│ └── skills/ # Symlinks for claude-code agent
|
|
242
|
-
│ ├── skillname -> ../../.pspm/skills/username/skillname
|
|
243
|
-
│ └── repo -> ../../.pspm/skills/_github/owner/repo
|
|
244
|
-
└── .cursor/
|
|
245
|
-
└── skills/ # Symlinks for cursor agent (if configured)
|
|
246
|
-
|
|
247
|
-
~/
|
|
248
|
-
└── .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
|
+
}
|
|
249
402
|
```
|
|
250
403
|
|
|
251
404
|
## Ignoring Files (.pspmignore)
|
|
252
405
|
|
|
253
|
-
Control which files are excluded when publishing
|
|
406
|
+
Control which files are excluded when publishing:
|
|
254
407
|
|
|
255
408
|
```
|
|
256
|
-
# .pspmignore
|
|
409
|
+
# .pspmignore
|
|
257
410
|
*.test.ts
|
|
258
411
|
__tests__/
|
|
259
412
|
.env*
|
|
260
413
|
*.log
|
|
261
414
|
```
|
|
262
415
|
|
|
263
|
-
**Behavior:**
|
|
264
416
|
- If `.pspmignore` exists, use it for ignore patterns
|
|
265
417
|
- Otherwise, fall back to `.gitignore` if present
|
|
266
|
-
- Always ignores `node_modules`, `.git`, and `.pspm-publish`
|
|
418
|
+
- Always ignores `node_modules`, `.git`, and `.pspm-publish`
|
|
267
419
|
|
|
268
|
-
##
|
|
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
|
|
269
451
|
|
|
270
|
-
|
|
452
|
+
# Install with frozen lockfile (fails if lockfile is outdated)
|
|
453
|
+
pspm install --frozen-lockfile
|
|
271
454
|
|
|
455
|
+
# Audit installed skills
|
|
456
|
+
pspm audit --json
|
|
272
457
|
```
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
458
|
+
|
|
459
|
+
## Configuration
|
|
460
|
+
|
|
461
|
+
### User Config (`~/.pspmrc`)
|
|
462
|
+
|
|
463
|
+
```ini
|
|
464
|
+
registry = https://registry.pspm.dev
|
|
465
|
+
authToken = sk_...
|
|
466
|
+
username = myuser
|
|
467
|
+
```
|
|
468
|
+
|
|
469
|
+
### Project Config (`.pspmrc`)
|
|
470
|
+
|
|
471
|
+
```ini
|
|
472
|
+
registry = https://custom-registry.example.com
|
|
279
473
|
```
|
|
280
474
|
|
|
281
|
-
|
|
475
|
+
### Lockfile (`pspm-lock.json`)
|
|
476
|
+
|
|
477
|
+
Tracks exact versions, resolved URLs, and integrity hashes for reproducible installs:
|
|
478
|
+
|
|
282
479
|
```json
|
|
283
480
|
{
|
|
284
|
-
"
|
|
285
|
-
"
|
|
286
|
-
"
|
|
287
|
-
"
|
|
481
|
+
"lockfileVersion": 5,
|
|
482
|
+
"registryUrl": "https://registry.pspm.dev",
|
|
483
|
+
"packages": { ... },
|
|
484
|
+
"githubPackages": { ... },
|
|
485
|
+
"localPackages": { ... },
|
|
486
|
+
"wellKnownPackages": { ... }
|
|
288
487
|
}
|
|
289
488
|
```
|
|
290
489
|
|
|
291
|
-
|
|
292
|
-
```markdown
|
|
293
|
-
---
|
|
294
|
-
name: my-skill
|
|
295
|
-
description: A helpful skill that does X
|
|
296
|
-
---
|
|
297
|
-
|
|
298
|
-
# Instructions
|
|
490
|
+
## Environment Variables
|
|
299
491
|
|
|
300
|
-
|
|
301
|
-
|
|
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 |
|
|
302
497
|
|
|
303
|
-
##
|
|
498
|
+
## Self-Update
|
|
304
499
|
|
|
305
500
|
```bash
|
|
306
|
-
|
|
307
|
-
export PSPM_API_KEY=sk_ci_key
|
|
308
|
-
|
|
309
|
-
# Install with frozen lockfile (fails if lockfile is outdated)
|
|
310
|
-
pspm install --frozen-lockfile
|
|
501
|
+
pspm upgrade
|
|
311
502
|
```
|
|
312
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
|
+
|
|
313
506
|
## License
|
|
314
507
|
|
|
315
508
|
This project is licensed under [The Artistic License 2.0](LICENSE), the same license used by npm.
|
|
316
|
-
|
|
317
|
-
<!-- @doc-sync: 17484e41aef17ad72e470bb5511876ce0bdfcbb4 | 2026-02-20 15:00 -->
|