@anytio/pspm 0.3.2 → 0.4.1
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 +81 -13
- package/CLI_GUIDE.md +76 -20
- package/README.md +42 -14
- package/dist/index.js +546 -605
- package/dist/index.js.map +1 -1
- package/package.json +16 -17
package/CHANGELOG.md
CHANGED
|
@@ -5,26 +5,94 @@ All notable changes to the PSPM CLI will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
-
## [0.
|
|
8
|
+
## [0.4.1] - 2026-02-09
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- Updated all outdated dependencies
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
|
|
16
|
+
- Store SKILL.md content in database and display on package detail page
|
|
17
|
+
|
|
18
|
+
## [0.4.0] - 2026-02-09
|
|
19
|
+
|
|
20
|
+
### Added
|
|
21
|
+
|
|
22
|
+
- **Publish size limit (10MB)**: Packages exceeding 10MB are rejected with actionable suggestions
|
|
23
|
+
- Client-side validation catches oversized packages before upload
|
|
24
|
+
- Server-side schema validation updated from 50MB to 10MB
|
|
25
|
+
- Helpful error messages suggest using `files` field, `.pspmignore`, or removing build artifacts
|
|
26
|
+
|
|
27
|
+
- **Publish preview with confirmation**: Users now see a full preview before publishing
|
|
28
|
+
- Displays tarball contents with file sizes (sorted by size)
|
|
29
|
+
- Shows package size, unpacked size, file count, and integrity hashes
|
|
30
|
+
- Requires explicit confirmation (`y/N`) before uploading to registry
|
|
31
|
+
|
|
32
|
+
## [0.3.4] - 2026-01-29
|
|
33
|
+
|
|
34
|
+
### Added
|
|
35
|
+
|
|
36
|
+
- **`version` command**: Bump package version in `pspm.json` without publishing (like `npm version`)
|
|
37
|
+
- `pspm version major` - Bump major version (1.0.0 → 2.0.0)
|
|
38
|
+
- `pspm version minor` - Bump minor version (1.0.0 → 1.1.0)
|
|
39
|
+
- `pspm version patch` - Bump patch version (1.0.0 → 1.0.1)
|
|
40
|
+
- `pspm version patch --dry-run` - Preview changes without writing
|
|
41
|
+
|
|
42
|
+
- **Visibility support for publish command**: Set package visibility during publish
|
|
43
|
+
- `pspm publish --access public` - Publish and make public in one step
|
|
44
|
+
- `pspm publish --access private` - Explicitly publish as private
|
|
45
|
+
|
|
46
|
+
- **Dependency visibility in publish**: Published packages now include their dependencies in the manifest
|
|
47
|
+
|
|
48
|
+
### Fixed
|
|
49
|
+
|
|
50
|
+
- **Registry subdomain compatibility**: SDK now correctly handles registry URLs with subdomains
|
|
51
|
+
- **Improved CLI error messages**: Better extraction and display of API error details
|
|
52
|
+
|
|
53
|
+
## [0.3.3] - 2026-01-28
|
|
54
|
+
|
|
55
|
+
### Fixed
|
|
56
|
+
|
|
57
|
+
- Strip registry subdomain for web app and server URLs
|
|
58
|
+
|
|
59
|
+
## [0.3.2] - 2026-01-28
|
|
9
60
|
|
|
10
61
|
### Added
|
|
11
62
|
|
|
12
|
-
-
|
|
13
|
-
- `pspm add file:../my-skill` - Install from relative path
|
|
14
|
-
- `pspm add file:/absolute/path/to/skill` - Install from absolute path
|
|
15
|
-
- `pspm add ../my-skill` - Auto-detected as `file:../my-skill`
|
|
16
|
-
- Local packages are symlinked (not copied) for instant updates during development
|
|
17
|
-
- `localDependencies` section in `pspm.json`
|
|
18
|
-
- `localPackages` section in lockfile (version 5)
|
|
19
|
-
- Local packages stored as symlinks in `.pspm/skills/_local/{name}/`
|
|
63
|
+
- Registry subdomain support for multi-tenant deployments
|
|
20
64
|
|
|
21
|
-
|
|
65
|
+
## [0.3.1] - 2026-01-27
|
|
22
66
|
|
|
23
67
|
### Changed
|
|
24
68
|
|
|
25
|
-
-
|
|
26
|
-
|
|
27
|
-
|
|
69
|
+
- Version bump for npm publish
|
|
70
|
+
|
|
71
|
+
## [0.3.0] - 2026-01-27
|
|
72
|
+
|
|
73
|
+
### Added
|
|
74
|
+
|
|
75
|
+
- **`.pspmignore` support for publish command**: Control which files are excluded when publishing or packing skill packages
|
|
76
|
+
- If `.pspmignore` exists, use it for ignore patterns (like `.npmignore`)
|
|
77
|
+
- Otherwise, fall back to `.gitignore` if present
|
|
78
|
+
- Always ignores `node_modules`, `.git`, and `.pspm-publish` regardless
|
|
79
|
+
- Displays which ignore file is being used during publish
|
|
80
|
+
|
|
81
|
+
- **Local directory support (file: protocol)**: Install skills from local directories for development and testing
|
|
82
|
+
- `pspm add file:../path/to/skill` - Install from local directory
|
|
83
|
+
- `pspm add ../my-skill` - Also works without the `file:` prefix
|
|
84
|
+
- Creates symlinks in `.pspm/skills/_local/{name}` for instant updates
|
|
85
|
+
- `localDependencies` field in `pspm.json` for local packages
|
|
86
|
+
- `localPackages` in lockfile (v4) tracks installed local packages
|
|
87
|
+
- Validates that directory exists and contains SKILL.md or pspm.json
|
|
88
|
+
- Provides helpful error messages: "Directory not found", "Not a valid skill directory"
|
|
89
|
+
|
|
90
|
+
### Fixed
|
|
91
|
+
|
|
92
|
+
- **Improved error messages for `access` command**: Now provides specific feedback for different specifier types
|
|
93
|
+
- GitHub specifiers explain that visibility only applies to registry packages
|
|
94
|
+
- Local file specifiers explain they are not registry packages
|
|
95
|
+
- Invalid registry specifiers show examples of correct format
|
|
28
96
|
|
|
29
97
|
## [0.2.0] - 2026-01-23
|
|
30
98
|
|
package/CLI_GUIDE.md
CHANGED
|
@@ -36,6 +36,7 @@ Commands:
|
|
|
36
36
|
install|i [options] [specifiers...] Install skills from lockfile, or add and install specific packages
|
|
37
37
|
link [options] Recreate agent symlinks without reinstalling
|
|
38
38
|
update [options] Update all skills to latest compatible versions
|
|
39
|
+
version <bump> Bump package version (major, minor, patch)
|
|
39
40
|
publish [options] Publish current directory as a skill
|
|
40
41
|
unpublish [options] <specifier> Remove a published skill version (only within 72 hours of publishing)
|
|
41
42
|
access [options] [specifier] Change package visibility (public/private)
|
|
@@ -77,7 +78,7 @@ pspm whoami
|
|
|
77
78
|
# Output:
|
|
78
79
|
# Username: myuser
|
|
79
80
|
# User ID: user_123
|
|
80
|
-
# Registry: https://pspm.dev
|
|
81
|
+
# Registry: https://registry.pspm.dev
|
|
81
82
|
```
|
|
82
83
|
|
|
83
84
|
## Configuration
|
|
@@ -92,7 +93,7 @@ pspm config show
|
|
|
92
93
|
# Output:
|
|
93
94
|
# Resolved Configuration:
|
|
94
95
|
#
|
|
95
|
-
# Registry URL: https://pspm.dev
|
|
96
|
+
# Registry URL: https://registry.pspm.dev
|
|
96
97
|
# API Key: ***
|
|
97
98
|
# Username: myuser
|
|
98
99
|
#
|
|
@@ -158,10 +159,10 @@ pspm add github:owner/repo@main # Entire repo, specific branch
|
|
|
158
159
|
pspm add github:owner/repo/path/to/skill # Subdirectory, default branch
|
|
159
160
|
pspm add github:owner/repo/path@v1.0.0 # Subdirectory with tag/ref
|
|
160
161
|
|
|
161
|
-
# Local
|
|
162
|
-
pspm add file:../my-skill # Relative path
|
|
162
|
+
# Local directory specifiers (for development):
|
|
163
|
+
pspm add file:../my-skill # Relative path
|
|
164
|
+
pspm add file:./local-skill # Current directory relative
|
|
163
165
|
pspm add file:/absolute/path/to/skill # Absolute path
|
|
164
|
-
pspm add ../my-skill # Auto-detected as file:../my-skill
|
|
165
166
|
|
|
166
167
|
# Add multiple skills at once:
|
|
167
168
|
pspm add @user/alice/skill1 @user/bob/skill2
|
|
@@ -201,10 +202,7 @@ pspm list --json
|
|
|
201
202
|
# github:owner/repo/skills/react-tips (main@abc1234)
|
|
202
203
|
# -> .claude/skills/react-tips, .cursor/skills/react-tips
|
|
203
204
|
#
|
|
204
|
-
#
|
|
205
|
-
# -> .claude/skills/my-local-skill
|
|
206
|
-
#
|
|
207
|
-
# Total: 3 skill(s) (1 registry, 1 github, 1 local)
|
|
205
|
+
# Total: 2 skill(s) (1 registry, 1 github)
|
|
208
206
|
```
|
|
209
207
|
|
|
210
208
|
### Install Skills
|
|
@@ -243,6 +241,30 @@ pspm update
|
|
|
243
241
|
pspm update --dry-run # Preview updates without applying
|
|
244
242
|
```
|
|
245
243
|
|
|
244
|
+
## Versioning
|
|
245
|
+
|
|
246
|
+
### Bump Version
|
|
247
|
+
|
|
248
|
+
Bump the package version in `pspm.json` without publishing (similar to `npm version`):
|
|
249
|
+
|
|
250
|
+
```bash
|
|
251
|
+
pspm version <bump>
|
|
252
|
+
|
|
253
|
+
# Bump types:
|
|
254
|
+
pspm version major # 1.0.0 → 2.0.0
|
|
255
|
+
pspm version minor # 1.0.0 → 1.1.0
|
|
256
|
+
pspm version patch # 1.0.0 → 1.0.1
|
|
257
|
+
|
|
258
|
+
# Options:
|
|
259
|
+
pspm version patch --dry-run # Preview what would change
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
The command:
|
|
263
|
+
- Reads the current version from `pspm.json`
|
|
264
|
+
- Increments the version according to semver rules
|
|
265
|
+
- Writes the updated version back to `pspm.json`
|
|
266
|
+
- Outputs the new version (e.g., `v1.0.1`)
|
|
267
|
+
|
|
246
268
|
## Publishing
|
|
247
269
|
|
|
248
270
|
### Publish Skill
|
|
@@ -321,7 +343,7 @@ INI format configuration file:
|
|
|
321
343
|
```ini
|
|
322
344
|
; PSPM Configuration
|
|
323
345
|
|
|
324
|
-
registry = https://pspm.dev
|
|
346
|
+
registry = https://registry.pspm.dev
|
|
325
347
|
authToken = sk_...
|
|
326
348
|
username = myuser
|
|
327
349
|
|
|
@@ -353,7 +375,16 @@ Package manifest file (created with `pspm init`):
|
|
|
353
375
|
"version": "1.0.0",
|
|
354
376
|
"description": "A helpful skill for...",
|
|
355
377
|
"author": "Your Name",
|
|
356
|
-
"files": ["pspm.json", "SKILL.md", "runtime", "scripts", "data"]
|
|
378
|
+
"files": ["pspm.json", "SKILL.md", "runtime", "scripts", "data"],
|
|
379
|
+
"dependencies": {
|
|
380
|
+
"@user/other/skill": "^1.0.0"
|
|
381
|
+
},
|
|
382
|
+
"githubDependencies": {
|
|
383
|
+
"github:owner/repo/skills/example": "main"
|
|
384
|
+
},
|
|
385
|
+
"localDependencies": {
|
|
386
|
+
"file:../my-local-skill": "*"
|
|
387
|
+
}
|
|
357
388
|
}
|
|
358
389
|
```
|
|
359
390
|
|
|
@@ -361,12 +392,12 @@ Package manifest file (created with `pspm init`):
|
|
|
361
392
|
|
|
362
393
|
```json
|
|
363
394
|
{
|
|
364
|
-
"lockfileVersion":
|
|
365
|
-
"registryUrl": "https://pspm.dev",
|
|
395
|
+
"lockfileVersion": 4,
|
|
396
|
+
"registryUrl": "https://registry.pspm.dev",
|
|
366
397
|
"packages": {
|
|
367
398
|
"@user/bsheng/vite_slides": {
|
|
368
399
|
"version": "2.0.0",
|
|
369
|
-
"resolved": "https://pspm.dev/...",
|
|
400
|
+
"resolved": "https://registry.pspm.dev/...",
|
|
370
401
|
"integrity": "sha256-abc123..."
|
|
371
402
|
}
|
|
372
403
|
},
|
|
@@ -380,11 +411,11 @@ Package manifest file (created with `pspm init`):
|
|
|
380
411
|
}
|
|
381
412
|
},
|
|
382
413
|
"localPackages": {
|
|
383
|
-
"file:../my-skill": {
|
|
414
|
+
"file:../my-local-skill": {
|
|
384
415
|
"version": "local",
|
|
385
|
-
"path": "../my-skill",
|
|
386
|
-
"resolvedPath": "/absolute/path/to/my-skill",
|
|
387
|
-
"name": "my-skill"
|
|
416
|
+
"path": "../my-local-skill",
|
|
417
|
+
"resolvedPath": "/absolute/path/to/my-local-skill",
|
|
418
|
+
"name": "my-local-skill"
|
|
388
419
|
}
|
|
389
420
|
}
|
|
390
421
|
}
|
|
@@ -422,8 +453,8 @@ project/
|
|
|
422
453
|
│ │ │ └── {owner}/
|
|
423
454
|
│ │ │ └── {repo}/
|
|
424
455
|
│ │ │ └── {path}/
|
|
425
|
-
│ │ └── _local/ # Local
|
|
426
|
-
│ │ └── {name} ->
|
|
456
|
+
│ │ └── _local/ # Local skill symlinks
|
|
457
|
+
│ │ └── {name} -> ../../../path/to/local/skill
|
|
427
458
|
│ └── cache/ # Tarball cache
|
|
428
459
|
├── .claude/
|
|
429
460
|
│ └── skills/ # Symlinks for claude-code agent
|
|
@@ -446,6 +477,31 @@ export PSPM_API_KEY=sk_ci_key
|
|
|
446
477
|
pspm install --frozen-lockfile
|
|
447
478
|
```
|
|
448
479
|
|
|
480
|
+
### Local Development Workflow
|
|
481
|
+
|
|
482
|
+
Use local dependencies to develop and test skills before publishing:
|
|
483
|
+
|
|
484
|
+
```bash
|
|
485
|
+
# Add a local skill for development
|
|
486
|
+
pspm add file:../my-skill
|
|
487
|
+
|
|
488
|
+
# The skill is symlinked, so changes are instant
|
|
489
|
+
# No need to reinstall after editing the local skill
|
|
490
|
+
|
|
491
|
+
# When ready to publish
|
|
492
|
+
cd ../my-skill
|
|
493
|
+
pspm publish
|
|
494
|
+
```
|
|
495
|
+
|
|
496
|
+
In your `pspm.json`:
|
|
497
|
+
```json
|
|
498
|
+
{
|
|
499
|
+
"localDependencies": {
|
|
500
|
+
"file:../my-local-skill": "*"
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
```
|
|
504
|
+
|
|
449
505
|
### Publishing Workflow
|
|
450
506
|
|
|
451
507
|
```bash
|
package/README.md
CHANGED
|
@@ -100,10 +100,9 @@ pspm install # Install all from lockfile
|
|
|
100
100
|
- `github:owner/repo/path/to/skill` - Subdirectory within repo
|
|
101
101
|
- `github:owner/repo/path/to/skill@v1.0.0` - Subdirectory with tag
|
|
102
102
|
|
|
103
|
-
**Local
|
|
104
|
-
- `file:../
|
|
105
|
-
- `file
|
|
106
|
-
- `../my-skill` - Auto-detected as `file:../my-skill`
|
|
103
|
+
**Local directory specifiers (for development):**
|
|
104
|
+
- `file:../path/to/skill` - Install from local directory
|
|
105
|
+
- `file:./subdir/skill` - Relative path from current directory
|
|
107
106
|
|
|
108
107
|
**Agent symlink options:**
|
|
109
108
|
```bash
|
|
@@ -114,6 +113,15 @@ pspm link --agent codex # Recreate symlinks for specifi
|
|
|
114
113
|
|
|
115
114
|
Default is all agents (`claude-code`, `codex`, `cursor`, `gemini`, `kiro`, `opencode`). Use `--agent claude-code` to install for a single agent.
|
|
116
115
|
|
|
116
|
+
### Versioning
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
pspm version major # Bump major version (1.0.0 → 2.0.0)
|
|
120
|
+
pspm version minor # Bump minor version (1.0.0 → 1.1.0)
|
|
121
|
+
pspm version patch # Bump patch version (1.0.0 → 1.0.1)
|
|
122
|
+
pspm version patch --dry-run # Preview changes without writing
|
|
123
|
+
```
|
|
124
|
+
|
|
117
125
|
### Publishing
|
|
118
126
|
|
|
119
127
|
```bash
|
|
@@ -124,6 +132,9 @@ pspm unpublish <spec> --force # Remove a published skill version
|
|
|
124
132
|
pspm deprecate <spec> [msg] # Mark a version as deprecated
|
|
125
133
|
```
|
|
126
134
|
|
|
135
|
+
**Publish preview:** Before uploading, `pspm publish` shows a preview of included files, package size, and requires confirmation. Max package size is **10MB**.
|
|
136
|
+
|
|
137
|
+
|
|
127
138
|
### Visibility
|
|
128
139
|
|
|
129
140
|
```bash
|
|
@@ -148,7 +159,7 @@ PSPM uses a simple npm-like INI configuration format.
|
|
|
148
159
|
|
|
149
160
|
```ini
|
|
150
161
|
; PSPM Configuration
|
|
151
|
-
registry = https://pspm.dev
|
|
162
|
+
registry = https://registry.pspm.dev
|
|
152
163
|
authToken = sk_...
|
|
153
164
|
username = myuser
|
|
154
165
|
```
|
|
@@ -166,12 +177,12 @@ registry = https://custom-registry.example.com
|
|
|
166
177
|
|
|
167
178
|
```json
|
|
168
179
|
{
|
|
169
|
-
"lockfileVersion":
|
|
170
|
-
"registryUrl": "https://pspm.dev",
|
|
180
|
+
"lockfileVersion": 4,
|
|
181
|
+
"registryUrl": "https://registry.pspm.dev",
|
|
171
182
|
"packages": {
|
|
172
183
|
"@user/username/skillname": {
|
|
173
184
|
"version": "1.0.0",
|
|
174
|
-
"resolved": "https://pspm.dev
|
|
185
|
+
"resolved": "https://registry.pspm.dev/@user/username/skillname/1.0.0",
|
|
175
186
|
"integrity": "sha256-..."
|
|
176
187
|
}
|
|
177
188
|
},
|
|
@@ -185,11 +196,11 @@ registry = https://custom-registry.example.com
|
|
|
185
196
|
}
|
|
186
197
|
},
|
|
187
198
|
"localPackages": {
|
|
188
|
-
"file:../my-skill": {
|
|
199
|
+
"file:../my-local-skill": {
|
|
189
200
|
"version": "local",
|
|
190
|
-
"path": "../my-skill",
|
|
191
|
-
"resolvedPath": "/absolute/path/to/my-skill",
|
|
192
|
-
"name": "my-skill"
|
|
201
|
+
"path": "../my-local-skill",
|
|
202
|
+
"resolvedPath": "/absolute/path/to/my-local-skill",
|
|
203
|
+
"name": "my-local-skill"
|
|
193
204
|
}
|
|
194
205
|
}
|
|
195
206
|
}
|
|
@@ -220,8 +231,8 @@ project/
|
|
|
220
231
|
│ │ │ └── repo/
|
|
221
232
|
│ │ │ └── path/
|
|
222
233
|
│ │ │ └── SKILL.md
|
|
223
|
-
│ │ └── _local/ # Local
|
|
224
|
-
│ │ └──
|
|
234
|
+
│ │ └── _local/ # Local skill symlinks
|
|
235
|
+
│ │ └── skillname -> ../../../path/to/local/skill
|
|
225
236
|
│ └── cache/ # Tarball cache
|
|
226
237
|
├── .claude/
|
|
227
238
|
│ └── skills/ # Symlinks for claude-code agent
|
|
@@ -234,6 +245,23 @@ project/
|
|
|
234
245
|
└── .pspmrc # User config
|
|
235
246
|
```
|
|
236
247
|
|
|
248
|
+
## Ignoring Files (.pspmignore)
|
|
249
|
+
|
|
250
|
+
Control which files are excluded when publishing with a `.pspmignore` file:
|
|
251
|
+
|
|
252
|
+
```
|
|
253
|
+
# .pspmignore - exclude files from publish
|
|
254
|
+
*.test.ts
|
|
255
|
+
__tests__/
|
|
256
|
+
.env*
|
|
257
|
+
*.log
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
**Behavior:**
|
|
261
|
+
- If `.pspmignore` exists, use it for ignore patterns
|
|
262
|
+
- Otherwise, fall back to `.gitignore` if present
|
|
263
|
+
- Always ignores `node_modules`, `.git`, and `.pspm-publish` regardless
|
|
264
|
+
|
|
237
265
|
## Creating a Skill
|
|
238
266
|
|
|
239
267
|
A skill is a directory containing at minimum a `pspm.json` and `SKILL.md`:
|