@skill-map/cli 0.53.1 → 0.53.3
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 +19 -10
- package/dist/cli/tutorial/sm-tutorial/references/_core.md +68 -14
- package/dist/cli/tutorial/sm-tutorial/references/_manifest.yml +22 -9
- package/dist/cli/tutorial/sm-tutorial/references/fixtures.md +10 -13
- package/dist/cli/tutorial/sm-tutorial/references/part-authoring.md +2 -2
- package/dist/cli/tutorial/sm-tutorial/references/part-cli.md +1 -1
- package/dist/cli/tutorial/sm-tutorial/references/part-connect-harness.md +12 -9
- package/dist/cli/tutorial/sm-tutorial/references/part-fundamentals.md +85 -82
- package/dist/cli/tutorial/sm-tutorial/references/part-live-site.md +111 -112
- package/dist/cli/tutorial/sm-tutorial/references/part-maintain.md +2 -2
- package/dist/cli/tutorial/sm-tutorial/references/part-mcp.md +4 -4
- package/dist/cli/tutorial/sm-tutorial/references/part-plugins.md +1 -1
- package/dist/cli/tutorial/sm-tutorial/references/part-project-kickoff.md +11 -13
- package/dist/cli/tutorial/sm-tutorial/references/part-run-harness.md +155 -0
- package/dist/cli/tutorial/sm-tutorial/references/part-settings.md +2 -2
- package/dist/cli.js +3 -3
- package/dist/index.js +3 -3
- package/dist/kernel/index.js +3 -3
- package/dist/ui/{chunk-REAKWFJX.js → chunk-22XUPND3.js} +3 -3
- package/dist/ui/{chunk-OFDQMBSJ.js → chunk-4CXAL43H.js} +1 -1
- package/dist/ui/{chunk-IUZM6XLN.js → chunk-HWQTV6ZL.js} +1 -1
- package/dist/ui/{chunk-HGM5UYEG.js → chunk-ISIHN6HU.js} +19 -19
- package/dist/ui/{chunk-EQ72PEHT.js → chunk-NBXEOYS4.js} +1 -1
- package/dist/ui/index.html +2 -2
- package/dist/ui/{main-XRWWHCSW.js → main-Z4RJNI4X.js} +3 -3
- package/dist/ui/{styles-Q4NCOJQY.css → styles-L6FZYH7X.css} +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Part 0: The live map (prologue) - step library
|
|
2
2
|
|
|
3
|
-
The live-UI prologue: the tester runs `sm init`, opens the browser, and watches the map update in real time as files are written and edited. `pace: per-step` (
|
|
3
|
+
The live-UI prologue: the tester runs `sm init`, opens the browser, and watches the map update in real time as files are written and edited. `pace: per-step` (one chapter per exchange; the chapter's own confirmation advances to the next, NO separate "¿seguimos?"), `preflight: taught-init` (the tester runs `sm init` as the first taught step, not pre-flight), and the chapters lay the basics fixture progressively, one node at a time. Shared conventions (tone, provider detection / substitution, the `> ` rendering rule, the per-step cycle) live in `_core.md`; do not restate them here.
|
|
4
4
|
|
|
5
5
|
## Chapter `init` - Your first node (~2 min)
|
|
6
6
|
|
|
@@ -8,25 +8,25 @@ The live-UI prologue: the tester runs `sm init`, opens the browser, and watches
|
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
10
|
sm init
|
|
11
|
-
|
|
11
|
+
sm
|
|
12
12
|
```
|
|
13
13
|
|
|
14
|
-
Expected: `.skill-map/skill-map.db` appears (plus config files)
|
|
14
|
+
Expected: `.skill-map/skill-map.db` appears (plus config files), and the initial scan reports a small node / link count from the demo-agent fixture. `sm init` runs and exits; `sm` then starts the UI server and stays running. (Agent context, do not narrate: pre-flight's `.skillmapignore` keeps the tutorial's own files, `sm-tutorial.md` / `findings.md` / `tutorial-state.yml`, out of the scan; `sm init` leaves that file alone since it only writes when absent.)
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
Give the tester the whole flow in one message with ONE confirmation, do NOT pause for the `sm init` output separately. Don't hardcode the URL, the verb logs the bound `http://host:port` after listen. Tell the tester:
|
|
17
17
|
|
|
18
|
-
> First,
|
|
19
|
-
>
|
|
20
|
-
>
|
|
21
|
-
> (or any split that lets you see both). The terminal running
|
|
22
|
-
> `sm` can stay off to the side; it just prints scan progress
|
|
23
|
-
> lines and you don't need to read them.
|
|
18
|
+
> First, **open your browser** and put it side by side with this
|
|
19
|
+
> chat (browser on one half, chat on the other, any split that lets
|
|
20
|
+
> you see both) so you can watch the **Map** update in real time.
|
|
24
21
|
>
|
|
25
|
-
> Then
|
|
26
|
-
>
|
|
27
|
-
>
|
|
22
|
+
> Then, in your second terminal, run the two commands above: `sm
|
|
23
|
+
> init` sets the project up (it creates `.skill-map/` and runs a
|
|
24
|
+
> first scan), and `sm` boots the live UI. After a couple of seconds
|
|
25
|
+
> `sm` prints a URL, copy it and open it in your browser. The
|
|
26
|
+
> terminal keeps printing scan lines, you don't need to read them.
|
|
28
27
|
>
|
|
29
|
-
>
|
|
28
|
+
> You'll see one node in the **Map**: `demo-agent`. Tell me when the
|
|
29
|
+
> page is open showing it.
|
|
30
30
|
|
|
31
31
|
Wait for confirmation. Mark `init`: done.
|
|
32
32
|
|
|
@@ -127,7 +127,7 @@ Create these four files (with `Write`), exactly in this order. Per §Provider de
|
|
|
127
127
|
Tell the tester:
|
|
128
128
|
|
|
129
129
|
> Look at the browser. Four new nodes should have popped in:
|
|
130
|
-
> `demo-skill`, `demo-command`,
|
|
130
|
+
> `demo-skill`, `demo-command`, **Demo TODO list**, and `demo-guideline`.
|
|
131
131
|
> Five total now, **still unconnected**: they're floating dots.
|
|
132
132
|
> The viewport auto-fits whenever a node is added or removed, so
|
|
133
133
|
> all five should be visible without panning.
|
|
@@ -183,9 +183,9 @@ You edit `notes/todo.md` so it becomes the **hub** that points to each of the ot
|
|
|
183
183
|
- a `/slash` token → kind `invokes`
|
|
184
184
|
- a markdown link `[text](path)` → kind `references`
|
|
185
185
|
|
|
186
|
-
|
|
186
|
+
Five bullets, three kinds: `invokes` and `mentions` each appear twice, `references` once. The last two bullets both point at the **same** node (`demo-guideline`), on purpose: a markdown link AND an `@`-mention of it, so the next beat can contrast their confidence (the file link is certain, the name drop is a softer guess).
|
|
187
187
|
|
|
188
|
-
Apply with `Edit` on `notes/todo.md` (do not rewrite the file). Per §Provider detection, **substitute `.claude/` with the detected `<provider_dir>` and drop any bullet whose target node was not created in the `kinds` chapter** (on `agent-skills` / Antigravity there is no agent and no command → skip the `@demo-agent` and `/demo-command` bullets
|
|
188
|
+
Apply with `Edit` on `notes/todo.md` (do not rewrite the file). Per §Provider detection, **substitute `.claude/` with the detected `<provider_dir>` and drop any bullet whose target node was not created in the `kinds` chapter** (on `agent-skills` / Antigravity there is no agent and no command → skip the `@demo-agent` and `/demo-command` bullets; the `@demo-guideline` mention stays and is the faint connector on those providers too).
|
|
189
189
|
|
|
190
190
|
**Edit `notes/todo.md`**: append these bullets after the `# Pending` heading:
|
|
191
191
|
|
|
@@ -195,56 +195,61 @@ Apply with `Edit` on `notes/todo.md` (do not rewrite the file). Per §Provider d
|
|
|
195
195
|
- [ ] Trigger /demo-skill when the input lands.
|
|
196
196
|
- [ ] Re-read the
|
|
197
197
|
[demo-guideline](./demo-guideline.md) before shipping.
|
|
198
|
+
- [ ] Ping @demo-guideline if the conventions change.
|
|
198
199
|
```
|
|
199
200
|
|
|
200
201
|
Tell the tester:
|
|
201
202
|
|
|
202
|
-
> Look at the magic again.
|
|
203
|
-
> arrows light up between it and the other nodes, and the UI
|
|
204
|
-
>
|
|
203
|
+
> Look at the magic again. **Demo TODO list** is now the hub: five
|
|
204
|
+
> arrows light up between it and the other nodes, and the UI palette
|
|
205
|
+
> colours each arrow by the link kind it carries:
|
|
205
206
|
>
|
|
206
|
-
> - `
|
|
207
|
-
> - `
|
|
208
|
-
> - `
|
|
209
|
-
> - `
|
|
207
|
+
> - `Demo TODO list → demo-agent` (kind: `mentions`)
|
|
208
|
+
> - `Demo TODO list → demo-command` (kind: `invokes`)
|
|
209
|
+
> - `Demo TODO list → demo-skill` (kind: `invokes`)
|
|
210
|
+
> - `Demo TODO list → demo-guideline` (kind: `references`, the markdown link)
|
|
211
|
+
> - `Demo TODO list → demo-guideline` (kind: `mentions`, the @ handle)
|
|
210
212
|
>
|
|
211
213
|
> The kind comes from the syntax in the bullet: an `@handle` is
|
|
212
214
|
> always a mention, a `/skill` or `/command` is always an invoke, a
|
|
213
|
-
> markdown link is always a reference.
|
|
214
|
-
> three colours on the canvas (the two `invokes` share a colour, as
|
|
215
|
-
> you would expect).
|
|
215
|
+
> markdown link is always a reference. Five arrows, three kinds.
|
|
216
216
|
>
|
|
217
|
-
>
|
|
218
|
-
> Skill-map
|
|
219
|
-
>
|
|
220
|
-
>
|
|
221
|
-
>
|
|
222
|
-
>
|
|
217
|
+
> Now look closely: the two arrows to **demo-guideline** are not
|
|
218
|
+
> equally solid. Skill-map draws each connector's **confidence** as
|
|
219
|
+
> opacity, how sure it is the link is real. The markdown link
|
|
220
|
+
> `[demo-guideline](./demo-guideline.md)` points at a real file, so
|
|
221
|
+
> it's certain (1.00) and looks solid; the `@demo-guideline` mention
|
|
222
|
+
> is a looser name drop, a softer guess (0.50), so it's drawn fainter.
|
|
223
|
+
> A glance at the map tells you which links are rock solid and which
|
|
224
|
+
> are skill-map's best guess; the exact number per link is in the
|
|
225
|
+
> inspector, next chapter.
|
|
223
226
|
>
|
|
224
227
|
> Confirm when you see it. If a connector is missing, refresh the
|
|
225
228
|
> browser and let me know.
|
|
226
229
|
|
|
227
230
|
If a connector is missing, do not advance, the next chapter inspects the same hub edit. Mark `connectors`: done.
|
|
228
231
|
|
|
229
|
-
## Chapter `inspector` - The inspector and
|
|
232
|
+
## Chapter `inspector` - The inspector and connections (~1 min)
|
|
230
233
|
|
|
231
234
|
The connector opacity tells the confidence story at a glance; the exact per-link breakdown lives in the Inspector. Open it on the hub so the tester registers the surface before the `edit-link` chapter changes topology.
|
|
232
235
|
|
|
233
236
|
> 🆕 Open the Inspector for **Demo TODO list** (click the node on
|
|
234
237
|
> the map). **Expand** the **Connections** section (it's collapsed
|
|
235
238
|
> by default): it has two sections, **Outgoing** and **Incoming**.
|
|
236
|
-
> Demo TODO list lists
|
|
237
|
-
>
|
|
238
|
-
>
|
|
239
|
-
> row shows the link kind
|
|
240
|
-
> a badge with its
|
|
241
|
-
>
|
|
239
|
+
> Demo TODO list lists **5 links** under Outgoing (the hub) and 0
|
|
240
|
+
> under Incoming; open the Inspector for a targeted node to see its
|
|
241
|
+
> Incoming count (demo-guideline shows **2**, the reference plus the
|
|
242
|
+
> mention; the others 1 each). Each row shows the link kind
|
|
243
|
+
> (`mentions`, `invokes`, `references`) and a badge with its
|
|
244
|
+
> confidence: the numeric value. Here you'll see the contrast in
|
|
245
|
+
> numbers, the `references` to demo-guideline reads `1.00`, the
|
|
246
|
+
> `mentions` of it reads `0.50`.
|
|
242
247
|
>
|
|
243
248
|
> 💡 Tip: if all these changes left the nodes crowded together, the
|
|
244
249
|
> map toolbar has a **Re-arrange layout** button (tooltip "Re-arrange
|
|
245
|
-
> the visible nodes
|
|
246
|
-
>
|
|
247
|
-
>
|
|
250
|
+
> the visible nodes"): it tidies the layout so everything reads
|
|
251
|
+
> better. If you've moved nodes by hand it asks for confirmation
|
|
252
|
+
> first, otherwise it just re-arranges.
|
|
248
253
|
>
|
|
249
254
|
> Let me know when you see it.
|
|
250
255
|
|
|
@@ -260,7 +265,7 @@ The server has been live since the `init` chapter, leave it running; this chapte
|
|
|
260
265
|
> delete the bullet that contains `@demo-agent`. Save. Watch the
|
|
261
266
|
> UI.
|
|
262
267
|
>
|
|
263
|
-
> Expected: the `
|
|
268
|
+
> Expected: the `Demo TODO list → demo-agent` connector (kind:
|
|
264
269
|
> `mentions`) disappears in real time. The two nodes stay in the
|
|
265
270
|
> **Map**; only the edge goes.
|
|
266
271
|
|
|
@@ -274,13 +279,12 @@ Per §Provider detection, on `agent-skills` / Antigravity the fixture has fewer
|
|
|
274
279
|
|
|
275
280
|
**Beat 1, open the Files panel (tester does this).**
|
|
276
281
|
|
|
277
|
-
>
|
|
278
|
-
>
|
|
279
|
-
>
|
|
280
|
-
>
|
|
281
|
-
>
|
|
282
|
-
>
|
|
283
|
-
> kind and how many links go in and out.
|
|
282
|
+
> Open the **Files** panel. It sits collapsed against the left edge
|
|
283
|
+
> by default: click the expand handle there (the `>` arrow, its
|
|
284
|
+
> tooltip reads "Expand files panel"). The sidebar opens into a
|
|
285
|
+
> **folder tree** (a nested view of your folders and the nodes inside
|
|
286
|
+
> them): your five nodes grouped under `.claude/` and `notes/`, each
|
|
287
|
+
> row showing its kind and how many links go in and out.
|
|
284
288
|
>
|
|
285
289
|
> Tell me when the tree is open.
|
|
286
290
|
|
|
@@ -297,19 +301,19 @@ Per §Provider detection, on `agent-skills` / Antigravity the fixture has fewer
|
|
|
297
301
|
|
|
298
302
|
**Beat 3, isolate (tester does this).**
|
|
299
303
|
|
|
300
|
-
> Last one. In the tree, find the
|
|
301
|
-
> edge there's a small **sitemap** icon (its tooltip reads
|
|
302
|
-
> this node and its direct links on the map"). Click it.
|
|
304
|
+
> Last one. In the tree, find the **Demo TODO list** row: at its
|
|
305
|
+
> right edge there's a small **sitemap** icon (its tooltip reads
|
|
306
|
+
> "Isolate this node and its direct links on the map"). Click it.
|
|
303
307
|
>
|
|
304
|
-
> The Map collapses to
|
|
305
|
-
> (`demo-command`, `demo-skill`, `demo-guideline`).
|
|
306
|
-
> which lost its only connector back in the last step,
|
|
307
|
-
> view, and the Inspector opens on
|
|
308
|
+
> The Map collapses to **Demo TODO list** plus only the nodes it
|
|
309
|
+
> links to (`demo-command`, `demo-skill`, `demo-guideline`).
|
|
310
|
+
> `demo-agent`, which lost its only connector back in the last step,
|
|
311
|
+
> drops out of view, and the Inspector opens on **Demo TODO list**.
|
|
312
|
+
> That's how you
|
|
308
313
|
> focus on one node's neighborhood when a map gets busy.
|
|
309
314
|
>
|
|
310
315
|
> To bring the rest back, look at the toolbar along the bottom of
|
|
311
|
-
> the Map: there's a **Show all** button (an eye icon
|
|
312
|
-
> "Clear the map selection and show every node again"). Click it and
|
|
316
|
+
> the Map: there's a **Show all** button (an eye icon). Click it and
|
|
313
317
|
> all five nodes return.
|
|
314
318
|
>
|
|
315
319
|
> Did the map isolate and then restore?
|
|
@@ -320,9 +324,9 @@ Leave the server running, the next chapter (`.skillmapignore`) is the last one t
|
|
|
320
324
|
|
|
321
325
|
Earlier chapters showed the watcher picking up new files and edits (yours and theirs). This chapter flips the direction: a file the tester DOES NOT want in the map (a draft, a scratch file, a secret) gets hidden by a single line in `.skillmapignore`. Same live mechanism, no restart.
|
|
322
326
|
|
|
323
|
-
`sm init` already wrote a starter `.skillmapignore` at the scope root. The
|
|
327
|
+
`sm init` already wrote a starter `.skillmapignore` at the scope root. The chapter is one step with a single confirmation (the node vanishing): the agent seeds a file the tester would never want public, shows where it lives, and the tester hides it with one glob.
|
|
324
328
|
|
|
325
|
-
**
|
|
329
|
+
**The agent seeds the file (no tester action, no separate pause).**
|
|
326
330
|
|
|
327
331
|
`Write` `notes/private-credentials.md`, kind `markdown`, simulates a file the tester would never want surfacing publicly:
|
|
328
332
|
|
|
@@ -340,13 +344,15 @@ description: |
|
|
|
340
344
|
API_TOKEN: example-not-real
|
|
341
345
|
```
|
|
342
346
|
|
|
343
|
-
|
|
347
|
+
It lands in the map as a sixth node (`notes/private-credentials`); the watcher sees it like any other `.md`. Do NOT pause to confirm the appearance, it folds into the single vanish confirmation at the end of this step.
|
|
344
348
|
|
|
345
|
-
**
|
|
349
|
+
**The tester hides it (single tester-facing message, one confirmation).**
|
|
346
350
|
|
|
347
|
-
|
|
351
|
+
Give the tester a mental map of the folder so they know where the file lives, then the glob that hides it, all in ONE message. Use `Bash` (`ls -la`, plus `ls -la notes/` if a deeper view helps) for the real listing and apply the host-dependent rendering rule. Per Inviolable rule #2, the agent does NOT touch `.skillmapignore` with its `Edit` tool, the tester edits it from their own editor:
|
|
348
352
|
|
|
349
|
-
> One last step.
|
|
353
|
+
> One last step. Your `private-credentials` note just popped into
|
|
354
|
+
> the map as a sixth node, that's the watcher again. Now let's hide
|
|
355
|
+
> it. Here's what your directory looks like right now:
|
|
350
356
|
|
|
351
357
|
```
|
|
352
358
|
. ← your cwd
|
|
@@ -364,24 +370,20 @@ Before asking the tester to touch `.skillmapignore`, give them a mental map of t
|
|
|
364
370
|
└── private-credentials.md ← what we want to hide
|
|
365
371
|
```
|
|
366
372
|
|
|
367
|
-
> The `.skillmapignore` at the root
|
|
368
|
-
>
|
|
369
|
-
>
|
|
373
|
+
> The `.skillmapignore` at the root uses the same syntax as
|
|
374
|
+
> `.gitignore`: anything matching a pattern there is invisible to
|
|
375
|
+
> skill-map's scan. Open it in your editor (it's at the cwd root)
|
|
376
|
+
> and append this pattern on a new line at the end:
|
|
370
377
|
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
Per Inviolable rule #2, the agent does NOT touch `.skillmapignore` with your `Edit` tool. Tell the tester to do it from their editor:
|
|
378
|
+
```
|
|
379
|
+
notes/private-*.md
|
|
380
|
+
```
|
|
376
381
|
|
|
377
|
-
>
|
|
378
|
-
> your editor of choice. At the end of the file, on a new line,
|
|
379
|
-
> append the literal pattern `notes/private-*.md`. Save the
|
|
380
|
-
> file. The pattern uses a glob (same as `.gitignore`):
|
|
382
|
+
> Save the file. It's a glob (same as `.gitignore`):
|
|
381
383
|
> `notes/private-*.md` matches `private-credentials.md` and any
|
|
382
384
|
> future sibling `private-*.md`. A literal path
|
|
383
|
-
> (`notes/private-credentials.md`) would also work, the glob
|
|
384
|
-
>
|
|
385
|
+
> (`notes/private-credentials.md`) would also work, the glob teaches
|
|
386
|
+
> the broader habit.
|
|
385
387
|
>
|
|
386
388
|
> Watch the browser when you save. The
|
|
387
389
|
> `notes/private-credentials` node should disappear from the
|
|
@@ -390,6 +392,7 @@ Per Inviolable rule #2, the agent does NOT touch `.skillmapignore` with your `Ed
|
|
|
390
392
|
>
|
|
391
393
|
> Did the node vanish?
|
|
392
394
|
|
|
393
|
-
After they confirm, you MAY use `Read` on `.skillmapignore` to verify the appended pattern landed correctly (in case `sm check` later reports something odd), that is read-only and allowed. Once confirmed, ask them to stop the server with **Ctrl+C** in the terminal before continuing.
|
|
395
|
+
Adjust the actual tree shown to whatever `ls -la` returns, the goal is "tester recognises their own filesystem", not a copy of the snippet above. After they confirm, you MAY use `Read` on `.skillmapignore` to verify the appended pattern landed correctly (in case `sm check` later reports something odd), that is read-only and allowed. Once confirmed, ask them to stop the server with **Ctrl+C** in the terminal before continuing.
|
|
394
396
|
|
|
395
|
-
Mark `ignore`: done.
|
|
397
|
+
Mark `ignore`: done. Last chapter of the part: apply §Closing a part
|
|
398
|
+
(the close names the part by its title and routes back to the menu).
|
|
@@ -1,62 +1,57 @@
|
|
|
1
|
-
# Part
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
1
|
+
# Part 6: Ship the site (the full publish pipeline) (step library, finale, `pipeline` + `golive`)
|
|
2
|
+
|
|
3
|
+
The finale, the climax of the whole campaign. In Part 3 you ran the
|
|
4
|
+
harness once, the simple way (generate two pages, serve them). Here you
|
|
5
|
+
operate it exactly as it was designed: you drive the `/publish` command
|
|
6
|
+
end to end, the way the handbook says to ship, and put a richer
|
|
7
|
+
multi-page site live next to the full graph. Pace `auto-advance`,
|
|
8
|
+
preflight `seed` (`harness-connected`), so a tester can jump straight
|
|
9
|
+
here. Two chapters, in order: `pipeline` (run `/publish`: check the
|
|
10
|
+
links, brief the editor, follow the deploy runbook) then `golive` (run
|
|
11
|
+
the server and click through the finished site). Shared conventions
|
|
12
|
+
live in `_core.md`.
|
|
13
|
+
|
|
14
|
+
## Chapter `pipeline` - Run /publish end to end (check-links, brief, deploy runbook) (~4 min)
|
|
15
|
+
|
|
16
|
+
**Context**: the harness is not just a picture, it is a set of
|
|
17
|
+
instructions, and `/publish` is the one that ties them together. Its
|
|
18
|
+
body says: run `/check-links`, brief `@content-editor` on any fix, then
|
|
19
|
+
follow the deploy runbook. Here the tester (playing the harness) walks
|
|
20
|
+
exactly those steps on a richer site. This is still Layer 1 vs Layer 2:
|
|
21
|
+
the pages are output, so the Map stays put while the files change, same
|
|
22
|
+
as Part 3, no need to re-teach it, just do not call it a bug if they
|
|
23
|
+
notice.
|
|
24
|
+
|
|
25
|
+
**Preparation** (the agent does this, playing `content-editor`):
|
|
26
|
+
|
|
27
|
+
1. Ensure the two base pages exist. If they are not already on disk
|
|
28
|
+
from Part 3 (a tester can land here via the seed), lay
|
|
29
|
+
`public/index.html` and `public/about.html` exactly as in
|
|
30
|
+
part-run-harness.md, chapter `generate`. They are the single source
|
|
31
|
+
for those two pages; do not restate their markup, copy it from
|
|
32
|
+
there.
|
|
33
|
+
2. Add a **Projects** link to the home nav. `Edit` `public/index.html`,
|
|
34
|
+
turning the About line of the nav into:
|
|
35
|
+
|
|
29
36
|
```html
|
|
30
|
-
|
|
31
|
-
<
|
|
32
|
-
<head>
|
|
33
|
-
<meta charset="utf-8" />
|
|
34
|
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
35
|
-
<title>My Portfolio</title>
|
|
36
|
-
</head>
|
|
37
|
-
<body>
|
|
38
|
-
<h1>My Portfolio</h1>
|
|
39
|
-
<p>Hi, I build small, sturdy things on the web.</p>
|
|
40
|
-
<nav>
|
|
41
|
-
<a href="/">Home</a> ·
|
|
42
|
-
<a href="/about.html">About</a>
|
|
43
|
-
</nav>
|
|
44
|
-
</body>
|
|
45
|
-
</html>
|
|
37
|
+
<a href="/about.html">About</a> ·
|
|
38
|
+
<a href="/projects.html">Projects</a>
|
|
46
39
|
```
|
|
47
40
|
|
|
48
|
-
`public/
|
|
41
|
+
3. `Write` the new page `public/projects.html` (plain markup, links
|
|
42
|
+
back home, per the style guide):
|
|
43
|
+
|
|
49
44
|
```html
|
|
50
45
|
<!doctype html>
|
|
51
46
|
<html lang="en">
|
|
52
47
|
<head>
|
|
53
48
|
<meta charset="utf-8" />
|
|
54
49
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
55
|
-
<title>
|
|
50
|
+
<title>Projects</title>
|
|
56
51
|
</head>
|
|
57
52
|
<body>
|
|
58
|
-
<h1>
|
|
59
|
-
<p>A
|
|
53
|
+
<h1>Projects</h1>
|
|
54
|
+
<p>A few small things I have shipped.</p>
|
|
60
55
|
<nav>
|
|
61
56
|
<a href="/">Home</a>
|
|
62
57
|
</nav>
|
|
@@ -65,47 +60,57 @@ the markup plain.
|
|
|
65
60
|
```
|
|
66
61
|
|
|
67
62
|
```bash
|
|
68
|
-
#
|
|
63
|
+
# Still nothing to run in the terminal. The publish steps below are
|
|
64
|
+
# you walking the harness; the server comes in the next chapter.
|
|
69
65
|
```
|
|
70
66
|
|
|
71
67
|
Tell the tester:
|
|
72
68
|
|
|
73
|
-
>
|
|
74
|
-
> `
|
|
75
|
-
>
|
|
76
|
-
>
|
|
77
|
-
>
|
|
78
|
-
> guide you set up earlier.
|
|
69
|
+
> Time to ship it the way your handbook says to. Open
|
|
70
|
+
> `.claude/commands/publish.md` and look at its steps: that command is
|
|
71
|
+
> the recipe, and you are about to run it by hand, the way the agent
|
|
72
|
+
> would. Three pages now live under `public/`: home, about, and a new
|
|
73
|
+
> projects page, with the home nav linking all three.
|
|
79
74
|
>
|
|
80
|
-
>
|
|
81
|
-
>
|
|
82
|
-
>
|
|
83
|
-
>
|
|
84
|
-
>
|
|
85
|
-
> `.md`), so writing real site files leaves the graph untouched. Two
|
|
86
|
-
> layers, one project: the graph that builds the site, and the site
|
|
87
|
-
> itself.
|
|
75
|
+
> **Step 1, check the links** (`/check-links`). Walk the three pages
|
|
76
|
+
> and follow every internal link: `/` resolves to the home page,
|
|
77
|
+
> `/about.html` and `/projects.html` to files that exist, and each
|
|
78
|
+
> page links back home. Nothing points at a missing file, so the link
|
|
79
|
+
> check is clean.
|
|
88
80
|
>
|
|
89
|
-
>
|
|
81
|
+
> **Step 2, brief the editor** (`@content-editor`). The check found
|
|
82
|
+
> nothing to fix, so there is no brief to hand off this time, that is
|
|
83
|
+
> the happy path. (Part 4 is where a link actually breaks and this
|
|
84
|
+
> step earns its keep.)
|
|
85
|
+
>
|
|
86
|
+
> **Step 3, follow the deploy runbook** (`docs/DEPLOY.md`). It lists:
|
|
87
|
+
> generate the pages (done), run the link check (done), start the
|
|
88
|
+
> server (next chapter). You have walked the whole `/publish` flow.
|
|
89
|
+
>
|
|
90
|
+
> Glance at the Map one more time: it did not move while you added a
|
|
91
|
+
> page and ran the pipeline. The pages are Layer 2 output; the harness
|
|
92
|
+
> on the canvas is Layer 1, and that is what skill-map maps.
|
|
93
|
+
>
|
|
94
|
+
> Ready to put it live?
|
|
90
95
|
|
|
91
|
-
Wait for confirmation.
|
|
92
|
-
|
|
96
|
+
Wait for confirmation. You MAY `Read` the three files in `public/`
|
|
97
|
+
afterwards to confirm the edit and the new page landed. Mark
|
|
98
|
+
`pipeline`: done. Auto-advance to `golive`.
|
|
93
99
|
|
|
94
|
-
## Chapter `
|
|
100
|
+
## Chapter `golive` - Ship it: the richer site live next to the full graph (~3 min)
|
|
95
101
|
|
|
96
|
-
**Context**: the climax. The tester
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
`node server.js`); guide them, do not run it for them.
|
|
102
|
+
**Context**: the climax. The tester starts the tiny Express server the
|
|
103
|
+
pre-flight left in `server.js` and clicks through the three-page site,
|
|
104
|
+
ending with the running portfolio on one side and the full skill-map
|
|
105
|
+
graph of the harness that built it on the other. This is one of the
|
|
106
|
+
few chapters where the tester runs non-`sm` commands themselves
|
|
107
|
+
(`npm install`, `node server.js`); guide them, do not run it for them.
|
|
108
|
+
`npm install` is idempotent, so it is safe whether or not they already
|
|
109
|
+
ran it in Part 3.
|
|
105
110
|
|
|
106
|
-
**Preparation**: none. `server.js` and `package.json`
|
|
107
|
-
|
|
108
|
-
|
|
111
|
+
**Preparation**: none. `server.js` and `package.json` exist from the
|
|
112
|
+
kickoff pre-flight; the three pages exist from the `pipeline` chapter.
|
|
113
|
+
The tester runs everything here.
|
|
109
114
|
|
|
110
115
|
```bash
|
|
111
116
|
npm install
|
|
@@ -114,43 +119,37 @@ node server.js
|
|
|
114
119
|
|
|
115
120
|
Tell the tester:
|
|
116
121
|
|
|
117
|
-
> Last step,
|
|
118
|
-
> serve them. In your terminal, run these two commands:
|
|
119
|
-
>
|
|
120
|
-
> The first, `npm install`, downloads the one small library the
|
|
121
|
-
> server needs (Express, a tiny web server). It runs on Node, which
|
|
122
|
-
> you already installed at the very start, so there is nothing new to
|
|
123
|
-
> set up.
|
|
122
|
+
> Last step, the fun one. In your terminal, run these two commands:
|
|
124
123
|
>
|
|
125
|
-
>
|
|
126
|
-
>
|
|
127
|
-
>
|
|
124
|
+
> `npm install` downloads the one small library the server needs
|
|
125
|
+
> (Express). If you already ran it in Part 3 it just confirms it is
|
|
126
|
+
> there. Then `node server.js` starts the server; it prints a line
|
|
127
|
+
> like `Listening on http://localhost:3000`.
|
|
128
128
|
>
|
|
129
|
-
> Open `http://localhost:3000
|
|
130
|
-
>
|
|
131
|
-
>
|
|
129
|
+
> Open `http://localhost:3000`. Click **About**, **Projects**, and
|
|
130
|
+
> **Home** to move between all three pages. Those are the pages your
|
|
131
|
+
> harness produced, shipped through the publish flow you just ran by
|
|
132
|
+
> hand.
|
|
132
133
|
>
|
|
133
|
-
> Now take
|
|
134
|
-
>
|
|
135
|
-
>
|
|
136
|
-
>
|
|
137
|
-
>
|
|
138
|
-
>
|
|
139
|
-
> map of how it all fits.
|
|
134
|
+
> Now take it all in at once. On one side, the real running site you
|
|
135
|
+
> can click through. On the other, the skill-map graph of the harness
|
|
136
|
+
> that built it: the handbook, the content editor, the style guide,
|
|
137
|
+
> the publish command, the link checker, the MCP tool, all wired
|
|
138
|
+
> together. You started in an empty folder with nothing, and you have
|
|
139
|
+
> ended with a real, running site and a living map of how it all fits.
|
|
140
140
|
>
|
|
141
|
-
> Does the site load, and can you click between Home and
|
|
141
|
+
> Does the site load, and can you click between Home, About and
|
|
142
|
+
> Projects?
|
|
142
143
|
|
|
143
144
|
Wait for confirmation. The tester runs the commands; do not run them
|
|
144
145
|
for them. If `npm install` fails, check they are in the project root
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
campaign spine is complete; the final wrap-up in `_core.md` applies
|
|
156
|
-
when the tester signals they are finished).
|
|
146
|
+
and Node is on PATH (`node --version` should print 24 or higher). If
|
|
147
|
+
the port is busy, stop the server with Ctrl+C and apply the ports edge
|
|
148
|
+
case. Remind them the server stays running until they press Ctrl+C.
|
|
149
|
+
|
|
150
|
+
This is the campaign finale. Congratulate them plainly: they went from
|
|
151
|
+
an empty directory to a real, running portfolio plus a complete map of
|
|
152
|
+
its harness. Mark `golive`: done. Last chapter of the part: apply
|
|
153
|
+
§Closing a part (name the part by its title; since this closes the
|
|
154
|
+
campaign spine, if every active part is now done route to the §Final
|
|
155
|
+
wrap-up instead of the menu).
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Part
|
|
1
|
+
# Part 4: Maintain the site (step library, `maintain`)
|
|
2
2
|
|
|
3
3
|
This is the upkeep part. The harness from Part 2 is wired and clean; real projects drift, links break, drafts pile up, names collide. Here the tester breaks something on purpose and fixes it, meets the analyzer catalogue that catches those problems, finds an orphan nobody links to, clears a reserved-name warning, and learns the `.sm` companion files that carry the tool's bookkeeping. `pace: auto-advance` (walk straight into the next chapter once one is marked done), `preflight: reuse` (it builds on the portfolio harness from Parts 1 and 2, no fresh fixture of its own). Shared conventions (tone, provider detection / substitution, the `> ` rendering rule, the per-step cycle) live in `_core.md`; do not restate them here.
|
|
4
4
|
|
|
@@ -283,4 +283,4 @@ sm history content-editor
|
|
|
283
283
|
>
|
|
284
284
|
> Does `sm history` show the bump you just made?
|
|
285
285
|
|
|
286
|
-
Wait for confirmation. Mark `versions`: done.
|
|
286
|
+
Wait for confirmation. Mark `versions`: done. Last chapter of the part: apply §Closing a part (the close names the part by its title and routes back to the menu).
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Part
|
|
1
|
+
# Part 5: MCP (step library, `mcp-*` ids)
|
|
2
2
|
|
|
3
3
|
This is a chapter apart, the one just before the finale. Pace
|
|
4
4
|
`auto-advance`, preflight `reuse` (it builds straight on the
|
|
@@ -73,6 +73,6 @@ Tell the tester:
|
|
|
73
73
|
Wait for confirmation. If the node did not appear, have the tester
|
|
74
74
|
save the file again (the watcher reacts on save) or refresh the
|
|
75
75
|
browser, then re-check; the `tools:` line must be valid YAML on one
|
|
76
|
-
line. Mark `mcp-node`: done.
|
|
77
|
-
|
|
78
|
-
next on the spine).
|
|
76
|
+
line. Mark `mcp-node`: done. Last chapter of the part: apply §Closing
|
|
77
|
+
a part (the close names the part by its title and routes back to the
|
|
78
|
+
menu; the full publish finale is next on the spine).
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Part
|
|
1
|
+
# Part 7 (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
|