skills-atlas-cli 0.8.9 โ†’ 0.9.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 CHANGED
@@ -70,9 +70,12 @@ skills-atlas doctor # health check: orphans, drift, l
70
70
  skills-atlas kit # detect this project & install the right skills for it
71
71
  skills-atlas sync # reproduce a project's kit (skills-atlas.kit.json)
72
72
 
73
- # ๐Ÿค– Autopilot & capability gaps (opt-in)
73
+ # ๐Ÿค– Autopilot, gaps & cleanup (opt-in)
74
74
  skills-atlas hook on # Claude proactively offers a fitting skill as you work
75
+ skills-atlas hook lang en|zh # language the autopilot replies in (default English)
76
+ skills-atlas hook model # which model powers gaps/cleanup (default Haiku)
75
77
  skills-atlas gaps # Claude spots kinds of work you keep doing without a skill
78
+ skills-atlas prune # Claude flags installed skills you no longer use
76
79
 
77
80
  # ๐ŸŒ Catalog & sources
78
81
  skills-atlas categories # the 20 top-level categories
@@ -86,44 +89,37 @@ skills-atlas mcp # run as an MCP server (any MCP c
86
89
 
87
90
  **โ›“ Workflows, not just skills.** Many skills belong to a curated chain (e.g.
88
91
  `brainstorming โ†’ writing-plans โ†’ executing-plans โ†’ โ€ฆ`). `install <skill> --chain`
89
- installs the whole pipeline in one archive download, ready to run in order.
92
+ installs the whole pipeline in one step, ready to run in order.
90
93
 
91
94
  **๐Ÿ“ฆ Project kits.** `skills-atlas kit` detects what this project is (frontend / backend /
92
95
  data / infra) and installs a tailored set (a universal dev workflow plus archetype
93
96
  add-ons) into `./.claude/skills/`, then writes a committable `skills-atlas.kit.json`.
94
97
  A teammate runs `skills-atlas sync` to reproduce it exactly.
95
98
 
96
- Output is English by default; add `--zh` for Chinese, or `--json` to any command for machine-readable output.
97
- After installing a skill, start a new Claude Code session to load it.
98
-
99
- ## How install works
100
-
101
- The real value is the **catalog**: `search` / `info` / `categories` work fully
102
- offline and map *which* skill fits. It's function-organized, bilingual, tagged with
103
- use-case / when-to-use / personas / โ›“ chains. That's what `npx skills add` and
104
- GitHub search don't give you.
99
+ **Where skills land.** Running `install` / `use` yourself installs **globally**
100
+ (`~/.claude/skills/`, every project) โ€” for general workflows you want everywhere. Skills
101
+ suggested by autopilot, installed via the Claude Code plugin, or set up by `kit` go into
102
+ **this project** (`./.claude/skills/`, committable for teammates). Override either way
103
+ with `--global` / `--project`.
105
104
 
106
- On top of that, `install` can place a skill straight into `.claude/skills/`:
105
+ Output is English by default; add `--zh` for Chinese.
106
+ After installing a skill, start a new Claude Code session to load it.
107
107
 
108
- - For a repo that exposes a **per-skill folder**, it downloads only that folder
109
- (via the repo archive, with **no GitHub API rate limit**) into
110
- `<target>/.claude/skills/<skill>/`, not the whole repo.
111
- - Several sources? The best installable one is auto-picked. Pass `--source <id>` to
112
- choose, `--yes` for non-interactive runs.
113
- - Other sources (whole-repo / marketplace) print their official command instead
114
- (e.g. `npx skills add owner/repo`).
115
- - `GITHUB_TOKEN` is only needed if you fall back to the API and hit its 60/h limit.
108
+ ## Why a catalog
116
109
 
117
- ## Keeping the catalog fresh
110
+ `search` / `info` / `categories` work fully offline and tell you *which* skill fits โ€”
111
+ organized by function, bilingual, tagged with use-case, when-to-use, personas and โ›“
112
+ chains. `install` then drops just that skill's folder into `.claude/skills/` (not the
113
+ whole repo); when several repos offer the same skill, the best one is picked for you.
118
114
 
119
- The catalog ships inside the package and works offline. `skills-atlas update` pulls
120
- the latest from the public feed (cached under `~/.cache/skills-atlas/`).
115
+ The catalog ships with the tool and works offline, and refreshes itself in the
116
+ background so new skills show up on their own. Run `skills-atlas update` to pull the
117
+ latest on demand.
121
118
 
122
- ## Private / org catalog sources
119
+ ## Your org's private skills
123
120
 
124
- Point the CLI at your organization's own catalog (a `data.json` in the same
125
- schema) so internal skills show up in `search` / `info` / `install` / `kit`
126
- alongside the public Atlas:
121
+ Point the CLI at your organization's own catalog so internal skills show up in
122
+ `search` / `info` / `install` / `kit` alongside the public Atlas:
127
123
 
128
124
  ```bash
129
125
  skills-atlas registry add https://skills.acme.internal/data.json # or a local path
@@ -131,10 +127,7 @@ skills-atlas registry list
131
127
  skills-atlas registry remove https://skills.acme.internal/data.json
132
128
  ```
133
129
 
134
- Private skills **merge** with the public catalog (a private source wins a same-name
135
- clash). Sources are cached locally and merged offline. For a private URL behind
136
- auth, set `SKILLS_ATLAS_TOKEN` (sent as a Bearer header); in CI,
137
- `SKILLS_ATLAS_SOURCES=url1,url2` adds sources without touching config.
130
+ Private skills merge with the public catalog (your own wins a name clash) and are cached locally.
138
131
 
139
132
  ## In Claude Code
140
133
 
@@ -149,9 +142,9 @@ Just describe what you need, or use `/skills-atlas:skill-search`, `:skill-info`,
149
142
 
150
143
  ## In any MCP client
151
144
 
152
- `skills-atlas mcp` runs a zero-dependency [MCP](https://modelcontextprotocol.io)
153
- server over stdio, so any MCP-capable client (Claude Desktop, other agents) can use
154
- the catalog. Add it to your client's config:
145
+ `skills-atlas mcp` runs an [MCP](https://modelcontextprotocol.io) server so any
146
+ MCP-capable client (Claude Desktop, other agents) can use the catalog. Add it to your
147
+ client's config:
155
148
 
156
149
  ```json
157
150
  { "mcpServers": { "skills-atlas": { "command": "npx", "args": ["-y", "skills-atlas-cli", "mcp"] } } }
@@ -164,37 +157,35 @@ anywhere.
164
157
  ## Autopilot (opt-in): the right skill finds you
165
158
 
166
159
  ```bash
167
- skills-atlas hook on # enable (skills-atlas hook off / status)
160
+ skills-atlas hook on # turn it on (hook off / hook status)
161
+ ```
162
+
163
+ With autopilot on, whenever what you're doing lines up with a catalog skill you don't
164
+ have, Claude offers it โ€” explained, with one tap to use it now, see what it covers, or
165
+ skip. You don't have to know the skill exists. It's **off by default**, **quiet** (stays
166
+ silent on greetings and generic asks, never repeats itself, never suggests a skill you
167
+ already have), and **safe** (never auto-installs; a hiccup never blocks your prompt).
168
+
169
+ Two more proactive helpers:
170
+
171
+ - **๐Ÿ”ญ Capability gaps** โ€” `skills-atlas gaps` notices the recurring kinds of work you
172
+ keep doing without a skill, and recommends one.
173
+ - **๐Ÿงน Cleanup** โ€” `skills-atlas prune` flags installed skills you no longer use and
174
+ offers to remove them (never on its own; recent installs are left alone).
175
+
176
+ Tune it to taste:
177
+
178
+ ```bash
179
+ skills-atlas hook suggest on|off # the per-prompt suggestions
180
+ skills-atlas hook gaps on|off # gap recommendations (on by default)
181
+ skills-atlas hook prune on|off # cleanup suggestions (off by default)
182
+ skills-atlas hook model [name] # which model powers gaps/cleanup (default Haiku)
183
+ skills-atlas hook lang en|zh # the language it replies in (default English)
168
184
  ```
169
185
 
170
- Registers a Claude Code `UserPromptSubmit` hook. When what you ask matches the
171
- territory of a catalog skill you don't have, the hook hands Claude a short
172
- shortlist of candidates and **Claude decides** whether any genuinely fits. If it
173
- does, Claude explains **what it does and why it fits your task**, then offers a choice:
174
- use it now, see what it covers first (`skills-atlas info`), or skip. You don't
175
- have to know the skill exists. The split is deliberate: the hook does **recall**
176
- (a distinctive-word match against the catalog, so the right skill is on the
177
- table), Claude does **precision** (it understands your intent and stays silent
178
- unless one truly fits, or searches further itself). It's:
179
-
180
- - **Off by default.** You turn it on explicitly; `hook off` removes it cleanly.
181
- - **Quiet.** Only fires on a distinctive match (greetings and generic actions
182
- like "fix the typo" stay silent), never for an already-installed skill, never
183
- the same skill twice, with a cooldown between suggestions. Claude is the
184
- final filter on relevance.
185
- - **Local and private.** Your prompt is matched against the bundled catalog
186
- on your machine; nothing is sent anywhere.
187
- - **Safe.** Never auto-installs (always your call), and fails open (a hook
188
- error never blocks your prompt).
189
-
190
- **๐Ÿ”ญ Capability gaps.** `skills-atlas gaps` shows Claude your *recent activity* and
191
- lets **Claude** spot the recurring kinds of work you keep doing that no installed
192
- skill covers yet, then recommend one with the pattern as evidence. We don't guess
193
- with heuristics; we just give Claude the memory it lacks (your recent prompts, read
194
- from Claude Code's own local transcripts; **nothing is stored or sent**) plus the
195
- catalog. With the hook on, it also nudges in-conversation now and then. The two
196
- layers are independent: `skills-atlas hook suggest on|off` (per-prompt) and
197
- `skills-atlas hook gaps on|off` (the proactive nudge).
186
+ The per-prompt suggestions are matched on your own machine and sent nowhere. The gaps
187
+ and cleanup helpers hand your recent activity to the model you picked (the same provider
188
+ Claude Code already uses) to judge it.
198
189
 
199
190
  ## License
200
191
 
package/bin/skills.js CHANGED
@@ -15,6 +15,7 @@ const registry = require('../src/commands/registry');
15
15
  const suggest = require('../src/commands/suggest');
16
16
  const hook = require('../src/commands/hook');
17
17
  const gaps = require('../src/commands/gaps');
18
+ const gapAnalyze = require('../src/commands/gap-analyze');
18
19
  const prune = require('../src/commands/prune');
19
20
  const update = require('../src/commands/update');
20
21
  const mcp = require('../src/commands/mcp');
@@ -23,7 +24,7 @@ const { categories, list } = require('../src/commands/categories');
23
24
  const VERSION = require('../package.json').version;
24
25
  // `use` = install + activate inline (emit the SKILL.md so an agent follows it now).
25
26
  const use = argv => install([...argv, '--inline']);
26
- const commands = { search, info, install, use, kit, sync, installed, upgrade, remove, outdated, doctor, suggest, hook, gaps, prune, update, categories, list, registry, mcp };
27
+ const commands = { search, info, install, use, kit, sync, installed, upgrade, remove, outdated, doctor, suggest, hook, gaps, 'gap-analyze': gapAnalyze, prune, update, categories, list, registry, mcp };
27
28
 
28
29
  const HELP = `skills-atlas โ€” search, install & manage AI agent skills
29
30
 
@@ -75,7 +76,9 @@ async function main() {
75
76
  }
76
77
  // Opportunistic, non-blocking background catalog refresh so new skills appear over
77
78
  // time without a manual `update`. Skipped for `update` itself; fully fail-silent.
78
- if (sub !== 'update') { try { require('../src/data').maybeBackgroundRefresh(); } catch { /* ignore */ } }
79
+ if (sub !== 'update' && sub !== 'gap-analyze' && !process.env.SKILLS_ATLAS_SUBCALL) {
80
+ try { require('../src/data').maybeBackgroundRefresh(); } catch { /* ignore */ }
81
+ }
79
82
  await cmd(rest);
80
83
  }
81
84