@skill-map/cli 0.69.0 → 0.71.0

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.
Files changed (45) hide show
  1. package/dist/cli/tutorial/sm-tutorial/SKILL.md +8 -3
  2. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/agents-hub/providers/codex/en/agents-hub.md +2 -0
  3. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/agents-hub/providers/codex/es/agents-hub.md +2 -0
  4. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/providers/codex/en/todo-bullet-agent.md +1 -0
  5. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/providers/codex/en/todo-bullet-command.md +1 -0
  6. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/providers/codex/en/todo-bullet-skill.md +1 -0
  7. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/providers/codex/es/todo-bullet-agent.md +1 -0
  8. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/providers/codex/es/todo-bullet-command.md +1 -0
  9. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/providers/codex/es/todo-bullet-skill.md +1 -0
  10. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/harness/providers/codex/en/__PROVIDER__/skills/publish/SKILL.md +2 -2
  11. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/harness/providers/codex/es/__PROVIDER__/skills/publish/SKILL.md +2 -2
  12. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/master/providers/codex/en/.codex/agents/master-agent.toml +1 -1
  13. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/master/providers/codex/es/.codex/agents/master-agent.toml +1 -1
  14. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/providers/codex/en/.codex/agents/content-editor.toml +1 -1
  15. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/providers/codex/es/.codex/agents/content-editor.toml +1 -1
  16. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/providers/codex/en/.codex/agents/demo-agent.toml +1 -1
  17. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/providers/codex/es/.codex/agents/demo-agent.toml +1 -1
  18. package/dist/cli/tutorial/sm-tutorial/references/_core.md +73 -47
  19. package/dist/cli/tutorial/sm-tutorial/references/_manifest.yml +2 -2
  20. package/dist/cli/tutorial/sm-tutorial/references/part-authoring.md +0 -7
  21. package/dist/cli/tutorial/sm-tutorial/references/part-basic-daily.md +10 -26
  22. package/dist/cli/tutorial/sm-tutorial/references/part-basic-fundamentals.md +10 -18
  23. package/dist/cli/tutorial/sm-tutorial/references/part-basic-kickoff.md +12 -31
  24. package/dist/cli/tutorial/sm-tutorial/references/part-cli.md +0 -4
  25. package/dist/cli/tutorial/sm-tutorial/references/part-daily-loop.md +97 -43
  26. package/dist/cli/tutorial/sm-tutorial/references/part-fundamentals.md +11 -14
  27. package/dist/cli/tutorial/sm-tutorial/references/part-mcp.md +4 -14
  28. package/dist/cli/tutorial/sm-tutorial/references/part-plugins.md +0 -8
  29. package/dist/cli/tutorial/sm-tutorial/references/part-project-kickoff.md +18 -36
  30. package/dist/cli/tutorial/sm-tutorial/references/part-settings.md +2 -10
  31. package/dist/cli/tutorial/sm-tutorial/scripts/lib/paths.js +6 -5
  32. package/dist/cli.js +441 -269
  33. package/dist/index.js +115 -18
  34. package/dist/kernel/index.d.ts +27 -0
  35. package/dist/kernel/index.js +115 -18
  36. package/dist/ui/chunk-CK4C2IIP.js +3 -0
  37. package/dist/ui/{chunk-RRRXQNG6.js → chunk-EVNCL7FV.js} +21 -21
  38. package/dist/ui/{chunk-E7GLGHVY.js → chunk-GUGB4JY5.js} +1 -1
  39. package/dist/ui/{chunk-SXSNTF26.js → chunk-RSPEJBPT.js} +1 -1
  40. package/dist/ui/chunk-SQCXHF3J.js +2 -0
  41. package/dist/ui/index.html +1 -1
  42. package/dist/ui/{main-23NGLEUB.js → main-GY4PAVQW.js} +3 -3
  43. package/package.json +2 -2
  44. package/dist/ui/chunk-RLRSNHYG.js +0 -3
  45. package/dist/ui/chunk-SI4MGFOW.js +0 -2
@@ -64,9 +64,14 @@ ls -A
64
64
  ```
65
65
 
66
66
  **Items you ignore** when evaluating "empty" (internal
67
- infrastructure, not user content): `.claude` (skills/agents infra),
68
- `.tmp` (Claude Code scratch dir), `SKILL.md` / `sm-tutorial.md`
69
- (loose copies of this skill), `tutorial-state.json` (resume mode).
67
+ infrastructure, not user content): the provider scaffold dirs `sm
68
+ tutorial` drops for the active lens, `.claude`, `.codex`, `.agents`,
69
+ `.agent` (the vendor marker plus the open-standard skill home, e.g.
70
+ codex drops both `.codex/` and `.agents/skills/`), `.git` (a
71
+ version-control dir alone is a fresh repo, not user content; real
72
+ files alongside it still trip the check), `.tmp` (Claude Code
73
+ scratch dir), `SKILL.md` / `sm-tutorial.md` (loose copies of this
74
+ skill), `tutorial-state.json` (resume mode).
70
75
 
71
76
  The whitelist is internal; do NOT enumerate it to the tester.
72
77
 
@@ -0,0 +1,2 @@
1
+ - When a page needs writing or fixing, brief [content-editor](.codex/agents/content-editor.toml).
2
+ - When the site is ready to go out, run $publish.
@@ -0,0 +1,2 @@
1
+ - Cuando una página necesita escribirse o arreglarse, informa a [content-editor](.codex/agents/content-editor.toml).
2
+ - Cuando el sitio esté listo para salir, corre $publish.
@@ -0,0 +1 @@
1
+ - [ ] Brief [demo-agent](../.codex/agents/demo-agent.toml) on the rough edges.
@@ -0,0 +1 @@
1
+ - [ ] Trigger $demo-skill when the input lands.
@@ -0,0 +1 @@
1
+ - [ ] Informa a [demo-agent](../.codex/agents/demo-agent.toml) sobre los detalles pendientes.
@@ -0,0 +1 @@
1
+ - [ ] Dispara $demo-skill cuando llegue la entrada.
@@ -10,6 +10,6 @@ description: |
10
10
  The one skill you run when the site is ready to go out.
11
11
 
12
12
  ## Steps
13
- 1. Run /check-links on the pages in public/. If it reports broken links, stop and fix them first.
14
- 2. If a page needs a content fix, brief @content-editor with the change.
13
+ 1. Run $check-links on the pages in public/. If it reports broken links, stop and fix them first.
14
+ 2. If a page needs a content fix, brief [content-editor](../../../.codex/agents/content-editor.toml) with the change.
15
15
  3. Follow the [deploy runbook](../../../docs/DEPLOY.md): regenerate pages, run the link check, start the server.
@@ -11,6 +11,6 @@ description: |
11
11
  La única skill que corres cuando el sitio está listo para salir.
12
12
 
13
13
  ## Pasos
14
- 1. Corre /check-links sobre las páginas en public/. Si reporta enlaces rotos, frena y arréglalos primero.
15
- 2. Si una página necesita un arreglo de contenido, dale el cambio a @content-editor.
14
+ 1. Corre $check-links sobre las páginas en public/. Si reporta enlaces rotos, frena y arréglalos primero.
15
+ 2. Si una página necesita un arreglo de contenido, dale el cambio a [content-editor](../../../.codex/agents/content-editor.toml).
16
16
  3. Sigue el [runbook de despliegue](../../../docs/DEPLOY.md): regenera las páginas, corre el chequeo de enlaces, inicia el servidor.
@@ -1,6 +1,6 @@
1
1
  name = "master-agent"
2
2
  description = "Example agent used by the advanced tutorial. The target node when we exercise extractors, analyzers, and the plugin-authoring flow."
3
- model = "gpt-5-codex"
3
+ model = "gpt-5.5"
4
4
  developer_instructions = """
5
5
  # master-agent
6
6
 
@@ -1,6 +1,6 @@
1
1
  name = "master-agent"
2
2
  description = "Agente de ejemplo que usa el tutorial avanzado. Es el nodo objetivo cuando ejercitamos extractors, analyzers y el flujo de autoría de plugins."
3
- model = "gpt-5-codex"
3
+ model = "gpt-5.5"
4
4
  developer_instructions = """
5
5
  # master-agent
6
6
 
@@ -1,6 +1,6 @@
1
1
  name = "content-editor"
2
2
  description = "Writes and edits the portfolio's pages. Reads a brief, follows the style guide, and emits the HTML into public/."
3
- model = "gpt-5-codex"
3
+ model = "gpt-5.5"
4
4
  developer_instructions = """
5
5
  # content-editor
6
6
 
@@ -1,6 +1,6 @@
1
1
  name = "content-editor"
2
2
  description = "Escribe y edita las páginas del portfolio. Lee un brief, sigue la guía de estilo y emite el HTML en public/."
3
- model = "gpt-5-codex"
3
+ model = "gpt-5.5"
4
4
  developer_instructions = """
5
5
  # content-editor
6
6
 
@@ -1,6 +1,6 @@
1
1
  name = "demo-agent"
2
2
  description = "Example agent that handles read and shell tasks. Solo node at boot; gets connected to the rest of the demo fixture during the Live UI step."
3
- model = "gpt-5-codex"
3
+ model = "gpt-5.5"
4
4
  developer_instructions = """
5
5
  # demo-agent
6
6
 
@@ -1,6 +1,6 @@
1
1
  name = "demo-agent"
2
2
  description = "Agente de ejemplo que maneja tareas de lectura y shell. Nodo solo al arranque; se conecta al resto del fixture demo durante el paso de UI en vivo."
3
- model = "gpt-5-codex"
3
+ model = "gpt-5.5"
4
4
  developer_instructions = """
5
5
  # demo-agent
6
6
 
@@ -21,9 +21,8 @@ Two numbering systems coexist; keep them apart:
21
21
  - **Internal (authoring only)**: the `order` field in `_manifest.yml`
22
22
  and the `# Part N` file headers, 0-based (Part 0 the prologue …
23
23
  Part 3 the CLI deep-dive, Part 4 the Extend dev section; `mcp` at Part 5 is parked / hidden). Use it
24
- in `**Context**:` blocks and author
25
- notes; NEVER say it to the tester, it is off by one from what they
26
- see.
24
+ in author notes; NEVER say it to the tester, it is off by one from
25
+ what they see.
27
26
  - **Tester-facing (`S.N`)**: every part is a **section** numbered by
28
27
  its 1-based position in the menu (section `1` is the prologue), and
29
28
  every chapter inside it carries a `section.chapter` number like a
@@ -160,9 +159,9 @@ documented exceptions to "all prose is quoted" are the plain
160
159
  with `> `, keep that prefix verbatim (Claude mode). Do NOT strip
161
160
  `> ` on short intro lines, do NOT merge adjacent blockquote
162
161
  paragraphs into plain prose. The source already encodes which lines
163
- are tester-facing (`> `-prefixed) vs agent-only (plain prose in
164
- `**Context**:` blocks, `Expected:` lines, `Mark <chapter-id>: done`
165
- markers, "Walk the tester through …" meta instructions). Render the
162
+ are tester-facing (`> `-prefixed) vs agent-only (plain prose,
163
+ `Expected:` lines, `Mark <chapter-id>: done` markers, "Walk the
164
+ tester through …" meta instructions). Render the
166
165
  first kind quoted, the second kind never.
167
166
 
168
167
  ### Language mirroring + fixture content
@@ -178,6 +177,15 @@ first kind quoted, the second kind never.
178
177
  English regardless**: file paths and filenames, frontmatter keys,
179
178
  node identifiers, link target paths inside `[...]( ... )`, code
180
179
  snippets, fenced blocks, anything the kernel parses structurally.
180
+ - **Copyable blocks are byte-exact**: when you render a fenced block
181
+ the tester copies verbatim (a `SKILL.md` / command body, a config
182
+ snippet), reproduce it line for line, preserving every line break,
183
+ indentation level, and tab. NEVER soft-wrap a long line, and in
184
+ particular NEVER let a newline fall inside a markdown link: the
185
+ `[text](path)` token, above all the `(path)` half, must stay on one
186
+ physical line. A break inside the path (`(../content-` then a newline
187
+ then `editor/SKILL.md)`) splits it, the link stops resolving, and no
188
+ arrow is drawn.
181
189
  - **No em dashes** in tester-facing prose: prefer a comma or
182
190
  parentheses (project-wide style).
183
191
 
@@ -259,8 +267,8 @@ A skill-map project reads its files through exactly ONE active lens
259
267
  | Provider | Asset layout | Kinds | Connectors that form | Marker | Stability | Track |
260
268
  |----------------|-------------------------------------------|--------------------------------|--------------------------------|--------------------|------------------|---------|
261
269
  | `claude` | `.claude/` (agents, commands, skills) | agent, command, skill, markdown| `/` invokes, `@` mentions, refs| `.claude/` | stable | rich |
262
- | `codex` | `.codex/agents/*.toml` + `.agents/skills/`| agent (TOML), skill, markdown | `/` invokes, `@` mentions, refs| `.codex/` | beta | rich |
263
- | `antigravity` | `.agents/skills/` | skill, markdown | `/` invokes, refs | `.agent/workflows/`| beta | basic |
270
+ | `codex` | `.codex/agents/*.toml` + `.agents/skills/`| agent (TOML), skill, markdown | `$` invokes, `@` file-refs, refs| `.codex/` | beta | rich |
271
+ | `antigravity` | `.agents/skills/` + `.agent/workflows/` | skill, workflow, markdown | `/` invokes, `@` file-refs, refs | `.agent/workflows/`| beta | basic |
264
272
  | `agent-skills` | `.agents/skills/` | skill, markdown | refs only | `.agents/` | stable (default) | basic |
265
273
 
266
274
  `core/markdown` classifies every orphan `.md` under whatever lens is
@@ -269,19 +277,30 @@ active; it is the universal base, never a selectable lens.
269
277
  **Two tracks, by capability** (the axis is "does the lens have an
270
278
  `agent` kind?"):
271
279
 
272
- - **rich** (`claude`, `codex`): agents + skills (+ commands on claude),
273
- wired with `/` invocations and `@` mentions plus markdown references.
280
+ - **rich** (`claude`, `codex`): agents + skills (+ commands on claude).
281
+ Claude wires `/` invocations and `@` mentions; Codex wires `$` invocations
282
+ (skills) and `@`-FILE references (Codex's `@` is a file picker, it cannot
283
+ mention an agent by name, and `/` is a Codex built-in command, not a skill
284
+ invocation). Both also use markdown references.
274
285
  - **basic** (`agent-skills`, `antigravity`): the open-standard family,
275
- `skill` + `markdown` only, wired with **markdown references**
286
+ built on `skill` + `markdown` and wired with **markdown references**
276
287
  (`[text](path)`), the one connection the Agent Skills standard
277
- documents. No `@`. `/` invocation is an Antigravity-only bonus, it is
278
- NOT part of the neutral standard, so under the `agent-skills` lens only
279
- references form.
288
+ documents. They diverge on what Antigravity bolts on top of the
289
+ standard: `agent-skills` is the pure subset (skill + markdown,
290
+ references only, no `@`), while `antigravity` adds its OWN `workflow`
291
+ kind (`.agent/workflows/*.md`), `/`-invocation (the slash resolves to
292
+ both skills and workflows), and `@`-file references (a file-shaped
293
+ `@path` token, the same file-picker grammar Codex uses, distinct from
294
+ Claude's `@`-agent-mention). That slash, the `workflow` kind, and the
295
+ `@`-file refs are Antigravity-only, NOT part of the neutral standard,
296
+ so under the `agent-skills` lens only markdown references form.
280
297
 
281
298
  Why references and not slash on the open standard: the Agent Skills
282
299
  spec (agentskills.io) activates a skill by its `description` and
283
- connects files by relative markdown links; it has no `/`-invocation
284
- syntax. claude/codex add `/` and `@` as vendor features on top.
300
+ connects files by relative markdown links; it has no invocation sigil.
301
+ Vendors add their own on top: claude `/`-invokes and `@`-mentions; Codex
302
+ `$`-invokes skills and treats `@` as a file picker (`/` is a Codex
303
+ built-in command, not a skill invocation).
285
304
 
286
305
  **Decision logic, applied silently at pre-flight:**
287
306
 
@@ -296,14 +315,17 @@ syntax. claude/codex add `/` and `@` as vendor features on top.
296
315
  `<provider_dir> = .claude`, `track = rich`.
297
316
  - else skill under `.agents/skills/sm-tutorial/` → `provider = agent-skills`,
298
317
  `<provider_dir> = .agents/skills`, `track = basic`.
299
- **Lens ambiguity for codex / antigravity**: both adopt the open
300
- `.agents/skills/` layout, so their own marker (`.codex/` or
301
- `.agent/workflows/`) coexists with the `agent-skills` marker (`.agents/`)
302
- and a plain `sm scan --yes` reports the lens as ambiguous. For those two,
303
- set it explicitly once before the first scan, `sm config set
304
- activeProvider <codex|antigravity> --yes`, then the book runs unchanged
305
- (the fixture engine renders the right shape: codex its TOML agents +
306
- command-as-skill, antigravity reuses the `agent-skills` overlays).
318
+ **Lens precedence for codex / antigravity**: both adopt the open
319
+ `.agents/skills/` layout, so the scaffold leaves the vendor marker
320
+ (`.codex/` or `.agent/workflows/`) alongside the `agent-skills` marker
321
+ (`.agents/`). The vendor marker WINS: `sm init` resolves `codex` /
322
+ `antigravity` outright with no prompt (the `.agents/` open default only
323
+ competes when no vendor marker is present). So the codex book runs
324
+ exactly like claude, `sm init` then `sm`, with no lens prompt and no
325
+ `sm config set activeProvider` step anywhere (tester chapters or
326
+ backstage seeds). The fixture engine still renders the right shape:
327
+ codex its TOML agents + command-as-skill, antigravity reuses the
328
+ `agent-skills` overlays.
307
329
  2. `state.js init --provider <p>` persists `provider` plus the derived
308
330
  `track`, so a resumed session never re-detects.
309
331
  3. Render only the parts whose `track` is `tutorial.track` (or `both`).
@@ -325,31 +347,42 @@ at `.claude/skills/sm-tutorial/` (this repo is itself a Claude project);
325
347
 
326
348
  ### Rendering the rich book on Codex
327
349
 
328
- The rich track has two lenses, `claude` and `codex`. They teach the SAME
329
- lessons with the SAME connectors (`/` invocations, `@` mentions, markdown
330
- references all resolve on both), so the rich part bodies are written in the
331
- `claude` shape; when `tutorial.provider == codex`, apply these substitutions:
350
+ The rich track has two lenses, `claude` and `codex`. They teach the same
351
+ lessons, but Codex's CONNECTOR GRAMMAR differs from claude's (see the
352
+ Connectors bullet below), so the rich part bodies are written in the `claude`
353
+ shape; when `tutorial.provider == codex`, apply these substitutions:
332
354
 
333
355
  - **Agents are TOML.** A Codex agent is a single `.codex/agents/<name>.toml`
334
356
  file (the prompt lives in its `developer_instructions` field), NOT a
335
357
  `.claude/agents/<name>.md`. The fixtures lay them, so when a chapter says
336
358
  "open the agent file" point at the `.toml`; a chapter that has the tester
337
359
  read or tweak an agent works on the TOML frontmatter / `developer_instructions`.
360
+ - **Connectors differ.** Codex invokes a skill with `$<name>` (NOT `/`, which
361
+ is a Codex built-in command), and `@<name>` is a FILE picker, not an agent
362
+ mention. So where the claude book writes `/check-links` (invoke) say
363
+ `$check-links`; where it writes `@content-editor` (mention an agent),
364
+ reference the agent's FILE instead, a markdown link `[content-editor](<rel-path>.toml)`
365
+ or a file-shaped `@<file>.md` / `@<file>.toml`; a bare `@<name>` (no
366
+ path/extension) forms NOTHING on Codex. The codex fixture overlays already
367
+ carry the `$`/file-ref shapes, narrate them, do not re-derive.
338
368
  - **No `command` kind.** Where the claude book authors a `command` (the
339
- `/publish` command, the reserved-name chapter's `model` command), Codex uses a
340
- **skill** at `.agents/skills/<name>/SKILL.md`. The body is identical (same
341
- `/check-links` + `@content-editor` + deploy reference); only the kind and path
342
- change. `cat <set> --file --provider codex` already returns the Codex skill
343
- body, so the create-the-file block stays a copy-paste. The reserved-name beat
344
- uses a skill named with a reserved verb (Codex inherits the open-standard
345
- `COMMONS_RESERVED_NAMES`, e.g. `model`), exactly like the basic track's
346
- `reserved` chapter, on a skill instead of a command.
369
+ `/publish` command), Codex uses a **skill** at `.agents/skills/<name>/SKILL.md`.
370
+ The body uses the CODEX grammar (`$check-links` to invoke, a file reference to
371
+ `content-editor` instead of an `@`-mention, per Connectors above); the codex
372
+ fixture overlay already carries that shape, so the create-the-file block
373
+ (`cat <set> --file --provider codex`) stays a copy-paste.
374
+ - **No reserved skill names on Codex.** Codex `$`-invokes skills, a namespace
375
+ disjoint from its `/` built-in commands, so a skill named like a built-in
376
+ (`model`) does NOT collide with `/model` and is NOT flagged. The claude
377
+ `reserved` chapter (a `/model` COMMAND collides) has no Codex equivalent; the
378
+ daily-loop `reserved` Codex delta reframes / skips it (see that chapter).
347
379
  **Apply every substitution silently.** Use the Codex path, kind and file
348
380
  directly in the tester-facing prose, but never EXPLAIN the substitution or
349
381
  compare it to the claude shape. The Codex tester only ever sees a `skill`
350
382
  where the claude book has a command; never tell them "Codex has no `command`
351
- kind", never say a node "is a command that shows as a skill", never reference
352
- "the claude command". On Codex these nodes were always skills, there is
383
+ kind", never say a node "is a command that shows as a skill" or that it
384
+ "replaces" / "stands in for" / "reemplaza" a command, never append a parenthetical
385
+ like "(in Codex this replaces the command)", never reference "the claude command". On Codex these nodes were always skills, there is
353
386
  nothing to explain. (Same for the TOML-agent and path swaps above: point the
354
387
  tester at the real `.toml` / `.agents/` file when they interact with it, just
355
388
  do not narrate that it "would be" something else on claude.)
@@ -379,15 +412,8 @@ For every chapter:
379
412
  the chapter inside that part, resetting per part (§Numbering), so
380
413
  section 5's third chapter announces as `Capítulo 5.3`. The title
381
414
  comes from the chapter's `title` in `_manifest.yml` (translated per
382
- §Tone), not the internal id. When the source has a `**Context**:`
383
- field, follow the announcement with one tester-facing sentence of
384
- context, and render it **under the `> ` bar as the opening line of
385
- the SAME blockquote as the chapter's instructions** (Claude variant:
386
- put `>` on the blank line between the context and the instructions
387
- so they read as one continuous separator bar, never two stacked
388
- blocks; the context line is tester-facing, so it is never plain
389
- prose). When the source has no `**Context**:` field, announce the
390
- title alone.
415
+ §Tone), not the internal id. Announce the title alone, then go
416
+ straight into the chapter's instructions.
391
417
  2. **Preparation** (if applicable): create or modify the fixture
392
418
  files the chapter calls for (silently, per §Silence).
393
419
  3. **The tester's part**: the command block(s) and instructions,
@@ -170,10 +170,10 @@ parts:
170
170
  - id: stability ; title: "Set a node's stability (and the `.sm` sidecar)" ; est_min: 3
171
171
  - id: golive ; title: "Your website, live next to the graph" ; est_min: 3
172
172
 
173
- # ----- the basic-track campaign (open-standard family: agent-skills / antigravity) -----
173
+ # ----- the basic-track campaign (the Agent Skills open standard; vendors like Antigravity build on it) -----
174
174
  # Mirrors the rich campaign arc with skill + markdown only, connected by
175
175
  # markdown references. Same fixtures (portfolio / harness) laid under the
176
- # basic provider, which renders the agent/command nodes as skills.
176
+ # `agent-skills` lens, which renders the agent/command nodes as skills.
177
177
 
178
178
  - id: basic-kickoff
179
179
  order: 1
@@ -21,13 +21,6 @@ gone, re-invoke the tutorial from an empty dir") and stop.
21
21
 
22
22
  ## Step `authoring-1-scaffold` - `sm plugins create extractor demo-highlight` (~2 min)
23
23
 
24
- **Context**: We're building `demo-highlight`: a tiny extractor
25
- that scans each node's body for the keywords `TODO` and `FIXME`
26
- and shows the count as a chip on the node card. The scaffolder
27
- emits a working version of it; over the next steps we'll tweak
28
- its setting, move the chip to a different slot, and break the
29
- manifest on purpose to see the diagnostic catch it.
30
-
31
24
  > Let's scaffold it with `sm plugins create`:
32
25
 
33
26
  ```bash
@@ -34,11 +34,6 @@ has NO `sm scan` / `sm check` steps: the watcher re-scans on every save.
34
34
 
35
35
  ## Chapter `setup` - Make it yours and bring it up (~5 min)
36
36
 
37
- **Context**: the harness is wired. Now put it to work on a real day. First make
38
- the site yours, about whatever you like, then serve it. The HTML and
39
- CSS are Layer 2 (the harness's output); skill-map maps the harness (Layer 1, the
40
- `.md` files), so the site landing on disk does NOT move the graph.
41
-
42
37
  **Preparation**:
43
38
  1. Ask the tester the two questions straight, with no "before we build, let's
44
39
  make it yours" lead-in: what the site should be called and one line about what
@@ -114,10 +109,6 @@ Wait for confirmation. Mark `add-page`: done. Auto-advance to `broken-ref`.
114
109
 
115
110
  ## Chapter `broken-ref` - A rename breaks a link (~4 min)
116
111
 
117
- **Context**: the daily safety net, and where skill-map earns its keep: rename and
118
- move things freely, and skill-map shows you exactly what you forgot to update
119
- before it ships broken.
120
-
121
112
  **Preparation**: none (the tester drives). Everything is watched live.
122
113
 
123
114
  Tell the tester to free the third terminal, then rename the deploy runbook
@@ -165,21 +156,18 @@ Creates a blank page so you can start writing.
165
156
  The watcher picks up the new skill. Tell the tester:
166
157
 
167
158
  > I added a skill named `model`. Watch the **Map**: the new `model` skill node
168
- > appears, but flagged with a **warning** marker. Open its inspector: it reads
169
- > `name-reserved`, `model` shadows one of the agent runtime's own built-in verbs
170
- > (like `help`, `clear`, `config`), so the runtime would silently ignore your
171
- > skill, it never runs. The fix is a name the runtime does not own.
159
+ > appears **clean, no warning**. On the open Agent Skills standard a skill is
160
+ > activated by its `description`, not invoked by a `/` command, so a skill name
161
+ > can never collide with a built-in command, there are NO reserved skill names.
162
+ > Name your skills anything you like, even after a CLI built-in like `model` or
163
+ > `help`.
172
164
  >
173
- > Rename it to `new-page`: first rename the folder `<provider_dir>/model/` to
174
- > `<provider_dir>/new-page/`. Then open `new-page/SKILL.md` and, at the top where
175
- > the frontmatter says `name: model`, change it to `name: new-page`. Save.
165
+ > The one exception is a vendor that bolts `/`-invocation onto the standard:
166
+ > Google's Antigravity invokes skills with `/<name>`, so under the Antigravity
167
+ > lens a skill named after one of its built-in verbs (like `goal`) WOULD be
168
+ > flagged `name-reserved`. The neutral open standard you are on reserves nothing.
176
169
  >
177
- > Watch the **Map** again: the warning clears and the node is now `new-page`, all
178
- > live. What cleared it was changing `frontmatter.name` (which for a skill must
179
- > match its folder, so you renamed both). Now `new-page` is yours and the runtime
180
- > will run it.
181
- >
182
- > Did the warning clear after the rename?
170
+ > See the `model` node land clean, with no warning?
183
171
 
184
172
  Wait for confirmation. Mark `reserved`: done. Auto-advance to `publish`.
185
173
 
@@ -189,10 +177,6 @@ Wait for confirmation. Mark `reserved`: done. Auto-advance to `publish`.
189
177
 
190
178
  ## Chapter `publish` - Ship it: run the publish skill for real (~4 min)
191
179
 
192
- **Context**: the publish flow only earns its keep when something is actually
193
- wrong, so first you plant a real bug in the site, then watch the publish skill
194
- catch and fix it for real.
195
-
196
180
  **Preparation**: make sure the pages exist (`index`, `about`, `projects`).
197
181
 
198
182
  This chapter has two beats: the tester breaks a link in the HTML first, then runs
@@ -1,7 +1,9 @@
1
1
  # Part 0 (basic track): The live map (prologue) - step library
2
2
 
3
- The live-UI prologue for the **basic track** (the open-standard family:
4
- `agent-skills`, `antigravity`). Same arc as the rich prologue, the tester runs
3
+ The live-UI prologue for the **basic track**: the **Agent Skills open
4
+ standard** (the `agent-skills` lens; vendors like Antigravity build on it and
5
+ add their own extras, which this book does not teach). Same arc as the rich
6
+ prologue, the tester runs
5
7
  `sm init`, opens the browser, and watches the map update in real time, but this
6
8
  lens authors only **skills** and **markdown notes**, and assets connect by
7
9
  **markdown references** (`[text](path)`), the one link the Agent Skills standard
@@ -196,11 +198,6 @@ Mark `inspector`: done.
196
198
 
197
199
  ## Chapter `edit-link` - Edit a link, the topology changes (~3 min)
198
200
 
199
- **Context**: `first-edit` changed a scalar and watched a card refresh. This
200
- chapter edits the markdown links and watches the MAP TOPOLOGY change both ways,
201
- a connector disappears when you remove a link, and a new one appears (clearing
202
- the broken-reference error) when you fix the unresolved one.
203
-
204
201
  The server has been live since `init`, leave it running; this chapter and the
205
202
  next two reuse it.
206
203
 
@@ -232,10 +229,6 @@ You verify by reading `notes/todo.md` (the `demo-skill` bullet gone, the
232
229
 
233
230
  ## Chapter `workspace` - Navigate the workspace (files, search, isolate) (~2 min)
234
231
 
235
- **Context**: you've built the graph and understood it; this beat is about
236
- *moving around* it. The workspace has two halves: the **Map**, and a **Files**
237
- panel (a folder tree of every node). The same `sm` session is still running.
238
-
239
232
  Walk the three actions one at a time (open the Files panel, search, isolate);
240
233
  each ends with its own confirmation. Do NOT prepend an intro line to a block.
241
234
 
@@ -251,8 +244,12 @@ each ends with its own confirmation. Do NOT prepend an intro line to a block.
251
244
  > `Search…`). Type `guideline`. Watch the tree narrow to the two
252
245
  > guideline nodes. The search matches a node's name, path, or
253
246
  > description, and filters live, no Enter needed. The **Map** stays
254
- > put: by default the search filters only the files list, not the map
255
- > (the tip below changes that).
247
+ > put: by default the search filters only the files list, not the map.
248
+ >
249
+ > 💡 Tip: the map-icon button next to the search box controls whether
250
+ > the search also filters the **Map** (off by default, which is why the
251
+ > map stayed put while only the tree narrowed). Click it on if you want
252
+ > a search to filter the map too.
256
253
  >
257
254
  > Now clear the box. All four nodes come back in the tree. Confirm you
258
255
  > saw it filter and then restore.
@@ -270,11 +267,6 @@ each ends with its own confirmation. Do NOT prepend an intro line to a block.
270
267
  > Map: there's a **Show all** button (an eye icon). Click it and all
271
268
  > four nodes return.
272
269
  >
273
- > 💡 Tip: the map-icon button next to the search box controls whether
274
- > the search also filters the **Map** (off by default, which is why the
275
- > map stayed put while only the tree narrowed). Click it on if you want
276
- > a search to filter the map too.
277
- >
278
270
  > Did the map isolate and then restore?
279
271
 
280
272
  Leave the server running, the next chapter is the last that uses it. Mark
@@ -1,7 +1,8 @@
1
1
  # Part 1 (basic track): The harness from zero (step library, `kickoff-*` ids)
2
2
 
3
- The campaign turns real here for the **basic track** (the open-standard family:
4
- `agent-skills`, `antigravity`). After the abstract prologue, the tester starts an
3
+ The campaign turns real here for the **basic track**: the **Agent Skills open
4
+ standard** (the `agent-skills` lens; vendors like Antigravity build on it).
5
+ After the abstract prologue, the tester starts an
5
6
  actual project: a tiny personal **portfolio website**, fully static, served by a
6
7
  ~15-line Express server, plus the `.agents/skills/` **harness** that maintains
7
8
  it. skill-map maps the harness (the `.md` assets and how they reference each
@@ -22,9 +23,6 @@ The chapters grow the harness from there.
22
23
 
23
24
  ## Chapter `kickoff` - Start the portfolio (~2 min)
24
25
 
25
- **Context**: same `sm init` from the prologue, now on a real project. The map
26
- shows the project's harness, not throwaway demo nodes.
27
-
28
26
  If the prologue (`basic-fundamentals`) ran first here, `portfolio-init` already
29
27
  cleared the demo fixture during pre-flight, so the tester sees only the
30
28
  portfolio. If anything demo lingers, mention it once and move on.
@@ -59,11 +57,6 @@ Wait for confirmation. Mark `kickoff`: done.
59
57
 
60
58
  ## Chapter `manual` - The handbook and an entry pointer (~2 min)
61
59
 
62
- **Context**: the first connector on the real project. A project often keeps a
63
- short entry file that points readers (and tools) at the handbook. On this lens
64
- that pointer is a plain **markdown link**, the only connector the open standard
65
- defines, and it is the tester's first real reference here.
66
-
67
60
  Tell the tester to create the file themselves (their project's file, Inviolable
68
61
  rule #2):
69
62
 
@@ -110,11 +103,6 @@ Wait for confirmation. Mark `first-skill`: done.
110
103
 
111
104
  ## Chapter `real-kinds` - The kinds in context (~2 min)
112
105
 
113
- **Context**: the prologue showed this lens's two kinds on abstract demo nodes.
114
- Now name them on the real project, and add the two markdown docs the harness
115
- references later (the style guide and the deploy runbook), so the daily loop's
116
- maintenance beats have something to point at.
117
-
118
106
  Lay the two docs (content lives in `fixtures-data/`). Backstage (silent):
119
107
 
120
108
  ```
@@ -142,10 +130,6 @@ Wait for confirmation. Mark `real-kinds`: done.
142
130
 
143
131
  ## Chapter `check-links` - The link checker (~3 min)
144
132
 
145
- **Context**: the harness needs a guard that runs before publishing, a skill that
146
- checks the site's internal links resolve before it ships. We only create the
147
- `skill` node here; the `publish` skill in the next chapter is what calls it.
148
-
149
133
  Lay the `check-links` skill (content lives in `fixtures-data/`). Backstage
150
134
  (silent):
151
135
 
@@ -164,15 +148,14 @@ Wait for confirmation. Mark `check-links`: done.
164
148
 
165
149
  ## Chapter `publish` - The publish skill (~4 min)
166
150
 
167
- **Context**: the chapter where the graph comes alive. The `publish` skill ties
168
- three pieces together in one body: it points at the link checker, at the content
169
- editor, and at the deploy runbook. On this lens all three are **markdown
170
- references**, so three reference arrows light up from a single new node.
171
-
172
151
  Tell the tester to create the file themselves (Inviolable rule #2). Render the
173
152
  block as a **top-level fenced code block** at column 0, NOT inside the `> `
174
153
  blockquote, so the frontmatter fences (`---`) land on column 0 (indented fences
175
- never parse, and `sm check` then warns `frontmatter-malformed`).
154
+ never parse, and `sm check` then warns `frontmatter-malformed`). Emit every line
155
+ verbatim: never soft-wrap, and never let a newline fall inside a `[text](path)`
156
+ link, a break inside the `(path)` splits it (`(../content-editor/SKILL.md)` must
157
+ stay on one line) and the link stops resolving (see `_core.md` §Language
158
+ mirroring + fixture content).
176
159
 
177
160
  > Create `<provider_dir>/publish/SKILL.md` with exactly this content (the first
178
161
  > line is `---`, nothing before it):
@@ -220,10 +203,6 @@ indented on paste, re-align every line flush left). Mark `publish`: done.
220
203
 
221
204
  ## Chapter `links` - The handbook becomes the hub (~4 min)
222
205
 
223
- **Context**: the handbook (`AGENTS.md`) has been a lonely node since the start of
224
- this part. Here it becomes the hub: two bullets point it at the content editor
225
- and the publish skill. We also give the content editor a reference to the style guide it follows.
226
-
227
206
  Apply both edits (content lives in `fixtures-data/`). The first appends two hub
228
207
  bullets (markdown links) to `AGENTS.md`; the second adds the style-guide
229
208
  reference to the content-editor skill. Backstage (silent):
@@ -275,8 +254,10 @@ Tell the tester:
275
254
  > file, and it drew a solid arrow at **1.00**.
276
255
  >
277
256
  > **IMPORTANT:** why does confidence matter? It mirrors how an agent resolves a
278
- > reference, a deterministic name-and-path lookup, no guessing. That is cheaper
279
- > and does not fail, the same reason a clean, well-named harness is worth keeping.
257
+ > reference, a deterministic name-and-path lookup, no guessing. A link that does
258
+ > not resolve sends the agent guessing and retrying, which burns time and tokens;
259
+ > a deterministic one is cheaper and does not fail, the same reason a clean,
260
+ > well-named harness is worth keeping.
280
261
  >
281
262
  > Do you see every badge reading 1.00 in the Inspector?
282
263
 
@@ -67,8 +67,6 @@ Mark `issues`: done.
67
67
 
68
68
  ## Chapter `annotations` - Annotations and the .sm consent prompt (~3 min)
69
69
 
70
- **Context**: skill-map keeps each tracked `.md`'s metadata (version, history, tags, annotations) in a sibling **`.sm` companion file** so the `.md` stays clean, and the first time it writes one in a project it asks for consent (remembered in the gitignored `settings.local.json`). The Maintain part walks that consent flow in full; this chapter does not re-teach it. The CLI focus here is what Maintain does not cover: the **three sidecar verbs** and the `--yes` non-interactive switch. A tester who jumped straight here gets a one-line refresher in the demo below.
71
-
72
70
  Create a scaffold for `notes/todo.md` so there is a `.sm` on disk to talk about. **Reset any prior consent state first** so the prompt appears (an earlier step may have flipped the flag, in which case the verb skips straight past it):
73
71
 
74
72
  ```bash
@@ -90,8 +88,6 @@ Mark `annotations`: done.
90
88
 
91
89
  ## Chapter `reference-paths` - Validate links to folders outside the scan scope (~4 min)
92
90
 
93
- **Context**: until now the map saw only files inside the cwd. In real projects a repo often links to files in a sibling repo (a specs project, a sibling package in a monorepo). Skill-map only scans from its cwd downwards, so a link to `../sibling/file.md` shows up as broken. The fix is to declare the external folders in `scan.referencePaths`, which lets the `reference-broken` analyzer validate path-style links against those extra roots **without indexing their files as nodes**. The folders are checked, not walked as part of the map.
94
-
95
91
  **Setup (you, silent)**: lay the fixture under the tutorial cwd so both sub-projects are siblings of each other but children of the tutorial root (its content + translation live in `fixtures-data/`). No confirmation beat needed, the tester learns about the files in the next message. Backstage (silent):
96
92
 
97
93
  ```