@skill-map/cli 0.60.4 → 0.61.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.
Files changed (87) hide show
  1. package/README.md +1 -1
  2. package/dist/cli/tutorial/sm-tutorial/SKILL.md +161 -266
  3. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/agents-hub/en/agents-hub.md +2 -0
  4. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/agents-hub/es/agents-hub.md +2 -0
  5. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/content-editor-style/en/content-editor-style.md +1 -0
  6. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/content-editor-style/es/content-editor-style.md +1 -0
  7. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/en/todo-bullet-agent.md +1 -0
  8. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/en/todo-bullet-command.md +1 -0
  9. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/en/todo-bullet-guideline.md +1 -0
  10. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/en/todo-bullet-guideline2.md +1 -0
  11. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/en/todo-bullet-skill.md +1 -0
  12. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/es/todo-bullet-agent.md +1 -0
  13. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/es/todo-bullet-command.md +1 -0
  14. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/es/todo-bullet-guideline.md +1 -0
  15. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/es/todo-bullet-guideline2.md +1 -0
  16. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/es/todo-bullet-skill.md +1 -0
  17. package/dist/cli/tutorial/sm-tutorial/fixtures-data/manifest.json +85 -0
  18. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/cli-external/en/link-validation/hijoA/note-with-external-link.md +10 -0
  19. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/cli-external/en/link-validation/hijoB/spec.md +11 -0
  20. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/cli-external/es/link-validation/hijoA/note-with-external-link.md +10 -0
  21. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/cli-external/es/link-validation/hijoB/spec.md +11 -0
  22. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/harness/en/__PROVIDER__/commands/publish.md +15 -0
  23. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/harness/en/__PROVIDER__/skills/check-links/SKILL.md +16 -0
  24. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/harness/es/__PROVIDER__/commands/publish.md +16 -0
  25. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/harness/es/__PROVIDER__/skills/check-links/SKILL.md +17 -0
  26. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/master/en/__PROVIDER__/agents/master-agent.md +14 -0
  27. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/master/en/__PROVIDER__/skills/master-skill/SKILL.md +18 -0
  28. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/master/en/notes/ideas.md +11 -0
  29. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/master/es/__PROVIDER__/agents/master-agent.md +15 -0
  30. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/master/es/__PROVIDER__/skills/master-skill/SKILL.md +18 -0
  31. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/master/es/notes/ideas.md +11 -0
  32. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/en/AGENTS.md +6 -0
  33. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/en/__PROVIDER__/agents/content-editor.md +21 -0
  34. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/en/docs/DEPLOY.md +11 -0
  35. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/en/docs/STYLE.md +20 -0
  36. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/en/public/index.html +5 -0
  37. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/es/AGENTS.md +7 -0
  38. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/es/__PROVIDER__/agents/content-editor.md +21 -0
  39. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/es/docs/DEPLOY.md +12 -0
  40. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/es/docs/STYLE.md +21 -0
  41. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/es/public/index.html +5 -0
  42. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/shared/CLAUDE.md +1 -0
  43. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/shared/package.json +6 -0
  44. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/shared/server.js +11 -0
  45. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/en/__PROVIDER__/agents/demo-agent.md +16 -0
  46. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/en/__PROVIDER__/commands/demo-command.md +11 -0
  47. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/en/__PROVIDER__/skills/demo-skill/SKILL.md +16 -0
  48. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/en/notes/demo-guideline.md +16 -0
  49. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/en/notes/demo-guideline2.md +12 -0
  50. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/en/notes/private-credentials.md +11 -0
  51. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/en/notes/todo.md +9 -0
  52. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/es/__PROVIDER__/agents/demo-agent.md +16 -0
  53. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/es/__PROVIDER__/commands/demo-command.md +11 -0
  54. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/es/__PROVIDER__/skills/demo-skill/SKILL.md +16 -0
  55. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/es/notes/demo-guideline.md +16 -0
  56. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/es/notes/demo-guideline2.md +13 -0
  57. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/es/notes/private-credentials.md +11 -0
  58. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/es/notes/todo.md +9 -0
  59. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/universal/en/findings.md +10 -0
  60. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/universal/es/findings.md +10 -0
  61. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/universal/shared/.skillmapignore +28 -0
  62. package/dist/cli/tutorial/sm-tutorial/references/_core.md +60 -40
  63. package/dist/cli/tutorial/sm-tutorial/references/_manifest.json +304 -0
  64. package/dist/cli/tutorial/sm-tutorial/references/_manifest.yml +4 -5
  65. package/dist/cli/tutorial/sm-tutorial/references/fixtures.md +93 -271
  66. package/dist/cli/tutorial/sm-tutorial/references/part-authoring.md +1 -2
  67. package/dist/cli/tutorial/sm-tutorial/references/part-cli.md +7 -30
  68. package/dist/cli/tutorial/sm-tutorial/references/part-connect-harness.md +21 -40
  69. package/dist/cli/tutorial/sm-tutorial/references/part-daily-loop.md +107 -194
  70. package/dist/cli/tutorial/sm-tutorial/references/part-fundamentals.md +58 -143
  71. package/dist/cli/tutorial/sm-tutorial/references/part-plugins.md +2 -3
  72. package/dist/cli/tutorial/sm-tutorial/references/part-project-kickoff.md +22 -69
  73. package/dist/cli/tutorial/sm-tutorial/scripts/fixtures.js +238 -0
  74. package/dist/cli/tutorial/sm-tutorial/scripts/lib/args.js +29 -0
  75. package/dist/cli/tutorial/sm-tutorial/scripts/lib/fixtures-manifest.js +32 -0
  76. package/dist/cli/tutorial/sm-tutorial/scripts/lib/io.js +37 -0
  77. package/dist/cli/tutorial/sm-tutorial/scripts/lib/manifest.js +24 -0
  78. package/dist/cli/tutorial/sm-tutorial/scripts/lib/paths.js +68 -0
  79. package/dist/cli/tutorial/sm-tutorial/scripts/state.js +262 -0
  80. package/dist/cli.js +7 -8
  81. package/dist/index.js +6 -4
  82. package/dist/kernel/index.js +6 -4
  83. package/dist/ui/chunk-DG3EAGXB.js +3 -0
  84. package/dist/ui/index.html +1 -1
  85. package/dist/ui/{main-VJJVD754.js → main-32BO6UKY.js} +1 -1
  86. package/package.json +5 -3
  87. package/dist/ui/chunk-DDDCORVR.js +0 -3
@@ -14,8 +14,9 @@ substitution, the `> ` rendering rule, the per-step cycle, §Closing a part,
14
14
  **The site is the tester's.** The `setup` chapter asks who it is for and builds
15
15
  it around that answer. Identity lives in Layer 2 (the HTML / CSS under
16
16
  `public/`), which skill-map does not map, so the graph stays identical no matter
17
- what the tester names their portfolio. Persist the answer in `tutorial-state.yml`
18
- under `tester.site_identity` (`{ name, tagline }`).
17
+ what the tester names their portfolio. Persist the answer with
18
+ `state.js set-identity --name "<name>" --tagline "<tagline>"` (it records
19
+ `tester.site_identity` in `tutorial-state.json`).
19
20
 
20
21
  **Provider note (read once).** Substitute `.claude/` with the detected
21
22
  `<provider_dir>`. On `agent-skills` / Antigravity the `content-editor` is a
@@ -31,6 +32,15 @@ landed (this keeps the node-count promises honest). If the subagent is not
31
32
  invocable in the tester's setup, act as the `content-editor` yourself following
32
33
  its rules and `docs/STYLE.md`, so the beat still lands.
33
34
 
35
+ **Live-map note (read once).** Every chapter here is watched on the live
36
+ **Map**, so skill-map's UI (`sm`) MUST be running before you start, watcher
37
+ picking up edits. In the full campaign the tester booted it back in the kickoff
38
+ chapter and kept it open; if they entered this part directly (via seed) or
39
+ closed it, have them start it now, run `sm` from the project root and open the
40
+ URL it prints, before the first chapter. This part has NO `sm scan` / `sm check`
41
+ steps: the watcher re-scans on every save, and the Map shows new nodes,
42
+ broken-reference markers, and confidence live.
43
+
34
44
  ---
35
45
 
36
46
  **Act A - Add**
@@ -49,8 +59,9 @@ correct, not a bug.
49
59
  1. Ask the tester, in one short exchange: what the site should be called (their
50
60
  name or a title) and one line about what it is for. Keep it light; if they do
51
61
  not care, offer defaults ("My Portfolio" / "Small, sturdy things on the
52
- web"). Save both into `tutorial-state.yml` under `tester.site_identity`
53
- (`{ name, tagline }`).
62
+ web"). Persist both with
63
+ `node .claude/skills/sm-tutorial/scripts/state.js set-identity --name "<name>" --tagline "<tagline>"`
64
+ (it writes `tester.site_identity` into `tutorial-state.json`).
54
65
  2. Backstage, `Write` `public/style.css` exactly as below (Layer 2, ignored by
55
66
  the scan; one stylesheet shared by every page).
56
67
  3. `Write` `public/index.html` and `public/about.html` from the templates below,
@@ -158,16 +169,31 @@ footer.site { border-top: 1px solid var(--border); padding: 2rem 0; color: var(-
158
169
  </html>
159
170
  ```
160
171
 
161
- Then tell the tester to serve it (the tester runs these; do not run them):
172
+ Tell the tester the face is on (no serving yet, that is the next chapter):
173
+
174
+ > I gave your site a face: a shared stylesheet plus a styled **Home** and
175
+ > **About** page, named after you. These are Layer 2 (the harness's output), so
176
+ > the **Map** did not move, and that is correct: skill-map maps the harness (the
177
+ > `.md` files, Layer 1), not the HTML it produces. Next we bring it up so you
178
+ > can see it.
179
+
180
+ Mark `setup`: done. Auto-advance to `preview`.
181
+
182
+ ## Chapter `preview` - Bring it up and see your site (~2 min)
183
+
184
+ **Context**: the first look. The site is styled but the tester has only seen it
185
+ as files; now serve it and open it in the browser, the early payoff before the
186
+ daily loop fills it with pages. The tester runs the commands themselves (one of
187
+ the few non-`sm` beats); guide them, do not run them.
162
188
 
163
189
  ```bash
164
190
  npm install
165
191
  node server.js
166
192
  ```
167
193
 
168
- > Your portfolio has a face now. `npm install` pulls the one small library the
169
- > server needs (Express, on the Node you already have), and `node server.js`
170
- > starts it and prints a line like `Listening on http://localhost:3000`.
194
+ > Bring your site up. `npm install` pulls the one small library the server needs
195
+ > (Express, on the Node you already have), and `node server.js` starts it and
196
+ > prints a line like `Listening on http://localhost:3000`.
171
197
  >
172
198
  > Open `http://localhost:3000`: there is your site, named after you, with a
173
199
  > clean layout. Click **About** and back to **Home**.
@@ -180,7 +206,11 @@ node server.js
180
206
  >
181
207
  > Does the site load and look clean?
182
208
 
183
- Wait for confirmation. Mark `setup`: done. Auto-advance to `add-page`.
209
+ Wait for confirmation. If `node server.js` reports `Cannot find module
210
+ 'express'`, `npm install` did not run first, run it (it reads `package.json` and
211
+ pulls Express), then retry; if `npm install` itself fails, check they are in the
212
+ project root and Node is on PATH. Mark `preview`: done. Auto-advance to
213
+ `add-page`.
184
214
 
185
215
  ## Chapter `add-page` - Add a page with your agent (~4 min)
186
216
 
@@ -207,6 +237,10 @@ following the agent's own steps and `docs/STYLE.md` (the shared shell, link
207
237
  home nav. Do NOT write any `.md`, do NOT touch the harness. Then `Read` the file
208
238
  it produced.
209
239
 
240
+ Report back using the block below as the template: adapt the page name and add a
241
+ one-line description of what it actually wrote, but keep the ENTIRE report inside
242
+ the `> ` blockquote, do NOT drop the bar when you personalise it.
243
+
210
244
  > Your `content-editor` ran for real and wrote `public/projects.html`, linked
211
245
  > from the home nav. Refresh the site: the new page is there, in the same style
212
246
  > as the rest.
@@ -217,88 +251,12 @@ it produced.
217
251
  >
218
252
  > See the new page on the site, and the Map unchanged?
219
253
 
220
- Wait for confirmation. Mark `add-page`: done. Auto-advance to `orphan-draft`.
221
-
222
- ## Chapter `orphan-draft` - A page nobody links to yet (~2 min)
223
-
224
- **Context**: mid-day you jot an idea for the next page but do not wire it up yet.
225
- skill-map shows it as an **orphan**: a real node with nothing pointing at it.
226
-
227
- **Preparation**: `Write` `docs/draft.md` (markdown kind):
228
- ```markdown
229
- ---
230
- name: draft
231
- description: |
232
- A rough idea for the next page. Not linked from anywhere yet.
233
- ---
234
-
235
- # Draft
236
-
237
- Notes toward a posts page. Nothing wired up.
238
- ```
239
-
240
- Tell the tester to run:
241
-
242
- ```bash
243
- sm scan
244
- sm show docs/draft.md
245
- ```
246
-
247
- > A new `docs/draft` node appeared on the Map as a floating dot, no arrows in or
248
- > out. `sm show docs/draft.md` has no "Links in" section: nothing references it.
249
- > That is an **orphan**, a valid node with no incoming links.
250
- >
251
- > An orphan is NOT an error: run `sm check` and the harness still reads clean.
252
- > It is just a node nobody points at yet. Keep three ideas apart: an **orphan**
253
- > (a real node, no incoming link), a **broken reference** (a link with no target
254
- > on the other end), and an **issue** (a rule violation `sm check` flags). You
255
- > will meet the other two in a moment.
256
- >
257
- > See the floating dot, and the empty "Links in"?
258
-
259
- Wait for confirmation. Mark `orphan-draft`: done. Auto-advance to `wire-and-improve`.
254
+ Wait for confirmation. Mark `add-page`: done. Auto-advance to `broken-ref`.
260
255
 
261
256
  ---
262
257
 
263
258
  **Act B - Modify / improve**
264
259
 
265
- ## Chapter `wire-and-improve` - Wire the draft in (~3 min)
266
-
267
- **Context**: you turn the draft into a real page and link it, so it stops being
268
- an orphan. Two moves: the `content-editor` writes the actual page (Layer 2), and
269
- you add a link to the draft note from the handbook (Layer 1), which gives the
270
- orphan an incoming edge.
271
-
272
- **Preparation**: invoke the `content-editor` via the Task tool (real-execution
273
- contract) to write `public/posts.html` from the draft idea (a couple of short
274
- sample posts, shared shell, nav link back to Home). `Read` it afterwards.
275
-
276
- Then tell the tester to wire the note in (their file, Inviolable rule #2):
277
-
278
- > Two moves to close the loop on that draft. First, I had your `content-editor`
279
- > turn it into a real page: `public/posts.html` now exists (Layer 2, so the Map
280
- > stays put for it). Second, your turn: open `AGENTS.md` and add this line to
281
- > the body, so the handbook actually points at the draft note:
282
- >
283
- > ```markdown
284
- > - The next page started as notes in [draft](docs/draft.md).
285
- > ```
286
- >
287
- > Save it, then re-scan and look at the draft again:
288
-
289
- ```bash
290
- sm scan
291
- sm show docs/draft.md
292
- ```
293
-
294
- > `docs/draft` is no longer an orphan: `sm show` now lists `Links in (1)
295
- > ← references AGENTS.md`, and on the Map the floating dot is connected to the
296
- > handbook. One incoming link is all it took to fold it into the graph.
297
- >
298
- > Did the draft connect to the handbook?
299
-
300
- Wait for confirmation. Mark `wire-and-improve`: done. Auto-advance to `broken-ref`.
301
-
302
260
  ## Chapter `broken-ref` - A rename breaks a link (~4 min)
303
261
 
304
262
  **Context**: real reorganizing breaks things, and this is where skill-map earns
@@ -309,60 +267,41 @@ On `agent-skills` / Antigravity there is no `/publish` command holding the deplo
309
267
  link; use the variant in the note at the end of this chapter (rename
310
268
  `docs/STYLE.md` to break the `content-editor`'s style-guide reference instead).
311
269
 
312
- **Preparation**: none (the tester drives).
270
+ **Preparation**: none (the tester drives). Everything here is watched live on
271
+ the Map; no `sm` commands.
313
272
 
314
273
  Tell the tester to rename the deploy runbook (their file):
315
274
 
316
275
  ```bash
317
276
  mv docs/DEPLOY.md docs/DEPLOYMENT.md
318
- sm scan
319
- sm check
320
277
  ```
321
278
 
322
279
  > You renamed the deploy runbook, but `/publish` still links to the old path.
323
- > `sm check` flags it:
324
- >
325
- > ```
326
- > sm check: 1 error
280
+ > Watch the **Map**: the `publish → docs/DEPLOY.md` arrow disappears (a broken
281
+ > link resolves to no node, so skill-map stops drawing it) and the `publish`
282
+ > card gets a red **broken-reference** marker, a link whose target no longer
283
+ > exists. Open the `publish` node's inspector and the broken reference is listed
284
+ > there.
327
285
  >
328
- > .claude/commands/publish.md
329
- > ✕ reference-broken Broken references reference → docs/DEPLOY.md
330
- > ```
331
- >
332
- > That is the `reference-broken` analyzer: a link whose target no longer exists.
333
- > On the Map the `publish → docs/DEPLOY.md` arrow has disappeared: a broken link
334
- > resolves to no node, so skill-map stops drawing it and flags the `publish` card
335
- > with a red error instead. `sm check` runs the full analyzer catalogue (around a
336
- > dozen rules); to narrow it to one rule:
337
-
338
- ```bash
339
- sm check --analyzers reference-broken
340
- ```
341
-
342
286
  > Now fix it the way you would for real: open `.claude/commands/publish.md` and
343
- > point the deploy-runbook link at `docs/DEPLOYMENT.md` (the new name). Then
344
- > re-scan and re-check:
345
-
346
- ```bash
347
- sm scan
348
- sm check
349
- ```
350
-
351
- > `✓ No issues`. The arrow is solid again. That is the daily safety net: rename
352
- > and move things freely, and skill-map tells you exactly what you forgot to
353
- > update, before it ships broken.
287
+ > point the deploy-runbook link at `docs/DEPLOYMENT.md` (the new name). Save.
288
+ >
289
+ > Watch the **Map** again: the arrow snaps back, solid, and the red marker
290
+ > clears, all live, no command to run. That is the daily safety net: rename and
291
+ > move things freely, and skill-map shows you exactly what you forgot to update
292
+ > before it ships broken.
354
293
  >
355
- > Did `sm check` go from 1 error back to clean?
294
+ > Did the broken marker appear and then clear?
356
295
 
357
- Wait for confirmation. The harness MUST read `✓ No issues` before Act C (the
358
- real `/publish` later follows this runbook). Mark `broken-ref`: done.
359
- Auto-advance to `reserved`.
296
+ Wait for confirmation. The harness MUST be clean again (the red marker gone)
297
+ before Act C (the real `/publish` later follows this runbook). Mark `broken-ref`:
298
+ done. Auto-advance to `reserved`.
360
299
 
361
300
  On `agent-skills` / Antigravity (no `command` kind), run the same beat on a link
362
301
  that exists there: `mv docs/STYLE.md docs/STYLE-GUIDE.md`, which breaks the
363
- `content-editor` skill's `[style guide]` reference; `sm check` flags
364
- `reference-broken` on the `content-editor`; fix the link in the skill body and
365
- re-check to clean.
302
+ `content-editor` skill's `[style guide]` reference; the Map flags the broken
303
+ reference on the `content-editor`; fix the link in the skill body and watch it
304
+ clear.
366
305
 
367
306
  ## Chapter `reserved` - A reserved name collides (~2 min)
368
307
 
@@ -388,41 +327,24 @@ description: |
388
327
  Creates a blank page so you can start writing.
389
328
  ```
390
329
 
391
- Tell the tester to scan and check:
330
+ The watcher picks up the new command. Tell the tester:
392
331
 
393
- ```bash
394
- sm scan
395
- sm check
396
- ```
397
-
398
- > `sm check` warns:
399
- >
400
- > ```
401
- > sm check: 1 warning
332
+ > I added a command named `init`. Watch the **Map**: the new `init` command node
333
+ > appears, but flagged with a **warning** marker. Open its inspector: it reads
334
+ > `name-reserved`, `init` shadows one of Claude Code's own slash commands (like
335
+ > `/help`, `/clear`, `/config`), so the runtime would silently ignore your file,
336
+ > it never runs. The fix is a name the runtime does not own.
402
337
  >
403
- > .claude/commands/init.md
404
- > ⚠ name-reserved .claude/commands/init.md shadows a built-in claude command. The runtime ignores this file in favour of its own built-in. Rename the file or `frontmatter.name` to a non-reserved value.
405
- > ```
338
+ > Rename it to `new-page`: rename the file `.claude/commands/init.md` to
339
+ > `.claude/commands/new-page.md`, AND change `frontmatter.name` to `new-page`
340
+ > and the H1 to `# new-page` (a command's H1 stays a plain title, never
341
+ > `# /new-page`). Save.
406
342
  >
407
- > `init` is one of Claude Code's own slash commands (like `/help`, `/clear`,
408
- > `/config`), so your file would be silently ignored, it never runs. The fix is
409
- > to give it a name the runtime does not own.
410
-
411
- Rename the command to `new-page`: rename the file `.claude/commands/init.md` to
412
- `.claude/commands/new-page.md`, AND change `frontmatter.name` to `new-page` and
413
- the H1 to `# new-page` (a command's H1 stays a plain title, never `# /new-page`).
414
- Then have the tester re-scan and re-check:
415
-
416
- ```bash
417
- sm scan
418
- sm check
419
- ```
420
-
421
- > `✓ No issues`. Notice what cleared the warning: changing the **name**, not
422
- > just the filename. The reserved check looks at the command's name (its
423
- > `frontmatter.name`), which is why the warning told you to rename "the file or
424
- > `frontmatter.name`". Now `new-page` is yours and the runtime will actually run
425
- > it.
343
+ > Watch the **Map** again: the warning clears and the node is now `new-page`,
344
+ > all live. Notice what cleared it: changing the **name** (`frontmatter.name`),
345
+ > not just the filename, the reserved check looks at the command's name, which
346
+ > is why the warning said to rename "the file or `frontmatter.name`". Now
347
+ > `new-page` is yours and the runtime will actually run it.
426
348
  >
427
349
  > Did the warning clear after the rename?
428
350
 
@@ -444,9 +366,8 @@ On `agent-skills` / Antigravity there is no `/publish` command: run the
444
366
  `check-links` skill directly over `public/`, then follow `docs/DEPLOYMENT.md` by
445
367
  hand. Everything else in this chapter is identical.
446
368
 
447
- **Preparation**: make sure the pages exist (`index`, `about`, `projects`,
448
- `posts` from the earlier chapters; lay any that are missing from the templates in
449
- `setup`). When the tester asks to publish, **execute the publish flow for real**
369
+ **Preparation**: make sure the pages exist (`index`, `about`, `projects` from the
370
+ earlier chapters; lay any that are missing from the templates in `setup`). When the tester asks to publish, **execute the publish flow for real**
450
371
  by following `.claude/commands/publish.md`: run the `check-links` logic over
451
372
  every `.html` under `public/` (does each internal `href` resolve to a file that
452
373
  exists?); if any link is broken, brief the `content-editor` to fix it and
@@ -477,49 +398,42 @@ conditional on the real result):
477
398
  >
478
399
  > Did the publish run report the link check clean?
479
400
 
480
- Wait for confirmation. Mark `publish`: done. Auto-advance to `sidecar`.
401
+ Wait for confirmation. Mark `publish`: done. Auto-advance to `stability`.
481
402
 
482
- ## Chapter `sidecar` - Annotate the handbook (.sm and consent) (~3 min)
403
+ ## Chapter `stability` - Set a node's stability (and the `.sm` sidecar) (~3 min)
483
404
 
484
- **Context**: skill-map keeps its own metadata in co-located `.sm` sidecars, right
485
- next to each file, leaving the vendor file untouched. Writing the first one needs
486
- your consent. Good moment now that the site shipped: leave a metadata note on the
487
- handbook.
405
+ **Context**: real maintenance includes marking how mature each piece is. skill-map
406
+ lets you tag a node's **stability** (`experimental` / `stable` / `deprecated`)
407
+ from the inspector. That is skill-map's own metadata, so it lands in a co-located
408
+ **`.sm` sidecar** next to the file (the vendor file stays untouched), and the
409
+ first `.sm` write asks for your consent. Good moment now that the site shipped:
410
+ mark the handbook as the stable core it is.
488
411
 
489
412
  **Preparation**: none for a first-time tester. (If re-entering a dir where the
490
413
  sidecar already exists, reset consent first with `rm -f AGENTS.sm
491
- .skill-map/settings.local.json` so the prompt shows again.)
414
+ .skill-map/settings.local.json` so the consent prompt shows again.)
492
415
 
493
416
  Tell the tester:
494
417
 
495
- ```bash
496
- sm sidecar annotate AGENTS.md
497
- ```
498
-
499
- > The first time you write a `.sm`, skill-map asks for consent: answer `y` at the
500
- > `[Y/n]` prompt. It then scaffolds `AGENTS.sm` next to `AGENTS.md`:
418
+ > Your harness shipped, so let's mark the handbook as the **stable** core it is.
419
+ > Open the Inspector for the `AGENTS` node (click it on the **Map**) and find the
420
+ > **stability** action (the action button in the inspector). Click it and pick
421
+ > `stable` from the list.
501
422
  >
502
- > ```
503
- > ✓ Created AGENTS.sm. Edit it, then run `sm bump AGENTS.md` to commit the version.
504
- > ```
423
+ > The first time skill-map writes its own metadata it asks for **consent**:
424
+ > confirm it in the dialog that pops up. Two things happen at once: a `stable`
425
+ > badge appears on the `AGENTS` node, and skill-map creates a **`.sm` sidecar**
426
+ > (`AGENTS.sm`) right next to the handbook to hold that metadata, your `AGENTS.md`
427
+ > itself is never touched. Your consent is remembered for the project, so it
428
+ > will not ask again.
505
429
  >
506
- > Look at the two new artifacts:
507
-
508
- ```bash
509
- cat AGENTS.sm
510
- cat .skill-map/settings.local.json
511
- ```
512
-
513
- > `AGENTS.sm` holds an `identity:` block (hashes that tie it to the live file)
514
- > and an empty `annotations: {}` ready for you to fill in. And
515
- > `.skill-map/settings.local.json` now records your consent,
516
- > `{ "allowEditSmFiles": true }`, so skill-map will not ask again in this
517
- > project. Open the Inspector for the `AGENTS` node: it now has a **Metadata**
518
- > section it did not have before.
430
+ > That sidecar is where skill-map keeps what it knows about a node that does not
431
+ > belong in the vendor file (stability, version, tags). You just wrote your first
432
+ > one, by clicking, no command needed.
519
433
  >
520
- > See `AGENTS.sm` and the consent flag?
434
+ > See the `stable` badge on the handbook?
521
435
 
522
- Wait for confirmation. Mark `sidecar`: done. Auto-advance to `golive`.
436
+ Wait for confirmation. Mark `stability`: done. Auto-advance to `golive`.
523
437
 
524
438
  ## Chapter `golive` - Your portfolio, live next to the graph (~3 min)
525
439
 
@@ -540,9 +454,8 @@ node server.js
540
454
  > Last step, the fun one. `npm install` confirms the one small library is there,
541
455
  > and `node server.js` starts the server (`Listening on http://localhost:3000`).
542
456
  >
543
- > Open `http://localhost:3000` and click through Home, About, Projects, and
544
- > Posts, the pages your harness produced and shipped through the publish flow you
545
- > just ran.
457
+ > Open `http://localhost:3000` and click through Home, About, and Projects, the
458
+ > pages your harness produced and shipped through the publish flow you just ran.
546
459
  >
547
460
  > Now take it in at once. On one side, your real running portfolio, named after
548
461
  > you, that you could deploy as-is. On the other, the skill-map graph of the