@skill-map/cli 0.53.2 → 0.53.4

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 (27) hide show
  1. package/dist/cli/tutorial/sm-tutorial/SKILL.md +112 -52
  2. package/dist/cli/tutorial/sm-tutorial/references/_core.md +65 -15
  3. package/dist/cli/tutorial/sm-tutorial/references/_manifest.yml +31 -16
  4. package/dist/cli/tutorial/sm-tutorial/references/fixtures.md +50 -27
  5. package/dist/cli/tutorial/sm-tutorial/references/part-authoring.md +7 -7
  6. package/dist/cli/tutorial/sm-tutorial/references/part-cli.md +2 -2
  7. package/dist/cli/tutorial/sm-tutorial/references/part-connect-harness.md +14 -11
  8. package/dist/cli/tutorial/sm-tutorial/references/part-fundamentals.md +16 -22
  9. package/dist/cli/tutorial/sm-tutorial/references/part-live-site.md +111 -112
  10. package/dist/cli/tutorial/sm-tutorial/references/part-maintain.md +19 -4
  11. package/dist/cli/tutorial/sm-tutorial/references/part-mcp.md +4 -4
  12. package/dist/cli/tutorial/sm-tutorial/references/part-plugins.md +5 -4
  13. package/dist/cli/tutorial/sm-tutorial/references/part-project-kickoff.md +11 -13
  14. package/dist/cli/tutorial/sm-tutorial/references/part-run-harness.md +155 -0
  15. package/dist/cli/tutorial/sm-tutorial/references/part-settings.md +6 -5
  16. package/dist/cli.js +3 -3
  17. package/dist/index.js +3 -3
  18. package/dist/kernel/index.js +3 -3
  19. package/dist/ui/{chunk-OFDQMBSJ.js → chunk-4CXAL43H.js} +1 -1
  20. package/dist/ui/{chunk-IUZM6XLN.js → chunk-HWQTV6ZL.js} +1 -1
  21. package/dist/ui/{chunk-UHNBYD6J.js → chunk-JQE4N6JU.js} +3 -3
  22. package/dist/ui/{chunk-EQ72PEHT.js → chunk-NBXEOYS4.js} +1 -1
  23. package/dist/ui/{chunk-UV5Q423S.js → chunk-R2IJXS47.js} +3 -3
  24. package/dist/ui/index.html +2 -2
  25. package/dist/ui/{main-TXPLL7VU.js → main-ZXOCLPLS.js} +3 -3
  26. package/dist/ui/{styles-Q4NCOJQY.css → styles-L6FZYH7X.css} +1 -1
  27. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  # Part 2: Connect the harness (step library, `connect-harness`)
2
2
 
3
- This is the wiring part. Part 1 grew a small set of standalone nodes around the handbook (the portfolio harness); here the tester turns that scatter of dots into a connected graph: a link checker, a publish command that pulls three pieces together, the handbook becoming a real hub, and a close-up on how sure skill-map is of each connection. `pace: auto-advance` (walk straight into the next chapter once one is marked done), `preflight: reuse` (it builds on the portfolio harness from Part 1, 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.
3
+ This is the wiring part. Part 1 grew a small set of standalone nodes around the handbook (the portfolio harness); here the tester turns that scatter of dots into a connected graph: a link checker, a publish command that pulls three pieces together, the handbook becoming a real hub, and a close-up on how sure skill-map is of each connection. `pace: auto-advance` (walk straight into the next chapter once one is marked done), `preflight: seed` (it builds on the portfolio harness from Part 1, reusing the accumulated state when its predecessors are done, 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
 
5
5
  ## Chapter `check-links` - The link checker (~3 min)
6
6
 
@@ -53,7 +53,11 @@ Wait for confirmation. Mark `check-links`: done.
53
53
 
54
54
  **Context**: this is the chapter where the graph comes alive. The `/publish` command ties three pieces together in one body: it invokes the link checker, mentions the content editor, and references the deploy runbook. Three connectors light up from a single new node, one per link syntax.
55
55
 
56
- `Write` `.claude/commands/publish.md` (substitute `<provider_dir>` per `_core.md`; on `agent-skills` / Antigravity there is no `command` kind, so skip this whole chapter and fold its purpose into the prose of the next one):
56
+ On `agent-skills` / Antigravity there is no `command` kind, so skip this whole chapter and fold its purpose into the prose of the next one.
57
+
58
+ Tell the tester to create the file themselves (it is their project's file, Inviolable rule #2). Substitute `<provider_dir>` per `_core.md` in the path you give them:
59
+
60
+ > Create `.claude/commands/publish.md` with exactly this content:
57
61
 
58
62
  ```markdown
59
63
  ---
@@ -69,7 +73,7 @@ args:
69
73
  required: true
70
74
  ---
71
75
 
72
- # /publish
76
+ # publish
73
77
 
74
78
  The one command you run when the site is ready to go out.
75
79
 
@@ -79,12 +83,11 @@ The one command you run when the site is ready to go out.
79
83
  3. Follow the [deploy runbook](../../docs/DEPLOY.md) to ship.
80
84
  ```
81
85
 
82
- Tell the tester:
86
+ Continue the tester message:
83
87
 
84
- > I added the `/publish` command, the single entry point you run when
85
- > the site is ready to go live. Watch the **Map**: **three** new
86
- > arrows light up at once from the new `publish` node, and each one is
87
- > a different colour because each one is a different kind of link:
88
+ > Save it. Watch the **Map**: **three** new arrows light up at once
89
+ > from the new `publish` node, and each one is a different colour
90
+ > because each one is a different kind of link:
88
91
  >
89
92
  > - `publish -> check-links` (kind: `invokes`), from the `/check-links`
90
93
  > token in the body.
@@ -98,7 +101,7 @@ Tell the tester:
98
101
  >
99
102
  > Did the three arrows appear?
100
103
 
101
- Wait for confirmation. Mark `publish`: done.
104
+ Wait for confirmation. You MAY use `Read` on the file afterwards to verify it landed. Mark `publish`: done.
102
105
 
103
106
  ## Chapter `links` - The handbook becomes the hub (~4 min)
104
107
 
@@ -159,7 +162,7 @@ Tell the tester:
159
162
  > the more solid the arrow; the less sure, the more translucent.
160
163
  >
161
164
  > Open the Inspector for the `publish` node (click it on the **Map**).
162
- > Scroll down to the **Linked nodes** panel and read the **Outgoing**
165
+ > Scroll down to the **Connections** panel and read the **Outgoing**
163
166
  > rows. Each row shows the link kind and a confidence badge:
164
167
  >
165
168
  > - `publish -> docs/DEPLOY.md` (`references`) reads **1.00** and looks
@@ -177,4 +180,4 @@ Tell the tester:
177
180
  >
178
181
  > Do you see the confidence badges in the Inspector?
179
182
 
180
- Wait for confirmation. Mark `confidence`: done. This closes Part 2; the orchestrator returns to the ToC menu (Part 3, "Maintain the site", is next on the spine).
183
+ Wait for confirmation. Mark `confidence`: done. Last chapter of the part: apply §Closing a part (the close names the part by its title and routes back to the menu; do NOT lead into the next part from here).
@@ -229,7 +229,7 @@ Tell the tester:
229
229
 
230
230
  If a connector is missing, do not advance, the next chapter inspects the same hub edit. Mark `connectors`: done.
231
231
 
232
- ## Chapter `inspector` - The inspector and linked nodes (~1 min)
232
+ ## Chapter `inspector` - The inspector and connections (~1 min)
233
233
 
234
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.
235
235
 
@@ -324,9 +324,9 @@ Leave the server running, the next chapter (`.skillmapignore`) is the last one t
324
324
 
325
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.
326
326
 
327
- `sm init` already wrote a starter `.skillmapignore` at the scope root. The flow has three beats:
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.
328
328
 
329
- **Beat 1, you create one new fixture file (the agent does this).**
329
+ **The agent seeds the file (no tester action, no separate pause).**
330
330
 
331
331
  `Write` `notes/private-credentials.md`, kind `markdown`, simulates a file the tester would never want surfacing publicly:
332
332
 
@@ -344,13 +344,15 @@ description: |
344
344
  API_TOKEN: example-not-real
345
345
  ```
346
346
 
347
- Confirm the file appears in the map as a sixth node (`notes/private-credentials`). The watcher sees it like any other `.md`, that's the point of the demo. (If the tester doesn't see it, they may need to click **Show all** in the map toolbar to clear any leftover selection.)
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.
348
348
 
349
- **Beat 2, you show the project structure (the agent does this).**
349
+ **The tester hides it (single tester-facing message, one confirmation).**
350
350
 
351
- Before asking the tester to touch `.skillmapignore`, give them a mental map of the folder so they know where the file lives and what's around it. Use `Bash` (`ls -la` and `ls -la notes/` if a deeper view helps) and present the listing as a tester-facing message (apply the host-dependent rendering rule) so the tester sees what their cwd holds:
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:
352
352
 
353
- > One last step. Here's what your directory looks like right now:
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:
354
356
 
355
357
  ```
356
358
  . ← your cwd
@@ -368,19 +370,10 @@ Before asking the tester to touch `.skillmapignore`, give them a mental map of t
368
370
  └── private-credentials.md ← what we want to hide
369
371
  ```
370
372
 
371
- > The `.skillmapignore` at the root is the file we'll touch
372
- > next. Same syntax as `.gitignore`. Anything matching a pattern
373
- > there is invisible to skill-map's scan.
374
-
375
- 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.
376
-
377
- **Beat 3, the tester edits `.skillmapignore` (NOT the agent).**
378
-
379
- Per Inviolable rule #2, the agent does NOT touch `.skillmapignore` with your `Edit` tool. Tell the tester to do it from their editor:
380
-
381
- > Last step. Open `.skillmapignore` (it's at the cwd root) in your
382
- > editor of choice. At the end of the file, on a new line, append
383
- > this pattern:
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:
384
377
 
385
378
  ```
386
379
  notes/private-*.md
@@ -399,6 +392,7 @@ notes/private-*.md
399
392
  >
400
393
  > Did the node vanish?
401
394
 
402
- 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.
403
396
 
404
- 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 5: The site, live (step library, finale, `generate` + `serve`)
2
-
3
- This is the finale, the climax of the whole campaign. Pace
4
- `auto-advance`, preflight `reuse` (it builds straight on the
5
- portfolio harness from the earlier parts, same cwd). Two chapters,
6
- in order: `generate` (the agent writes the real HTML pages) then
7
- `serve` (the tester runs the site and sees it in the browser).
8
- Shared conventions live in `_core.md`.
9
-
10
- ## Chapter `generate` - The agent generates the HTML in public/ (~3 min)
11
-
12
- **Context**: this is the payoff of the whole harness. The
13
- `content-editor` agent exists to write the site's pages, so now you
14
- (playing that agent) generate the actual HTML into `public/`. The
15
- honest beat the tester must hear: writing HTML does NOT move the
16
- skill-map graph. The graph is Layer 1, the `.md` harness that builds
17
- the site; the HTML is Layer 2, the harness's OUTPUT, and skill-map
18
- does not map it (HTML is not `.md`). So the Map will sit still while
19
- real files land on disk, and that is correct, not a bug. Keep the
20
- markup plain per the style guide: no framework, no client JS, one H1
21
- per page, every page links back home.
22
-
23
- **Preparation**: `Write` two static pages into `public/`. The
24
- pre-flight already left a placeholder `public/index.html`; this
25
- overwrites it with the real home page and adds an about page. Keep
26
- the markup plain.
27
-
28
- `public/index.html`:
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
- <!doctype html>
31
- <html lang="en">
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/about.html`:
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>About</title>
50
+ <title>Projects</title>
56
51
  </head>
57
52
  <body>
58
- <h1>About</h1>
59
- <p>A short page about the person behind the portfolio.</p>
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
- # Nothing for you to run yet. Look at both halves of your screen.
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
- > Here it is, the moment the whole harness was built for. Your
74
- > `content-editor` agent did its real job: it wrote the actual web
75
- > pages. Two HTML files just landed in your project under `public/`:
76
- > the home page (`public/index.html`) and an about page
77
- > (`public/about.html`), plain static markup that follows the style
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
- > Now glance at the Map. It did not change, and that is exactly
81
- > right. Everything you watched grow on the canvas is your harness:
82
- > the `.md` files and how they reference each other (call that
83
- > Layer 1). The HTML pages are Layer 2, what the harness PRODUCES.
84
- > skill-map maps the harness, not the pages it outputs (HTML is not
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
- > Ready to see the site running?
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. Mark `generate`: done. Auto-advance to
92
- `serve`.
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 `serve` - node server.js: your portfolio, live, next to the graph (~4 min)
100
+ ## Chapter `golive` - Ship it: the richer site live next to the full graph (~3 min)
95
101
 
96
- **Context**: the climax. The tester installs the single dependency
97
- (Express) and starts the tiny server that the pre-flight already left
98
- in `server.js`, then opens the site in the browser. They end with two
99
- things side by side: the real portfolio they can click through, and
100
- the skill-map graph of the harness that built it. Express runs on
101
- Node, which the tester has from pre-flight (Node 24+), so no new
102
- install beyond `npm install`. This chapter is one of the few where
103
- the tester runs a non-`sm` command themselves (`npm install`,
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` already exist
107
- from the kickoff pre-flight; the pages exist from the `generate`
108
- chapter. The tester runs everything in this chapter.
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, and it is the fun one. You have the pages; now let's
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
- > The second, `node server.js`, starts the server. It prints a line
126
- > telling you it is listening, something like `Listening on
127
- > http://localhost:3000`.
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` in your browser. There it is: your
130
- > portfolio, live. Click the **About** link, then the **Home** link
131
- > to come back. Those are the very pages your harness produced.
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 a second to look at everything at once. On one side, the
134
- > real running site you can click through. On the other, the
135
- > skill-map graph of the harness that built it: the handbook, the
136
- > agent, the style guide, the publish command, the link checker, the
137
- > MCP tool, all wired together. You started in an empty folder with
138
- > nothing, and you have ended with a real, running thing and a living
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 About?
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
- (the cwd they have used all along) and that Node is on PATH (`node
146
- --version` should print 24 or higher). If the port is busy, they can
147
- stop the server with Ctrl+C and the edge case for ports applies the
148
- same as elsewhere.
149
-
150
- When they confirm, this closes Part 5 and the campaign. Tell the
151
- tester they went from an empty directory to a real portfolio site
152
- plus a complete map of its harness, congratulate them plainly, and
153
- remind them the server stays running until they press Ctrl+C. Mark
154
- `serve`: done. The orchestrator returns to the ToC menu (the
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,6 +1,6 @@
1
- # Part 3: Maintain the site (step library, `maintain`)
1
+ # Part 4: Maintain the site (step library, `maintain`)
2
2
 
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.
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: seed` (it builds on the portfolio harness from Parts 1 and 2, reusing the accumulated state when its predecessors are done, 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
 
5
5
  ## Chapter `broken-ref` - A link breaks (~3 min)
6
6
 
@@ -12,6 +12,21 @@ This chapter is the tester's hands the whole way (renaming and editing their own
12
12
  sm
13
13
  ```
14
14
 
15
+ This part is the first time the live server and one-off `sm` commands run side by side, so give the tester the third-terminal heads-up below (substitute `<cwd>` with the tester's actual cwd, same substitution as every other `<cwd>` mention):
16
+
17
+ > ⚠️ Heads up: from here you run one-off commands (`sm scan`, `sm
18
+ > check`, the `mv` below) **while the `sm` server keeps running**. The
19
+ > server holds its terminal until you Ctrl+C it, so open a **third
20
+ > terminal** and anchor it to this same folder, that is where every
21
+ > one-off command from here on goes:
22
+
23
+ ```bash
24
+ cd <cwd>
25
+ ```
26
+
27
+ > Three terminals now: this chat, the one running the live `sm` server
28
+ > (leave it alone), and this new one for the one-off commands.
29
+
15
30
  > Open the URL `sm` prints, same as before. Now break something on
16
31
  > purpose. Rename your deploy runbook from `docs/DEPLOY.md` to
17
32
  > `docs/DEPLOYMENT.md` (just change the filename, leave the contents
@@ -167,7 +182,7 @@ args:
167
182
  required: true
168
183
  ---
169
184
 
170
- # /init
185
+ # init
171
186
 
172
187
  Sets up the empty folders a new portfolio needs.
173
188
  ```
@@ -283,4 +298,4 @@ sm history content-editor
283
298
  >
284
299
  > Does `sm history` show the bump you just made?
285
300
 
286
- Wait for confirmation. Mark `versions`: done. This closes Part 3; the orchestrator returns to the ToC menu.
301
+ 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 4: MCP (step library, `mcp-*` ids)
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. This closes Part 4; the orchestrator
77
- returns to the ToC menu (Part 5, "The site, live", the finale, is
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 6 (b): Extend skill-map - plugins (step library, `tour-*` ids)
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
@@ -13,9 +13,10 @@ which verbs reach which surface.
13
13
  Before announcing the first step, verify the fixture is initialised
14
14
  (the cwd has `.claude/agents/master-agent.md`,
15
15
  `.claude/skills/master-skill/SKILL.md`, AND `.skill-map/` with
16
- `settings.json` and `skill-map.db`). Pre-flight already ran
17
- `sm init --no-scan` and appended the master entries to
18
- `.skillmapignore`. If any of that is missing, surface the
16
+ `settings.json` and `skill-map.db`). The `extend` part's
17
+ `backstage-init` preflight ran `sm init --no-scan` to provision it;
18
+ the universal `.skillmapignore` from pre-flight keeps the tutorial's
19
+ own files out of the scan. If any of that is missing, surface the
19
20
  bootstrap mismatch ("tutorial-state.yml says we are running, but
20
21
  the bootstrap is missing. Re-run the tutorial from an empty dir or
21
22
  restore the files.") and stop.
@@ -5,8 +5,8 @@ starts an actual project: a tiny personal **portfolio website**,
5
5
  fully static, served by a ~15-line Express server, plus the
6
6
  `.claude/` **harness** that maintains it. skill-map maps the harness
7
7
  (the `.md` assets and how they reference each other); the site itself
8
- is plain HTML the harness produces (Part 5 generates it and runs the
9
- server). `pace: per-step`, `preflight: portfolio-init`. Shared
8
+ is plain HTML the harness produces (Part 3 runs it, Part 6 ships it).
9
+ `pace: per-step`, `preflight: portfolio-init`. Shared
10
10
  conventions live in `_core.md`.
11
11
 
12
12
  The orchestrator's `portfolio-init` pre-flight (backstage, silent)
@@ -125,7 +125,7 @@ Wait for confirmation. Mark `first-agent`: done.
125
125
  **Context**: the prologue showed the four kinds on abstract demo
126
126
  nodes. Now name them on the real project, and add the two markdown
127
127
  docs the harness references later (the style guide and the deploy
128
- runbook), so Part 3's maintenance beats have something to point at.
128
+ runbook), so Part 4's maintenance beats have something to point at.
129
129
 
130
130
  `Write` two docs (markdown kind):
131
131
 
@@ -171,16 +171,14 @@ Tell the tester:
171
171
  > - **agent**: `content-editor` (does work on your behalf).
172
172
  > - **markdown**: `AGENTS.md`, `CLAUDE.md`, the two docs (plain notes
173
173
  > and manuals).
174
- > - **skill** and **command**: coming in the next part, when we add
175
- > the link checker and the publish command and wire everything
176
- > together.
174
+ > - **skill** and **command**: you add these (the link checker and
175
+ > the publish command) in a later part.
177
176
  >
178
- > Your handbook now has a real harness around it. Next we connect it:
179
- > the agent reaching the style guide, the command invoking the
180
- > skill, the whole graph lighting up.
177
+ > Your handbook now has a real harness around it: a `content-editor`
178
+ > agent plus its docs, all on the map.
181
179
  >
182
- > Ready to connect the harness?
180
+ > See the agent and the docs in the map?
183
181
 
184
- Wait for confirmation. Mark `real-kinds`: done. This closes Part 1;
185
- the orchestrator returns to the ToC menu (Part 2, "Connect the
186
- harness", is next on the spine).
182
+ Wait for confirmation. Mark `real-kinds`: done. Last chapter of the
183
+ part: apply §Closing a part (the close names the part by its title and
184
+ routes back to the menu; do NOT lead into the next part from here).