@anytio/pspm 0.11.0 → 0.13.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 CHANGED
@@ -5,6 +5,44 @@ 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.13.0] - 2026-03-24
9
+
10
+ ### Added
11
+
12
+ - **Client-side encryption for private packages**: Encrypt skill packages before publishing with AES-256-GCM encryption
13
+ - `pspm config set-encryption-key` — Set an encryption key for a scope (`@user/x` or `@org/x`)
14
+ - `pspm config get-encryption-key` — Check if an encryption key is set for a scope
15
+ - `pspm config remove-encryption-key` — Remove an encryption key for a scope
16
+ - Private packages are automatically encrypted on publish and decrypted on install when a key is configured
17
+ - Uses scrypt key derivation for secure key management
18
+
19
+ ## [0.12.0] - 2026-03-19
20
+
21
+ ### Added
22
+
23
+ - **Skill list CLI commands**: Full CRUD `pspm skill-list` command group with 8 subcommands
24
+ - `pspm skill-list list` — list your skill lists
25
+ - `pspm skill-list create <name>` — create a new skill list
26
+ - `pspm skill-list show <name>` — view list details and items
27
+ - `pspm skill-list delete <name>` — delete a skill list
28
+ - `pspm skill-list update <name>` — update list metadata
29
+ - `pspm skill-list add-skill <list> <specifier>` — add a skill to a list
30
+ - `pspm skill-list remove-skill <list> <specifier>` — remove a skill from a list
31
+ - `pspm skill-list install <name>` — install all skills from a list
32
+ - **Notebook commands**: Upload, share, and manage .anyt notebooks via CLI
33
+ - `pspm notebook upload <file>` — upload a notebook to the platform
34
+ - `pspm notebook list` — list your uploaded notebooks
35
+ - `pspm notebook download <id>` — download a notebook
36
+ - `pspm notebook delete <id>` — delete a notebook
37
+
38
+ ### Fixed
39
+
40
+ - **Audit false positives**: Fixed double path joining that caused installed skills to always report as MISSING
41
+ - **Publish with qualified names**: `@user/owner/name` format no longer rejected by server validation
42
+ - **Remove @github skills**: GitHub-indexed skills can now be removed by short name
43
+ - **Outdated command crash**: Fixed crash on @github namespace packages in lockfile
44
+ - **Manifest validation**: Regex now accepts qualified name format in pspm.json
45
+
8
46
  ## [0.11.0] - 2026-03-17
9
47
 
10
48
  ### Added
@@ -76,7 +114,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
76
114
  - **`audit` command**: Verify integrity of installed skills
77
115
  - Checks for missing packages, deprecated versions, corrupted installations
78
116
  - `--json` flag for CI integration
79
- - **Expanded agent support**: From 6 to 41 supported AI coding agents
117
+ - **Expanded agent support**: From 6 to 41 supported AI agents
80
118
  - Added Windsurf, Amp, Augment, Cline, Continue, Goose, Kilo Code, Kiro CLI, OpenCode, OpenHands, Replit, Roo Code, Trae, and 22 more
81
119
 
82
120
  ### Changed
@@ -103,7 +141,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
103
141
 
104
142
  ### Fixed
105
143
 
106
- - **Fix npm install failure**: Moved `@repo/pspm-types` and `@repo/skill-registry` from `dependencies` to `devDependencies` to prevent npm from trying to install workspace-only packages from the public registry
144
+ - **Fix npm install failure**: Moved `@repo/types` and `@repo/skill-registry` from `dependencies` to `devDependencies` to prevent npm from trying to install workspace-only packages from the public registry
107
145
 
108
146
  ## [0.7.1] - 2026-03-02
109
147
 
package/CLI_GUIDE.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # PSPM CLI Guide
2
2
 
3
- PSPM is a package manager for AI agent skills. It provides commands for authentication, configuration, skill management, and publishing across AI coding agents.
3
+ PSPM is a package manager for AI agent skills. It provides commands for authentication, configuration, skill management, and publishing across AI agents.
4
4
 
5
5
  ## Installation
6
6
 
@@ -24,7 +24,7 @@ Options:
24
24
  -h, --help display help for command
25
25
 
26
26
  Commands:
27
- config Manage PSPM configuration
27
+ config Manage PSPM configuration (show, init, set-encryption-key, get-encryption-key, remove-encryption-key)
28
28
  login [options] Log in via browser or with an API key
29
29
  logout Log out and clear stored credentials
30
30
  whoami Show current user information
@@ -36,11 +36,17 @@ 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
+ search|find [options] [query] Search and discover skills from the registry
40
+ audit [options] Verify integrity of installed skills
41
+ outdated [options] [packages...] Check for outdated skills
39
42
  version <bump> Bump package version (major, minor, patch)
40
43
  publish [options] Publish current directory as a skill
41
44
  unpublish [options] <specifier> Remove a published skill version (only within 72 hours of publishing)
42
45
  access [options] [specifier] Change package visibility (public/private)
43
46
  deprecate [options] <specifier> [message] Mark a skill version as deprecated (alternative to unpublish after 72 hours)
47
+ skill-list Manage skill lists (list, create, show, update, delete, add-skill, remove-skill, install)
48
+ notebook Manage notebooks (upload, list, download, delete)
49
+ upgrade Update pspm itself to the latest version
44
50
  help [command] display help for command
45
51
  ```
46
52
 
@@ -171,6 +177,7 @@ pspm add @user/alice/skill1 @user/bob/skill2
171
177
  pspm add @user/skill --agent claude-code,cursor # Link to multiple agents
172
178
  pspm add github:owner/repo --agent none # Skip symlink creation
173
179
  pspm add @user/skill -y # Skip agent selection prompt
180
+ pspm add @user/skill -g # Install to user home directory
174
181
  ```
175
182
 
176
183
  ### Remove Skill
@@ -193,6 +200,9 @@ pspm ls
193
200
  # JSON output for scripting
194
201
  pspm list --json
195
202
 
203
+ # List global skills
204
+ pspm list -g
205
+
196
206
  # Example output:
197
207
  # Installed skills:
198
208
  #
@@ -219,9 +229,14 @@ pspm install --dir ./vendor/skills # Install to specific directory
219
229
  pspm install --agent claude-code,cursor # Link to multiple agents
220
230
  pspm install --agent none # Skip symlink creation
221
231
  pspm install -y # Skip agent selection prompt
232
+ pspm install -g # Install to user home directory
222
233
 
223
234
  # Install specific packages (like npm):
224
235
  pspm install @user/alice/skill1 github:org/repo
236
+
237
+ # Install all skills from a skill list:
238
+ pspm install --list @user/alice/my-favorites
239
+ pspm install --list @org/myteam/starter-kit
225
240
  ```
226
241
 
227
242
  ### Link Skills
@@ -232,6 +247,7 @@ Recreate agent symlinks without reinstalling (useful after adding agents):
232
247
  pspm link
233
248
  pspm link --agent claude-code,cursor # Link to specific agents
234
249
  pspm link -y # Skip agent selection prompt
250
+ pspm link -g # Recreate global agent symlinks
235
251
  ```
236
252
 
237
253
  ### Update Skills
@@ -241,6 +257,39 @@ pspm update
241
257
  pspm update --dry-run # Preview updates without applying
242
258
  ```
243
259
 
260
+ ### Search Skills
261
+
262
+ Search and discover skills from the registry:
263
+
264
+ ```bash
265
+ pspm search typescript # Search by keyword
266
+ pspm find react # Alias for search
267
+ pspm search react --json # JSON output
268
+ pspm search --sort recent --limit 10
269
+ ```
270
+
271
+ ### Check Outdated Skills
272
+
273
+ ```bash
274
+ pspm outdated # Check all packages
275
+ pspm outdated code-review # Check specific package
276
+ pspm outdated --json # JSON output
277
+ pspm outdated --all # Include up-to-date packages
278
+ ```
279
+
280
+ Exits with code `1` if any packages are outdated.
281
+
282
+ ### Audit Skills
283
+
284
+ Verify integrity of installed skills:
285
+
286
+ ```bash
287
+ pspm audit # Human-readable output
288
+ pspm audit --json # JSON output (for CI)
289
+ ```
290
+
291
+ Checks for: missing packages, deprecated versions, corrupted installations.
292
+
244
293
  ## Versioning
245
294
 
246
295
  ### Bump Version
@@ -272,12 +321,15 @@ The command:
272
321
  Publish the current directory as a skill:
273
322
 
274
323
  ```bash
275
- pspm publish
276
- pspm publish --bump patch # Auto-bump version (major, minor, patch)
277
- pspm publish --bump minor --tag beta
278
- pspm publish --access public # Publish and make public in one step
324
+ pspm publish --access public # Publish as public
325
+ pspm publish --access private # Publish as private
326
+ pspm publish --access team --org myorg # Publish under org
327
+ pspm publish --access public --bump patch # Auto-bump version
328
+ pspm publish --access public --bump minor --tag beta
279
329
  ```
280
330
 
331
+ The `--access` flag is required and must be `public`, `private`, or `team`.
332
+
281
333
  **Required `pspm.json` fields:**
282
334
  - `name` - Skill name (e.g., `@user/username/skillname`)
283
335
  - `version` - Semver version
@@ -334,6 +386,88 @@ pspm access @user/bsheng/vite_slides --public
334
386
  - **Private packages** (default): Require authentication to download
335
387
  - **Public packages**: Anyone can download without authentication
336
388
 
389
+ ## Client-Side Encryption
390
+
391
+ Private packages can be encrypted before upload so that the PSPM server and storage (R2) only ever see ciphertext. The encryption key never leaves your machine.
392
+
393
+ ### How It Works
394
+
395
+ - **Publish:** If an encryption key is set for the package scope, the CLI encrypts the tarball with AES-256-GCM before uploading. The server stores only ciphertext.
396
+ - **Install:** The CLI checks the package manifest for encryption metadata. If present, it decrypts the tarball locally before extracting.
397
+ - **Public packages** are never encrypted — encryption only applies to `private` and `team` visibility.
398
+
399
+ ### Set an Encryption Key
400
+
401
+ Each scope (`@user/yourname` or `@org/orgname`) has one encryption key. All private packages under that scope use the same key.
402
+
403
+ ```bash
404
+ # Set encryption key for your user scope
405
+ pspm config set-encryption-key @user/yourname my-secret-passphrase
406
+
407
+ # Set encryption key for an organization
408
+ pspm config set-encryption-key @org/myorg shared-team-secret
409
+ ```
410
+
411
+ Or use environment variables:
412
+
413
+ ```bash
414
+ export PSPM_ENCRYPTION_KEY_USER_YOURNAME="my-secret-passphrase"
415
+ export PSPM_ENCRYPTION_KEY_ORG_MYORG="shared-team-secret"
416
+ ```
417
+
418
+ ### Manage Encryption Keys
419
+
420
+ ```bash
421
+ # Check if a key is set
422
+ pspm config get-encryption-key @user/yourname
423
+
424
+ # Remove a key
425
+ pspm config remove-encryption-key @user/yourname
426
+ ```
427
+
428
+ ### Publish with Encryption
429
+
430
+ When you publish a private package and an encryption key is configured for the scope, the CLI automatically encrypts:
431
+
432
+ ```bash
433
+ pspm config set-encryption-key @user/yourname my-secret
434
+ pspm publish --access private
435
+ # Output: pspm notice Encrypting package (scope: @user/yourname)
436
+ ```
437
+
438
+ If no encryption key is set, the package is uploaded unencrypted with a warning.
439
+
440
+ ### Install Encrypted Packages
441
+
442
+ ```bash
443
+ # Set the same key used during publish
444
+ pspm config set-encryption-key @user/yourname my-secret
445
+
446
+ # Install as usual — decryption is automatic
447
+ pspm install
448
+ ```
449
+
450
+ If you don't have the key, the CLI will show an error with instructions:
451
+
452
+ ```
453
+ Error: Package @user/yourname/my-skill is encrypted.
454
+ Set the key: pspm config set-encryption-key @user/yourname <passphrase>
455
+ ```
456
+
457
+ ### Team Sharing
458
+
459
+ For organization packages, share the encryption key with team members through a secure channel (e.g., a password manager). Each team member adds it to their local config:
460
+
461
+ ```bash
462
+ pspm config set-encryption-key @org/myorg shared-team-secret
463
+ ```
464
+
465
+ ### Important Notes
466
+
467
+ - **Key loss = data loss.** If you lose your encryption key, encrypted packages cannot be recovered. Back up your keys.
468
+ - The server stores encryption metadata (algorithm, salt, IV) alongside the package — these are not secrets and are safe to store publicly.
469
+ - Encryption is opt-in. If no key is configured, private packages are uploaded unencrypted.
470
+
337
471
  ## Configuration Files
338
472
 
339
473
  ### User Config: `~/.pspmrc`
@@ -353,6 +487,10 @@ username = myuser
353
487
  ; Multi-registry: Per-registry tokens (optional)
354
488
  //pspm.dev:authToken = sk_public_token
355
489
  //corp.pspm.io:authToken = sk_corp_token
490
+
491
+ ; Encryption keys (optional)
492
+ encryption-key:@user/yourname = my-secret-passphrase
493
+ encryption-key:@org/myorg = shared-team-secret
356
494
  ```
357
495
 
358
496
  ### Project Config: `.pspmrc`
@@ -437,6 +575,7 @@ Configuration is resolved in priority order:
437
575
  | `PSPM_API_KEY` | Override API key |
438
576
  | `PSPM_DEBUG` | Enable debug logging |
439
577
  | `GITHUB_TOKEN` | GitHub token for private repos and higher rate limits |
578
+ | `PSPM_ENCRYPTION_KEY_<SCOPE>` | Encryption key for a scope (e.g., `PSPM_ENCRYPTION_KEY_USER_ALICE`) |
440
579
 
441
580
  ## Directory Structure
442
581
 
@@ -513,6 +652,106 @@ pspm init
513
652
  pspm publish --bump patch
514
653
  ```
515
654
 
655
+ ## Skill Lists
656
+
657
+ ### List Skill Lists
658
+
659
+ ```bash
660
+ pspm skill-list list # Your lists
661
+ pspm skill-list list --org myorg # Organization's lists
662
+ pspm skill-list list --json # JSON output
663
+ ```
664
+
665
+ ### Create Skill List
666
+
667
+ ```bash
668
+ pspm skill-list create my-favorites
669
+ pspm skill-list create my-favorites --visibility public
670
+ pspm skill-list create team-tools --org myorg -d "Our team's tools"
671
+ ```
672
+
673
+ ### Show Skill List
674
+
675
+ ```bash
676
+ pspm skill-list show @user/alice/my-favorites
677
+ pspm skill-list show @org/myorg/team-tools --json
678
+ ```
679
+
680
+ ### Update Skill List
681
+
682
+ ```bash
683
+ pspm skill-list update @user/alice/my-favorites --description "Updated desc"
684
+ pspm skill-list update @user/alice/my-favorites --visibility public
685
+ ```
686
+
687
+ ### Delete Skill List
688
+
689
+ ```bash
690
+ pspm skill-list delete @user/alice/my-favorites
691
+ ```
692
+
693
+ ### Add Skill to List
694
+
695
+ ```bash
696
+ pspm skill-list add-skill @user/alice/my-favorites @user/bob/code-review
697
+ pspm skill-list add-skill @user/alice/my-favorites @user/bob/lint --note "Great for CI"
698
+ ```
699
+
700
+ ### Remove Skill from List
701
+
702
+ ```bash
703
+ pspm skill-list remove-skill @user/alice/my-favorites @user/bob/code-review
704
+ ```
705
+
706
+ ### Install from Skill List
707
+
708
+ ```bash
709
+ pspm skill-list install @user/alice/my-favorites
710
+ pspm skill-list install @org/myorg/team-tools --agent claude-code
711
+ ```
712
+
713
+ ## Notebook Management
714
+
715
+ ### Upload Notebook
716
+
717
+ ```bash
718
+ pspm notebook upload notebook.anyt.md
719
+ pspm notebook upload notebook.anyt.md --visibility public
720
+ pspm notebook upload notebook.anyt.md --org myorg
721
+ ```
722
+
723
+ ### List Notebooks
724
+
725
+ ```bash
726
+ pspm notebook list
727
+ pspm notebook list --org myorg
728
+ pspm notebook list --json
729
+ ```
730
+
731
+ ### Download Notebook
732
+
733
+ ```bash
734
+ pspm notebook download <id>
735
+ ```
736
+
737
+ ### Delete Notebook
738
+
739
+ ```bash
740
+ pspm notebook delete <id>
741
+ ```
742
+
743
+ ## Self-Update
744
+
745
+ ### Upgrade PSPM
746
+
747
+ Update pspm itself to the latest version:
748
+
749
+ ```bash
750
+ pspm upgrade
751
+ ```
752
+
753
+ 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.
754
+
516
755
  ## Troubleshooting
517
756
 
518
757
  | Error | Solution |
package/README.md CHANGED
@@ -128,6 +128,8 @@ pspm install
128
128
  | `pspm init` | Create pspm.json manifest |
129
129
  | `pspm publish` | Publish skill to registry |
130
130
  | `pspm login` | Authenticate via browser or API key |
131
+ | `pspm skill-list <subcommand>` | Manage skill lists (list, create, show, delete, update, add-skill, remove-skill, install) |
132
+ | `pspm notebook <subcommand>` | Manage notebooks (upload, list, download, delete) |
131
133
  | `pspm upgrade` | Update pspm itself to the latest version |
132
134
 
133
135
  ### `pspm install`
@@ -443,7 +445,7 @@ project/
443
445
  | | +-- _local/ # Local skill symlinks
444
446
  | +-- cache/ # Tarball cache
445
447
  +-- .claude/
446
- | +-- skills/ # Symlinks for Claude Code
448
+ | +-- skills/ # Symlinks for Claude Code (and other agents)
447
449
  +-- .cursor/
448
450
  +-- skills/ # Symlinks for Cursor (if configured)
449
451
  ```
@@ -511,3 +513,5 @@ Auto-detects your package manager (pnpm, npm, yarn, bun). The CLI also checks fo
511
513
  ## License
512
514
 
513
515
  This project is licensed under [The Artistic License 2.0](LICENSE), the same license used by npm.
516
+
517
+ <!-- @doc-sync: 1f5c64d | 2026-03-18 10:30 -->