skilllib 1.11.7 → 1.12.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/README.md +19 -5
- package/dist/{chunk-PKQPUIN3.js → chunk-LORSEDNW.js} +805 -601
- package/dist/index.js +6 -4
- package/dist/json.d.cts +6 -0
- package/dist/json.d.ts +6 -0
- package/dist/{tui-B5PF3J3E.js → tui-3QD6RQGL.js} +165 -135
- package/package.json +1 -1
- package/skills/skilllib/SKILL.md +3 -3
package/README.md
CHANGED
|
@@ -180,13 +180,24 @@ These are the issues `skilllib doctor` reports, with the same fixes and choices.
|
|
|
180
180
|
### Adding and removing skills
|
|
181
181
|
|
|
182
182
|
- **+ Add a skill…** searches your library. Tick several with `space` and add them in one go; a plugin's skills (e.g. ponytail and its `ponytail-*` commands) sit under one row that ticks or adds them all. Its last rows create a new skill (it opens in `$EDITOR`, and goes into the repo when you close it) or copy a prompt for an agent to write it.
|
|
183
|
-
- **Adding** copies the newest version into the fewest folders your agents read, and
|
|
183
|
+
- **Adding** copies the newest version into the fewest folders your agents read, and pins it (see [Personal or shared pins](#personal-or-shared-pins)). Agents pick it up in their next session. The layout matches `npx skills`' symlink option: the real copy lives in `.agents/skills`, which nearly every agent reads, and Claude Code gets a link. Grok reads `.agents/skills` and, by default, `.claude/skills`, so it never needs its own copy.
|
|
184
184
|
- Claude Code, with or without Cursor or Grok: `.claude/skills/<name>`.
|
|
185
185
|
- Cursor, Codex, Zed or Grok without Claude Code: `.agents/skills/<name>`.
|
|
186
186
|
- Claude Code plus Codex or Zed: the copy goes in `.agents/skills`, with a link in `.claude/skills`. Claude Code only reads `.claude/skills`, and Codex and Zed don't read it.
|
|
187
187
|
- **Remove from repo** deletes that copy and its links; your library keeps it. When the copy itself sits where skilllib doesn't write (a skills folder that links out of the repo, or a file where the copy goes), it drops just the pin and leaves that copy as it is; a link in such a folder is left too, and said. In the app, an untracked copy goes to Settings › Backups instead (`skilllib remove` only removes skills skilllib manages). If you edited a tracked skill here, skilllib asks first, and the edits go to Settings › Backups.
|
|
188
188
|
- **The repo's own skills are never deleted by skilllib.** You can copy them into your library, or link them so every agent sees them.
|
|
189
|
-
- **Git-tracked folders:** if the repo commits the folder a link would go into (common for `.agents/skills`), the app asks once and remembers your yes for that repo (in `~/.skilllib/config.json`, `
|
|
189
|
+
- **Git-tracked folders:** if the repo commits the folder a link would go into (common for `.agents/skills`), the app asks once and remembers your yes for that repo (in `~/.skilllib/config.json`, `allowTracked`); on the command line, `--allow-tracked` allows it for that one command (doctor's *Add links everywhere* choice remembers it, as the app does). If you say no, it tells you which agents can't see the skill there. A skill whose copy git doesn't share (not committed, and not in a folder the repo commits) never gets a link in a committed folder: teammates would get a broken link.
|
|
190
|
+
|
|
191
|
+
### Personal or shared pins
|
|
192
|
+
|
|
193
|
+
A skill's pin goes in one of two places:
|
|
194
|
+
|
|
195
|
+
- **`skilllib.json` in the repo (shared).** Commit it with the skill folders, and teammates get the same skills. This is where pins go when the repo already has a `skilllib.json`.
|
|
196
|
+
- **Your personal pins (`~/.skilllib/pins/`).** 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`. This is where pins go when the repo has no `skilllib.json`.
|
|
197
|
+
|
|
198
|
+
`skilllib add <name> --personal` or `--shared` picks the place, and moves an existing pin without changing its version. In the app, a library skill's actions offer *Make it personal* or *Pin it for the team*, and its tag says `personal v2`. 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).
|
|
199
|
+
|
|
200
|
+
**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.
|
|
190
201
|
|
|
191
202
|
### Versions
|
|
192
203
|
|
|
@@ -404,7 +415,7 @@ skilllib --version
|
|
|
404
415
|
|
|
405
416
|
The repo commands (`status`, `add`, `remove`, `sync`, `outdated`, `update`, `link`, `tidy`) work in a git repo or a folder with `skilllib.json`, and never in your home folder: skills there would load in every repo. Elsewhere they stop with an error. `--all`, `tidy --global` and `status --json` work from any folder; outside a repo, `status --json` lists only the global skills.
|
|
406
417
|
|
|
407
|
-
Flags: `--force` (overwrite local edits, backed up to `~/.skilllib/edit-backup`), `--allow-tracked` (link into git-tracked folders, for that command only; skills git doesn't share are still left out), `--days N`, `--json`. For `tidy`: `--dry-run` (preview), `--allow-git` (also change committed files), `<name> --keep <folder>` (the copy that wins when copies differ).
|
|
418
|
+
Flags: `--personal` / `--shared` (for `add`: pin in your personal pins or in the repo's `skilllib.json`; see [Personal or shared pins](#personal-or-shared-pins)), `--force` (overwrite local edits, backed up to `~/.skilllib/edit-backup`), `--allow-tracked` (link into git-tracked folders, for that command only; skills git doesn't share are still left out), `--days N`, `--json`. For `tidy`: `--dry-run` (preview), `--allow-git` (also change committed files), `<name> --keep <folder>` (the copy that wins when copies differ).
|
|
408
419
|
|
|
409
420
|
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.
|
|
410
421
|
|
|
@@ -439,7 +450,8 @@ A field is only removed or changed in a major version.
|
|
|
439
450
|
|
|
440
451
|
| Path | What |
|
|
441
452
|
|---|---|
|
|
442
|
-
| `<repo>/skilllib.json` | The repo's skills and pinned versions. **Commit it.** |
|
|
453
|
+
| `<repo>/skilllib.json` | The repo's shared skills and pinned versions. **Commit it.** |
|
|
454
|
+
| `~/.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. |
|
|
443
455
|
| `~/.skilllib/library/` | Your skills (master copies). Worth putting under git. |
|
|
444
456
|
| `~/.skilllib/store/` | Every version of every skill, immutable |
|
|
445
457
|
| `~/.skilllib/config.json` | Your agents, project folders, hidden projects, skills you keep global |
|
|
@@ -452,10 +464,12 @@ Environment variables: `SKILLLIB_HOME` moves `~/.skilllib`, `$VISUAL` / `$EDITOR
|
|
|
452
464
|
|
|
453
465
|
## FAQ
|
|
454
466
|
|
|
455
|
-
**Does it change my repos?** Only when you tell it to: adding, removing, linking or tidying a skill, which updates `skilllib.json`. It asks before linking into a folder git tracks, and before tidy changes a committed file. It never deletes the only copy of a repo's own skill.
|
|
467
|
+
**Does it change my repos?** Only when you tell it to: adding, removing, linking or tidying a skill, which updates `skilllib.json` (or, for personal pins, your `~/.skilllib/pins/` and the repo's `.git/info/exclude`). It asks before linking into a folder git tracks, and before tidy changes a committed file. It never deletes the only copy of a repo's own skill.
|
|
456
468
|
|
|
457
469
|
**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.
|
|
458
470
|
|
|
471
|
+
**Do I have to commit `skilllib.json`?** No. In a repo without one, skilllib pins in your personal pins and keeps its copies out of git, so the repo doesn't change for anyone else. See [Personal or shared pins](#personal-or-shared-pins).
|
|
472
|
+
|
|
459
473
|
**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.
|
|
460
474
|
|
|
461
475
|
**What's not supported yet?**
|