@klhapp/skillmux 1.10.0 → 1.11.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/docs/cli.md CHANGED
@@ -4,11 +4,11 @@ The Bun package and standalone Linux executable expose the same Skillmux CLI.
4
4
  For Linux installation, use the [pinned checksum-verified download](getting-started.md#install-the-cli)
5
5
  or, when provenance verification is required, the
6
6
  [attested GitHub CLI path](getting-started.md#install-with-github-cli-attestation).
7
- Native management belongs on the machine that owns the client skill directories:
7
+ Native management belongs on the machine that owns the agent skill directories:
8
8
  use the built-in `local` target for `init`, `install`, pinning, and `sync`.
9
9
  Named remote contexts administer shared-server configuration through its
10
10
  administrative API only; they do not install, pin, synchronize, or otherwise
11
- manage skill directories on remote client machines.
11
+ manage skill directories on remote agent machines.
12
12
 
13
13
  In this guide, **local target** means the filesystem and process selected by
14
14
  the built-in CLI context. It does not describe local inference. A local target
@@ -161,59 +161,79 @@ The JSON response contains no credential, API-key, or token values.
161
161
 
162
162
  `config init` writes only `vault_path`. It leaves an existing config unchanged
163
163
  and does not add `local_vault_paths`. Remote contexts administer the deployed
164
- server configuration; they never administer client skill installation, pins,
165
- sync, or any other remote-client directory operation.
164
+ server configuration; they never administer agent skill installation, pins,
165
+ sync, or any other remote-agent directory operation.
166
166
 
167
167
  ---
168
168
 
169
169
  ## Setup planner (`skillmux init`)
170
170
 
171
171
  Run `skillmux init` with no arguments in a terminal to start guided setup.
172
- Skillmux preselects clients it can detect from filesystem evidence, asks for
173
- core skills, prints one complete review, and applies after one confirmation.
172
+ On a machine with no config yet, it first asks for the skill vault path
173
+ (defaulting to `~/skills`) rather than assuming it silently the vault
174
+ must already exist there (`skillmux scan`/`install` create it). Skillmux
175
+ preselects agents it can detect from filesystem evidence, asks for core
176
+ skills, prints one complete review, and applies after one confirmation.
174
177
  The prompt stays line-oriented and does not use an alternate terminal screen.
175
178
 
176
- Select clients by product name:
179
+ Select agents by product name:
177
180
 
178
181
  ```sh
179
- skillmux init --client claude-code --client codex --core csv-formatter --dry-run
180
- skillmux init --client claude-code --client codex --core csv-formatter --yes
182
+ skillmux init --agent claude-code --agent codex --core csv-formatter --dry-run
183
+ skillmux init --agent claude-code --agent codex --core csv-formatter --yes
181
184
  ```
182
185
 
183
- Skillmux supports these client IDs:
186
+ Skillmux supports these agent IDs:
184
187
 
185
- | Client | Skill delivery |
188
+ | Agent | Skill delivery |
186
189
  |--------|----------------|
187
190
  | `claude-code` | `~/.claude/skills` |
188
191
  | `codex` | `$CODEX_HOME/skills`, falling back to `~/.codex/skills` |
189
- | `gemini-cli`, `opencode`, `github-copilot`, `windsurf` | Shared `~/.agents/skills` surface |
192
+ | `opencode`, `github-copilot`, `windsurf` | Shared `~/.agents/skills` surface |
190
193
  | `antigravity` | `~/.gemini/config/skills` |
191
194
  | `goose`, `hermes` | Manual full-vault configuration |
192
- | `skillmux-mcp` | Manual MCP registration |
193
195
 
194
- Direct target IDs are `agent-skills`, `claude-code`, `codex`, and `custom`.
195
- Custom targets require `--dir <dir>`. The legacy `agents` and `claude` IDs
196
- print deprecation warnings and retain their manifest names.
196
+ There's no agent ID for "just MCP" — pass `--show-mcp-setup` to also print
197
+ the MCP registration snippet, independent of which (if any) agents you
198
+ select. A tool not in this table isn't supported by `init` yet; for an
199
+ arbitrary directory not tied to any supported agent, use `skillmux target
200
+ add <name> --dir <dir> --yes` directly instead of `init`.
201
+
202
+ `--show-mcp-setup` only prints the snippet; it never registers anything.
203
+ For `claude-code` and `codex`, `--register-mcp` goes further and runs that
204
+ agent's own CLI (`claude mcp add` / `codex mcp add`) to register skillmux as
205
+ an MCP server directly, so you don't have to paste the snippet yourself. In
206
+ guided mode, if any selected agent supports it, skillmux asks before
207
+ registering; noninteractive runs only register when `--register-mcp` is
208
+ passed explicitly. It is a no-op for agents with no known registration
209
+ command (skip it and use `--show-mcp-setup` instead).
210
+
211
+ The managed instruction block only teaches an agent to call `resolve_skill`/
212
+ `fetch_skill` (MCP tools), so `init` only writes it for an agent actually
213
+ getting MCP this run — one you passed `--register-mcp` for, or any agent at
214
+ all when `--show-mcp-setup` is set. A purely native run (neither flag) writes
215
+ no instruction files, by design; `--no-instructions` forces that off even
216
+ when MCP flags are present.
197
217
 
198
218
  `--dry-run` prints the config, target, instruction, and core plan without
199
219
  prompting or writing. `--json` emits one schema-versioned plan or result
200
220
  object. Noninteractive writes require `--yes`. `--interactive` forces the
201
- wizard and seeds it with supplied flags. `--no-instructions` skips managed
202
- instruction files; `--no-sync` saves setup without materializing links.
221
+ wizard and seeds it with supplied flags. `--no-sync` saves setup without
222
+ materializing links.
203
223
 
204
224
  Skillmux rejects a target that currently links to the whole vault. Convert it
205
225
  only after reviewing the smaller post-sync skill set:
206
226
 
207
227
  ```sh
208
- skillmux init --client claude-code --migrate-full-vault \
228
+ skillmux init --agent claude-code --migrate-full-vault \
209
229
  --core csv-formatter --dry-run
210
- skillmux init --client claude-code --migrate-full-vault \
230
+ skillmux init --agent claude-code --migrate-full-vault \
211
231
  --core csv-formatter --yes
212
232
  ```
213
233
 
214
- Client instruction adapters append one managed discovery block and preserve
234
+ Agent instruction adapters append one managed discovery block and preserve
215
235
  the rest of each file. Skillmux uses `.hermes.md` for Hermes and refuses
216
- `SOUL.md` or Hermes's installed-source `AGENTS.md`. A client without a safe
236
+ `SOUL.md` or Hermes's installed-source `AGENTS.md`. An agent without a safe
217
237
  user-level convention reports manual setup.
218
238
 
219
239
  ---
@@ -230,24 +250,35 @@ Skillmux resolves the project directory from an explicit positional path, then
230
250
  the current Git root, then the current directory. It suggests the directory
231
251
  basename as the project-group name.
232
252
 
233
- The noninteractive form accepts repeatable client and skill flags:
253
+ The noninteractive form accepts repeatable agent and skill flags:
234
254
 
235
255
  ```sh
236
256
  skillmux project init ~/code/skillmux \
237
257
  --name skillmux \
238
- --client claude-code \
239
- --client codex \
258
+ --agent claude-code \
259
+ --agent codex \
240
260
  --skill sdd-tdd \
241
261
  --skill code-context \
242
262
  --yes
243
263
  ```
244
264
 
245
- `--client` maps product names to configured, deduplicated targets. Advanced
265
+ `--agent` maps product names to configured, deduplicated targets. Advanced
246
266
  callers can attach a configured target with repeated `--target <name>`.
247
267
  Re-running the command merges missing paths, skills, and target attachments.
248
268
  It validates the complete manifest before an atomic write and runs `sync` by
249
269
  default. Use `--no-sync` when another process will materialize the links.
250
270
 
271
+ `--register-mcp` is the project-local counterpart to `skillmux init
272
+ --register-mcp`, narrowed to `claude-code` — the only agent whose own CLI
273
+ has a project MCP scope (`codex mcp add` has no scope flag at all, so codex
274
+ stays global-only regardless). It runs `claude mcp add -s project` with this
275
+ project directory as the working directory, which writes a committed
276
+ `.mcp.json` shared with your team rather than the global, personal
277
+ registration `skillmux init` makes. Same instruction-writing rule as `init`:
278
+ a project-root `CLAUDE.md` is written only for an agent actually getting
279
+ registered this run, never unconditionally. Guided mode asks before
280
+ registering, when the selected agents include one that supports it.
281
+
251
282
  Direct project commands support later maintenance:
252
283
 
253
284
  ```sh
@@ -257,13 +288,13 @@ skillmux project add-path skillmux ~/code/skillmux --yes
257
288
  skillmux project remove-path skillmux ~/old/skillmux --yes
258
289
  skillmux project pin skillmux sdd-tdd code-context --yes
259
290
  skillmux project unpin skillmux old-skill --yes
260
- skillmux project attach skillmux --client claude-code --client codex --yes
291
+ skillmux project attach skillmux --agent claude-code --agent codex --yes
261
292
  skillmux project detach skillmux --target codex --yes
262
293
  ```
263
294
 
264
295
  `add-path` and `remove-path` detect the current Git root when the path is
265
- omitted. Client attachments map to configured physical targets and deduplicate
266
- clients that share `~/.agents/skills`. Mutating commands validate the complete
296
+ omitted. Agent attachments map to configured physical targets and deduplicate
297
+ agents that share `~/.agents/skills`. Mutating commands validate the complete
267
298
  manifest and replace it atomically. Run `skillmux sync` after direct
268
299
  maintenance commands to materialize the new state.
269
300
 
@@ -271,7 +302,7 @@ maintenance commands to materialize the new state.
271
302
 
272
303
  ## Advanced targets (`skillmux target`)
273
304
 
274
- Most users should select products with `init --client`. Use `target` commands
305
+ Most users should select products with `init --agent`. Use `target` commands
275
306
  for custom delivery directories and manifest inspection:
276
307
 
277
308
  ```sh
@@ -358,7 +389,7 @@ skillmux audit prune --older-than 30d --json
358
389
  # Promote observed, correlated fetches into an eval case file
359
390
  skillmux eval promote --since 7d --dry-run
360
391
  skillmux eval promote --since 7d --yes
361
- skillmux eval promote --since 7d --target eval/observed.json --yes
392
+ skillmux eval promote --since 7d --out eval/observed.json --yes
362
393
  ```
363
394
 
364
395
  `report` reads `--server <url>`, `--db <path>` (an explicit SQLite file,
@@ -383,7 +414,7 @@ manual pruning is for on-demand cleanup or a tighter window.
383
414
 
384
415
  `eval promote` reads correlated fetches since `--since`, deduplicates them by
385
416
  normalized query, and writes `{ query, split: "observed", relevant_skill_ids
386
- }` cases to `--target` (default an `eval-observed.json` file under
417
+ }` cases to `--out` (or deprecated alias `--target`; default an `eval-observed.json` file under
387
418
  `state_dir`; never the hand-curated `eval/queries.json` unless given
388
419
  explicitly). It never rewrites a case for a query already present in the
389
420
  target file; skipped counts are reported in the summary. Because promoted
@@ -404,7 +435,7 @@ The HTTP server has two separate surfaces:
404
435
  The MCP bearer token applies only to `/mcp`. The administrative bearer token
405
436
  below applies only to `/admin/v1/*` (and `GET /stats`); neither credential grants access to the
406
437
  other surface. Named contexts use the latter to administer the deployed server,
407
- not any remote client skill directory.
438
+ not any remote agent skill directory.
408
439
 
409
440
  Remote servers expose administrative control endpoints under `/admin/v1/*` when enabled in configuration:
410
441
 
@@ -456,12 +487,28 @@ When `--json` or `SKILLMUX_JSON=true` is set, all output is emitted to `stdout`
456
487
  {
457
488
  "schema_version": 1,
458
489
  "ok": true,
490
+ "context": "local",
459
491
  "target": "local",
460
492
  "data": { ... },
461
493
  "error": null
462
494
  }
463
495
  ```
464
496
 
497
+ The `context` field identifies the execution context (`"local"` or `{ "name": "<context>", "server": "<url>" }`). The `target` field carries identical content but is deprecated; consumers should read `context`. It stays in the payload as a compatibility alias so existing automation keeps parsing, and no removal is planned.
498
+
499
+ `skillmux init` additionally repeats its payload as deprecated top-level
500
+ `command`, `phase`, `dry_run`, `applied`, `plan`, and `result` keys, which
501
+ predate this envelope. They carry exactly the same content as `data` and are
502
+ kept only so existing automation keeps working. Read `data` instead. The
503
+ duplicated keys stay for the same reason as `target` above, and no removal
504
+ is planned.
505
+
506
+ `skillmux scan --format json` is the one exception to the envelope. It
507
+ predates this contract and prints a bare `{"scanned": N, "findings": [...]}`
508
+ object instead. It is deprecated and warns on stderr, which leaves stdout
509
+ parseable for existing consumers. Use the global `--json` for anything new,
510
+ and read `data` for the same fields.
511
+
465
512
  ### Exit codes
466
513
 
467
514
  | Code | Meaning | Examples |
package/docs/concepts.md CHANGED
@@ -5,7 +5,7 @@ Skillmux separates three decisions:
5
5
  | Decision | Choices |
6
6
  | --- | --- |
7
7
  | Skill delivery | Native core/project pins or routed MCP retrieval |
8
- | Process location | On the client machine or as a shared HTTP service |
8
+ | Process location | On the agent machine or as a shared HTTP service |
9
9
  | Packaging | Skillmux CLI installation or Skillmux server deployment |
10
10
 
11
11
  Retrieval capability is a fourth, independent concern: lexical, hybrid,
@@ -25,7 +25,7 @@ The default vault checkout path is `~/skills`. Set `vault_path` in
25
25
  `~/.config/skillmux/config.toml` when its checkout lives elsewhere. On one
26
26
  machine, `~/skills` can be both the vault source of truth and its checkout.
27
27
  In a shared topology, use a Git-backed vault source of truth, a checkout on
28
- each client machine for the Skillmux CLI, and a checkout on the server for
28
+ each agent machine for the Skillmux CLI, and a checkout on the server for
29
29
  Skillmux server. Skillmux does not pull, push, replicate, or determine
30
30
  freshness between checkouts; Git and the deployment process own those jobs.
31
31
 
@@ -45,7 +45,7 @@ Skillmux applies three policies to one vault checkout:
45
45
 
46
46
  | Tier | Scope | Delivery |
47
47
  | --- | --- | --- |
48
- | Core | Each configured target | Native client skill directory |
48
+ | Core | Each configured target | Native agent skill directory |
49
49
  | Project | Selected project paths and targets | Project-local native skill directory |
50
50
  | Routed | Full indexed vault | MCP on demand |
51
51
 
@@ -55,7 +55,7 @@ one.
55
55
 
56
56
  One skill can serve different roles across machines or projects, but the
57
57
  shared manifest prevents conflicting core and project assignments. Core stays
58
- capped at 25 skills to protect client startup context.
58
+ capped at 25 skills to protect agent startup context.
59
59
 
60
60
  Delivery tiers do not select a deployment. A local Skillmux process can serve
61
61
  routed skills over stdio, while a shared Skillmux process can serve its server
@@ -66,7 +66,7 @@ checkout over HTTP.
66
66
  ```mermaid
67
67
  flowchart TD
68
68
  V[Git-backed vault source of truth]
69
- V -->|client checkout| CLI[Skillmux CLI]
69
+ V -->|agent checkout| CLI[Skillmux CLI]
70
70
  V -->|server checkout| SRV[Skillmux server]
71
71
  CLI --> NM[Native management: filesystem links]
72
72
  CLI --> LM[Local MCP: stdio]
@@ -75,7 +75,7 @@ flowchart TD
75
75
 
76
76
  | Topology | Process location | Transport | Typical installation |
77
77
  | --- | --- | --- | --- |
78
- | Native management | Client machine | Filesystem links | Skillmux CLI |
78
+ | Native management | Agent machine | Filesystem links | Skillmux CLI |
79
79
  | Local MCP | Beside one client | stdio | Skillmux CLI |
80
80
  | Shared MCP | Server or container host | Streamable HTTP | Skillmux server (full image) |
81
81
 
@@ -99,7 +99,7 @@ An HTTP server has two separate surfaces:
99
99
  MCP authentication protects `/mcp`; administrative authentication protects
100
100
  `/admin/v1/*`. Their bearer tokens are distinct and do not grant access across
101
101
  surfaces. A named CLI context is an operator connection to the deployed server,
102
- not a way to manage skill directories on remote client machines. The server
102
+ not a way to manage skill directories on remote agent machines. The server
103
103
  and its full/slim images never manage host agent directories. See
104
104
  [Deployment](deployment.md#http-surfaces).
105
105
 
@@ -109,16 +109,20 @@ package downloads and caches GTE-small when local inference first loads it;
109
109
  `skillmux models download` prefetches it. Neither Skillmux server image
110
110
  bundles a local reranker; configure one remotely when needed.
111
111
 
112
- ## Clients and targets
112
+ ## Agents and targets
113
113
 
114
- A **client** is a supported product name such as `claude-code` or `codex`.
114
+ An **agent** is a supported product name such as `claude-code` or `codex`.
115
115
  Skillmux maps it to the product's skill directory and safe instruction-file
116
116
  conventions.
117
117
 
118
- A **target** is a physical directory managed by sync. Several clients can map
119
- to one target. Gemini CLI, OpenCode, GitHub Copilot, and Windsurf share
118
+ A **target** is a physical directory managed by sync. Several agents can map
119
+ to one target. OpenCode, GitHub Copilot, and Windsurf share
120
120
  `~/.agents/skills`, so Skillmux deduplicates that directory.
121
121
 
122
+ The mapping is not total. `goose` and `hermes` use full-vault delivery and
123
+ map to no target at all, so commands that take `--agent` as a stand-in for a
124
+ target reject them.
125
+
122
126
  Custom targets let you manage another directory without adding a product
123
127
  adapter:
124
128
 
@@ -216,7 +216,7 @@ Before exposing HTTP beyond localhost, set `hostname` to a reachable interface,
216
216
  calling `/admin/v1/*` when that API is enabled. Do not reuse or imply either
217
217
  token authorizes the other surface. Named CLI contexts use the administrative
218
218
  token to inspect or update the deployed server configuration only; they cannot
219
- install, pin, synchronize, or otherwise manage remote client skill directories.
219
+ install, pin, synchronize, or otherwise manage remote agent skill directories.
220
220
  Docker images likewise do not manage host agent directories.
221
221
  Inside the server image, only read-only `config show`, `get`, `validate`,
222
222
  `diff`, and `status` are available. Run `config init` or `config set` with the
@@ -299,7 +299,7 @@ project_groups = ["repo1"] # which [project.*] groups materialize into
299
299
  - `[core].skills`: symlinked into every `[targets.*]` dir on `sync`. Capped at 25 skills; `sync` fails if a listed skill id isn't actually in the vault.
300
300
  - `[project.<group>].skills`: symlinked only into `<path>/<relative path from $HOME to the target dir>`, for each `paths` entry, and only for targets whose `project_groups` names that group. `paths` entries must resolve under `$HOME` (that's how the pin path is derived). A skill can't appear in both `[core]` and the same `[project.*]` group.
301
301
  - `[project.<group>].paths` can list the same project's checkout on more than one machine (e.g. `["/home/alice/code/repo1", "/Users/alice/code/repo1"]`). `sync` silently skips any entry that doesn't exist on the machine it's running on (see below), so one shared manifest can span machines with different checkout locations without needing per-machine manifests.
302
- - `[targets.<name>]`: one entry per adopted surface. `skillmux init --target <name> --yes` writes these and scopes newly added targets to the current hostname. Hand-editing is fine as long as `sync` is still allowed to own the directory (see below). An optional `host` limits the target to an exact machine-hostname match; omit it for a global, backward-compatible target. A host mismatch is reported and skipped before any target filesystem operation. `project_groups` is an explicit list, not a boolean: a target only receives the specific groups it names, never every group in the manifest.
302
+ - `[targets.<name>]`: one entry per adopted surface. `skillmux init --agent <name> --yes` writes these for each supported agent and scopes newly added targets to the current hostname; `skillmux target add <name> --dir <dir> --yes` writes one directly for a directory not tied to any supported agent. Hand-editing is fine as long as `sync` is still allowed to own the directory (see below). An optional `host` limits the target to an exact machine-hostname match; omit it for a global, backward-compatible target. A host mismatch is reported and skipped before any target filesystem operation. `project_groups` is an explicit list, not a boolean: a target only receives the specific groups it names, never every group in the manifest.
303
303
 
304
304
  **Pin/unpin without hand-editing.** `skillmux core pin`/`unpin` mutate `[core]` for you, and `skillmux project pin`/`unpin` mutate `[project.*]`, validating with the same rules `sync` enforces (skill must resolve from `vault_path`, no duplicate pins, `[core]` stays under the 25-skill cap) before writing anything:
305
305
 
@@ -338,8 +338,10 @@ content, and rejects a desired skill that collides with an unmanaged entry
338
338
  before changing anything.
339
339
 
340
340
  `sync` refuses to touch a directory that exists but has no marker; run
341
- `skillmux init --target <name> --yes` first, which either creates the
342
- directory fresh or adopts an existing one in place (contents untouched).
341
+ `skillmux init --agent <name> --yes` (or `skillmux target add <name> --dir
342
+ <dir> --yes` for a directory not tied to any supported agent) first, which
343
+ either creates the directory fresh or adopts an existing one in place
344
+ (contents untouched).
343
345
  `sync --restore-monolith` likewise refuses a `local_vault` marker or any
344
346
  unmanaged target content before replacing a target directory with a symlink
345
347
  to the vault.
@@ -296,7 +296,7 @@ Read [CLI reference](cli.md#administrative-http-api-adminv1) for routes and
296
296
 
297
297
  Named contexts administer the deployed server only — configuration, stats,
298
298
  audit prune, evaluation, and remote diagnostics. They do not install, pin,
299
- synchronize, or otherwise manage skill directories on remote client machines.
299
+ synchronize, or otherwise manage skill directories on remote agent machines.
300
300
  Run those filesystem-management commands through Skillmux CLI on the machine
301
301
  that owns the directories. The full and slim server images read their mounted
302
302
  vault checkout and do not manage host agent directories.
@@ -6,7 +6,7 @@ an installation.
6
6
  ```mermaid
7
7
  flowchart LR
8
8
  Q{What do you need?}
9
- Q -->|Managed links in client skill directories| A[Manage native skills]
9
+ Q -->|Managed links in agent skill directories| A[Manage native skills]
10
10
  Q -->|Local stdio MCP| B[Add local MCP retrieval]
11
11
  Q -->|Streamable HTTP MCP for several clients| C[Run a shared MCP service]
12
12
  A --> A1[Skillmux CLI]
@@ -16,7 +16,7 @@ flowchart LR
16
16
 
17
17
  | Goal | Skill delivery | Recommended installation |
18
18
  | --- | --- | --- |
19
- | [Manage native skills](#manage-native-skills) | Managed links in client skill directories | Skillmux CLI |
19
+ | [Manage native skills](#manage-native-skills) | Managed links in agent skill directories | Skillmux CLI |
20
20
  | [Add local MCP retrieval](#add-local-mcp-retrieval) | Local stdio MCP | Skillmux CLI |
21
21
  | [Run a shared MCP service](#run-a-shared-mcp-service) | Streamable HTTP MCP | Skillmux server (full image) |
22
22
 
@@ -102,6 +102,10 @@ skillmux install owner/repo
102
102
  skillmux install owner/repo/path/to/skill
103
103
  ```
104
104
 
105
+ `install` scans the skill, shows what it found, and asks before writing to
106
+ the vault. Add `--yes` to approve up front, which a non-interactive run
107
+ requires. See [Managing skills](skill-management.md#install-from-git).
108
+
105
109
  Or create a small skill:
106
110
 
107
111
  ```sh
@@ -122,7 +126,7 @@ Run `skillmux scan ~/skills` before adopting an existing collection.
122
126
 
123
127
  ## Manage native skills
124
128
 
125
- Run the guided setup on the machine that owns the client skill directories:
129
+ Run the guided setup on the machine that owns the agent skill directories:
126
130
 
127
131
  ```sh
128
132
  skillmux init
@@ -131,7 +135,7 @@ skillmux init
131
135
  The planner:
132
136
 
133
137
  1. validates the vault;
134
- 2. detects clients from filesystem evidence;
138
+ 2. detects agents from filesystem evidence;
135
139
  3. asks which skills belong in the core tier;
136
140
  4. shows the config, target, instruction, and sync plan;
137
141
  5. applies the plan after confirmation.
@@ -145,14 +149,14 @@ Use explicit flags for automation:
145
149
 
146
150
  ```sh
147
151
  skillmux init \
148
- --client claude-code \
149
- --client codex \
152
+ --agent claude-code \
153
+ --agent codex \
150
154
  --core csv-formatter \
151
155
  --dry-run
152
156
 
153
157
  skillmux init \
154
- --client claude-code \
155
- --client codex \
158
+ --agent claude-code \
159
+ --agent codex \
156
160
  --core csv-formatter \
157
161
  --yes
158
162
  ```
@@ -172,13 +176,13 @@ root:
172
176
  skillmux project init
173
177
  ```
174
178
 
175
- The noninteractive form accepts repeatable client and skill flags:
179
+ The noninteractive form accepts repeatable agent and skill flags:
176
180
 
177
181
  ```sh
178
182
  skillmux project init ~/code/my-project \
179
183
  --name my-project \
180
- --client claude-code \
181
- --client codex \
184
+ --agent claude-code \
185
+ --agent codex \
182
186
  --skill code-context \
183
187
  --yes
184
188
  ```
@@ -225,6 +229,10 @@ Register it with your MCP client:
225
229
  The client launches the process and closes it with the MCP session. Continue
226
230
  with [MCP routing](mcp-routing.md) for client behavior and ranked candidate retrieval.
227
231
 
232
+ For `claude-code` and `codex`, `skillmux init --register-mcp` runs this
233
+ registration for you via the agent's own CLI instead of editing config by
234
+ hand — see [Setup planner](cli.md#setup-planner-skillmux-init).
235
+
228
236
  ## Run a shared MCP service
229
237
 
230
238
  Use the full image when you want local embeddings without configuring an
@@ -266,7 +274,7 @@ The server keeps its two HTTP surfaces separate:
266
274
  Configure separate MCP and administrative bearer tokens; one never grants
267
275
  access to the other. Named CLI contexts can administer this deployed server,
268
276
  but cannot install, pin, synchronize, or otherwise manage skill directories on
269
- remote client machines. See [Deployment](deployment.md#http-surfaces).
277
+ remote agent machines. See [Deployment](deployment.md#http-surfaces).
270
278
 
271
279
  Manage the mounted vault on the host. A retrieval-only container should mount
272
280
  it read-only.
@@ -277,7 +285,7 @@ Use this topology when users need native core or project pins and also one
277
285
  shared MCP endpoint. Keep one Git-backed vault source of truth. A vault
278
286
  checkout is its physical copy; on one machine, `~/skills` can be both:
279
287
 
280
- - each machine that owns client skill directories keeps its own checkout and
288
+ - each machine that owns agent skill directories keeps its own checkout and
281
289
  runs the Skillmux CLI for `init`, pinning, and `sync`;
282
290
  - the shared server mounts its own checkout and serves routed retrieval over
283
291
  HTTP;
@@ -59,7 +59,7 @@ and network exposure before serving other machines. See
59
59
  This is the MCP surface for AI clients. Its bearer token applies only to
60
60
  `/mcp`; server configuration uses the separate operator surface at
61
61
  `/admin/v1/*`. AI clients do not need the CLI to use `/mcp`; named CLI contexts
62
- are for administering the deployed server, not remote client skill directories.
62
+ are for administering the deployed server, not remote agent skill directories.
63
63
  See [Deployment](deployment.md#http-surfaces).
64
64
 
65
65
  ## Tool contract
@@ -1,11 +1,11 @@
1
1
  # Managing skills
2
2
 
3
3
  Skillmux keeps skill content in a vault checkout and materializes selected
4
- skills into client directories. The vault source of truth is the logical
4
+ skills into agent directories. The vault source of truth is the logical
5
5
  collection; a checkout is its physical copy. This guide covers the commands
6
6
  that change or inspect that state.
7
7
 
8
- Run these commands on the machine that owns the vault checkout and client
8
+ Run these commands on the machine that owns the vault checkout and agent
9
9
  directories. For a retrieval-only Docker service, manage the mounted checkout
10
10
  on the host and keep the container mount read-only; the server image does not
11
11
  manage host agent directories.
@@ -27,20 +27,32 @@ Skillmux clones into a temporary directory, validates the selected skill,
27
27
  scans its text files, and copies it to `vault_path`. Existing skill IDs require
28
28
  `--force`.
29
29
 
30
- Preview the destination without copying:
30
+ Nothing is written to the vault until you approve it. The scan result prints
31
+ first, then `install` asks for confirmation, so you decide with the findings
32
+ already on screen. Pass `--yes` to approve up front. A non-interactive run
33
+ (no TTY, or `--json`) fails instead of installing unattended, the same way
34
+ `skillmux update` behaves, so scripts and CI must opt in explicitly:
31
35
 
32
36
  ```sh
33
- skillmux install owner/repo --dry-run
37
+ skillmux install owner/repo --yes
34
38
  ```
35
39
 
36
- Set a scan gate when you want findings to block installation:
40
+ Preview the destination without copying. `--dry-run` writes nothing, so it
41
+ never asks for confirmation:
37
42
 
38
43
  ```sh
39
- skillmux install owner/repo --fail-on high
44
+ skillmux install owner/repo --dry-run
40
45
  ```
41
46
 
42
47
  The scanner detects suspicious prompt-injection patterns, secrets, and risky
43
- instructions. Findings remain advisory unless you pass `--fail-on`.
48
+ instructions. A high-severity finding aborts the install by default. Use
49
+ `--fail-on` to move that threshold, where a lower one is stricter, and
50
+ `--fail-on none` to install despite any finding:
51
+
52
+ ```sh
53
+ skillmux install owner/repo --fail-on low # also abort on low and medium
54
+ skillmux install owner/repo --fail-on none # never abort on findings
55
+ ```
44
56
 
45
57
  `install` refuses a `file://` source by default — a `file://` URL reaches the
46
58
  local filesystem directly, so honoring one unconditionally would let anything
@@ -74,13 +86,21 @@ Leaving `allowed_hosts` unset (the default) leaves both commands unrestricted.
74
86
  ```sh
75
87
  skillmux scan
76
88
  skillmux scan ~/skills/candidate
77
- skillmux scan --format json
89
+ skillmux scan --json
78
90
  skillmux scan --fail-on medium
79
91
  ```
80
92
 
81
93
  With no path, `scan` checks the configured vault. `--json` wraps the result in
82
- the standard CLI automation envelope, while `--format json` selects the
83
- scanner's raw JSON rendering.
94
+ the standard CLI automation envelope.
95
+
96
+ Unlike `install` and `update`, `scan` has no default threshold: it reports
97
+ what it finds and exits 0 regardless, so adding it to a pipeline never
98
+ changes that pipeline's exit code by itself. Pass `--fail-on` when you want
99
+ it to gate. The value names the lowest severity that still fails, so a lower
100
+ value is stricter.
101
+
102
+ `--format text|json` is deprecated. It still works, but it prints JSON
103
+ outside the standard envelope and now warns on stderr. Use `--json` instead.
84
104
 
85
105
  ## Check and pull upstream updates
86
106
 
@@ -114,28 +134,28 @@ skill whose on-disk content has drifted from what was last installed —
114
134
  someone may have hand-edited it. Pass `--force` to overwrite anyway. Like
115
135
  `audit prune`, a non-interactive or `--json` run needs `--yes`.
116
136
 
117
- ## Plan client delivery
137
+ ## Plan agent delivery
118
138
 
119
- Use product names for common clients:
139
+ Use product names for common agents:
120
140
 
121
141
  ```sh
122
- skillmux init --client claude-code --client codex --dry-run
142
+ skillmux init --agent claude-code --agent codex --dry-run
123
143
  ```
124
144
 
125
- Use a direct target when you need a known path:
145
+ For a directory that isn't tied to any supported agent, use `target add`
146
+ directly instead of `init`:
126
147
 
127
148
  ```sh
128
- skillmux init --target agent-skills --yes
129
- skillmux init --target custom --dir /srv/my-agent/skills --yes
149
+ skillmux target add my-agent --dir /srv/my-agent/skills --yes
130
150
  ```
131
151
 
132
152
  Skillmux refuses to adopt a target that points to the whole vault because sync
133
153
  would reduce its visible skills. Review that migration first:
134
154
 
135
155
  ```sh
136
- skillmux init --client claude-code --migrate-full-vault \
156
+ skillmux init --agent claude-code --migrate-full-vault \
137
157
  --core csv-formatter --dry-run
138
- skillmux init --client claude-code --migrate-full-vault \
158
+ skillmux init --agent claude-code --migrate-full-vault \
139
159
  --core csv-formatter --yes
140
160
  ```
141
161
 
@@ -170,7 +190,7 @@ skillmux project list
170
190
  skillmux project show my-project
171
191
  skillmux project add-path my-project ~/code/my-project --yes
172
192
  skillmux project pin my-project code-context --yes
173
- skillmux project attach my-project --client claude-code --client codex --yes
193
+ skillmux project attach my-project --agent claude-code --agent codex --yes
174
194
  skillmux project unpin my-project code-context --yes
175
195
  skillmux project detach my-project --target codex --yes
176
196
  skillmux project remove-path my-project ~/code/my-project --yes
@@ -113,8 +113,8 @@ also reveals local-overlay shadowing.
113
113
  Skillmux will not change an existing unmarked directory. Adopt it first:
114
114
 
115
115
  ```sh
116
- skillmux init --client claude-code --dry-run
117
- skillmux init --client claude-code --yes
116
+ skillmux init --agent claude-code --dry-run
117
+ skillmux init --agent claude-code --yes
118
118
  ```
119
119
 
120
120
  ### Target points to the full vault
@@ -122,7 +122,7 @@ skillmux init --client claude-code --yes
122
122
  Review the smaller pinned set before converting:
123
123
 
124
124
  ```sh
125
- skillmux init --client claude-code \
125
+ skillmux init --agent claude-code \
126
126
  --migrate-full-vault \
127
127
  --core code-context \
128
128
  --dry-run
@@ -239,7 +239,7 @@ skillmux --context prod config status
239
239
  An MCP token for `/mcp` cannot authenticate this request, and the administrative
240
240
  token cannot authenticate an MCP client. A named context administers the
241
241
  deployed server configuration only; use Skillmux CLI on the machine that owns
242
- client directories for `install`, pinning, or `sync`.
242
+ agent directories for `install`, pinning, or `sync`.
243
243
 
244
244
  ### Client receives `429`
245
245
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@klhapp/skillmux",
3
- "version": "1.10.0",
3
+ "version": "1.11.1",
4
4
  "description": "Skill management and retrieval for AI agents: sync native skills across clients and route the long tail over MCP",
5
5
  "type": "module",
6
6
  "private": false,