skills-atlas-cli 0.9.0 โ 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 +54 -63
- package/package.json +1 -1
- package/src/commands/gaps.js +1 -1
- package/src/commands/suggest.js +3 -3
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 &
|
|
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
|
|
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
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
120
|
-
|
|
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
|
-
##
|
|
119
|
+
## Your org's private skills
|
|
123
120
|
|
|
124
|
-
Point the CLI at your organization's own catalog
|
|
125
|
-
|
|
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
|
|
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
|
|
153
|
-
|
|
154
|
-
|
|
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 #
|
|
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
|
-
|
|
171
|
-
|
|
172
|
-
|
|
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/package.json
CHANGED
package/src/commands/gaps.js
CHANGED
|
@@ -29,7 +29,7 @@ const INSTRUCTION = dismissed =>
|
|
|
29
29
|
`is built for and they haven't installed. For each real recurring need (ignore one-offs and ` +
|
|
30
30
|
`anything already covered): state the pattern + rough frequency as evidence, then recommend the ` +
|
|
31
31
|
`skill โ verify it exists with \`skills-atlas search "<intent>"\` or \`skills-atlas info <skill>\`, ` +
|
|
32
|
-
`and install with \`skills-atlas use <skill> --yes\`.` +
|
|
32
|
+
`and install with \`skills-atlas use <skill> --yes --project\`.` +
|
|
33
33
|
(dismissed.length ? ` Already dismissed (skip these): ${dismissed.join(', ')}.` : '') +
|
|
34
34
|
` If nothing clearly recurs, say there are no gaps.`;
|
|
35
35
|
|
package/src/commands/suggest.js
CHANGED
|
@@ -78,7 +78,7 @@ module.exports = async function suggest() {
|
|
|
78
78
|
if (txt && !/^NONE\b/i.test(txt)) {
|
|
79
79
|
const body = pending.source === 'fallback'
|
|
80
80
|
? txt // already a full digest for the main agent to judge
|
|
81
|
-
: `[Skills Atlas โ capability gaps] ${txt}\nOffer this to the user only if it genuinely fits โ verify with \`skills-atlas info <skill>\`, install with \`skills-atlas use <skill> --yes\`; otherwise stay silent.`;
|
|
81
|
+
: `[Skills Atlas โ capability gaps] ${txt}\nOffer this to the user only if it genuinely fits โ verify with \`skills-atlas info <skill>\`, install with \`skills-atlas use <skill> --yes --project\`; otherwise stay silent.`;
|
|
82
82
|
emit(body + langHint(ap.replyLang));
|
|
83
83
|
gapstate.touchNudge(gapstate.activitySignature(recent));
|
|
84
84
|
writeState(file, state);
|
|
@@ -136,7 +136,7 @@ module.exports = async function suggest() {
|
|
|
136
136
|
|
|
137
137
|
const lines = candidates.map(c => {
|
|
138
138
|
const uc = (c.row.use_case_en || c.row.use_case || '').replace(/\s+/g, ' ').trim().slice(0, 80);
|
|
139
|
-
return `- ${c.skill}${uc ? ` โ ${uc}` : ''} (details: \`skills-atlas info ${c.skill}\` ยท use now: \`skills-atlas use ${c.skill} --yes\`)`;
|
|
139
|
+
return `- ${c.skill}${uc ? ` โ ${uc}` : ''} (details: \`skills-atlas info ${c.skill}\` ยท use now: \`skills-atlas use ${c.skill} --yes --project\`)`;
|
|
140
140
|
}).join('\n');
|
|
141
141
|
emit(
|
|
142
142
|
`[Skills Atlas autopilot] The user may be doing something one of these installable agent ` +
|
|
@@ -144,7 +144,7 @@ module.exports = async function suggest() {
|
|
|
144
144
|
`genuinely fits what they actually asked:\n${lines}\n` +
|
|
145
145
|
`If one genuinely fits, DON'T just name it: in one line tell the user what it does and why it ` +
|
|
146
146
|
`fits THIS task (it's a curated skill from the Skills Atlas catalog, not something you made up), ` +
|
|
147
|
-
`then let them choose โ activate it now (\`skills-atlas use <skill> --yes\` installs + applies it ` +
|
|
147
|
+
`then let them choose โ activate it now (\`skills-atlas use <skill> --yes --project\` installs + applies it ` +
|
|
148
148
|
`immediately), see what it covers first (\`skills-atlas info <skill>\`), or skip and you'll just ` +
|
|
149
149
|
`do the task yourself. If none fit but the task plainly needs a specialized skill, you may run ` +
|
|
150
150
|
`\`skills-atlas search "<short intent>"\` to look further. If nothing fits, say nothing about this ` +
|