skilllib 1.0.2 → 1.2.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 +51 -13
- package/dist/{chunk-67BDL5SN.js → chunk-O5TY4NWZ.js} +696 -88
- package/dist/index.js +14 -3
- package/dist/{tui-CQCVL6IK.js → tui-6BOQIKAU.js} +200 -149
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -47,6 +47,7 @@ Most agents can't turn off a global skill for just one repo. Claude Code can, bu
|
|
|
47
47
|
- **📦 Per-repo installs, pinned like dependencies.** Each repo lists its skills and versions in `skilllib.json`. `sync` reproduces them exactly, and `update` moves to the newest.
|
|
48
48
|
- **🤝 One copy, every agent.** skilllib puts one real copy in the repo and links it into whichever folders your other agents read.
|
|
49
49
|
- **🧹 A cleanup wizard for global skills.** For each global skill, pick the repos that should keep it, keep it global, or delete it. Usage numbers and descriptions help you decide.
|
|
50
|
+
- **✓ Global on purpose.** Some skills belong everywhere. Mark them once and skilllib stops warning about them.
|
|
50
51
|
- **🔎 See everything in a repo:**
|
|
51
52
|
- where each skill comes from (the repo, your library, global, a plugin, claude.ai…)
|
|
52
53
|
- which agents load it
|
|
@@ -118,8 +119,10 @@ A repo has two lists:
|
|
|
118
119
|
| Group | What it is | `space` |
|
|
119
120
|
|---|---|---|
|
|
120
121
|
| *From your skills* | Versioned skills you added from your library | Remove it from this repo |
|
|
122
|
+
| *From npx skills* | Skills `npx skills add` installed into this repo (listed in its `skills-lock.json`), with their source | Copy it into your skills; `npx skills` keeps managing this copy |
|
|
121
123
|
| *The repo's own* | Skills committed to the repo (e.g. your team's `.agents/skills`) | Copy it into your skills, so other repos can use it |
|
|
122
|
-
| *⚠ Global · yours* | Your global skills: they load in every repo | Open the cleanup wizard |
|
|
124
|
+
| *⚠ Global · yours, not reviewed* | Your global skills you haven't decided about: they load in every repo | Open the cleanup wizard |
|
|
125
|
+
| *✓ Global · yours, on purpose* | Your global skills you chose to keep global | Open the cleanup wizard |
|
|
123
126
|
| *Global · from vendors* | Plugins, claude.ai skills, Cursor built-ins | – (manage them at the source) |
|
|
124
127
|
|
|
125
128
|
**Add skills** shows your skills that this repo doesn't have yet. `space` adds one.
|
|
@@ -129,11 +132,10 @@ Each row tells you:
|
|
|
129
132
|
| | Meaning |
|
|
130
133
|
|---|---|
|
|
131
134
|
| **✻ ⬡ ◎ ℤ** | Claude Code, Cursor, Codex, Zed. An icon in color means that agent loads the skill here; a faint one means it doesn't. |
|
|
132
|
-
| `²` | Cursor reaches this skill through two folders, so it may list it twice |
|
|
133
135
|
| `.claude` / `.agents` | The folder holding the real copy |
|
|
134
136
|
| **✓ committed** · **± changed** · **+ not added** · **∅ ignored** | The skill's git state. `∅ ignored` means it only exists on your machine. |
|
|
135
137
|
| `v2` · `v1 → v2` | The installed version, and whether a newer one exists |
|
|
136
|
-
| **⧉ 3 copies** | The same skill reaches your agents from 3 places. The details panel lists them
|
|
138
|
+
| **⧉ 3 copies** | The same skill reaches your agents from 3 places. The details panel lists them, and Health has the fix. |
|
|
137
139
|
| last column | Claude Code uses in the last 30 days |
|
|
138
140
|
|
|
139
141
|
Related skills fold into one row: skills from the same plugin, the same source repo, or with the same name prefix (`design-*`). Press Enter on the group row for actions on all of them.
|
|
@@ -142,7 +144,10 @@ If some skills aren't visible to every agent you use, the top row offers **⇄ M
|
|
|
142
144
|
|
|
143
145
|
### Adding and removing skills
|
|
144
146
|
|
|
145
|
-
- **Adding** (`space` in *Add skills*) copies the newest version into
|
|
147
|
+
- **Adding** (`space` in *Add skills*) copies the newest version into the fewest folders your agents read, and records it in `skilllib.json`. 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.
|
|
148
|
+
- Claude Code (with or without Cursor): `.claude/skills/<name>`.
|
|
149
|
+
- Cursor, Codex or Zed without Claude Code: `.agents/skills/<name>`.
|
|
150
|
+
- 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 only read `.agents/skills`.
|
|
146
151
|
- **Removing** (`space` again) deletes that copy and its links. Your library and other repos aren't touched. If you edited it here, skilllib asks first; Enter → *Save local edits to Your skills* keeps them.
|
|
147
152
|
- **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.
|
|
148
153
|
- **Git-tracked folders:** if the repo commits the folder a link would go into (common for `.agents/skills`), skilllib asks once and remembers your answer.
|
|
@@ -171,13 +176,23 @@ Edit a skill once in **Your skills** (Enter → *Edit SKILL.md*). Every repo tha
|
|
|
171
176
|
Open **Global → ⚠ Clean up…**, or press `space` on any of your global skills. For each skill, `space` cycles through:
|
|
172
177
|
|
|
173
178
|
- **◉ move:** installed into the repos you tick on the right. Repos that already have it, or where Claude Code used it, are pre-ticked.
|
|
174
|
-
- **○ keep global
|
|
179
|
+
- **○ keep global**: skilllib remembers this choice, and the next cleanup skips the skill
|
|
175
180
|
- **✕ delete** (`d`): removed without keeping a copy in your library
|
|
176
181
|
|
|
177
182
|
Each skill shows how often Claude Code used it, and the panel below shows its description and where it was used. Review, apply, and your globals are gone: moved ones are in your library and in the right repos. Originals go to a backup you can restore from **Health**.
|
|
178
183
|
|
|
179
184
|
You can also delete one skill (Enter → **Delete**) or a whole group (Enter → **Delete all N**) straight from Global.
|
|
180
185
|
|
|
186
|
+
### Keeping a skill global on purpose
|
|
187
|
+
|
|
188
|
+
Some skills are useful in every repo, for example a commit-message skill. Mark them so skilllib stops asking about them:
|
|
189
|
+
|
|
190
|
+
- Enter on the skill (in Global or in a repo) → **✓ Keep global on purpose**. Enter on a group → **Keep all N global on purpose**.
|
|
191
|
+
- In the cleanup wizard, every skill you leave on **○ keep global** is marked when you apply.
|
|
192
|
+
- From the command line: `skilllib global keep <name>`.
|
|
193
|
+
|
|
194
|
+
A marked skill shows **✓ global** instead of **⚠ loaded globally**, and has its own group in a repo. The cleanup wizard hides it (`k` shows it again), and review prompts tell the agent that you chose to keep it global. The mark only records your decision: no files move, and agents load the skill as before. Duplicate warnings (⧉) still show. To undo, use Enter → **Unmark** or `skilllib global unkeep <name>`.
|
|
195
|
+
|
|
181
196
|
### Ask an agent to review your skills
|
|
182
197
|
|
|
183
198
|
Not sure what to keep? **Copy review prompt** puts a ready-to-paste prompt on your clipboard (also saved to `~/.skilllib/review-prompt.md`). For each skill, it includes:
|
|
@@ -196,13 +211,33 @@ It's available from:
|
|
|
196
211
|
- Enter on any skill or group → **Copy review prompt**
|
|
197
212
|
- `p` inside the cleanup wizard
|
|
198
213
|
|
|
214
|
+
### Duplicates
|
|
215
|
+
|
|
216
|
+
The same skill often reaches your agents more than once: a copy in `.claude/skills` *and* in `.agents/skills`, a global copy *and* a repo copy, a plugin *and* your skill. skilllib keeps **one real copy per skill, plus only the links your agents need**. Health shows each case, and `skilllib tidy` fixes the folder ones.
|
|
217
|
+
|
|
218
|
+
| What it finds | What it does |
|
|
219
|
+
|---|---|
|
|
220
|
+
| Identical copies in several folders | Keeps one and turns the others into links. In a repo, it keeps the committed copy. Globally, it keeps the one in `~/.agents/skills`. |
|
|
221
|
+
| Links no agent you use needs | Removes them. It keeps links that `skilllib.json` records, because teammates may use other agents. |
|
|
222
|
+
| **Copies that differ** | Shows which agent runs which copy (e.g. Claude Code and Cursor run `.claude`, Codex runs `.agents`), and lets you pick the one to keep. |
|
|
223
|
+
| A Claude Code plugin with the same skill | Your skill wins. skilllib copies all the plugin's skills into Your skills, then removes the plugin or turns it off (`claude plugin uninstall` / `disable`). If the plugin also brings MCP servers, hooks, agents or commands, turning it off is the default. |
|
|
224
|
+
| A Cursor plugin with the same skill | Reported only. Turn the plugin off in Cursor. |
|
|
225
|
+
| A repo copy of a skill you keep global | The repo copy is the extra one. Claude Code runs the global copy anyway. |
|
|
226
|
+
|
|
227
|
+
- **It never moves a real copy.** `skilllib.json` is shared, so a move for your agents could break a teammate's.
|
|
228
|
+
- **It never adds links.** That's **⇄ Make all usable** (`skilllib link`).
|
|
229
|
+
- **It asks before changing committed files.** You choose: *tidy, but keep git as it is*, or *tidy everything*. On the command line, pass `--allow-git`.
|
|
230
|
+
- **Cursor lists a skill once** even when it reaches it through several folders (tested September 2026). It lists a plugin's copy and your copy separately.
|
|
231
|
+
|
|
199
232
|
### Health and backups
|
|
200
233
|
|
|
201
|
-
**Health** lists broken links, skills
|
|
234
|
+
**Health** lists broken links, duplicates, copies that differ, skills some of your agents can't reach, out-of-date repos and repo-only skills. Each has a one-key fix, or a short list of fixes to pick from. Below them is everything skilllib ever moved out, and `space` puts it back where it came from.
|
|
202
235
|
|
|
203
236
|
skilllib never really deletes anything:
|
|
204
237
|
- removed library skills go to `~/.skilllib/trash`
|
|
205
238
|
- removed global skills go to `~/.skilllib/global-backup`
|
|
239
|
+
- copies replaced by a link go to `~/.skilllib/tidy-backup`
|
|
240
|
+
- removed plugins are listed too; restoring one reinstalls it
|
|
206
241
|
|
|
207
242
|
---
|
|
208
243
|
|
|
@@ -274,9 +309,11 @@ skilllib sync [--all] install exactly the pinned versions
|
|
|
274
309
|
skilllib outdated [--all] skills with a newer version
|
|
275
310
|
skilllib update [name...] move to the newest versions
|
|
276
311
|
skilllib link [--all] make every skill here usable by all your agents
|
|
312
|
+
skilllib tidy [--all|--global] one real copy per skill, plus only the links your agents need
|
|
277
313
|
|
|
278
314
|
skilllib list | show <name> your library
|
|
279
315
|
skilllib import <dir>... add skill folders to your library (--global: all your global skills)
|
|
316
|
+
skilllib global [keep|unkeep] your global skills; mark the ones you keep global on purpose
|
|
280
317
|
skilllib new <name> [desc] create a skill
|
|
281
318
|
|
|
282
319
|
skilllib usage [--days N] which skills Claude Code used
|
|
@@ -285,7 +322,7 @@ skilllib restore [name] put back something skilllib moved out
|
|
|
285
322
|
skilllib --version
|
|
286
323
|
```
|
|
287
324
|
|
|
288
|
-
Flags: `--force` (overwrite local edits), `--allow-tracked` (link into git-tracked folders), `--days N`.
|
|
325
|
+
Flags: `--force` (overwrite local edits), `--allow-tracked` (link into git-tracked folders), `--days N`. For `tidy`: `--dry-run` (preview), `--allow-git` (also change committed files), `<name> --keep <folder>` (the copy that wins when copies differ).
|
|
289
326
|
|
|
290
327
|
## Files
|
|
291
328
|
|
|
@@ -294,22 +331,23 @@ Flags: `--force` (overwrite local edits), `--allow-tracked` (link into git-track
|
|
|
294
331
|
| `<repo>/skilllib.json` | The repo's skills and pinned versions. **Commit it.** |
|
|
295
332
|
| `~/.skilllib/library/` | Your skills (master copies). Worth putting under git. |
|
|
296
333
|
| `~/.skilllib/store/` | Every version of every skill, immutable |
|
|
297
|
-
| `~/.skilllib/config.json` | Your agents, project folders, hidden projects |
|
|
298
|
-
| `~/.skilllib/trash/`, `global-backup/` | Everything skilllib removed, restorable from Health |
|
|
334
|
+
| `~/.skilllib/config.json` | Your agents, project folders, hidden projects, skills you keep global |
|
|
335
|
+
| `~/.skilllib/trash/`, `global-backup/`, `tidy-backup/` | Everything skilllib removed, restorable from Health |
|
|
336
|
+
| `~/.skilllib/plugin-backup.json` | Plugins skilllib removed, so Health can reinstall them |
|
|
299
337
|
| `~/.skilllib/review-prompt.md` | The last review prompt you copied |
|
|
300
338
|
|
|
301
339
|
Environment variables: `SKILLLIB_HOME` moves `~/.skilllib`, `$VISUAL` / `$EDITOR` set the editor, and `CLAUDE_CONFIG_DIR` is honored.
|
|
302
340
|
|
|
303
341
|
## FAQ
|
|
304
342
|
|
|
305
|
-
**Does it change my repos?** Only when you tell it to: adding, removing or
|
|
343
|
+
**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.
|
|
306
344
|
|
|
307
|
-
**Can I share skills with my team?** Commit `skilllib.json` along with the
|
|
345
|
+
**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 your library in a git repo and point `SKILLLIB_HOME` at it.
|
|
308
346
|
|
|
309
347
|
**Why does usage only count Claude Code?** It's the only agent here with local transcripts to read. Cursor doesn't keep them locally, and Codex's format hasn't been tested yet. That's why "unused" is a strong hint, not proof.
|
|
310
348
|
|
|
311
349
|
**What's not supported yet?**
|
|
312
|
-
- Cursor marketplace
|
|
350
|
+
- Turning off Cursor marketplace plugins: skilllib reports ones that duplicate your skills, but Cursor doesn't record which plugins are on in a file skilllib can read.
|
|
313
351
|
- Unloading a `npx skills` skill doesn't update that tool's lock file.
|
|
314
352
|
- Installing new skills straight from GitHub is coming. For now, `skilllib import <folder>` or copy one from a repo.
|
|
315
353
|
|
|
@@ -328,7 +366,7 @@ npm link # use your checkout as `skilllib`
|
|
|
328
366
|
1. Bump `version` in `package.json` and merge to `main`.
|
|
329
367
|
2. Tag and push:
|
|
330
368
|
```bash
|
|
331
|
-
git tag v1.
|
|
369
|
+
git tag v1.2.1 && git push --tags
|
|
332
370
|
```
|
|
333
371
|
|
|
334
372
|
CI then tests on Linux, macOS and Windows, publishes to npm through [trusted publishing](https://docs.npmjs.com/trusted-publishers) (no token; provenance is automatic), and creates a GitHub release.
|