You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
## Summary
This PR makes `skills.json` the only user-facing configuration and pin
source for skills-package-manager. It removes skills lockfile
read/write/frozen behavior, resolves installs through an in-memory plan
plus internal install state, updates add/update/patch/pnpm plugin flows,
and expands `add` compatibility with common `npx skills add` forms while
persisting GitHub sources as pinned `github:` specifiers.
Tested with `pnpm build`, `pnpm build:website`, `pnpm test`, and scoped
`biome check`.
## Related Links
https://raw.githubusercontent.com/vercel-labs/skills/refs/heads/main/README.md
## Checklist
- [x] Tests updated (or not required).
- [x] Documentation updated (or not required).
After `npx skills-package-manager add`, the newly added skills are resolved, installed or registered according to their protocol, and linked to each configured `linkTarget` immediately.
69
+
GitHub sources are written back to `skills.json` as pinned `github:owner/repo#<commit>&path:<path>` specifiers.
70
+
The `--copy` flag is accepted for `npx skills add` command-line compatibility; SPM still keeps one canonical install directory and links configured agent targets from there.
60
71
61
72
#### How it works
62
73
@@ -65,7 +76,7 @@ When given `owner/repo` or a GitHub URL:
65
76
1. Shallow-clones the repository into a temp directory
66
77
2. Scans for `SKILL.md` files (checks root, then `skills/`, `.agents/skills/`, etc.)
67
78
3. Presents an interactive multiselect prompt (powered by [@clack/prompts](https://github.com/bombshell-dev/clack))
68
-
4. Writes selected skills to `skills.json` and resolves `skills-lock.yaml`
79
+
4. Writes selected, pinned skill specifiers to `skills.json`
This resolves each skill from its specifier, installs managed skills into `installDir` (default `.agents/skills/`), registers `local:` skills in place, and creates symlinks for each `linkTarget`.
109
-
When `selfSkill` is `true`, `npx skills-package-manager install` also installs the bundled `skills-package-manager-cli` skill so users get guidance for `skills.json`, `skills-lock.yaml`, and `npx skills-package-manager` commands. This helper skill is not written to `skills-lock.yaml`.
120
+
When `selfSkill` is `true`, `npx skills-package-manager install` also installs the bundled `skills-package-manager-cli` skill so users get guidance for `skills.json`and `npx skills-package-manager` commands. This helper skill is injected at install time and is not written to `skills.json`.
110
121
If `patchedSkills` contains an entry for a managed skill, the corresponding patch file is applied after the skill is materialized. `local:` skills cannot be patched because their source directories are user-owned.
|`source`| Git URL, direct `link:` or `local:` skill path, `file:` tarball, or `npm:` package name |`https://github.com/o/r.git`, `link:./local/skills/my-skill`, `local:./.agents/skills/my-skill`, `file:./skills.tgz`, `npm:@scope/pkg`|
203
+
|`source`| Git URL or `github:` shorthand, direct `link:` or `local:` skill path, `file:` tarball, or `npm:` package name |`github:o/r`, `https://github.com/o/r.git`, `link:./local/skills/my-skill`, `local:*`, `file:./skills.tgz`, `npm:@scope/pkg@1.0.0`|
-**`link`** — Symlinks a local skill directory into `installDir`
202
213
-**`local`** — Uses an existing user-owned skill directory in place
203
214
-**`file`** — Extracts a local `tgz` package and copies the selected skill
204
-
-**`npm`** — Resolves a package from the configured npm registry, locks the tarball URL/version/integrity, and installs from the downloaded tarball
215
+
-**`npm`** — Resolves a package from the configured npm registry and installs from the downloaded tarball
205
216
206
217
`npm:` reads `registry` and scoped `@scope:registry` values from `.npmrc`. Matching `:_authToken`, `:_auth`, or `username` + `:_password` entries are also used for private registry requests.
0 commit comments