skilllib 1.3.1 → 1.7.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 +93 -34
- package/dist/{chunk-TWQQHXVG.js → chunk-AYAN7Q2X.js} +1391 -407
- package/dist/index.js +23 -7
- package/dist/{tui-H5IQAGAL.js → tui-RU255WYX.js} +615 -179
- package/package.json +2 -1
- package/skills/skilllib/SKILL.md +43 -0
package/README.md
CHANGED
|
@@ -46,13 +46,14 @@ Most agents can't turn off a global skill for just one repo. Claude Code can, bu
|
|
|
46
46
|
- **📚 Your skills: one versioned library.** Every skill has a single master copy in `~/.skilllib/library`, and each change becomes a new version.
|
|
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
|
-
- **🧹 Health: one list of what to fix.** Global skills you haven't decided about, skills loaded twice, updates, broken links, each with its fix. For a global skill: move it to the repos that need it, keep it global, or delete it. Usage numbers and descriptions help you decide.
|
|
49
|
+
- **🧹 Health: one list of what to fix.** Global skills you haven't decided about, skills loaded twice, duplicate copies, updates, broken links, each with its fix. For a global skill: move it to the repos that need it, keep it global, or delete it. Usage numbers and descriptions help you decide.
|
|
50
50
|
- **✓ Global on purpose.** Some skills belong everywhere. Mark them once and skilllib stops warning about them.
|
|
51
51
|
- **🔎 See everything in a repo:**
|
|
52
52
|
- where each skill comes from (the repo, your library, global, a plugin, claude.ai…)
|
|
53
53
|
- which agents load it
|
|
54
54
|
- whether it's committed to git or gitignored
|
|
55
55
|
- how often it was used
|
|
56
|
+
- **💬 Talk to your agents about your skills.** Ask Claude Code, Cursor or Codex "which skills can you use here, and where do they come from?" or "which of my skills should this repo use?". They answer with skilllib.
|
|
56
57
|
- **✦ Ask an agent.** Copy a ready-made prompt with all of that data, and let Claude Code, Cursor or Codex tell you what to keep, move or delete.
|
|
57
58
|
- **🛟 Nothing is lost.** Every removal goes to a backup you can restore with one key.
|
|
58
59
|
|
|
@@ -94,7 +95,7 @@ Three panes: **Places** on the left, a **list** on the right, and the **details*
|
|
|
94
95
|
| **Global** | Everything your agents load in *every* repo: yours, plus vendor skills (plugins, claude.ai, Cursor built-ins). |
|
|
95
96
|
| **Health** | Every skill with something to fix, in every repo and in Global, with its fixes. |
|
|
96
97
|
| **Projects** | Every repo found in your project folders. `◆` marks the one you're in; `✕` `⚠` `·` its worst issue. |
|
|
97
|
-
| **Settings** | Your agents, your project folders, hidden repos, and backups. |
|
|
98
|
+
| **Settings** | Your agents and the skilllib skill for them, your project folders, hidden repos, and backups. |
|
|
98
99
|
| **Help** | The keys and symbols. |
|
|
99
100
|
|
|
100
101
|
### Keys
|
|
@@ -129,25 +130,26 @@ What skilllib flags:
|
|
|
129
130
|
|
|
130
131
|
| Issue | Fixes |
|
|
131
132
|
|---|---|
|
|
132
|
-
| **Loaded twice** (also global, or also in a plugin) | Keep the repo's copy and stop loading it globally, or keep it global |
|
|
133
|
-
| **Same name as a plugin skill** | Remove the repo's copy, or turn the plugin off
|
|
133
|
+
| **Loaded twice** (also global, or also in a plugin) | Keep the repo's copy and stop loading it globally, or keep it global. Your call: stopping a global skill changes every repo, so the fix names the repos that used it |
|
|
134
|
+
| **Same name as a plugin skill** | Remove the repo's copy, or turn the plugin off in this repo only (`.claude/settings.local.json`, a local-only file git ignores). Cursor ignores repo settings, so once the repo turns the plugin off, only replacing the plugin helps there |
|
|
134
135
|
| **Folder missing** · **Not in your library** | Restore it · copy it back into your library |
|
|
135
136
|
| **Update to vN** · **Edited here** | Update · save the edits as a new version, or discard them |
|
|
136
137
|
| ***Agent* can't see it** | Link it for every agent (links only; nothing is copied or moved) |
|
|
137
138
|
| **Differs from library** · **Not tracked** · **Only in this repo** | Update your library from it, or replace it · track it · import it |
|
|
138
139
|
| **Unused 30 days** | Remove it from the repo |
|
|
139
140
|
| **Broken link** · **Not reviewed** (global) | Remove the link · move it to repos, keep it global on purpose, or delete it |
|
|
141
|
+
| ***Agent* can't see it** (global) | Link it into that agent's global folder, e.g. a Codex skill in `~/.agents/skills` or `~/.codex/skills` gets a link in `~/.claude/skills` |
|
|
140
142
|
|
|
141
143
|
### Adding and removing skills
|
|
142
144
|
|
|
143
|
-
- **+ Add a skill…** searches your library. Its last rows create a new skill (it opens in `$EDITOR
|
|
145
|
+
- **+ Add a skill…** searches your library. 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.
|
|
144
146
|
- **Adding** 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.
|
|
145
147
|
- Claude Code (with or without Cursor): `.claude/skills/<name>`.
|
|
146
148
|
- Cursor, Codex or Zed without Claude Code: `.agents/skills/<name>`.
|
|
147
|
-
- 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
|
|
148
|
-
- **Remove from repo** deletes that copy and its links; your library keeps it. An untracked copy goes to Settings › Backups instead. If you edited a tracked skill here, skilllib asks first.
|
|
149
|
+
- 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.
|
|
150
|
+
- **Remove from repo** deletes that copy and its links; your library keeps it. An untracked copy goes to Settings › Backups instead. If you edited a tracked skill here, skilllib asks first, and the edits go to Settings › Backups.
|
|
149
151
|
- **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.
|
|
150
|
-
- **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.
|
|
152
|
+
- **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. 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.
|
|
151
153
|
|
|
152
154
|
### Versions
|
|
153
155
|
|
|
@@ -159,7 +161,7 @@ Every change to a library skill becomes a new version, kept in `~/.skilllib/stor
|
|
|
159
161
|
|
|
160
162
|
| | Like | What it does |
|
|
161
163
|
|---|---|---|
|
|
162
|
-
| `skilllib sync` | `npm ci` | Installs exactly the pinned versions and restores missing ones. It never touches your edits. |
|
|
164
|
+
| `skilllib sync` | `npm ci` | Installs exactly the pinned versions and restores missing ones. It never touches your edits (`--force` resets them, backing them up first). |
|
|
163
165
|
| `skilllib outdated` | `npm outdated` | Lists skills with a newer version |
|
|
164
166
|
| `skilllib update [name]` | `npm update` | Moves to the newest version |
|
|
165
167
|
| *Other versions…* in a skill's actions | `npm i x@1` | Pins any version, including older ones |
|
|
@@ -172,10 +174,12 @@ Edit a skill once in **Your skills** (Enter → *Edit SKILL.md*). Every repo tha
|
|
|
172
174
|
|
|
173
175
|
**Global** lists everything that loads in every repo. Each of your global skills you haven't decided about is flagged **Not reviewed**, with three choices:
|
|
174
176
|
|
|
175
|
-
- **Move it to the repos that need it…**: tick the repos (the ones where Claude Code used it are pre-ticked). It goes into your library and those repos, and stops loading globally.
|
|
177
|
+
- **Move it to the repos that need it…**: tick the repos (the ones where Claude Code used it are pre-ticked). It goes into your library and those repos, and stops loading globally. If a repo commits a folder one of your agents needs a link in (often `.claude/skills`), skilllib asks before adding it there.
|
|
176
178
|
- **Keep it global on purpose**: skilllib stops warning about it (also `skilllib global keep <name>`). The mark only records your decision; to undo it, pick **Stop marking it as global on purpose**.
|
|
177
179
|
- **Delete it**: it goes to Settings › Backups.
|
|
178
180
|
|
|
181
|
+
When some of your agents can't see a global skill, the flag says so (**Not reviewed · Claude Code can't see it**). This happens, for example, with a Codex skill in `~/.agents/skills` or `~/.codex/skills`, which Claude Code doesn't read. Then a fourth choice appears: **Link it for Claude Code** adds a link in `~/.claude/skills`, and nothing is copied or moved. Moving it to repos works for every agent too. For a skill you keep global on purpose, the link is the ★ fix.
|
|
182
|
+
|
|
179
183
|
Vendor skills (plugins, claude.ai, Cursor built-ins) are managed at their source: `/plugin` in Claude Code, or claude.ai's settings.
|
|
180
184
|
|
|
181
185
|
**Replacing a plugin with library skills:** on a plugin's skill or group, **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 (`claude plugin uninstall`, keeping its saved data; Settings › Backups reinstalls it). A plugin can't be half removed, so it's all its skills at once; the confirmation says what else it brings (commands, agents, hooks, MCP servers) 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 and tells you to remove the plugin on claude.ai.
|
|
@@ -195,23 +199,43 @@ Paste it into Claude Code, Cursor or Codex. You get back **keep global / move to
|
|
|
195
199
|
|
|
196
200
|
It's in every skill's actions, in a repo's **⋯** menu (all its skills), and at the top of Global (all your global skills).
|
|
197
201
|
|
|
202
|
+
### Ask your agents about skills
|
|
203
|
+
|
|
204
|
+
Run this once:
|
|
205
|
+
|
|
206
|
+
```bash
|
|
207
|
+
skilllib agent-skill install
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
This installs a small `skilllib` skill that tells your agents how to use skilllib. It goes where your agents look, in every repo: `~/.claude/skills` for Claude Code and Cursor, with a link in `~/.agents/skills` for Codex and Zed. This is the one skill that should be global, because it's about every repo. Health and Settings offer the same install, and upgrading skilllib keeps the skill up to date.
|
|
211
|
+
|
|
212
|
+
Then, in any repo, you can ask:
|
|
213
|
+
|
|
214
|
+
- *Which skills can you use in this repo?*
|
|
215
|
+
- *Where does each one come from?*
|
|
216
|
+
- *Which skills from my library would you add to this project?*
|
|
217
|
+
- *Is anything out of date? Update it.*
|
|
218
|
+
|
|
219
|
+
The agent runs `skilllib status --json`, `skilllib list --json` and similar commands, reads the repo, and answers. It asks before it adds or removes anything. `skilllib agent-skill remove` uninstalls it.
|
|
220
|
+
|
|
198
221
|
### Duplicates
|
|
199
222
|
|
|
200
|
-
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**. `skilllib doctor` lists
|
|
223
|
+
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** lists each case on the skill it's about, with its fix. From the command line, `skilllib doctor` lists them and `skilllib tidy` fixes the folder ones.
|
|
201
224
|
|
|
202
225
|
| What it finds | What it does |
|
|
203
226
|
|---|---|
|
|
204
227
|
| 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`. |
|
|
205
228
|
| Links no agent you use needs | Removes them. It keeps links that `skilllib.json` records, because teammates may use other agents. |
|
|
206
|
-
| **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. |
|
|
207
|
-
| 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. |
|
|
229
|
+
| **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. It's your call, so **Fix all** never does it. |
|
|
230
|
+
| 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. When the overlap is in one repo, you can instead turn the plugin off only there (in its `.claude/settings.local.json`, which skilllib makes git ignore; without the `claude` command, skilllib writes the file itself), or remove your copy from that repo. If the repo commits its copy, it's the team's: skilllib never offers to remove it. A plugin that a repo's own `.claude/settings.json` turns on counts only in that repo. Cursor ignores repo settings: after a repo turns the plugin off, Cursor still lists both there, and only turning the plugin off or removing it changes that. |
|
|
208
231
|
| A Cursor plugin with the same skill | Reported only. Turn the plugin off in Cursor. |
|
|
209
|
-
| A repo copy of a skill you keep global | The repo copy is the extra one. Claude Code runs the global copy anyway. |
|
|
232
|
+
| A repo copy of a skill you keep global | The repo copy is the extra one: remove it, or stop loading the skill globally after all. Claude Code runs the global copy anyway. |
|
|
233
|
+
| A repo's own skill that also loads globally | Stop loading it globally. The repo's copy is the team's, so skilllib never offers to remove it. |
|
|
210
234
|
|
|
211
235
|
- **It never moves a real copy.** `skilllib.json` is shared, so a move for your agents could break a teammate's.
|
|
212
236
|
- **It never adds links.** That's `skilllib link`, or a skill's *can't see it* fix.
|
|
213
|
-
- **It leaves committed files alone** unless you
|
|
214
|
-
- **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.
|
|
237
|
+
- **It leaves committed files alone** unless you say so: Health asks first, and `skilllib tidy` needs `--allow-git`.
|
|
238
|
+
- **Cursor lists a skill once** even when it reaches it through several folders (tested September 2026). It runs the copy from the first of `.cursor`, `.claude`, `.codex`, `.grok`, `.agents` (seen in its app bundle, October 2026). It lists a plugin's copy and your copy separately.
|
|
215
239
|
|
|
216
240
|
### Backups
|
|
217
241
|
|
|
@@ -219,6 +243,7 @@ skilllib never really deletes anything you can't get back. What it removes goes
|
|
|
219
243
|
- removed library skills and untracked copies go to `~/.skilllib/trash`
|
|
220
244
|
- removed global skills go to `~/.skilllib/global-backup`
|
|
221
245
|
- copies replaced by a link go to `~/.skilllib/tidy-backup`
|
|
246
|
+
- local edits that `skilllib doctor` discards, or that `--force` overwrites (`add`, `update`, `sync`), go to `~/.skilllib/edit-backup`
|
|
222
247
|
- removed plugins are listed too; restoring one reinstalls it
|
|
223
248
|
|
|
224
249
|
---
|
|
@@ -230,21 +255,26 @@ A skill is a folder with a `SKILL.md`. These are all the places your agents load
|
|
|
230
255
|
| Where | Examples | Who sees it |
|
|
231
256
|
|---|---|---|
|
|
232
257
|
| **The repo** | `.claude/skills`, `.agents/skills`, `.cursor/skills`, `.codex/skills` | Agents working in that repo |
|
|
233
|
-
| **
|
|
234
|
-
| **
|
|
258
|
+
| **Subfolders** (monorepos) | `packages/web/.claude/skills`, `packages/api/.agents/skills` | Agents working in that folder. `skilllib status` lists them; skilllib never links, tracks or tidies them, since that would make them load repo-wide |
|
|
259
|
+
| **Global folders** | `~/.claude/skills`, `~/.agents/skills` (`npx skills add` installs here), `~/.codex/skills`, `~/.cursor/skills` | **Every repo** |
|
|
260
|
+
| **Vendors** | Claude Code plugins (`/plugin`), claude.ai skills, Claude Code's bundled commands, Cursor built-ins and marketplace, Codex system skills and `/etc/codex/skills` (admin) | Every repo (a repo's `.claude/settings.json` can turn a plugin on or off just there); only the vendor can remove them |
|
|
235
261
|
| **Your skills** | `~/.skilllib/library` | Nobody, until you add a skill to a repo |
|
|
236
262
|
|
|
237
263
|
### ✻ Claude Code · [docs](https://code.claude.com/docs/en/skills)
|
|
238
264
|
|
|
239
265
|
- **Where it looks.** When names collide, the first one listed wins:
|
|
240
266
|
1. enterprise (managed settings)
|
|
241
|
-
2. `~/.claude/skills`
|
|
242
|
-
3. `.claude/skills
|
|
243
|
-
4.
|
|
244
|
-
|
|
245
|
-
|
|
267
|
+
2. `~/.claude/skills` (`CLAUDE_CONFIG_DIR` moves it)
|
|
268
|
+
3. `.claude/skills`, in the folder you start in and each parent up to the repo root
|
|
269
|
+
4. claude.ai skills, from `~/.claude/skills/synced` (then they run only as `/anthropic-skills:name`)
|
|
270
|
+
|
|
271
|
+
Some skills load next to these under their own name instead of competing:
|
|
272
|
+
- nested `<subfolder>/.claude/skills`, once Claude touches a file there (as `/subfolder:skill`)
|
|
273
|
+
- plugins (as `/plugin:skill`)
|
|
274
|
+
- folders passed with `--add-dir`
|
|
246
275
|
|
|
247
|
-
|
|
276
|
+
Your skill replaces a bundled command with the same name. Only direct child folders count, and links to skill folders work.
|
|
277
|
+
- It **doesn't read `.agents/skills`** (verified in its binary, October 2026). `claude import cursor` copies skills from there once; skilllib links them instead, so there is still one copy.
|
|
248
278
|
- **How it uses them.** Descriptions are always in context; the full `SKILL.md` loads on `/name` or when Claude decides it's relevant.
|
|
249
279
|
- `disable-model-invocation: true`: only you can run it.
|
|
250
280
|
- `user-invocable: false`: only Claude can.
|
|
@@ -255,14 +285,21 @@ A skill is a folder with a `SKILL.md`. These are all the places your agents load
|
|
|
255
285
|
- **Where it looks.**
|
|
256
286
|
- Project: `.agents/skills` and `.cursor/skills`, including nested ones, which apply only to files inside them.
|
|
257
287
|
- Your home folder: `~/.agents/skills` and `~/.cursor/skills`.
|
|
258
|
-
- For compatibility: `.claude/skills`, `.codex/skills`,
|
|
259
|
-
- Also marketplace plugins and Cursor's built-ins. Cloud Agents only see `~/.cursor/skills`.
|
|
288
|
+
- For compatibility: `.claude/skills`, `.codex/skills`, `.grok/skills` and the same three in your home folder. The setting **Include Third-Party Plugins, Skills, and Other Configs** (on by default) turns these on, and it also imports your enabled Claude Code plugins. It always uses your home folder: `CLAUDE_CONFIG_DIR` and `CODEX_HOME` don't apply. skilllib leaves `.grok/skills` alone: it's Grok's folder, and skilllib can't tell what Grok needs.
|
|
289
|
+
- Also marketplace plugins and Cursor's built-ins (`~/.cursor/skills-cursor`). Cloud Agents only see `~/.cursor/skills`.
|
|
290
|
+
- It finds every `SKILL.md` up to 10 folders deep. It skips dot folders, `node_modules`, `dist` and `build`, and Codex's bundled skill names (like `skill-creator`) under `.codex/skills`.
|
|
260
291
|
- **How it uses them.** Descriptions decide relevance, and the full content loads on use; `/` runs one. `paths:` globs limit a skill to matching files, and `disable-model-invocation: true` makes it manual.
|
|
261
|
-
- **
|
|
292
|
+
- **Same name in several folders.** It loads the skill once, from the first of `.cursor`, `.claude`, `.codex`, `.grok`, `.agents` (project before home folder). The claude.ai copies in `~/.claude/skills/synced` count as a different skill.
|
|
293
|
+
- **Limits.** There's no per-project switch for global skills.
|
|
262
294
|
|
|
263
295
|
### ◎ Codex · [docs](https://learn.chatgpt.com/docs/build-skills)
|
|
264
296
|
|
|
265
|
-
- **Where it looks.**
|
|
297
|
+
- **Where it looks.**
|
|
298
|
+
- Project: `.agents/skills` in the working folder, its parents up to the repo root, and `.codex/skills`.
|
|
299
|
+
- Your home folder: `~/.agents/skills`, and `~/.codex/skills` (`$CODEX_HOME/skills`). Codex's docs no longer list `~/.codex/skills`, but Codex still reads it for backward compatibility, and its built-in skill installer puts skills there (verified in its source, October 2026).
|
|
300
|
+
- Also `/etc/codex/skills` (admin) and OpenAI's bundled skills in `~/.codex/skills/.system`.
|
|
301
|
+
- It finds a `SKILL.md` up to 6 folders deep and skips dot folders. skilllib only lists direct children (`<folder>/<name>/SKILL.md`), which is where Codex's installer puts them.
|
|
302
|
+
- It **doesn't read `.claude/skills`**, so Claude Code and Codex share no folder.
|
|
266
303
|
- **How it uses them.** Names and descriptions come first (about 2% of context); `SKILL.md` loads when used, and `$` picks one.
|
|
267
304
|
- Same-name skills aren't merged.
|
|
268
305
|
- `policy.allow_implicit_invocation: false` in `agents/openai.yaml` keeps a skill manual.
|
|
@@ -270,7 +307,7 @@ A skill is a folder with a `SKILL.md`. These are all the places your agents load
|
|
|
270
307
|
|
|
271
308
|
### ℤ Zed · [docs](https://zed.dev/docs/ai/skills)
|
|
272
309
|
|
|
273
|
-
- **Where it looks.** `<worktree>/.agents/skills` (trusted worktrees only) and `~/.agents/skills
|
|
310
|
+
- **Where it looks.** `<worktree>/.agents/skills` (trusted worktrees only) and `~/.agents/skills`, nothing else (verified in its source, October 2026). Only direct child folders count, and on a name collision the project's skill wins.
|
|
274
311
|
- **How it uses them.** The agent sees a catalog of names and descriptions; `/` or `@skill` runs one. Changes apply without a restart.
|
|
275
312
|
|
|
276
313
|
---
|
|
@@ -285,7 +322,7 @@ skilllib scan [folder...] add project folders and scan them
|
|
|
285
322
|
skilllib folders [add|remove] show or change project folders
|
|
286
323
|
skilllib harnesses [id...] show or set your agents (claude-code cursor codex zed)
|
|
287
324
|
|
|
288
|
-
skilllib status this repo's skills
|
|
325
|
+
skilllib status this repo's skills, which agents load them, and issues
|
|
289
326
|
skilllib add | remove <name> change this repo's skills
|
|
290
327
|
skilllib sync [--all] install exactly the pinned versions
|
|
291
328
|
skilllib outdated [--all] skills with a newer version
|
|
@@ -301,10 +338,31 @@ skilllib new <name> [desc] create a skill
|
|
|
301
338
|
skilllib usage [--days N] which skills Claude Code used
|
|
302
339
|
skilllib doctor [--fix] find (and fix) problems
|
|
303
340
|
skilllib restore [name] put back something skilllib moved out
|
|
341
|
+
skilllib agent-skill [install|remove] teach your agents to use skilllib
|
|
304
342
|
skilllib --version
|
|
305
343
|
```
|
|
306
344
|
|
|
307
|
-
|
|
345
|
+
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.
|
|
346
|
+
|
|
347
|
+
Flags: `--force` (overwrite local edits, backed up to `~/.skilllib/edit-backup`), `--allow-tracked` (link into git-tracked folders; 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).
|
|
348
|
+
|
|
349
|
+
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, an unknown `tidy` name or `--keep` folder. What it did do is still done, and listed.
|
|
350
|
+
|
|
351
|
+
**`--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`, `add`, `remove`, `sync`, `update`, `import` and `agent-skill`. The output is shaped to keep agents fast and cheap:
|
|
352
|
+
|
|
353
|
+
- **`status --json`** answers everything about the repo in one call:
|
|
354
|
+
- the repo's skills, with their source, version, state and git state
|
|
355
|
+
- skills in subfolders (`nested`, e.g. monorepo packages), with their folder
|
|
356
|
+
- the global skills, grouped by where they come from, with the plugins the repo's `.claude/settings.json` turns on or off
|
|
357
|
+
- every problem skilllib found here, with its fix
|
|
358
|
+
- how often Claude Code used each skill here
|
|
359
|
+
- the repo's top-level files
|
|
360
|
+
|
|
361
|
+
Skills that share every attribute are grouped, and attributes at their usual value are left out.
|
|
362
|
+
- **`list --json`**: inside a repo, the library skills the repo already has (names only), and the others with the first sentence of their description.
|
|
363
|
+
- **`add`, `remove`, `sync` and `update`** list each change and the folders it wrote to, so there's nothing left to check.
|
|
364
|
+
|
|
365
|
+
The `skilllib` skill runs `status` and `list` as it loads (in Claude Code), so an agent usually answers "which skills can you use here?" in one step.
|
|
308
366
|
|
|
309
367
|
## Files
|
|
310
368
|
|
|
@@ -314,11 +372,12 @@ Flags: `--force` (overwrite local edits), `--allow-tracked` (link into git-track
|
|
|
314
372
|
| `~/.skilllib/library/` | Your skills (master copies). Worth putting under git. |
|
|
315
373
|
| `~/.skilllib/store/` | Every version of every skill, immutable |
|
|
316
374
|
| `~/.skilllib/config.json` | Your agents, project folders, hidden projects, skills you keep global |
|
|
317
|
-
| `~/.skilllib/trash/`, `global-backup/`, `tidy-backup/` | Everything skilllib removed, restorable from Settings › Backups |
|
|
375
|
+
| `~/.skilllib/trash/`, `global-backup/`, `tidy-backup/`, `edit-backup/` | Everything skilllib removed, restorable from Settings › Backups |
|
|
318
376
|
| `~/.skilllib/plugin-backup.json` | Plugins skilllib uninstalled, so Settings › Backups can reinstall them |
|
|
319
377
|
| `~/.skilllib/review-prompt.md` | The last review prompt you copied |
|
|
378
|
+
| `~/.claude/skills/skilllib/` | The skill that lets your agents use skilllib (`agent-skill install`) |
|
|
320
379
|
|
|
321
|
-
Environment variables: `SKILLLIB_HOME` moves `~/.skilllib`, `$VISUAL` / `$EDITOR` set the editor, and `CLAUDE_CONFIG_DIR`
|
|
380
|
+
Environment variables: `SKILLLIB_HOME` moves `~/.skilllib`, `$VISUAL` / `$EDITOR` set the editor, and `CLAUDE_CONFIG_DIR` and `CODEX_HOME` are honored.
|
|
322
381
|
|
|
323
382
|
## FAQ
|
|
324
383
|
|
|
@@ -351,7 +410,7 @@ How the TUI is designed, and why: [docs/DESIGN.md](docs/DESIGN.md).
|
|
|
351
410
|
1. Bump `version` in `package.json` and merge to `main`.
|
|
352
411
|
2. Tag and push:
|
|
353
412
|
```bash
|
|
354
|
-
git tag v1.
|
|
413
|
+
git tag v1.7.0 && git push --tags
|
|
355
414
|
```
|
|
356
415
|
|
|
357
416
|
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.
|