@skill-map/cli 0.22.0 → 0.23.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
@@ -1,6 +1,6 @@
1
1
  # skill-map
2
2
 
3
- Map, inspect, and manage collections of interrelated Markdown files skills, agents, commands, hooks, and notes that compose AI-agent ecosystems (Claude Code, Codex, Gemini, Copilot, docs sites).
3
+ Map, inspect, and manage collections of interrelated Markdown files, skills, agents, commands, hooks, and notes that compose AI-agent ecosystems (Claude Code, Codex, Gemini, Copilot, docs sites).
4
4
 
5
5
  **Status**: pre-1.0, active development. Steps 0a–9 are complete (spec, kernel, plugin loader, full CLI surface, plugin author UX). Step 14 (Full Web UI) is in progress with sub-steps 14.1–14.4 closed (Hono BFF + REST + WebSocket broadcaster + reactive UI); 14.5–14.7 (polish + bundle budgets + responsive scope) still pending. The full deterministic scan, check, history, orphans, plugin authoring, and `sm serve` are live; the optional LLM layer (Phase B / `v0.8.0`) lands after Step 14 closes. See [`ROADMAP.md`](../ROADMAP.md) for the canonical completeness marker and full execution plan. Releases follow the standard changeset flow.
6
6
 
@@ -9,7 +9,7 @@ Map, inspect, and manage collections of interrelated Markdown files — skills,
9
9
  - **Node.js ≥ 24.0** (active LTS since October 2025). Older versions are unsupported.
10
10
  - Any platform Node 24 supports (Linux, macOS, Windows).
11
11
 
12
- `skill-map` checks the runtime version at the first `sm` invocation and exits with a human-readable message if Node is too old no silent partial runs.
12
+ `skill-map` checks the runtime version at the first `sm` invocation and exits with a human-readable message if Node is too old, no silent partial runs.
13
13
 
14
14
  If your system is on Node 22 or 20, install the latest LTS from [nodejs.org](https://nodejs.org) (or via `nvm`, `fnm`, `volta`, …) before installing this package.
15
15
 
@@ -80,7 +80,7 @@ Exit codes follow [`spec/cli-contract.md`](../spec/cli-contract.md):
80
80
 
81
81
  ## Sidecar `.sm` files
82
82
 
83
- `sm bump` and `sm sidecar annotate` write a sibling `<basename>.sm` YAML next to each `.md` (same directory). Their purpose is to keep skill-map's bookkeeping version, stability, supersession, tags, audit trail **out of the `.md` body and frontmatter**. The `.md` stays vendor-pure (Claude Code, Codex, Cursor, …); the `.sm` is the only file skill-map writes. **`sm scan`, `sm watch`, and the live UI never create `.sm` files** they only read existing ones; sidecars appear only when you opt in via `bump` or `annotate`. **Commit `.sm` files to git like any other source file** don't `.gitignore` them; they carry the metadata that drives `sm check`, drift detection, and supersession graphs. Full spec: [`spec/architecture.md` §Annotation system](../spec/architecture.md#annotation-system).
83
+ `sm bump` and `sm sidecar annotate` write a sibling `<basename>.sm` YAML next to each `.md` (same directory). Their purpose is to keep skill-map's bookkeeping, version, stability, supersession, tags, audit trail, **out of the `.md` body and frontmatter**. The `.md` stays vendor-pure (Claude Code, Codex, Cursor, …); the `.sm` is the only file skill-map writes. **`sm scan`, `sm watch`, and the live UI never create `.sm` files**, they only read existing ones; sidecars appear only when you opt in via `bump` or `annotate`. **Commit `.sm` files to git like any other source file**, don't `.gitignore` them; they carry the metadata that drives `sm check`, drift detection, and supersession graphs. Full spec: [`spec/architecture.md` §Annotation system](../spec/architecture.md#annotation-system).
84
84
 
85
85
  ## Spec
86
86
 
@@ -88,7 +88,7 @@ This binary implements the [skill-map spec](https://www.npmjs.com/package/@skill
88
88
 
89
89
  ## Security: untrusted repositories
90
90
 
91
- `sm scan` (and the verbs that include a scan: `refresh`, `watch`, `init`) auto-loads JavaScript plugins from `<cwd>/.skill-map/plugins/` by default. Running these commands inside a repository you do not control is equivalent to running `node ./.skill-map/plugins/*/index.js` the plugin code executes with your user permissions.
91
+ `sm scan` (and the verbs that include a scan: `refresh`, `watch`, `init`) auto-loads JavaScript plugins from `<cwd>/.skill-map/plugins/` by default. Running these commands inside a repository you do not control is equivalent to running `node ./.skill-map/plugins/*/index.js`, the plugin code executes with your user permissions.
92
92
 
93
93
  If you cloned an untrusted repository, run with `--no-plugins` to disable third-party plugin loading, or audit the contents of `.skill-map/plugins/` before scanning.
94
94
 
package/bin/sm.js CHANGED
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env -S node --disable-warning=ExperimentalWarning
2
2
  // Shebang note: `env -S` lets us pass `--disable-warning=ExperimentalWarning`
3
3
  // to node so end users don't see the `node:sqlite` experimental notice on
4
- // every invocation. The flag scopes to ExperimentalWarning only other
4
+ // every invocation. The flag scopes to ExperimentalWarning only, other
5
5
  // warning classes (DeprecationWarning, etc.) still surface.
6
6
  //
7
- // Runtime guard fail fast with a human message before importing anything
7
+ // Runtime guard, fail fast with a human message before importing anything
8
8
  // that uses Node 24 APIs (node:sqlite stable, built-in WebSocket, modern
9
9
  // ESM loader). Without this, a user on Node 20/22 gets an obscure
10
10
  // SyntaxError or "module not found" instead of guidance.
@@ -25,6 +25,6 @@ Install the latest LTS from https://nodejs.org and retry.
25
25
  }
26
26
 
27
27
  import('../dist/cli.js').catch((err) => {
28
- process.stderr.write(`sm: failed to load CLI ${err.message}\n`);
28
+ process.stderr.write(`sm: failed to load CLI, ${err.message}\n`);
29
29
  process.exit(2);
30
30
  });
@@ -975,7 +975,7 @@ sm graph
975
975
  sm export --format md > export.md
976
976
  sm export "kind=markdown" --format json > export-markdown.json
977
977
  sm export "path=notes/**" --format json > export-notes.json
978
- ls -la export.*
978
+ ls -la export*
979
979
  ```
980
980
 
981
981
  `graph` draws an ASCII tree of the whole persisted scan (no
@@ -1042,9 +1042,27 @@ sm plugins list # confirm it shows as disabled
1042
1042
  sm plugins enable core/external-url-counter
1043
1043
  ```
1044
1044
 
1045
- > **About IDs**: `disable` / `enable` accept either a **bundle id**
1046
- > (e.g. `claude`, which toggles every Claude extension at once) or a
1047
- > **qualified extension id** `<bundle>/<ext-id>` (e.g.
1045
+ > **About `plugins doctor` warnings on a clean fixture**: `doctor` may
1046
+ > emit 1-2 informational warnings about `explorationDir` not existing
1047
+ > for `gemini/gemini` (`~/.gemini`) or `agent-skills/agent-skills`
1048
+ > (`.agents`). These are normal on a machine that has not installed
1049
+ > those tools — the providers declare optional discovery paths and
1050
+ > warn when the path is absent. Nothing is broken; the providers just
1051
+ > have nothing to scan.
1052
+
1053
+ > **About `sm plugins show <qualified-id>`**: the verb is
1054
+ > informational — passing `core/external-url-counter` validates the
1055
+ > extension exists and then renders the **parent bundle's** detail
1056
+ > (i.e. the full `core` listing). The extension you named lives in
1057
+ > that list. This is deliberate: forcing the user to type the bundle
1058
+ > id just to read a single extension's manifest would be hostile, so
1059
+ > `show` accepts the qualified shape and resolves up. Use
1060
+ > `sm plugins doctor` or scroll the bundle's extension table to spot
1061
+ > the one you queried.
1062
+
1063
+ > **About IDs for `disable` / `enable`**: those verbs accept either a
1064
+ > **bundle id** (e.g. `claude`, which toggles every Claude extension
1065
+ > at once) or a **qualified extension id** `<bundle>/<ext-id>` (e.g.
1048
1066
  > `core/external-url-counter`). The display format you see in
1049
1067
  > `plugins list` (`extractor:core/external-url-counter@1.0.0`)
1050
1068
  > includes the kind prefix and the version for readability — strip