skilllib 1.12.2 → 1.14.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/README.md +24 -15
- package/dist/{chunk-YQFLFWAY.js → chunk-XMXC2XM2.js} +844 -112
- package/dist/index.js +31 -9
- package/dist/json.d.cts +702 -2
- package/dist/json.d.ts +702 -2
- package/dist/{tui-P3HKRNHI.js → tui-N6NRJYLZ.js} +30 -20
- package/package.json +6 -2
- package/skills/skilllib/SKILL.md +9 -7
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@ and every agent you use can see them.
|
|
|
9
9
|
[](https://www.npmjs.com/package/skilllib)
|
|
10
10
|
[](LICENSE)
|
|
11
11
|

|
|
12
|
-

|
|
12
|
+

|
|
13
13
|
|
|
14
14
|
```bash
|
|
15
15
|
npm install -g skilllib && skilllib agent-skill install
|
|
@@ -59,7 +59,7 @@ Most agents can't turn off a global skill for just one repo. Claude Code can, bu
|
|
|
59
59
|
- **🖥 An app when you want to look yourself.** `skilllib` opens a terminal app with the same data and fixes, and can copy a review prompt for any agent.
|
|
60
60
|
- **🛟 Nothing is lost.** Your library keeps the skills you remove from a repo, and everything else skilllib removes goes to a backup you can restore with one key.
|
|
61
61
|
|
|
62
|
-
Everything runs locally: no server
|
|
62
|
+
Everything runs locally: no server and no account. `skilllib install` and `skilllib search` are the exception: they talk to [skills.sh](https://skills.sh) and GitHub to fetch a skill.
|
|
63
63
|
|
|
64
64
|
---
|
|
65
65
|
|
|
@@ -72,9 +72,10 @@ It needs **Node.js 22+** and works on macOS and Linux. Windows support is newer:
|
|
|
72
72
|
```bash
|
|
73
73
|
npm install -g skilllib
|
|
74
74
|
skilllib agent-skill install
|
|
75
|
+
skilllib install anthropics/skills@frontend-design
|
|
75
76
|
```
|
|
76
77
|
|
|
77
|
-
|
|
78
|
+
`skilllib agent-skill install` puts the `skilllib` skill where your agents look, in every repo (see [Use it from your agents](#use-it-from-your-agents)). Start a new agent session in any repo and ask away. `skilllib install` puts a skill in your library and, when you run it inside a repo, adds it there so every agent you use can see it. `skilllib search react` finds skills on [skills.sh](https://skills.sh). To load one in every repo, add `--global`.
|
|
78
79
|
|
|
79
80
|
### In the app
|
|
80
81
|
|
|
@@ -84,7 +85,7 @@ skilllib # or: npx skilllib
|
|
|
84
85
|
|
|
85
86
|
On first run, skilllib asks two things:
|
|
86
87
|
|
|
87
|
-
1. **Which agents you use
|
|
88
|
+
1. **Which agents you use.** The ones installed on your machine are pre-selected. `skilllib harnesses` lists every one skilllib knows.
|
|
88
89
|
2. **Where your projects live**, e.g. `~/Projects`. It finds every git repo in there, and rescans each time it opens. Agent worktrees (`<repo>/.claude/worktrees/*`) aren't counted as projects.
|
|
89
90
|
|
|
90
91
|
Then a good first session looks like this:
|
|
@@ -97,7 +98,7 @@ Then a good first session looks like this:
|
|
|
97
98
|
|
|
98
99
|
## Use it from your agents
|
|
99
100
|
|
|
100
|
-
`skilllib agent-skill install` puts a small `skilllib` skill
|
|
101
|
+
`skilllib agent-skill install` puts a small `skilllib` skill in the global skill folders your agents read: one real copy (usually `~/.claude/skills` or `~/.agents/skills`) and a link in each of the others. This is the one skill that should be global, because it's about every repo. Upgrading skilllib keeps it up to date, and `skilllib agent-skill remove` takes it out. Agents use it from their next session.
|
|
101
102
|
|
|
102
103
|
Then ask in plain words. A few examples, with what the agent runs:
|
|
103
104
|
|
|
@@ -192,10 +193,10 @@ These are the issues `skilllib doctor` reports, with the same fixes and choices.
|
|
|
192
193
|
|
|
193
194
|
A skill's pin goes in one of two places:
|
|
194
195
|
|
|
195
|
-
-
|
|
196
|
-
-
|
|
196
|
+
- **Your personal pins (`~/.skilllib/pins/`).** The default. One file per repo, matched by its `origin` remote, so every clone and worktree of the repo shares it. skilllib keeps the copies and links out of git through the repo's `.git/info/exclude` (only your clone; the repo's `.gitignore` doesn't change). Nothing shows up in `git status`. A repo that already has `skilllib.json` still gets new skills here.
|
|
197
|
+
- **`skilllib.json` in the repo (shared).** Only when you share a skill with the team: `skilllib add <name> --shared`, or *Pin it for the team* in the app. Commit it with the skill folders, and teammates get that skill.
|
|
197
198
|
|
|
198
|
-
`
|
|
199
|
+
`--personal` moves a shared pin back to yours, without changing its version. A copy git already has can't become personal. A skill pinned in both places uses the repo's pin; doctor offers to drop yours (a choice: yours would keep the skill if the team unpinned it). The app tags a personal skill `personal v2`.
|
|
199
200
|
|
|
200
201
|
**On another machine:** keep `~/.skilllib/pins/` and `~/.skilllib/library/` in git (a dotfiles repo, say). Clone a repo there and run `skilllib sync`: your personal skills come back, out of git again. A repo without a remote keeps its pins by folder, so they stay on that machine until it gets one: adding a remote (or renaming it) keeps them. Only a repo's top folder can have personal pins, not a monorepo package's.
|
|
201
202
|
|
|
@@ -248,7 +249,7 @@ Every plugin issue is *your call*: turning plugins on or off, or updating them,
|
|
|
248
249
|
|
|
249
250
|
The details list its skills with their uses, what else it brings, where it's installed and its version. Its actions:
|
|
250
251
|
|
|
251
|
-
- **Turn it on / off**: `claude plugin enable|disable --scope <scope>`, run in its repo for a project or local install. A plugin synced from claude.ai is switched by its `"<name>@synced"` line in `~/.claude/settings.json`; so is any plugin when the `claude` command isn't available.
|
|
252
|
+
- **Turn it on / off**: `skilllib plugin off <id>` and `skilllib plugin on <id>` (`name@marketplace`). That switches the copy that loads in every repo and leaves a per-repo install on. The same switch is `claude plugin enable|disable --scope <scope>`, run in its repo for a project or local install. A plugin synced from claude.ai is switched by its `"<name>@synced"` line in `~/.claude/settings.json`; so is any plugin when the `claude` command isn't available.
|
|
252
253
|
- **Update to vN**, when its marketplace (as Claude Code last fetched it) declares a newer version or commit: `claude plugin update`. If the marketplace asks to run a command, skilllib doesn't confirm it for you: it tells you to run the update yourself.
|
|
253
254
|
- **Uninstall**: `claude plugin uninstall --keep-data`, where it's installed. Settings › Backups reinstalls it, in the same repo for a project install.
|
|
254
255
|
- **Replace *plugin* with library skills…** copies all its skills into your library (grouped under the plugin), adds them to the repos you tick, and uninstalls the plugin. A plugin can't be half removed, so it's all its skills at once; the confirmation says what else it brings that goes too. If the `claude` command isn't available, skilllib turns the plugin off instead and tells you to finish with `/plugin uninstall`. Plugins synced from claude.ai can't be removed from here: skilllib copies their skills, turns the plugin off, and tells you to remove it on claude.ai.
|
|
@@ -384,9 +385,13 @@ Everything the app does also works as a command, for your agents, scripts and CI
|
|
|
384
385
|
|
|
385
386
|
```
|
|
386
387
|
skilllib open the app (prints `status` when piped)
|
|
388
|
+
skilllib install <source>... install from skills.sh, GitHub, or a folder (owner/repo, owner/repo@name, a URL)
|
|
389
|
+
in a repo, also adds them here; --global loads them in every repo; --all installs every skill in a repo
|
|
390
|
+
skilllib search <query> search skills.sh
|
|
391
|
+
|
|
387
392
|
skilllib scan [folder...] add project folders and scan them
|
|
388
393
|
skilllib folders [add|remove] show or change project folders
|
|
389
|
-
skilllib harnesses [id...] show or set your agents (
|
|
394
|
+
skilllib harnesses [id...] show or set your agents (skilllib harnesses lists them)
|
|
390
395
|
|
|
391
396
|
skilllib status this repo's skills, which agents load them, and issues
|
|
392
397
|
skilllib add | remove <name> change this repo's skills
|
|
@@ -404,6 +409,8 @@ skilllib new <name> [desc] create a skill
|
|
|
404
409
|
|
|
405
410
|
skilllib projects your projects and their skills
|
|
406
411
|
skilllib usage [--days N] which skills Claude Code used (a plugin's copy counts for the skill's name)
|
|
412
|
+
skilllib check [--days N] what loaded skills cost on every prompt, and which had no use
|
|
413
|
+
skilllib plugin off|on <id> turn a Claude Code plugin off or on (it stays installed)
|
|
407
414
|
skilllib doctor [--fix] find (and fix) problems
|
|
408
415
|
skilllib apply <id> [choice] apply one problem's fix, or the choice you pick (ids from status or doctor --json)
|
|
409
416
|
skilllib restore [name] put back something skilllib moved out (copies moved together come back together)
|
|
@@ -419,7 +426,7 @@ Flags: `--personal` / `--shared` (for `add`: pin in your personal pins or in the
|
|
|
419
426
|
|
|
420
427
|
A command exits 1 when it couldn't do all you asked: a skill skipped (not in the library, or local edits in the way), links git-tracked folders blocked, a link something else is in the way of (a file or another copy), an unknown `tidy` name or `--keep` folder, or (with `--all`, and `projects`) a repo left out because its `skilllib.json` can't be read. What it did do is still done, and listed. An unknown or misspelled flag is an error too, so a typo never runs silently. With `--json`, an error that stops a command prints `{"error": "…"}` on stdout as well as the message on stderr. The commands SKILL.md lists as messages-only print nothing on stdout otherwise: read their exit code.
|
|
421
428
|
|
|
422
|
-
**`--json`** prints one line of JSON on stdout, for scripts and agents. Messages and warnings go to stderr. It works with `status`, `list`, `show`, `projects`, `outdated`, `usage`, `doctor`, `apply`, `add`, `remove`, `sync`, `update`, `import`, `global move` and `
|
|
429
|
+
**`--json`** prints one line of JSON on stdout, for scripts and agents. Messages and warnings go to stderr. It works with `status`, `list`, `show`, `projects`, `outdated`, `usage`, `doctor`, `apply`, `add`, `remove`, `sync`, `update`, `import`, `global move`, `agent-skill`, `check` and `plugin`. The output is shaped to keep agents fast and cheap:
|
|
423
430
|
|
|
424
431
|
- **`status --json`** answers everything about the repo in one call:
|
|
425
432
|
- the repo's skills, with their source, version, state and git state
|
|
@@ -450,11 +457,13 @@ A field is only removed or changed in a major version.
|
|
|
450
457
|
|
|
451
458
|
| Path | What |
|
|
452
459
|
|---|---|
|
|
453
|
-
| `<repo>/skilllib.json` |
|
|
460
|
+
| `<repo>/skilllib.json` | Skills you shared with the team (`--shared`). **Commit it** with the skill folders. Absent until then |
|
|
454
461
|
| `~/.skilllib/pins/` | Your personal pins, one file per repo (by its remote). Keep it in git with your library to use them on other machines. |
|
|
455
462
|
| `~/.skilllib/library/` | Your skills (master copies). Worth putting under git. |
|
|
456
463
|
| `~/.skilllib/store/` | Every version of every skill, immutable |
|
|
457
464
|
| `~/.skilllib/config.json` | Your agents, project folders, hidden projects, skills you keep global |
|
|
465
|
+
| `~/.skilllib/projects.json` | Repos skilllib has seen. Rewritten only when that list changes |
|
|
466
|
+
| `~/.skilllib/usage-cache.json` | Parsed Claude Code transcripts, so the next `status` doesn't read them again. Safe to delete |
|
|
458
467
|
| `~/.skilllib/trash/`, `global-backup/`, `tidy-backup/`, `edit-backup/` | Everything skilllib removed, restorable from Settings › Backups |
|
|
459
468
|
| `~/.skilllib/plugin-backup.json` | Plugins skilllib uninstalled (with their scope and repo), so Settings › Backups can reinstall them |
|
|
460
469
|
| `~/.skilllib/review-prompt.md` | The last review prompt you copied |
|
|
@@ -464,11 +473,11 @@ Environment variables: `SKILLLIB_HOME` moves `~/.skilllib`, `$VISUAL` / `$EDITOR
|
|
|
464
473
|
|
|
465
474
|
## FAQ
|
|
466
475
|
|
|
467
|
-
**Does it change my repos?** Only when you tell it to: adding, removing, linking or tidying a skill
|
|
476
|
+
**Does it change my repos?** Only when you tell it to: adding, removing, linking or tidying a skill. That updates your `~/.skilllib/pins/` and the repo's `.git/info/exclude`, or `skilllib.json` when you share a skill with the team. It asks before linking a shared skill into a folder git tracks, and before tidy changes a committed file. It never deletes the only copy of a repo's own skill.
|
|
468
477
|
|
|
469
478
|
**Can I share skills with my team?** Commit `skilllib.json` along with the skill folders (`.agents/skills`, and `.claude/skills` if you use Claude Code). Or keep `~/.skilllib/library` in a git repo of its own (the rest of `~/.skilllib` is personal: config, backups, the version store), and run `skilllib import` on teammates' machines from a clone of it.
|
|
470
479
|
|
|
471
|
-
**Do I have to commit `skilllib.json`?**
|
|
480
|
+
**Do I have to commit `skilllib.json`?** Only for a skill you shared with the team (`skilllib add <name> --shared`). Everything else stays in your personal pins, out of git. See [Personal or shared pins](#personal-or-shared-pins).
|
|
472
481
|
|
|
473
482
|
**Why does usage only count Claude Code?** It's the only agent whose transcripts skilllib reads. Grok keeps sessions under `~/.grok/sessions`, and Cursor doesn't keep them locally. Codex's format hasn't been tested yet. That's why "unused" is a strong hint, not proof.
|
|
474
483
|
|
|
@@ -477,7 +486,7 @@ Environment variables: `SKILLLIB_HOME` moves `~/.skilllib`, `$VISUAL` / `$EDITOR
|
|
|
477
486
|
- Turning off Cursor marketplace plugins: skilllib lists them and reports ones that duplicate your skills, but Cursor doesn't record which plugins are on in a file skilllib can read.
|
|
478
487
|
- Installing plugins from a marketplace: use `/plugin` in Claude Code. Plugins a repo's own `.claude/settings.json` turns on without installing them aren't listed in Plugins yet.
|
|
479
488
|
- Unloading a `npx skills` skill doesn't update that tool's lock file.
|
|
480
|
-
- Downloading skills: skilllib
|
|
489
|
+
- Downloading skills: `skilllib install owner/repo`, `owner/repo@skill`, a skills.sh or GitHub URL, or a local folder. It imports into your library and, in a repo, adds the skill here. `--global` loads it in every repo. `skilllib search <query>` looks up skills.sh. A repo with many skills is listed until you name one or pass `--all`. Everything else skilllib does stays on this machine.
|
|
481
490
|
|
|
482
491
|
---
|
|
483
492
|
|