@skill-map/cli 0.68.0 → 0.68.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 (29) hide show
  1. package/dist/cli/tutorial/sm-tutorial/SKILL.md +14 -15
  2. package/dist/cli/tutorial/sm-tutorial/fixtures-data/manifest.json +0 -3
  3. package/dist/cli/tutorial/sm-tutorial/references/_core.md +1 -1
  4. package/dist/cli/tutorial/sm-tutorial/references/_manifest.json +30 -56
  5. package/dist/cli/tutorial/sm-tutorial/references/_manifest.yml +11 -35
  6. package/dist/cli/tutorial/sm-tutorial/references/fixtures.md +6 -7
  7. package/dist/cli/tutorial/sm-tutorial/references/part-authoring.md +2 -2
  8. package/dist/cli/tutorial/sm-tutorial/references/part-basic-daily.md +25 -51
  9. package/dist/cli/tutorial/sm-tutorial/references/part-basic-fundamentals.md +20 -19
  10. package/dist/cli/tutorial/sm-tutorial/references/part-basic-kickoff.md +150 -5
  11. package/dist/cli/tutorial/sm-tutorial/references/part-cli.md +1 -1
  12. package/dist/cli/tutorial/sm-tutorial/references/part-daily-loop.md +41 -73
  13. package/dist/cli/tutorial/sm-tutorial/references/part-fundamentals.md +25 -29
  14. package/dist/cli/tutorial/sm-tutorial/references/part-plugins.md +1 -1
  15. package/dist/cli/tutorial/sm-tutorial/references/part-project-kickoff.md +170 -13
  16. package/dist/cli/tutorial/sm-tutorial/references/part-settings.md +2 -2
  17. package/dist/cli/tutorial/sm-tutorial/scripts/state.js +4 -4
  18. package/dist/cli.js +12 -11
  19. package/dist/index.js +3 -3
  20. package/dist/kernel/index.js +3 -3
  21. package/dist/ui/{chunk-4F53HBGG.js → chunk-22EQLC23.js} +1 -1
  22. package/dist/ui/chunk-TLMV4LOQ.js +3 -0
  23. package/dist/ui/index.html +1 -1
  24. package/dist/ui/{main-ZYRIR6DB.js → main-R7BIU4HU.js} +3 -3
  25. package/package.json +2 -2
  26. package/dist/cli/tutorial/sm-tutorial/references/part-basic-connect.md +0 -166
  27. package/dist/cli/tutorial/sm-tutorial/references/part-connect-harness.md +0 -175
  28. package/dist/ui/chunk-BJUBDHJR.js +0 -3
  29. /package/dist/ui/{chunk-3GDWM5VM.js → chunk-K3ZRQNN5.js} +0 -0
@@ -6,9 +6,12 @@ actual project: a tiny personal **portfolio website**, fully static, served by a
6
6
  ~15-line Express server, plus the `.agents/skills/` **harness** that maintains
7
7
  it. skill-map maps the harness (the `.md` assets and how they reference each
8
8
  other); the site itself is plain HTML the harness produces (the daily loop, Part
9
- 3, runs and ships it). This lens authors only **skills** and **markdown notes**,
10
- and they connect by **markdown references** (`[text](path)`). `pace: per-step`,
11
- `preflight: portfolio-init`. Shared conventions live in `_core.md`. Narrate with
9
+ 2, runs and ships it). This lens authors only **skills** and **markdown notes**,
10
+ and they connect by **markdown references** (`[text](path)`). This part runs end
11
+ to end: it boots the project and grows its harness members (the `kickoff` to
12
+ `real-kinds` chapters), then wires them into a connected graph (the `check-links`
13
+ to `confidence` chapters). `pace: per-step`, `preflight: portfolio-init`. Shared
14
+ conventions live in `_core.md`. Narrate with
12
15
  `<provider_dir>` = `.agents/skills`.
13
16
 
14
17
  The orchestrator's `portfolio-init` pre-flight (backstage, silent) has already
@@ -94,7 +97,7 @@ Tell the tester:
94
97
 
95
98
  > I added the first real member of your harness: a skill called `content-editor`
96
99
  > (its job is to write the site's pages). A new `skill` node appeared on the map.
97
- > Right now it stands alone; in the next part we wire it to the handbook and the
100
+ > Right now it stands alone; later in this part we wire it to the handbook and the
98
101
  > style guide.
99
102
  >
100
103
  > 💡 Tip: I create these harness files for you. If you'd like to see what's
@@ -135,6 +138,148 @@ Tell the tester:
135
138
  >
136
139
  > See the skill and the docs in the map?
137
140
 
138
- Wait for confirmation. Mark `real-kinds`: done. Last chapter of the part: apply
141
+ Wait for confirmation. Mark `real-kinds`: done.
142
+
143
+ ## Chapter `check-links` - The link checker (~3 min)
144
+
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
+ Lay the `check-links` skill (content lives in `fixtures-data/`). Backstage
150
+ (silent):
151
+
152
+ ```
153
+ node .claude/skills/sm-tutorial/scripts/fixtures.js lay harness --only "__PROVIDER__/skills/check-links/SKILL.md" --provider <provider> --lang <lang>
154
+ ```
155
+
156
+ Tell the tester:
157
+
158
+ > So I added that guard: a skill called `check-links`. A new `skill` node
159
+ > appeared on the **Map**, alone for now; the next chapter gives it a caller.
160
+ >
161
+ > See the new skill node?
162
+
163
+ Wait for confirmation. Mark `check-links`: done.
164
+
165
+ ## Chapter `publish` - The publish skill (~4 min)
166
+
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
+ Tell the tester to create the file themselves (Inviolable rule #2). Render the
173
+ block as a **top-level fenced code block** at column 0, NOT inside the `> `
174
+ blockquote, so the frontmatter fences (`---`) land on column 0 (indented fences
175
+ never parse, and `sm check` then warns `frontmatter-malformed`).
176
+
177
+ > Create `<provider_dir>/publish/SKILL.md` with exactly this content (the first
178
+ > line is `---`, nothing before it):
179
+
180
+ ```markdown
181
+ ---
182
+ name: publish
183
+ description: |
184
+ Publishes the portfolio: runs the link check, hands off to the
185
+ content editor for any last fixes, then follows the deploy runbook.
186
+ ---
187
+
188
+ # publish
189
+
190
+ The one skill you run when the site is ready to go out.
191
+
192
+ ## Steps
193
+ 1. Run the [check-links](../check-links/SKILL.md) skill on the pages in public/. If it reports broken links, stop and fix them first.
194
+ 2. If a page needs a content fix, hand the change to [content-editor](../content-editor/SKILL.md).
195
+ 3. Follow the [deploy runbook](../../../docs/DEPLOY.md): regenerate pages, run the link check, start the server.
196
+ ```
197
+
198
+ Continue the tester message:
199
+
200
+ > Save it. Watch the **Map**: **three** new arrows light up at once from the new
201
+ > `publish` node, all of them `references` (the open standard's one connector),
202
+ > each landing on a real file:
203
+ >
204
+ > - `publish -> check-links` (the `[check-links](../check-links/SKILL.md)` link)
205
+ > - `publish -> content-editor` (the `[content-editor](../content-editor/SKILL.md)` link)
206
+ > - `publish -> docs/DEPLOY.md` (the `[deploy runbook](../../../docs/DEPLOY.md)` link)
207
+ >
208
+ > One node, three connectors, all references. On a vendor lens (claude/codex) the
209
+ > first two would be a `/`-invoke and an `@`-mention; the open standard wires
210
+ > everything with file links, and that is all this lens emits. The harness is
211
+ > starting to look like a real graph.
212
+ >
213
+ > 💡 Tip: to tidy the layout, click **Re-arrange layout** in the map toolbar.
214
+ >
215
+ > Did the three arrows appear?
216
+
217
+ Wait for confirmation. You MAY `Read` the file to verify the `---` fences are
218
+ flush at column 0 (if `sm check` flags `frontmatter-malformed`, the fences got
219
+ indented on paste, re-align every line flush left). Mark `publish`: done.
220
+
221
+ ## Chapter `links` - The handbook becomes the hub (~4 min)
222
+
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
+ Apply both edits (content lives in `fixtures-data/`). The first appends two hub
228
+ bullets (markdown links) to `AGENTS.md`; the second adds the style-guide
229
+ reference to the content-editor skill. Backstage (silent):
230
+
231
+ ```
232
+ node .claude/skills/sm-tutorial/scripts/fixtures.js edit agents-hub --provider <provider> --lang <lang>
233
+ node .claude/skills/sm-tutorial/scripts/fixtures.js edit content-editor-style --provider <provider> --lang <lang>
234
+ ```
235
+
236
+ Tell the tester:
237
+
238
+ > Two edits, and the **Map** fills in. Your handbook (`AGENTS.md`) is now the hub:
239
+ > it points at the content editor and at the publish skill. And the content
240
+ > editor now reaches the style guide it follows. New arrows, all `references`:
241
+ >
242
+ > - `AGENTS.md -> content-editor` (a `[content-editor](...)` link)
243
+ > - `AGENTS.md -> publish` (a `[publish](...)` link)
244
+ > - `content-editor -> docs/STYLE.md` (a `[style guide](...)` link)
245
+ >
246
+ > The whole harness is wired end to end now: the handbook reaches the work, the
247
+ > work reaches the docs, and `publish` pulls the publish flow together, every
248
+ > connection a markdown reference, the one link the open standard documents.
249
+ >
250
+ > Did the new arrows light up?
251
+
252
+ Wait for confirmation. You MAY `Read` the two files to verify. Mark `links`: done.
253
+
254
+ ## Chapter `confidence` - How sure is each link (~3 min)
255
+
256
+ No file edits, pure observation.
257
+
258
+ Tell the tester:
259
+
260
+ > Last beat of this part: how sure is skill-map about each connection? It records
261
+ > a **confidence** for every link and draws it as opacity: a link that resolves
262
+ > to a real file is solid (**1.00**), one that does not lands fainter, so a glance
263
+ > at the **Map** separates solid wiring from problem links.
264
+ >
265
+ > Open the Inspector for the `publish` node (click it). Scroll to the
266
+ > **Connections** panel and read the **Outgoing** rows. Each shows the link kind
267
+ > (`references`, the only kind here) and a confidence badge, every one reads
268
+ > **1.00**, because each link lands on a file that exists on disk.
269
+ >
270
+ > Your whole harness reads solid because every link resolves. So what does a link
271
+ > that does NOT resolve look like? You met one in the prologue: the
272
+ > `demo-guideline` link had no `.md`, so it pointed at a path that did not exist,
273
+ > skill-map drew no arrow and flagged it as a **broken reference**, confidence
274
+ > knocked to **0.50**. Adding `.md` turned it into a link that landed on the real
275
+ > file, and it drew a solid arrow at **1.00**.
276
+ >
277
+ > **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.
280
+ >
281
+ > Do you see every badge reading 1.00 in the Inspector?
282
+
283
+ Wait for confirmation. Mark `confidence`: done. Last chapter of the part: apply
139
284
  §Closing a part (name the part by its title, route back to the menu; do NOT lead
140
285
  into the next part from here).
@@ -1,4 +1,4 @@
1
- # Part 5: The CLI in depth - step library
1
+ # Part 4: The CLI in depth - step library
2
2
 
3
3
  The deep-dive into the rest of the CLI: browsing verbs, ASCII graph + export, broken-ref issues, the `.sm` annotation consent prompt, and validating links to folders outside the scan scope. `pace: auto-advance` (walk straight into the next chapter's Announcement once one is marked done) and `preflight: seed` with the `prologue-built` snapshot: it self-seeds its own copy of the Part 0 demo fixture, so it works even if the campaign already replaced that fixture with the portfolio (see SKILL.md §Entering a part, the `cli` case). Shared conventions (tone, provider detection / substitution, the `> ` rendering rule, the per-step cycle) live in `_core.md`; do not restate them here.
4
4
 
@@ -1,4 +1,4 @@
1
- # Part 3: The daily loop (step library, `daily-loop`)
1
+ # Part 2: The daily loop (step library, `daily-loop`)
2
2
 
3
3
  The campaign's payoff and finale fused into one part: the tester operates the
4
4
  harness they built the way they would on any normal day, **for real**. Three
@@ -62,9 +62,9 @@ broken-reference markers, and confidence live.
62
62
  ## Chapter `setup` - Make it yours and bring it up (~5 min)
63
63
 
64
64
  **Context**: the harness is wired (you built it in the earlier parts). Now you
65
- put it to work on a real day. First, make the site yours and give it a look you
66
- would not be embarrassed to share, then serve it and open it in the browser, the
67
- early payoff before the daily loop fills it with pages. The honest beat: the HTML
65
+ put it to work on a real day. First, make the site yours, about whatever you
66
+ like, then serve it and open it in the browser, the early payoff before the
67
+ daily loop fills it with pages. The honest beat: the HTML
68
68
  and CSS are Layer 2 (the harness's output); skill-map maps the harness (Layer 1,
69
69
  the `.md` files), so the site landing on disk does NOT move the graph, and that
70
70
  is correct, not a bug. The tester runs the serve commands themselves (one of the
@@ -72,10 +72,11 @@ few non-`sm` beats); guide them, do not run them.
72
72
 
73
73
  **Preparation**:
74
74
 
75
- 1. Ask the tester, in one short exchange: what the site should be called (their
76
- name or a title) and one line about what it is for. Keep it light; if they do
77
- not care, offer defaults ("My Portfolio" / "Small, sturdy things on the
78
- web"). Persist both with
75
+ 1. Ask the tester the two questions straight, with no "before we build, let's
76
+ make it yours" lead-in: what the site should be called (their name or a
77
+ title) and one line about what it is for. Keep it light; if they do not care,
78
+ offer defaults ("My Portfolio" / "Small, sturdy things on the web"). Persist
79
+ both with
79
80
  `node .claude/skills/sm-tutorial/scripts/state.js set-identity --name "<name>" --tagline "<tagline>"`
80
81
  (it writes `tester.site_identity` into `tutorial-state.json`).
81
82
  2. Backstage, `Write` `public/style.css` exactly as below (Layer 2, ignored by
@@ -208,12 +209,6 @@ node server.js
208
209
  > Open `http://localhost:3000`: there is your site, named after you, with a
209
210
  > clean layout. Click **About** and back to **Home**.
210
211
  >
211
- > Now glance at the Map: it did not move. Everything you watched grow on the
212
- > canvas is your harness, the `.md` files and how they reference each other
213
- > (Layer 1). The pages and the stylesheet are Layer 2, what the harness
214
- > produces, and skill-map maps the harness, not its output. Two layers, one
215
- > project.
216
- >
217
212
  > Does the site load and look clean?
218
213
 
219
214
  Wait for confirmation. If `node server.js` reports `Cannot find module
@@ -224,11 +219,6 @@ project root and Node is on PATH. Mark `setup`: done. Auto-advance to
224
219
 
225
220
  ## Chapter `add-page` - Add a page with your agent (~4 min)
226
221
 
227
- **Context**: the daily move. You want a new page, so you ask your
228
- `content-editor` to write it. This is the first time it runs **for real** (no
229
- more playing the agent). It reads `docs/STYLE.md` and the shared stylesheet and
230
- writes a new page into `public/`. The graph does not move (HTML is Layer 2).
231
-
232
222
  **Preparation**: none until the tester asks.
233
223
 
234
224
  Tell the tester:
@@ -269,14 +259,18 @@ Wait for confirmation. Mark `add-page`: done. Auto-advance to `broken-ref`.
269
259
 
270
260
  ## Chapter `broken-ref` - A rename breaks a link (~4 min)
271
261
 
272
- **Context**: real reorganizing breaks things, and this is where skill-map earns
273
- its keep. You rename a doc, and a link that pointed at the old name goes stale.
274
- skill-map catches it the moment you re-scan.
262
+ **Context**: the daily safety net, and where skill-map earns its keep: rename and
263
+ move things freely, and skill-map shows you exactly what you forgot to update
264
+ before it ships broken.
275
265
 
276
266
  **Preparation**: none (the tester drives). Everything here is watched live on
277
267
  the Map; no `sm` commands.
278
268
 
279
- Tell the tester to rename the deploy runbook (their file):
269
+ Tell the tester to free the third terminal, then rename the deploy runbook
270
+ themselves (their file):
271
+
272
+ > In your **third terminal** (the one running `node server.js`), press
273
+ > **Ctrl+C** to stop the site server, then rename the deploy runbook there:
280
274
 
281
275
  ```bash
282
276
  mv docs/DEPLOY.md docs/DEPLOYMENT.md
@@ -293,9 +287,7 @@ mv docs/DEPLOY.md docs/DEPLOYMENT.md
293
287
  > point the deploy-runbook link at `docs/DEPLOYMENT.md` (the new name). Save.
294
288
  >
295
289
  > Watch the **Map** again: the arrow snaps back, solid, and the red marker
296
- > clears, all live, no command to run. That is the daily safety net: rename and
297
- > move things freely, and skill-map shows you exactly what you forgot to update
298
- > before it ships broken.
290
+ > clears, all live, no command to run.
299
291
  >
300
292
  > Did the broken marker appear and then clear?
301
293
 
@@ -305,10 +297,6 @@ done. Auto-advance to `reserved`.
305
297
 
306
298
  ## Chapter `reserved` - A reserved name collides (~2 min)
307
299
 
308
- **Context**: you add a quick command to scaffold new pages and, without
309
- thinking, name it `init`, a name Claude Code already owns for its own slash
310
- command. skill-map warns you before the runtime silently ignores your file.
311
-
312
300
  **Preparation**: `Write` `.claude/commands/init.md`:
313
301
  ```markdown
314
302
  ---
@@ -333,14 +321,12 @@ The watcher picks up the new command. Tell the tester:
333
321
  > Rename it to `new-page`: first rename the file `.claude/commands/init.md` to
334
322
  > `.claude/commands/new-page.md`. Then open it in your text editor / IDE and, at
335
323
  > the top, where the frontmatter says `name: init`, change it to
336
- > `name: new-page`; also change the H1 to `# new-page` (a command's H1 stays a
337
- > plain title, never `# /new-page`). Save.
324
+ > `name: new-page`. Save.
338
325
  >
339
326
  > Watch the **Map** again: the warning clears and the node is now `new-page`,
340
- > all live. Notice what cleared it: changing the **name** (`frontmatter.name`),
341
- > not just the filename, the reserved check looks at the command's name, which
342
- > is why the warning said to rename "the file or `frontmatter.name`". Now
343
- > `new-page` is yours and the runtime will actually run it.
327
+ > all live. What cleared it was changing `frontmatter.name` (not just the
328
+ > filename), the reserved check looks at the name. Now `new-page` is yours and
329
+ > the runtime will run it.
344
330
  >
345
331
  > Did the warning clear after the rename?
346
332
 
@@ -352,12 +338,6 @@ Wait for confirmation. Mark `reserved`: done. Auto-advance to `publish`.
352
338
 
353
339
  ## Chapter `publish` - Ship it: run /publish for real (~4 min)
354
340
 
355
- **Context**: the harness is not a picture, it is a set of instructions, and
356
- `/publish` ties them together. You run it **for real** now: it invokes the link
357
- checker over your pages, briefs the `content-editor` if anything needs a fix,
358
- then follows the deploy runbook. This is the same Layer 1 / Layer 2 split, the
359
- pages are output, so the Map stays put while the pipeline runs.
360
-
361
341
  **Preparation**: make sure the pages exist (`index`, `about`, `projects` from the
362
342
  earlier chapters; lay any that are missing from the templates in `setup`). When the tester asks to publish, **execute the publish flow for real**
363
343
  by following `.claude/commands/publish.md`: run the `check-links` logic over
@@ -370,7 +350,9 @@ Tell the tester:
370
350
  > The site is ready. Tell me to publish (or type `/publish`) and I'll run your
371
351
  > publish command for real: I follow its steps, run the link check across your
372
352
  > pages, fix anything through the `content-editor`, and walk the deploy runbook,
373
- > exactly what the command says to do.
353
+ > exactly what the command says to do. (You can read the command's content
354
+ > anytime by clicking the `publish` node on the Map, then opening its **Body**
355
+ > section.)
374
356
 
375
357
  After running the flow, report what actually happened (keep the promises
376
358
  conditional on the real result):
@@ -385,9 +367,6 @@ conditional on the real result):
385
367
  > regenerate the pages (done), run the link check (done), start the server
386
368
  > (next chapter).
387
369
  >
388
- > And the Map did not move while the pipeline ran: the pages are Layer 2 output;
389
- > the harness on the canvas is Layer 1, and that is what skill-map maps.
390
- >
391
370
  > As you saw in the lines just above, I did not report anything odd: the link
392
371
  > check came back clean and `/publish` is wired correctly across your pages.
393
372
  > Shall we continue?
@@ -396,46 +375,35 @@ Wait for confirmation. Mark `publish`: done. Auto-advance to `stability`.
396
375
 
397
376
  ## Chapter `stability` - Set a node's stability (and the `.sm` sidecar) (~3 min)
398
377
 
399
- **Context**: real maintenance includes marking how mature each piece is. skill-map
400
- lets you tag a node's **stability** (`experimental` / `stable` / `deprecated`)
401
- from the inspector. That is skill-map's own metadata, so it lands in a co-located
402
- **`.sm` sidecar** next to the file (the vendor file stays untouched), and the
403
- first `.sm` write asks for your consent. Good moment now that the site shipped:
404
- mark the handbook as the stable core it is.
405
-
406
378
  **Preparation**: none for a first-time tester. (If re-entering a dir where the
407
379
  sidecar already exists, reset consent first with `rm -f AGENTS.sm
408
380
  .skill-map/settings.local.json` so the consent prompt shows again.)
409
381
 
410
382
  Tell the tester:
411
383
 
412
- > Your harness shipped, so let's mark the handbook as the **stable** core it is.
413
- > Open the Inspector for the `AGENTS` node (click it on the **Map**) and find the
414
- > **stability** action (the action button in the inspector). Click it and pick
415
- > `stable` from the list.
384
+ > Your harness shipped, so let's set its **stability**. Open the Inspector for
385
+ > the `AGENTS` node (click it on the **Map**) and click the **Set stability**
386
+ > button. Pick any of `experimental` / `stable` / `deprecated` from the list.
416
387
  >
417
388
  > The first time skill-map writes its own metadata it asks for **consent**:
418
- > confirm it in the dialog that pops up. Two things happen at once: a `stable`
419
- > badge appears on the `AGENTS` node, and skill-map creates a **`.sm` sidecar**
420
- > (`AGENTS.sm`) right next to the handbook to hold that metadata, your `AGENTS.md`
421
- > itself is never touched. Your consent is remembered for the project, so it
422
- > will not ask again.
389
+ > confirm it in the dialog that pops up. Two things happen at once: a stability
390
+ > badge for the stage you picked appears on the `AGENTS` node, and skill-map
391
+ > creates a **`.sm` sidecar file** (`AGENTS.sm`) right next to the handbook to
392
+ > hold that metadata, your `AGENTS.md` itself is never touched. Your consent is
393
+ > remembered for the project, so it will not ask again.
423
394
  >
424
395
  > That sidecar is where skill-map keeps what it knows about a node that does not
425
- > belong in the vendor file (stability, version, tags). You just wrote your first
426
- > one, by clicking, no command needed.
396
+ > belong in the vendor file (stability, version, tags).
427
397
  >
428
- > See the `stable` badge on the handbook?
398
+ > See the new stability badge on the handbook?
429
399
 
430
400
  Wait for confirmation. Mark `stability`: done. Auto-advance to `golive`.
431
401
 
432
- ## Chapter `golive` - Your portfolio, live next to the graph (~3 min)
402
+ ## Chapter `golive` - Your website, live next to the graph (~3 min)
433
403
 
434
- **Context**: the climax. Serve the finished multi-page site and click through it,
435
- ending with the running portfolio on one side and the full harness graph on the
436
- other. One of the few chapters where the tester runs non-`sm` commands
437
- themselves; guide them, do not run it for them. `npm install` is idempotent, so
438
- it is safe whether or not they ran it in `setup`.
404
+ One of the few chapters where the tester runs non-`sm` commands themselves;
405
+ guide them, do not run it for them. `npm install` is idempotent, so it is safe
406
+ whether or not they ran it in `setup`.
439
407
 
440
408
  **Preparation**: none. `server.js` / `package.json` exist from the kickoff; the
441
409
  pages exist from the earlier chapters.
@@ -451,7 +419,7 @@ node server.js
451
419
  > Open `http://localhost:3000` and click through Home, About, and Projects, the
452
420
  > pages your harness produced and shipped through the publish flow you just ran.
453
421
  >
454
- > Now take it in at once. On one side, your real running portfolio, named after
422
+ > Now take it in at once. On one side, your real running website, named after
455
423
  > you, that you could deploy as-is. On the other, the skill-map graph of the
456
424
  > harness that built it: the handbook, the content-editor, the style guide, the
457
425
  > publish command, the link checker, the deploy runbook, all wired together. You
@@ -466,7 +434,7 @@ Wait for confirmation. The tester runs the commands; do not run them. If
466
434
  server with Ctrl+C and apply the ports edge case.
467
435
 
468
436
  This is the campaign finale. Congratulate them plainly: they went from an empty
469
- directory to a real, running portfolio plus a complete map of its harness. Then
437
+ directory to a real, running website plus a complete map of its harness. Then
470
438
  invite them to keep going on their own:
471
439
 
472
440
  > And this site is yours to keep playing with: add more pages, refine the style
@@ -152,14 +152,10 @@ Tell the tester:
152
152
  > (That is also why `@demo-agent` drew fine: an `@name` mention
153
153
  > resolves when an agent by that name really exists.)
154
154
  >
155
- > One word on solidity: skill-map draws each connector's
156
- > **confidence** as opacity, and every arrow you see here is fully
157
- > solid (1.00) because each one lands on a real node. The faint,
158
- > partial case shows up later in the campaign; for now the rule is
159
- > simple, a reference
160
- > that resolves draws a solid arrow, a reference that points at
161
- > nothing is not drawn at all and gets flagged instead. The exact
162
- > per-link numbers live in the inspector, next chapter.
155
+ > 💡 Tip: if all these changes left the nodes crowded together, the
156
+ > map toolbar has a **Re-arrange layout** button: it tidies the
157
+ > layout so everything reads better. If you've moved nodes by hand it
158
+ > asks for confirmation first, otherwise it just re-arranges.
163
159
  >
164
160
  > Confirm when you see the four arrows plus the broken-reference
165
161
  > marker on the hub. If an arrow is missing, refresh the browser and
@@ -171,12 +167,6 @@ Expected: four drawn arrows plus one `core/reference-broken` error on `notes/tod
171
167
 
172
168
  The canvas only draws the resolved arrows; the full per-link breakdown, including the broken one that never drew, lives in the Inspector. Open it on the hub so the tester registers the surface before the `edit-link` chapter changes topology.
173
169
 
174
- > 💡 Tip: if all these changes left the nodes crowded together, the
175
- > map toolbar has a **Re-arrange layout** button (tooltip "Re-arrange
176
- > the visible nodes"): it tidies the layout so everything reads
177
- > better. If you've moved nodes by hand it asks for confirmation
178
- > first, otherwise it just re-arranges.
179
- >
180
170
  > 🆕 Open the Inspector for **Demo TODO list** (click the node on
181
171
  > the map). Find the **Connections** section: it has two sections,
182
172
  > **Outgoing** and **Incoming**.
@@ -187,7 +177,7 @@ The canvas only draws the resolved arrows; the full per-link breakdown, includin
187
177
  > confidence: the numeric value. Here you'll see the contrast, the
188
178
  > `references` to `demo-guideline2` reads `1.00` (resolved), while the
189
179
  > `mentions` to `demo-guideline` reads `0.50` and is marked broken,
190
- > that 0.5 is the broken-reference penalty, not a "halfway sure".
180
+ > that 0.5 is the broken-reference penalty, not "half sure".
191
181
  >
192
182
  > Now open the Inspector for a couple of the nodes to read their
193
183
  > Incoming count. The four resolved nodes (`demo-agent`,
@@ -196,6 +186,11 @@ The canvas only draws the resolved arrows; the full per-link breakdown, includin
196
186
  > mention never landed on it, so nothing points in. Five outgoing
197
187
  > links on the hub, but only four of them reach a node.
198
188
  >
189
+ > 💡 Tip: skill-map draws each connector's **confidence** as opacity.
190
+ > Every arrow here is solid (1.00) because it lands on a real node; a
191
+ > reference that points at nothing is flagged instead of drawn. The
192
+ > fainter, partial case shows up later in the campaign.
193
+ >
199
194
  > Let me know when you see it.
200
195
 
201
196
  Mark `inspector`: done.
@@ -252,18 +247,20 @@ action itself.
252
247
  > Tell me when the tree is open.
253
248
 
254
249
  > At the top of that sidebar there's a search box (placeholder
255
- > `Search…`). Type `guideline`. Watch both halves at once: the tree
256
- > narrows down to the two guideline nodes (`demo-guideline` and
257
- > `demo-guideline2`) and the **Map** drops every node except those
258
- > two. The search matches a node's name, path,
259
- > or description, and filters live as you type, no Enter needed.
250
+ > `Search…`). Type `guideline`. Watch the tree narrow down to the
251
+ > two guideline nodes (`demo-guideline` and `demo-guideline2`). The
252
+ > search matches a node's name, path, or description, and filters
253
+ > live as you type, no Enter needed. The **Map** stays put: by
254
+ > default the search filters only the files list, not the map (the
255
+ > tip below changes that).
260
256
  >
261
- > Now clear the box. All six nodes come back, in both the tree and
262
- > the Map. Confirm you saw it filter and then restore.
257
+ > Now clear the box. All six nodes come back in the tree. Confirm you
258
+ > saw it filter and then restore.
263
259
 
264
- > Last one. In the tree, find the **Demo TODO list** row: at its
265
- > right edge there's a small **sitemap** icon (its tooltip reads
266
- > "Isolate this node and its direct links on the map"). Click it.
260
+ > Last one. In the tree, find the `notes/todo` row (the **Demo TODO
261
+ > list** hub, the tree labels rows by file name): at its right edge
262
+ > there's a small **sitemap** icon (its tooltip reads "Isolate this
263
+ > node and its direct links on the map"). Click it.
267
264
  >
268
265
  > The Map collapses to **Demo TODO list** plus only the nodes it
269
266
  > draws an arrow to (`demo-command`, `demo-skill`,
@@ -276,10 +273,9 @@ action itself.
276
273
  >
277
274
  > 💡 Tip: remember the search box from a moment ago? The map-icon
278
275
  > button right next to it controls whether the search also filters
279
- > the **Map**. It's on by default, that's why the **Map** narrowed
280
- > along with the tree when you searched `guideline`. Click it to
281
- > switch to filtering only the files list, leaving the map's layout
282
- > in place.
276
+ > the **Map**. It's off by default, which is why the **Map** stayed
277
+ > put while only the tree narrowed when you searched `guideline`.
278
+ > Click it on if you want a search to filter the map too.
283
279
  >
284
280
  > Did the map isolate and then restore?
285
281
 
@@ -1,4 +1,4 @@
1
- # Part 4 (b): Extend skill-map - plugins (step library, `tour-*` ids)
1
+ # Part 3 (b): Extend skill-map - plugins (step library, `tour-*` ids)
2
2
 
3
3
  Guided tour of the **built-in plugins** that ship with `sm`. Three
4
4
  steps: a quick mental model of what plugins are plus a peek at