@skill-map/cli 0.61.0 → 0.61.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/tutorial/sm-tutorial/SKILL.md +16 -4
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/manifest.json +0 -2
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/en/__PROVIDER__/agents/demo-agent.md +0 -2
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/es/__PROVIDER__/agents/demo-agent.md +0 -2
- package/dist/cli/tutorial/sm-tutorial/references/_core.md +40 -33
- package/dist/cli/tutorial/sm-tutorial/references/_manifest.json +8 -13
- package/dist/cli/tutorial/sm-tutorial/references/_manifest.yml +3 -4
- package/dist/cli/tutorial/sm-tutorial/references/fixtures.md +2 -3
- package/dist/cli/tutorial/sm-tutorial/references/part-connect-harness.md +10 -11
- package/dist/cli/tutorial/sm-tutorial/references/part-daily-loop.md +101 -190
- package/dist/cli/tutorial/sm-tutorial/references/part-fundamentals.md +43 -26
- package/dist/cli/tutorial/sm-tutorial/references/part-project-kickoff.md +16 -9
- package/dist/cli/tutorial/sm-tutorial/references/part-settings.md +12 -42
- package/dist/cli.js +3 -3
- package/dist/index.js +3 -3
- package/dist/kernel/index.js +3 -3
- package/dist/ui/chunk-FVCFBXFY.js +3 -0
- package/dist/ui/index.html +1 -1
- package/dist/ui/{main-5GMGTLYQ.js → main-H6ARR2AP.js} +1 -1
- package/package.json +1 -1
- package/dist/ui/chunk-FDBHGLTW.js +0 -3
|
@@ -32,6 +32,15 @@ landed (this keeps the node-count promises honest). If the subagent is not
|
|
|
32
32
|
invocable in the tester's setup, act as the `content-editor` yourself following
|
|
33
33
|
its rules and `docs/STYLE.md`, so the beat still lands.
|
|
34
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
|
+
|
|
35
44
|
---
|
|
36
45
|
|
|
37
46
|
**Act A - Add**
|
|
@@ -160,16 +169,31 @@ footer.site { border-top: 1px solid var(--border); padding: 2rem 0; color: var(-
|
|
|
160
169
|
</html>
|
|
161
170
|
```
|
|
162
171
|
|
|
163
|
-
|
|
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.
|
|
164
188
|
|
|
165
189
|
```bash
|
|
166
190
|
npm install
|
|
167
191
|
node server.js
|
|
168
192
|
```
|
|
169
193
|
|
|
170
|
-
>
|
|
171
|
-
>
|
|
172
|
-
>
|
|
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`.
|
|
173
197
|
>
|
|
174
198
|
> Open `http://localhost:3000`: there is your site, named after you, with a
|
|
175
199
|
> clean layout. Click **About** and back to **Home**.
|
|
@@ -182,7 +206,11 @@ node server.js
|
|
|
182
206
|
>
|
|
183
207
|
> Does the site load and look clean?
|
|
184
208
|
|
|
185
|
-
Wait for confirmation.
|
|
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`.
|
|
186
214
|
|
|
187
215
|
## Chapter `add-page` - Add a page with your agent (~4 min)
|
|
188
216
|
|
|
@@ -209,6 +237,10 @@ following the agent's own steps and `docs/STYLE.md` (the shared shell, link
|
|
|
209
237
|
home nav. Do NOT write any `.md`, do NOT touch the harness. Then `Read` the file
|
|
210
238
|
it produced.
|
|
211
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
|
+
|
|
212
244
|
> Your `content-editor` ran for real and wrote `public/projects.html`, linked
|
|
213
245
|
> from the home nav. Refresh the site: the new page is there, in the same style
|
|
214
246
|
> as the rest.
|
|
@@ -219,88 +251,12 @@ it produced.
|
|
|
219
251
|
>
|
|
220
252
|
> See the new page on the site, and the Map unchanged?
|
|
221
253
|
|
|
222
|
-
Wait for confirmation. Mark `add-page`: done. Auto-advance to `
|
|
223
|
-
|
|
224
|
-
## Chapter `orphan-draft` - A page nobody links to yet (~2 min)
|
|
225
|
-
|
|
226
|
-
**Context**: mid-day you jot an idea for the next page but do not wire it up yet.
|
|
227
|
-
skill-map shows it as an **orphan**: a real node with nothing pointing at it.
|
|
228
|
-
|
|
229
|
-
**Preparation**: `Write` `docs/draft.md` (markdown kind):
|
|
230
|
-
```markdown
|
|
231
|
-
---
|
|
232
|
-
name: draft
|
|
233
|
-
description: |
|
|
234
|
-
A rough idea for the next page. Not linked from anywhere yet.
|
|
235
|
-
---
|
|
236
|
-
|
|
237
|
-
# Draft
|
|
238
|
-
|
|
239
|
-
Notes toward a posts page. Nothing wired up.
|
|
240
|
-
```
|
|
241
|
-
|
|
242
|
-
Tell the tester to run:
|
|
243
|
-
|
|
244
|
-
```bash
|
|
245
|
-
sm scan
|
|
246
|
-
sm show docs/draft.md
|
|
247
|
-
```
|
|
248
|
-
|
|
249
|
-
> A new `docs/draft` node appeared on the Map as a floating dot, no arrows in or
|
|
250
|
-
> out. `sm show docs/draft.md` has no "Links in" section: nothing references it.
|
|
251
|
-
> That is an **orphan**, a valid node with no incoming links.
|
|
252
|
-
>
|
|
253
|
-
> An orphan is NOT an error: run `sm check` and the harness still reads clean.
|
|
254
|
-
> It is just a node nobody points at yet. Keep three ideas apart: an **orphan**
|
|
255
|
-
> (a real node, no incoming link), a **broken reference** (a link with no target
|
|
256
|
-
> on the other end), and an **issue** (a rule violation `sm check` flags). You
|
|
257
|
-
> will meet the other two in a moment.
|
|
258
|
-
>
|
|
259
|
-
> See the floating dot, and the empty "Links in"?
|
|
260
|
-
|
|
261
|
-
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`.
|
|
262
255
|
|
|
263
256
|
---
|
|
264
257
|
|
|
265
258
|
**Act B - Modify / improve**
|
|
266
259
|
|
|
267
|
-
## Chapter `wire-and-improve` - Wire the draft in (~3 min)
|
|
268
|
-
|
|
269
|
-
**Context**: you turn the draft into a real page and link it, so it stops being
|
|
270
|
-
an orphan. Two moves: the `content-editor` writes the actual page (Layer 2), and
|
|
271
|
-
you add a link to the draft note from the handbook (Layer 1), which gives the
|
|
272
|
-
orphan an incoming edge.
|
|
273
|
-
|
|
274
|
-
**Preparation**: invoke the `content-editor` via the Task tool (real-execution
|
|
275
|
-
contract) to write `public/posts.html` from the draft idea (a couple of short
|
|
276
|
-
sample posts, shared shell, nav link back to Home). `Read` it afterwards.
|
|
277
|
-
|
|
278
|
-
Then tell the tester to wire the note in (their file, Inviolable rule #2):
|
|
279
|
-
|
|
280
|
-
> Two moves to close the loop on that draft. First, I had your `content-editor`
|
|
281
|
-
> turn it into a real page: `public/posts.html` now exists (Layer 2, so the Map
|
|
282
|
-
> stays put for it). Second, your turn: open `AGENTS.md` and add this line to
|
|
283
|
-
> the body, so the handbook actually points at the draft note:
|
|
284
|
-
>
|
|
285
|
-
> ```markdown
|
|
286
|
-
> - The next page started as notes in [draft](docs/draft.md).
|
|
287
|
-
> ```
|
|
288
|
-
>
|
|
289
|
-
> Save it, then re-scan and look at the draft again:
|
|
290
|
-
|
|
291
|
-
```bash
|
|
292
|
-
sm scan
|
|
293
|
-
sm show docs/draft.md
|
|
294
|
-
```
|
|
295
|
-
|
|
296
|
-
> `docs/draft` is no longer an orphan: `sm show` now lists `Links in (1)
|
|
297
|
-
> ← references AGENTS.md`, and on the Map the floating dot is connected to the
|
|
298
|
-
> handbook. One incoming link is all it took to fold it into the graph.
|
|
299
|
-
>
|
|
300
|
-
> Did the draft connect to the handbook?
|
|
301
|
-
|
|
302
|
-
Wait for confirmation. Mark `wire-and-improve`: done. Auto-advance to `broken-ref`.
|
|
303
|
-
|
|
304
260
|
## Chapter `broken-ref` - A rename breaks a link (~4 min)
|
|
305
261
|
|
|
306
262
|
**Context**: real reorganizing breaks things, and this is where skill-map earns
|
|
@@ -311,60 +267,41 @@ On `agent-skills` / Antigravity there is no `/publish` command holding the deplo
|
|
|
311
267
|
link; use the variant in the note at the end of this chapter (rename
|
|
312
268
|
`docs/STYLE.md` to break the `content-editor`'s style-guide reference instead).
|
|
313
269
|
|
|
314
|
-
**Preparation**: none (the tester drives).
|
|
270
|
+
**Preparation**: none (the tester drives). Everything here is watched live on
|
|
271
|
+
the Map; no `sm` commands.
|
|
315
272
|
|
|
316
273
|
Tell the tester to rename the deploy runbook (their file):
|
|
317
274
|
|
|
318
275
|
```bash
|
|
319
276
|
mv docs/DEPLOY.md docs/DEPLOYMENT.md
|
|
320
|
-
sm scan
|
|
321
|
-
sm check
|
|
322
277
|
```
|
|
323
278
|
|
|
324
279
|
> You renamed the deploy runbook, but `/publish` still links to the old path.
|
|
325
|
-
> `
|
|
326
|
-
>
|
|
327
|
-
>
|
|
328
|
-
>
|
|
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.
|
|
329
285
|
>
|
|
330
|
-
> .claude/commands/publish.md
|
|
331
|
-
> ✕ reference-broken Broken references reference → docs/DEPLOY.md
|
|
332
|
-
> ```
|
|
333
|
-
>
|
|
334
|
-
> That is the `reference-broken` analyzer: a link whose target no longer exists.
|
|
335
|
-
> On the Map the `publish → docs/DEPLOY.md` arrow has disappeared: a broken link
|
|
336
|
-
> resolves to no node, so skill-map stops drawing it and flags the `publish` card
|
|
337
|
-
> with a red error instead. `sm check` runs the full analyzer catalogue (around a
|
|
338
|
-
> dozen rules); to narrow it to one rule:
|
|
339
|
-
|
|
340
|
-
```bash
|
|
341
|
-
sm check --analyzers reference-broken
|
|
342
|
-
```
|
|
343
|
-
|
|
344
286
|
> Now fix it the way you would for real: open `.claude/commands/publish.md` and
|
|
345
|
-
> point the deploy-runbook link at `docs/DEPLOYMENT.md` (the new name).
|
|
346
|
-
>
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
```
|
|
352
|
-
|
|
353
|
-
> `✓ No issues`. The arrow is solid again. That is the daily safety net: rename
|
|
354
|
-
> and move things freely, and skill-map tells you exactly what you forgot to
|
|
355
|
-
> 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.
|
|
356
293
|
>
|
|
357
|
-
> Did
|
|
294
|
+
> Did the broken marker appear and then clear?
|
|
358
295
|
|
|
359
|
-
Wait for confirmation. The harness MUST
|
|
360
|
-
real `/publish` later follows this runbook). Mark `broken-ref`:
|
|
361
|
-
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`.
|
|
362
299
|
|
|
363
300
|
On `agent-skills` / Antigravity (no `command` kind), run the same beat on a link
|
|
364
301
|
that exists there: `mv docs/STYLE.md docs/STYLE-GUIDE.md`, which breaks the
|
|
365
|
-
`content-editor` skill's `[style guide]` reference;
|
|
366
|
-
|
|
367
|
-
|
|
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.
|
|
368
305
|
|
|
369
306
|
## Chapter `reserved` - A reserved name collides (~2 min)
|
|
370
307
|
|
|
@@ -390,41 +327,24 @@ description: |
|
|
|
390
327
|
Creates a blank page so you can start writing.
|
|
391
328
|
```
|
|
392
329
|
|
|
393
|
-
|
|
330
|
+
The watcher picks up the new command. Tell the tester:
|
|
394
331
|
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
> `sm check` warns:
|
|
401
|
-
>
|
|
402
|
-
> ```
|
|
403
|
-
> 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.
|
|
404
337
|
>
|
|
405
|
-
>
|
|
406
|
-
>
|
|
407
|
-
>
|
|
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.
|
|
408
342
|
>
|
|
409
|
-
>
|
|
410
|
-
>
|
|
411
|
-
>
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
`.claude/commands/new-page.md`, AND change `frontmatter.name` to `new-page` and
|
|
415
|
-
the H1 to `# new-page` (a command's H1 stays a plain title, never `# /new-page`).
|
|
416
|
-
Then have the tester re-scan and re-check:
|
|
417
|
-
|
|
418
|
-
```bash
|
|
419
|
-
sm scan
|
|
420
|
-
sm check
|
|
421
|
-
```
|
|
422
|
-
|
|
423
|
-
> `✓ No issues`. Notice what cleared the warning: changing the **name**, not
|
|
424
|
-
> just the filename. The reserved check looks at the command's name (its
|
|
425
|
-
> `frontmatter.name`), which is why the warning told you to rename "the file or
|
|
426
|
-
> `frontmatter.name`". Now `new-page` is yours and the runtime will actually run
|
|
427
|
-
> 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.
|
|
428
348
|
>
|
|
429
349
|
> Did the warning clear after the rename?
|
|
430
350
|
|
|
@@ -446,9 +366,8 @@ On `agent-skills` / Antigravity there is no `/publish` command: run the
|
|
|
446
366
|
`check-links` skill directly over `public/`, then follow `docs/DEPLOYMENT.md` by
|
|
447
367
|
hand. Everything else in this chapter is identical.
|
|
448
368
|
|
|
449
|
-
**Preparation**: make sure the pages exist (`index`, `about`, `projects
|
|
450
|
-
|
|
451
|
-
`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**
|
|
452
371
|
by following `.claude/commands/publish.md`: run the `check-links` logic over
|
|
453
372
|
every `.html` under `public/` (does each internal `href` resolve to a file that
|
|
454
373
|
exists?); if any link is broken, brief the `content-editor` to fix it and
|
|
@@ -479,49 +398,42 @@ conditional on the real result):
|
|
|
479
398
|
>
|
|
480
399
|
> Did the publish run report the link check clean?
|
|
481
400
|
|
|
482
|
-
Wait for confirmation. Mark `publish`: done. Auto-advance to `
|
|
401
|
+
Wait for confirmation. Mark `publish`: done. Auto-advance to `stability`.
|
|
483
402
|
|
|
484
|
-
## Chapter `
|
|
403
|
+
## Chapter `stability` - Set a node's stability (and the `.sm` sidecar) (~3 min)
|
|
485
404
|
|
|
486
|
-
**Context**:
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
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.
|
|
490
411
|
|
|
491
412
|
**Preparation**: none for a first-time tester. (If re-entering a dir where the
|
|
492
413
|
sidecar already exists, reset consent first with `rm -f AGENTS.sm
|
|
493
|
-
.skill-map/settings.local.json` so the prompt shows again.)
|
|
414
|
+
.skill-map/settings.local.json` so the consent prompt shows again.)
|
|
494
415
|
|
|
495
416
|
Tell the tester:
|
|
496
417
|
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
> The first time you write a `.sm`, skill-map asks for consent: answer `y` at the
|
|
502
|
-
> `[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.
|
|
503
422
|
>
|
|
504
|
-
>
|
|
505
|
-
>
|
|
506
|
-
>
|
|
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.
|
|
507
429
|
>
|
|
508
|
-
>
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
cat AGENTS.sm
|
|
512
|
-
cat .skill-map/settings.local.json
|
|
513
|
-
```
|
|
514
|
-
|
|
515
|
-
> `AGENTS.sm` holds an `identity:` block (hashes that tie it to the live file)
|
|
516
|
-
> and an empty `annotations: {}` ready for you to fill in. And
|
|
517
|
-
> `.skill-map/settings.local.json` now records your consent,
|
|
518
|
-
> `{ "allowEditSmFiles": true }`, so skill-map will not ask again in this
|
|
519
|
-
> project. Open the Inspector for the `AGENTS` node: it now has a **Metadata**
|
|
520
|
-
> 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.
|
|
521
433
|
>
|
|
522
|
-
> See `
|
|
434
|
+
> See the `stable` badge on the handbook?
|
|
523
435
|
|
|
524
|
-
Wait for confirmation. Mark `
|
|
436
|
+
Wait for confirmation. Mark `stability`: done. Auto-advance to `golive`.
|
|
525
437
|
|
|
526
438
|
## Chapter `golive` - Your portfolio, live next to the graph (~3 min)
|
|
527
439
|
|
|
@@ -542,9 +454,8 @@ node server.js
|
|
|
542
454
|
> Last step, the fun one. `npm install` confirms the one small library is there,
|
|
543
455
|
> and `node server.js` starts the server (`Listening on http://localhost:3000`).
|
|
544
456
|
>
|
|
545
|
-
> Open `http://localhost:3000` and click through Home, About, Projects,
|
|
546
|
-
>
|
|
547
|
-
> 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.
|
|
548
459
|
>
|
|
549
460
|
> Now take it in at once. On one side, your real running portfolio, named after
|
|
550
461
|
> you, that you could deploy as-is. On the other, the skill-map graph of the
|
|
@@ -36,7 +36,7 @@ Wait for confirmation. Mark `init`: done.
|
|
|
36
36
|
|
|
37
37
|
## Chapter `kinds` - The other kinds appear (~1 min)
|
|
38
38
|
|
|
39
|
-
Leave the browser open and the terminal with `sm` running. You create five more nodes **without any cross-fixture links** yet, pure standalone nodes, so the tester sees five new
|
|
39
|
+
Leave the browser open and the terminal with `sm` running. You create five more nodes **without any cross-fixture links** yet, pure standalone nodes, so the tester sees five new nodes pop in. Three new **kinds** show up in this step (skill, command, markdown); the last two files are sibling `markdown` notes (`demo-guideline`, `demo-guideline2`) the hub in the `connectors` chapter reaches two ways, a bare mention that resolves to nothing (which lands as a broken reference, no arrow drawn) and the same handle plus `.md` that resolves to a real file (a solid arrow).
|
|
40
40
|
|
|
41
41
|
Lay these five files in one go (their content + translation live in `fixtures-data/`). The script resolves `__PROVIDER__` and auto-skips kinds the provider does not claim (`agent-skills` / Antigravity: both `demo-agent` and `demo-command` fold away, only the skill + the three markdown notes remain), so read the actual node count from the summary's `nodeCount`. Backstage (silent):
|
|
42
42
|
|
|
@@ -51,13 +51,13 @@ Tell the tester:
|
|
|
51
51
|
> Look at the browser. Five new nodes should have popped in:
|
|
52
52
|
> `demo-skill`, `demo-command`, **Demo TODO list**, `demo-guideline`,
|
|
53
53
|
> and `demo-guideline2`.
|
|
54
|
-
> Six total now, **still unconnected**: they're floating
|
|
54
|
+
> Six total now, **still unconnected**: they're floating nodes.
|
|
55
55
|
> The viewport auto-fits whenever a node is added or removed, so
|
|
56
56
|
> all six should be visible without panning.
|
|
57
57
|
>
|
|
58
58
|
> What I just did behind the scenes: I created five new files in
|
|
59
59
|
> your project, and the watcher picked them up on its own, that's
|
|
60
|
-
> why five new
|
|
60
|
+
> why five new nodes appeared without you running anything:
|
|
61
61
|
>
|
|
62
62
|
> - `.claude/skills/demo-skill/SKILL.md` (kind: skill)
|
|
63
63
|
> - `.claude/commands/demo-command.md` (kind: command)
|
|
@@ -117,11 +117,12 @@ node .claude/skills/sm-tutorial/scripts/fixtures.js edit todo-connectors --provi
|
|
|
117
117
|
|
|
118
118
|
Tell the tester:
|
|
119
119
|
|
|
120
|
-
> Look at the magic again. **Demo TODO list** is now the hub.
|
|
121
|
-
>
|
|
122
|
-
>
|
|
120
|
+
> Look at the magic again. **Demo TODO list** is now the hub. I added
|
|
121
|
+
> five linking bullets to it (open `notes/todo.md` in your editor to
|
|
122
|
+
> see them), and **four arrows** light up between it and the other
|
|
123
|
+
> nodes, each coloured by the link kind it carries:
|
|
123
124
|
>
|
|
124
|
-
> - `Demo TODO list → demo-agent` (kind: `mentions`, the
|
|
125
|
+
> - `Demo TODO list → demo-agent` (kind: `mentions`, the `@name` mention resolves to a real agent)
|
|
125
126
|
> - `Demo TODO list → demo-command` (kind: `invokes`)
|
|
126
127
|
> - `Demo TODO list → demo-skill` (kind: `invokes`)
|
|
127
128
|
> - `Demo TODO list → demo-guideline2` (kind: `references`, the `@` handle with a `.md` extension)
|
|
@@ -132,17 +133,17 @@ Tell the tester:
|
|
|
132
133
|
> extension turns the name drop into a file pointer.
|
|
133
134
|
>
|
|
134
135
|
> So why four arrows for five bullets? The fifth bullet,
|
|
135
|
-
> `@demo-guideline`, is a
|
|
136
|
-
>
|
|
137
|
-
>
|
|
138
|
-
>
|
|
136
|
+
> `@demo-guideline`, is a reference skill-map cannot resolve: an
|
|
137
|
+
> `@name` mention points at an *agent* with that name, and there is no
|
|
138
|
+
> agent called `demo-guideline` (it is a note), so the reference lands
|
|
139
|
+
> on nothing. skill-map draws no arrow and instead flags the hub with a
|
|
139
140
|
> **broken reference**, a red error marker on the **Demo TODO list**
|
|
140
141
|
> card. Compare it with the bullet right after: `@demo-guideline2.md`
|
|
141
|
-
> adds the `.md`,
|
|
142
|
-
> `demo-guideline2.md` node
|
|
143
|
-
>
|
|
144
|
-
> (That is also why `@demo-agent` drew fine:
|
|
145
|
-
>
|
|
142
|
+
> adds the `.md`, which makes it point at the **file** instead, so
|
|
143
|
+
> skill-map finds the real `demo-guideline2.md` node and draws a solid
|
|
144
|
+
> arrow. Same name, one `.md` apart: one resolves, the other does not.
|
|
145
|
+
> (That is also why `@demo-agent` drew fine: an `@name` mention
|
|
146
|
+
> resolves when an agent by that name really exists.)
|
|
146
147
|
>
|
|
147
148
|
> One word on solidity: skill-map draws each connector's
|
|
148
149
|
> **confidence** as opacity, and every arrow you see here is fully
|
|
@@ -157,7 +158,7 @@ Tell the tester:
|
|
|
157
158
|
> marker on the hub. If an arrow is missing, refresh the browser and
|
|
158
159
|
> let me know.
|
|
159
160
|
|
|
160
|
-
Expected: four drawn arrows plus one `core/reference-broken` error on `notes/todo.md` for the unresolved `@demo-guideline` mention (the
|
|
161
|
+
Expected: four drawn arrows plus one `core/reference-broken` error on `notes/todo.md` for the unresolved `@demo-guideline` mention (the broken-reference preview; the tester resolves it by hand in the `edit-link` chapter by adding `.md`, and the campaign and CLI parts re-seed their own pristine copy from `prologue-built`). If an arrow is missing, do not advance, the next chapter inspects the same hub edit. Mark `connectors`: done.
|
|
161
162
|
|
|
162
163
|
## Chapter `inspector` - The inspector and connections (~1 min)
|
|
163
164
|
|
|
@@ -170,8 +171,8 @@ The canvas only draws the resolved arrows; the full per-link breakdown, includin
|
|
|
170
171
|
> first, otherwise it just re-arranges.
|
|
171
172
|
>
|
|
172
173
|
> 🆕 Open the Inspector for **Demo TODO list** (click the node on
|
|
173
|
-
> the map).
|
|
174
|
-
>
|
|
174
|
+
> the map). Find the **Connections** section: it has two sections,
|
|
175
|
+
> **Outgoing** and **Incoming**.
|
|
175
176
|
> Demo TODO list lists **5 links** under Outgoing (the canvas drew
|
|
176
177
|
> four arrows, but the data keeps the broken `@demo-guideline` mention
|
|
177
178
|
> as a fifth row) and 0 under Incoming. Each row shows the link kind
|
|
@@ -194,7 +195,7 @@ Mark `inspector`: done.
|
|
|
194
195
|
|
|
195
196
|
## Chapter `edit-link` - Edit a link, the topology changes (~3 min)
|
|
196
197
|
|
|
197
|
-
**Context**: the `first-edit` chapter had the tester edit a scalar (`description`) and watch the inspector card refresh. This chapter raises the bar: edit
|
|
198
|
+
**Context**: the `first-edit` chapter had the tester edit a scalar (`description`) and watch the inspector card refresh. This chapter raises the bar: edit Markdown links and watch the MAP TOPOLOGY change both ways, a connector disappears when you remove a link, and a new one appears (clearing the broken-reference error) when you fix the unresolved one.
|
|
198
199
|
|
|
199
200
|
The server has been live since the `init` chapter, leave it running; this chapter and the next two (the workspace tour, then `.skillmapignore`) reuse it.
|
|
200
201
|
|
|
@@ -205,8 +206,24 @@ The server has been live since the `init` chapter, leave it running; this chapte
|
|
|
205
206
|
> Expected: the `Demo TODO list → demo-agent` connector (kind:
|
|
206
207
|
> `mentions`) disappears in real time. The two nodes stay in the
|
|
207
208
|
> **Map**; only the edge goes.
|
|
209
|
+
>
|
|
210
|
+
> Tell me when the connector is gone.
|
|
211
|
+
|
|
212
|
+
Once they confirm, the second edit fixes the broken reference. Tell the tester:
|
|
208
213
|
|
|
209
|
-
|
|
214
|
+
> Now the other direction, fix the broken link. Edit `notes/todo.md`
|
|
215
|
+
> again and add the `.md` extension to the `@demo-guideline` bullet so
|
|
216
|
+
> it reads `@demo-guideline.md`. Save.
|
|
217
|
+
>
|
|
218
|
+
> Expected: a NEW arrow appears, `Demo TODO list → demo-guideline`
|
|
219
|
+
> (kind: `references`), and the red broken-reference marker on the hub
|
|
220
|
+
> clears. The `.md` turned the unresolved mention into a file
|
|
221
|
+
> reference that lands on the real `demo-guideline.md`, the same fix
|
|
222
|
+
> you saw side by side in the connectors chapter, now done by hand.
|
|
223
|
+
>
|
|
224
|
+
> Confirm when the new arrow is in and the red marker is gone.
|
|
225
|
+
|
|
226
|
+
You verify by reading `notes/todo.md` to confirm both edits landed (the `@demo-agent` bullet gone, `@demo-guideline` now `@demo-guideline.md`); the prologue's broken reference is now resolved. (On `agent-skills`, where the `@demo-agent` bullet was never created in the `connectors` chapter, ask the tester to remove the only bullet they did add for the first edit; the `.md` fix on `@demo-guideline` is identical.) Once they confirm, leave the server running, the next chapter reuses it. Mark `edit-link`: done.
|
|
210
227
|
|
|
211
228
|
## Chapter `workspace` - Navigate the workspace (files, search, isolate) (~2 min)
|
|
212
229
|
|
|
@@ -214,7 +231,11 @@ You verify by reading `notes/todo.md` to confirm the change was applied. (On `ag
|
|
|
214
231
|
|
|
215
232
|
Per §Provider detection, on `agent-skills` / Antigravity the fixture has fewer nodes (`demo-skill` plus the two `notes/` files), so swap the node names below for ones that exist in that set; the gestures are identical.
|
|
216
233
|
|
|
217
|
-
|
|
234
|
+
Walk the three tester actions below one at a time (open the Files
|
|
235
|
+
panel, then search, then isolate); each ends with its own
|
|
236
|
+
confirmation, so present one and wait for the tester before the next.
|
|
237
|
+
Do NOT prepend an intro line to a block, each already opens with the
|
|
238
|
+
action itself.
|
|
218
239
|
|
|
219
240
|
> Open the **Files** panel. It sits collapsed against the left edge
|
|
220
241
|
> by default: click the expand handle there (the `>` arrow, its
|
|
@@ -225,8 +246,6 @@ Per §Provider detection, on `agent-skills` / Antigravity the fixture has fewer
|
|
|
225
246
|
>
|
|
226
247
|
> Tell me when the tree is open.
|
|
227
248
|
|
|
228
|
-
**Beat 2, search (tester does this).**
|
|
229
|
-
|
|
230
249
|
> At the top of that sidebar there's a search box (placeholder
|
|
231
250
|
> `Search…`). Type `guideline`. Watch both halves at once: the tree
|
|
232
251
|
> narrows down to the two guideline nodes (`demo-guideline` and
|
|
@@ -237,8 +256,6 @@ Per §Provider detection, on `agent-skills` / Antigravity the fixture has fewer
|
|
|
237
256
|
> Now clear the box. All six nodes come back, in both the tree and
|
|
238
257
|
> the Map. Confirm you saw it filter and then restore.
|
|
239
258
|
|
|
240
|
-
**Beat 3, isolate (tester does this).**
|
|
241
|
-
|
|
242
259
|
> Last one. In the tree, find the **Demo TODO list** row: at its
|
|
243
260
|
> right edge there's a small **sitemap** icon (its tooltip reads
|
|
244
261
|
> "Isolate this node and its direct links on the map"). Click it.
|
|
@@ -35,9 +35,11 @@ marker for the `openai` lens) sitting next to the `.claude/` folder
|
|
|
35
35
|
(the `claude` marker, where the tutorial skill itself lives). With two
|
|
36
36
|
markers present, `sm init`'s first scan can NOT auto-pick a lens and
|
|
37
37
|
asks the tester to choose (`⚠ Multiple provider markers detected`).
|
|
38
|
-
The portfolio is a Claude project, so the answer is `claude
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
The portfolio is a Claude project, so the answer is always `claude`,
|
|
39
|
+
the other options the prompt lists (`openai`/Codex and friends) are
|
|
40
|
+
coming soon in the tutorial and we do not walk them. The prompt is
|
|
41
|
+
expected, blessed behaviour; the tester just needs to know which
|
|
42
|
+
option to pick, so the message below previews it.
|
|
41
43
|
|
|
42
44
|
```bash
|
|
43
45
|
sm init
|
|
@@ -52,8 +54,8 @@ Tell the tester:
|
|
|
52
54
|
> site). skill-map maps that harness.
|
|
53
55
|
>
|
|
54
56
|
> Run `sm init`. If it asks you to pick a lens (`⚠ Multiple provider
|
|
55
|
-
> markers detected`), choose `claude`, this is a Claude project
|
|
56
|
-
> run `sm` to boot the live UI.
|
|
57
|
+
> markers detected`), choose `claude`, this is a Claude project (the
|
|
58
|
+
> other lenses are coming soon). Then run `sm` to boot the live UI.
|
|
57
59
|
>
|
|
58
60
|
> Open the URL `sm` printed. You'll see **one node**: `AGENTS.md`,
|
|
59
61
|
> the project's handbook (the operating manual for the site).
|
|
@@ -65,13 +67,13 @@ Tell the tester:
|
|
|
65
67
|
|
|
66
68
|
Wait for confirmation. Mark `kickoff`: done.
|
|
67
69
|
|
|
68
|
-
## Chapter `manual` - The handbook and CLAUDE.md (~2 min)
|
|
70
|
+
## Chapter `manual` - The handbook (AGENTS.md) and CLAUDE.md (~2 min)
|
|
69
71
|
|
|
70
72
|
**Context**: the dogfood beat. Real Claude Code projects can
|
|
71
73
|
reference the generic `AGENTS.md` from their `CLAUDE.md` (this very
|
|
72
74
|
repo does). That one-line pointer is a real `references` link (the
|
|
73
|
-
`.md` extension makes `@AGENTS.md` a file pointer,
|
|
74
|
-
|
|
75
|
+
`.md` extension makes `@AGENTS.md` a file pointer), the tester's first
|
|
76
|
+
connector on the real project.
|
|
75
77
|
|
|
76
78
|
Tell the tester to create the file themselves (it is their project's
|
|
77
79
|
file, Inviolable rule #2). Backstage, get the content:
|
|
@@ -89,7 +91,7 @@ then render it in the fenced block the tester copies:
|
|
|
89
91
|
> `references` connector pointing at `AGENTS.md`, solid at 1.00.
|
|
90
92
|
> Because `@AGENTS.md` carries the `.md` extension, skill-map reads it
|
|
91
93
|
> as a file pointer (the same `@name.md` reference you met in the
|
|
92
|
-
> prologue
|
|
94
|
+
> prologue), and since the handbook is right there
|
|
93
95
|
> the link resolves with full confidence. It tells anyone (and
|
|
94
96
|
> skill-map) that `CLAUDE.md` defers to the handbook. This is exactly
|
|
95
97
|
> how this tool's own repo is wired.
|
|
@@ -116,6 +118,11 @@ Tell the tester:
|
|
|
116
118
|
> `agent` node appeared on the map. Right now it stands alone; in the
|
|
117
119
|
> next part we wire it to the handbook and the style guide.
|
|
118
120
|
>
|
|
121
|
+
> 💡 Tip: I create these harness files for you. If you'd like to see
|
|
122
|
+
> what's inside, open `<provider_dir>/agents/content-editor.md` in your
|
|
123
|
+
> editor, and feel free to peek at the files I add in the coming
|
|
124
|
+
> chapters too.
|
|
125
|
+
>
|
|
119
126
|
> See the new agent node?
|
|
120
127
|
|
|
121
128
|
Wait for confirmation. Mark `first-agent`: done.
|