@skill-map/cli 0.61.1 → 0.61.2

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.
@@ -131,14 +131,16 @@ element. Decide with §Provider detection:
131
131
 
132
132
  - `provider == claude` (Claude Code, blockquotes render as a styled
133
133
  left bar): emit tester-facing messages with `> ` on every line,
134
- including blank lines inside a multi-paragraph block.
135
- - `provider != claude` (Antigravity CLI, agent-skills, any other
136
- host: most non-Claude renderers show `>` as a literal character):
137
- emit **plain prose**, NO `> ` prefix anywhere.
134
+ including blank lines inside a multi-paragraph block. This is the
135
+ only active path today.
136
+ - `provider != claude` (coming soon: Antigravity CLI, agent-skills,
137
+ any other host where most non-Claude renderers show `>` as a
138
+ literal character): emit **plain prose**, NO `> ` prefix anywhere.
139
+ Kept as the wiring for the coming-soon providers; not exercised
140
+ while the tutorial demos `claude` only.
138
141
 
139
142
  Sample messages throughout the part files are written in the Claude
140
- variant (with `> `); strip the prefix when the host is non-Claude,
141
- the wording is unchanged.
143
+ variant (with `> `).
142
144
 
143
145
  **The rule, in one line**: every tester-facing line of prose carries
144
146
  the `> ` bar in the Claude variant, context sentences, intros, tips,
@@ -257,41 +259,41 @@ on-disk convention:
257
259
  | Provider | Base dir | Kinds it claims | Detect via env var(s) |
258
260
  |----------------|-------------------|-----------------------------|--------------------------------------------------------|
259
261
  | `claude` | `.claude/` | `agent`, `command`, `skill` | `CLAUDECODE=1` OR `AI_AGENT` starts with `claude-code` |
260
- | `agent-skills` | `.agents/skills/` | `skill` only (vendor-neutral; also the on-disk home for Google's Antigravity CLI, which replaced the Gemini CLI on 2026-05-19 and adopted this open standard) | no formal env yet; opt-in if the tester says so |
261
- | `openai` | `.codex/` | `agent` (`.codex/agents/*.toml`) | no formal env yet; informational today |
262
-
263
- **Decision logic, applied silently during pre-flight**:
264
-
265
- 1. Inspect the agent's environment (`process.env`).
266
- 2. Claude-flavoured var present `provider = claude`,
267
- `<provider_dir> = .claude`, kinds = `{agent, command, skill}`.
268
- 3. Else if the tester says Antigravity / agent-skills (opt-in) →
269
- `provider = agent-skills`, `<provider_dir> = .agents`, kinds =
270
- `{skill}`.
271
- 4. Else **fallback to claude** AND surface one short message so
272
- they can correct course (render `> ` if it turns out to be
273
- Claude, plain prose if they correct you):
274
-
275
- > Heads up: I couldn't detect which agent runtime is hosting me,
276
- > so I'll demo skill-map's Claude provider (`.claude/`). If you
277
- > actually use Antigravity or agent-skills, tell me and I swap
278
- > the fixture to `.agents/skills/`.
262
+ | `agent-skills` | `.agents/skills/` | `skill` only (vendor-neutral; also the on-disk home for Google's Antigravity CLI, which replaced the Gemini CLI on 2026-05-19 and adopted this open standard) | coming soon (not selectable in the tutorial yet) |
263
+ | `openai` | `.codex/` | `agent` (`.codex/agents/*.toml`) | coming soon (not selectable in the tutorial yet) |
264
+
265
+ **Decision logic, applied silently during pre-flight**: the tutorial
266
+ demonstrates the `claude` provider only. `agent-skills` and `openai`
267
+ are **coming soon** and are not selectable here, so there is no
268
+ runtime to detect or opt into.
269
+
270
+ 1. `provider = claude`, `<provider_dir> = .claude`, kinds =
271
+ `{agent, command, skill}`. Always.
272
+ 2. Do NOT offer Antigravity / agent-skills / openai as an alternative,
273
+ and do NOT ask the tester which runtime hosts them. If a tester
274
+ says they use another runtime, acknowledge it briefly and explain
275
+ that those providers are coming soon, the tutorial demos `claude`
276
+ (`.claude/`) today:
277
+
278
+ > Heads up: skill-map also reads Antigravity, agent-skills and
279
+ > Codex projects, but those providers are coming soon in this
280
+ > tutorial. We'll demo skill-map's Claude provider (`.claude/`)
281
+ > today.
279
282
 
280
283
  Persist `provider` into the state file (`tutorial.provider`) so a
281
- resumed session does not re-detect.
284
+ resumed session does not re-detect. (It is always `claude` for now.)
282
285
 
283
286
  **Global substitution rule**: the fixture scripts do the file-level
284
287
  work. You pass `--provider <p>` (the value persisted in
285
288
  `tutorial.provider`) and `--lang <l>`, and they resolve the
286
289
  `__PROVIDER__` path token, skip files whose kind the provider does
287
290
  not claim, and report the adjusted `nodeCount` plus the `skipped`
288
- list in their summary. Your job is the **narration**: wherever a part
289
- file's tester-facing prose says `.claude/`, swap it for the detected
290
- `<provider_dir>`, and narrate the node count from the script summary
291
- (on `agent-skills` / Antigravity only the skill + markdown notes
292
- exist, so the count is lower and the agent / command beats fold
293
- away). The campaign cross-link chapters target `claude` today (see
294
- the reality check below).
291
+ list in their summary. Today `provider` is always `claude`, so the
292
+ narration uses `.claude/` throughout; the `--provider` plumbing stays
293
+ wired so the coming-soon providers (`agent-skills` / Antigravity,
294
+ `openai`) drop in later without a narrative rewrite. The campaign
295
+ cross-link chapters target `claude` today (see the reality check
296
+ below).
295
297
 
296
298
  **Reality check (don't mention to the tester)**: this skill ships
297
299
  at `.claude/skills/sm-tutorial/`, so Claude Code is the only host
@@ -35,9 +35,11 @@ marker for the `openai` lens) sitting next to the `.claude/` folder
35
35
  (the `claude` marker, where the tutorial skill itself lives). With two
36
36
  markers present, `sm init`'s first scan can NOT auto-pick a lens and
37
37
  asks the tester to choose (`⚠ Multiple provider markers detected`).
38
- The portfolio is a Claude project, so the answer is `claude`. The
39
- prompt is expected, blessed behaviour; the tester just needs to know
40
- which option to pick, so the message below previews it.
38
+ The portfolio is a Claude project, so the answer is always `claude`,
39
+ the other options the prompt lists (`openai`/Codex and friends) are
40
+ coming soon in the tutorial and we do not walk them. The prompt is
41
+ expected, blessed behaviour; the tester just needs to know which
42
+ option to pick, so the message below previews it.
41
43
 
42
44
  ```bash
43
45
  sm init
@@ -52,8 +54,8 @@ Tell the tester:
52
54
  > site). skill-map maps that harness.
53
55
  >
54
56
  > Run `sm init`. If it asks you to pick a lens (`⚠ Multiple provider
55
- > markers detected`), choose `claude`, this is a Claude project. Then
56
- > run `sm` to boot the live UI.
57
+ > markers detected`), choose `claude`, this is a Claude project (the
58
+ > other lenses are coming soon). Then run `sm` to boot the live UI.
57
59
  >
58
60
  > Open the URL `sm` printed. You'll see **one node**: `AGENTS.md`,
59
61
  > the project's handbook (the operating manual for the site).
@@ -122,24 +122,20 @@ catalog is closed.)
122
122
 
123
123
  Mark `settings-2-resolve: done`.
124
124
 
125
- ## Step `settings-3-lens` - the active provider lens (~4 min)
125
+ ## Step `settings-3-lens` - the active provider lens (~2 min)
126
126
 
127
127
  **Context**: the single most consequential setting, the lens that
128
- decides which provider types the project's files. It is reversible
129
- and never touches your `.md` files, only the scan cache.
128
+ decides which provider types the project's files. It auto-detects and
129
+ never touches your `.md` files, only the scan cache.
130
130
 
131
131
  > One setting earns its own step: the **active provider lens**. A
132
132
  > skill-map project sees its filesystem through exactly **one**
133
133
  > provider at a time, and that lens decides how each file is read.
134
134
  > Under the `claude` lens a `.claude/agents/*.md` is an agent and
135
- > `@`-mentions / `/`-commands become links; point the lens at
136
- > `openai` and the same tree is read against Codex's layout instead.
137
- > Same files, different reading.
135
+ > `@`-mentions / `/`-commands become links. Same files, one reading.
138
136
 
139
137
  > The lens auto-detects on the first scan from the markers in your
140
- > project (`.claude/` → claude, `.codex/` or a root `AGENTS.md`
141
- > openai, `.agents/` → agent-skills). Scan once and check where it
142
- > landed:
138
+ > project (`.claude/` → claude). Scan once and check where it landed:
143
139
 
144
140
  ```bash
145
141
  sm scan
@@ -151,39 +147,13 @@ Expected: the scan prints a line like `Auto-detected activeProvider
151
147
  .skill-map/settings.json`, and `get` then reports `claude`. The lens
152
148
  is just a key in `settings.json`, persisted like any other setting.
153
149
 
154
- > Now switch it by hand and watch what happens. We'll point it at
155
- > `openai`:
156
-
157
- ```bash
158
- sm config set activeProvider openai
159
- ```
160
-
161
- Expected: alongside the usual `✓ activeProvider = openai (wrote
162
- .skill-map/settings.json)`, the CLI warns `Lens switched. Cleared 7
163
- scan table(s) ... Run sm scan to repopulate the graph under the new
164
- lens`. The important part: it cleared the **scan cache only**, your
165
- `.md` files are untouched. The graph is derived data; the source is
166
- always your filesystem.
167
-
168
- > Re-scan under the new lens, then put it back the way you found it:
169
-
170
- ```bash
171
- sm scan
172
- sm config reset activeProvider
173
- sm scan
174
- ```
175
-
176
- Expected: the first scan repopulates under `openai`; `reset` removes
177
- the key (`Removed activeProvider from .skill-map/settings.json`); the
178
- last scan auto-detects `claude` again from your `.claude/` marker.
179
- Back where you started, nothing lost.
180
-
181
- > That's the whole idea of the lens: one project, one active
182
- > provider at a time, chosen by `activeProvider` and backed by the
183
- > built-in provider plugins (`claude`, `openai`, `agent-skills`,
184
- > `antigravity`). Switching it is cheap and reversible because the
185
- > graph is always rebuilt from your files, never the other way
186
- > around.
150
+ > Other lenses exist in the engine (`openai` for Codex,
151
+ > `agent-skills`, `antigravity`), but they are **coming soon** in the
152
+ > tutorial: today we demo the `claude` lens only. The idea to keep is
153
+ > the one above, one project reads through exactly one provider at a
154
+ > time, chosen by `activeProvider`. The lens is cheap to change later
155
+ > because the graph is always rebuilt from your files, never the
156
+ > other way around.
187
157
 
188
158
  Mark `settings-3-lens: done`.
189
159
 
package/dist/cli.js CHANGED
@@ -1,6 +1,6 @@
1
1
  // cli/entry.ts
2
2
 
3
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="9a536139-6f70-53a7-b32a-eed4fc49b7a4")}catch(e){}}();
3
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="e231edcd-bd03-5552-a0d2-b977373884d8")}catch(e){}}();
4
4
  import { existsSync as existsSync33 } from "fs";
5
5
  import { Builtins, Cli as Cli2 } from "clipanion";
6
6
 
@@ -250,7 +250,7 @@ function bucketByKind(kind, instance, bag) {
250
250
  // package.json
251
251
  var package_default = {
252
252
  name: "@skill-map/cli",
253
- version: "0.61.1",
253
+ version: "0.61.2",
254
254
  description: "skill-map reference implementation \u2014 kernel + CLI + adapters.",
255
255
  license: "MIT",
256
256
  type: "module",
@@ -31057,4 +31057,4 @@ function resolveBareDefault() {
31057
31057
  process.exit(ExitCode.Error);
31058
31058
  }
31059
31059
  //# sourceMappingURL=cli.js.map
31060
- //# debugId=9a536139-6f70-53a7-b32a-eed4fc49b7a4
31060
+ //# debugId=e231edcd-bd03-5552-a0d2-b977373884d8
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  // kernel/i18n/registry.texts.ts
2
2
 
3
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="3bc6390b-70e8-568a-835e-870172658869")}catch(e){}}();
3
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="2ededba2-1ecd-5a1b-a725-23567a98a0b7")}catch(e){}}();
4
4
  var REGISTRY_TEXTS = {
5
5
  duplicateExtension: "Extension already registered: {{kind}}:{{qualifiedId}}",
6
6
  unknownKind: "Unknown extension kind: {{kind}}",
@@ -102,7 +102,7 @@ import { Tiktoken as Tiktoken2 } from "js-tiktoken/lite";
102
102
  // package.json
103
103
  var package_default = {
104
104
  name: "@skill-map/cli",
105
- version: "0.61.1",
105
+ version: "0.61.2",
106
106
  description: "skill-map reference implementation \u2014 kernel + CLI + adapters.",
107
107
  license: "MIT",
108
108
  type: "module",
@@ -3847,4 +3847,4 @@ export {
3847
3847
  runScanWithRenames
3848
3848
  };
3849
3849
  //# sourceMappingURL=index.js.map
3850
- //# debugId=3bc6390b-70e8-568a-835e-870172658869
3850
+ //# debugId=2ededba2-1ecd-5a1b-a725-23567a98a0b7
@@ -1,6 +1,6 @@
1
1
  // kernel/i18n/registry.texts.ts
2
2
 
3
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="1b30d8c8-edea-5922-be87-39c4ebe079c0")}catch(e){}}();
3
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="8f7ca4a9-1a8e-5b21-a436-9a4500fd710f")}catch(e){}}();
4
4
  var REGISTRY_TEXTS = {
5
5
  duplicateExtension: "Extension already registered: {{kind}}:{{qualifiedId}}",
6
6
  unknownKind: "Unknown extension kind: {{kind}}",
@@ -102,7 +102,7 @@ import { Tiktoken as Tiktoken2 } from "js-tiktoken/lite";
102
102
  // package.json
103
103
  var package_default = {
104
104
  name: "@skill-map/cli",
105
- version: "0.61.1",
105
+ version: "0.61.2",
106
106
  description: "skill-map reference implementation \u2014 kernel + CLI + adapters.",
107
107
  license: "MIT",
108
108
  type: "module",
@@ -3847,4 +3847,4 @@ export {
3847
3847
  runScanWithRenames
3848
3848
  };
3849
3849
  //# sourceMappingURL=index.js.map
3850
- //# debugId=1b30d8c8-edea-5922-be87-39c4ebe079c0
3850
+ //# debugId=8f7ca4a9-1a8e-5b21-a436-9a4500fd710f