@anytio/pspm 0.3.0 → 0.4.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 +65 -1
- package/CLI_GUIDE.md +85 -11
- package/README.md +31 -9
- package/dist/index.js +416 -88
- package/dist/index.js.map +1 -1
- package/package.json +2 -3
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,59 @@ 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.4.0] - 2026-02-09
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- **Publish size limit (10MB)**: Packages exceeding 10MB are rejected with actionable suggestions
|
|
13
|
+
- Client-side validation catches oversized packages before upload
|
|
14
|
+
- Server-side schema validation updated from 50MB to 10MB
|
|
15
|
+
- Helpful error messages suggest using `files` field, `.pspmignore`, or removing build artifacts
|
|
16
|
+
|
|
17
|
+
- **Publish preview with confirmation**: Users now see a full preview before publishing
|
|
18
|
+
- Displays tarball contents with file sizes (sorted by size)
|
|
19
|
+
- Shows package size, unpacked size, file count, and integrity hashes
|
|
20
|
+
- Requires explicit confirmation (`y/N`) before uploading to registry
|
|
21
|
+
|
|
22
|
+
## [0.3.4] - 2026-01-29
|
|
23
|
+
|
|
24
|
+
### Added
|
|
25
|
+
|
|
26
|
+
- **`version` command**: Bump package version in `pspm.json` without publishing (like `npm version`)
|
|
27
|
+
- `pspm version major` - Bump major version (1.0.0 → 2.0.0)
|
|
28
|
+
- `pspm version minor` - Bump minor version (1.0.0 → 1.1.0)
|
|
29
|
+
- `pspm version patch` - Bump patch version (1.0.0 → 1.0.1)
|
|
30
|
+
- `pspm version patch --dry-run` - Preview changes without writing
|
|
31
|
+
|
|
32
|
+
- **Visibility support for publish command**: Set package visibility during publish
|
|
33
|
+
- `pspm publish --access public` - Publish and make public in one step
|
|
34
|
+
- `pspm publish --access private` - Explicitly publish as private
|
|
35
|
+
|
|
36
|
+
- **Dependency visibility in publish**: Published packages now include their dependencies in the manifest
|
|
37
|
+
|
|
38
|
+
### Fixed
|
|
39
|
+
|
|
40
|
+
- **Registry subdomain compatibility**: SDK now correctly handles registry URLs with subdomains
|
|
41
|
+
- **Improved CLI error messages**: Better extraction and display of API error details
|
|
42
|
+
|
|
43
|
+
## [0.3.3] - 2026-01-28
|
|
44
|
+
|
|
45
|
+
### Fixed
|
|
46
|
+
|
|
47
|
+
- Strip registry subdomain for web app and server URLs
|
|
48
|
+
|
|
49
|
+
## [0.3.2] - 2026-01-28
|
|
50
|
+
|
|
51
|
+
### Added
|
|
52
|
+
|
|
53
|
+
- Registry subdomain support for multi-tenant deployments
|
|
54
|
+
|
|
55
|
+
## [0.3.1] - 2026-01-27
|
|
56
|
+
|
|
57
|
+
### Changed
|
|
58
|
+
|
|
59
|
+
- Version bump for npm publish
|
|
60
|
+
|
|
8
61
|
## [0.3.0] - 2026-01-27
|
|
9
62
|
|
|
10
63
|
### Added
|
|
@@ -17,8 +70,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
17
70
|
|
|
18
71
|
- **Local directory support (file: protocol)**: Install skills from local directories for development and testing
|
|
19
72
|
- `pspm add file:../path/to/skill` - Install from local directory
|
|
73
|
+
- `pspm add ../my-skill` - Also works without the `file:` prefix
|
|
74
|
+
- Creates symlinks in `.pspm/skills/_local/{name}` for instant updates
|
|
20
75
|
- `localDependencies` field in `pspm.json` for local packages
|
|
21
|
-
-
|
|
76
|
+
- `localPackages` in lockfile (v4) tracks installed local packages
|
|
77
|
+
- Validates that directory exists and contains SKILL.md or pspm.json
|
|
78
|
+
- Provides helpful error messages: "Directory not found", "Not a valid skill directory"
|
|
79
|
+
|
|
80
|
+
### Fixed
|
|
81
|
+
|
|
82
|
+
- **Improved error messages for `access` command**: Now provides specific feedback for different specifier types
|
|
83
|
+
- GitHub specifiers explain that visibility only applies to registry packages
|
|
84
|
+
- Local file specifiers explain they are not registry packages
|
|
85
|
+
- Invalid registry specifiers show examples of correct format
|
|
22
86
|
|
|
23
87
|
## [0.2.0] - 2026-01-23
|
|
24
88
|
|
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,6 +159,11 @@ 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
|
|
|
162
|
+
# Local directory specifiers (for development):
|
|
163
|
+
pspm add file:../my-skill # Relative path
|
|
164
|
+
pspm add file:./local-skill # Current directory relative
|
|
165
|
+
pspm add file:/absolute/path/to/skill # Absolute path
|
|
166
|
+
|
|
161
167
|
# Add multiple skills at once:
|
|
162
168
|
pspm add @user/alice/skill1 @user/bob/skill2
|
|
163
169
|
|
|
@@ -235,6 +241,30 @@ pspm update
|
|
|
235
241
|
pspm update --dry-run # Preview updates without applying
|
|
236
242
|
```
|
|
237
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
|
+
|
|
238
268
|
## Publishing
|
|
239
269
|
|
|
240
270
|
### Publish Skill
|
|
@@ -313,7 +343,7 @@ INI format configuration file:
|
|
|
313
343
|
```ini
|
|
314
344
|
; PSPM Configuration
|
|
315
345
|
|
|
316
|
-
registry = https://pspm.dev
|
|
346
|
+
registry = https://registry.pspm.dev
|
|
317
347
|
authToken = sk_...
|
|
318
348
|
username = myuser
|
|
319
349
|
|
|
@@ -345,7 +375,16 @@ Package manifest file (created with `pspm init`):
|
|
|
345
375
|
"version": "1.0.0",
|
|
346
376
|
"description": "A helpful skill for...",
|
|
347
377
|
"author": "Your Name",
|
|
348
|
-
"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
|
+
}
|
|
349
388
|
}
|
|
350
389
|
```
|
|
351
390
|
|
|
@@ -353,12 +392,12 @@ Package manifest file (created with `pspm init`):
|
|
|
353
392
|
|
|
354
393
|
```json
|
|
355
394
|
{
|
|
356
|
-
"lockfileVersion":
|
|
357
|
-
"registryUrl": "https://pspm.dev",
|
|
395
|
+
"lockfileVersion": 4,
|
|
396
|
+
"registryUrl": "https://registry.pspm.dev",
|
|
358
397
|
"packages": {
|
|
359
398
|
"@user/bsheng/vite_slides": {
|
|
360
399
|
"version": "2.0.0",
|
|
361
|
-
"resolved": "https://pspm.dev/...",
|
|
400
|
+
"resolved": "https://registry.pspm.dev/...",
|
|
362
401
|
"integrity": "sha256-abc123..."
|
|
363
402
|
}
|
|
364
403
|
},
|
|
@@ -370,6 +409,14 @@ Package manifest file (created with `pspm init`):
|
|
|
370
409
|
"gitCommit": "abc1234567890...",
|
|
371
410
|
"gitRef": "main"
|
|
372
411
|
}
|
|
412
|
+
},
|
|
413
|
+
"localPackages": {
|
|
414
|
+
"file:../my-local-skill": {
|
|
415
|
+
"version": "local",
|
|
416
|
+
"path": "../my-local-skill",
|
|
417
|
+
"resolvedPath": "/absolute/path/to/my-local-skill",
|
|
418
|
+
"name": "my-local-skill"
|
|
419
|
+
}
|
|
373
420
|
}
|
|
374
421
|
}
|
|
375
422
|
```
|
|
@@ -402,10 +449,12 @@ project/
|
|
|
402
449
|
│ ├── skills/ # Installed skills
|
|
403
450
|
│ │ ├── {username}/ # Registry skills
|
|
404
451
|
│ │ │ └── {skillname}/
|
|
405
|
-
│ │
|
|
406
|
-
│ │
|
|
407
|
-
│ │
|
|
408
|
-
│ │
|
|
452
|
+
│ │ ├── _github/ # GitHub skills
|
|
453
|
+
│ │ │ └── {owner}/
|
|
454
|
+
│ │ │ └── {repo}/
|
|
455
|
+
│ │ │ └── {path}/
|
|
456
|
+
│ │ └── _local/ # Local skill symlinks
|
|
457
|
+
│ │ └── {name} -> ../../../path/to/local/skill
|
|
409
458
|
│ └── cache/ # Tarball cache
|
|
410
459
|
├── .claude/
|
|
411
460
|
│ └── skills/ # Symlinks for claude-code agent
|
|
@@ -428,6 +477,31 @@ export PSPM_API_KEY=sk_ci_key
|
|
|
428
477
|
pspm install --frozen-lockfile
|
|
429
478
|
```
|
|
430
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
|
+
|
|
431
505
|
### Publishing Workflow
|
|
432
506
|
|
|
433
507
|
```bash
|
package/README.md
CHANGED
|
@@ -113,6 +113,15 @@ pspm link --agent codex # Recreate symlinks for specifi
|
|
|
113
113
|
|
|
114
114
|
Default is all agents (`claude-code`, `codex`, `cursor`, `gemini`, `kiro`, `opencode`). Use `--agent claude-code` to install for a single agent.
|
|
115
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
|
+
|
|
116
125
|
### Publishing
|
|
117
126
|
|
|
118
127
|
```bash
|
|
@@ -123,6 +132,9 @@ pspm unpublish <spec> --force # Remove a published skill version
|
|
|
123
132
|
pspm deprecate <spec> [msg] # Mark a version as deprecated
|
|
124
133
|
```
|
|
125
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
|
+
|
|
126
138
|
### Visibility
|
|
127
139
|
|
|
128
140
|
```bash
|
|
@@ -147,7 +159,7 @@ PSPM uses a simple npm-like INI configuration format.
|
|
|
147
159
|
|
|
148
160
|
```ini
|
|
149
161
|
; PSPM Configuration
|
|
150
|
-
registry = https://pspm.dev
|
|
162
|
+
registry = https://registry.pspm.dev
|
|
151
163
|
authToken = sk_...
|
|
152
164
|
username = myuser
|
|
153
165
|
```
|
|
@@ -165,12 +177,12 @@ registry = https://custom-registry.example.com
|
|
|
165
177
|
|
|
166
178
|
```json
|
|
167
179
|
{
|
|
168
|
-
"lockfileVersion":
|
|
169
|
-
"registryUrl": "https://pspm.dev",
|
|
180
|
+
"lockfileVersion": 4,
|
|
181
|
+
"registryUrl": "https://registry.pspm.dev",
|
|
170
182
|
"packages": {
|
|
171
183
|
"@user/username/skillname": {
|
|
172
184
|
"version": "1.0.0",
|
|
173
|
-
"resolved": "https://pspm.dev
|
|
185
|
+
"resolved": "https://registry.pspm.dev/@user/username/skillname/1.0.0",
|
|
174
186
|
"integrity": "sha256-..."
|
|
175
187
|
}
|
|
176
188
|
},
|
|
@@ -182,6 +194,14 @@ registry = https://custom-registry.example.com
|
|
|
182
194
|
"gitCommit": "abc1234567890...",
|
|
183
195
|
"gitRef": "main"
|
|
184
196
|
}
|
|
197
|
+
},
|
|
198
|
+
"localPackages": {
|
|
199
|
+
"file:../my-local-skill": {
|
|
200
|
+
"version": "local",
|
|
201
|
+
"path": "../my-local-skill",
|
|
202
|
+
"resolvedPath": "/absolute/path/to/my-local-skill",
|
|
203
|
+
"name": "my-local-skill"
|
|
204
|
+
}
|
|
185
205
|
}
|
|
186
206
|
}
|
|
187
207
|
```
|
|
@@ -206,11 +226,13 @@ project/
|
|
|
206
226
|
│ │ ├── username/ # Registry skills
|
|
207
227
|
│ │ │ └── skillname/
|
|
208
228
|
│ │ │ └── SKILL.md
|
|
209
|
-
│ │
|
|
210
|
-
│ │
|
|
211
|
-
│ │
|
|
212
|
-
│ │
|
|
213
|
-
│ │
|
|
229
|
+
│ │ ├── _github/ # GitHub skills
|
|
230
|
+
│ │ │ └── owner/
|
|
231
|
+
│ │ │ └── repo/
|
|
232
|
+
│ │ │ └── path/
|
|
233
|
+
│ │ │ └── SKILL.md
|
|
234
|
+
│ │ └── _local/ # Local skill symlinks
|
|
235
|
+
│ │ └── skillname -> ../../../path/to/local/skill
|
|
214
236
|
│ └── cache/ # Tarball cache
|
|
215
237
|
├── .claude/
|
|
216
238
|
│ └── skills/ # Symlinks for claude-code agent
|