@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.
Files changed (27) hide show
  1. package/dist/cli/tutorial/sm-tutorial/SKILL.md +19 -10
  2. package/dist/cli/tutorial/sm-tutorial/references/_core.md +68 -14
  3. package/dist/cli/tutorial/sm-tutorial/references/_manifest.yml +22 -9
  4. package/dist/cli/tutorial/sm-tutorial/references/fixtures.md +10 -13
  5. package/dist/cli/tutorial/sm-tutorial/references/part-authoring.md +2 -2
  6. package/dist/cli/tutorial/sm-tutorial/references/part-cli.md +1 -1
  7. package/dist/cli/tutorial/sm-tutorial/references/part-connect-harness.md +12 -9
  8. package/dist/cli/tutorial/sm-tutorial/references/part-fundamentals.md +85 -82
  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 +2 -2
  11. package/dist/cli/tutorial/sm-tutorial/references/part-mcp.md +4 -4
  12. package/dist/cli/tutorial/sm-tutorial/references/part-plugins.md +1 -1
  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 +2 -2
  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-REAKWFJX.js → chunk-22XUPND3.js} +3 -3
  20. package/dist/ui/{chunk-OFDQMBSJ.js → chunk-4CXAL43H.js} +1 -1
  21. package/dist/ui/{chunk-IUZM6XLN.js → chunk-HWQTV6ZL.js} +1 -1
  22. package/dist/ui/{chunk-HGM5UYEG.js → chunk-ISIHN6HU.js} +19 -19
  23. package/dist/ui/{chunk-EQ72PEHT.js → chunk-NBXEOYS4.js} +1 -1
  24. package/dist/ui/index.html +2 -2
  25. package/dist/ui/{main-XRWWHCSW.js → main-Z4RJNI4X.js} +3 -3
  26. package/dist/ui/{styles-Q4NCOJQY.css → styles-L6FZYH7X.css} +1 -1
  27. package/package.json +1 -1
@@ -132,18 +132,27 @@ Apply §Provider detection from `_core.md`. Persist the result into
132
132
 
133
133
  ### 4. Two-terminals heads-up (one time)
134
134
 
135
+ Agent-only: in the `cd` block below, substitute `<cwd>` with the
136
+ tester's actual cwd (the absolute path of the folder the tutorial is
137
+ running in) so the command is copy-pasteable, same substitution as
138
+ every other `<cwd>` mention.
139
+
135
140
  > ⚠️ Heads up: throughout the tutorial you'll be using **two
136
141
  > terminals**.
137
142
  >
138
143
  > 1. **This terminal**: the one you're using right now to talk to
139
144
  > me (Claude Code). I show you the commands, you paste me the
140
145
  > output, and I verify.
141
- > 2. **A second terminal**: open it now (new window or tab). In it
142
- > run `cd <cwd>` so it's anchored **exactly to this folder**.
146
+ > 2. **A second terminal**: open it now (new window or tab), then run
147
+ > the command below so it's anchored **exactly to this folder**.
143
148
  > That's where you copy and paste every `sm` command.
144
- >
149
+
150
+ ```bash
151
+ cd <cwd>
152
+ ```
153
+
145
154
  > Keep both terminals open until the end. If you accidentally close
146
- > the second one, reopen it and `cd <cwd>` again.
155
+ > the second one, reopen it and run that `cd` again.
147
156
  >
148
157
  > Got the second terminal open and anchored to the folder? Confirm
149
158
  > before we move on.
@@ -298,7 +307,7 @@ When a part begins, honour its `preflight` from the manifest:
298
307
  `preflight: seed` to fast-forward into them directly, see the `seed`
299
308
  case below; `portfolio-init` is just Part 1's flavour of that,
300
309
  handling the Part 0 to Part 1 transition.)
301
- - **`backstage-init`** (Part 6 `extend`): silently, with no
310
+ - **`backstage-init`** (Part 7 `extend`): silently, with no
302
311
  narration: run `sm init --no-scan` from the cwd, then `Edit` the
303
312
  freshly created `.skillmapignore` to append the tutorial's
304
313
  internal entries (the `sm-tutorial.md` / `findings.md` /
@@ -309,13 +318,13 @@ When a part begins, honour its `preflight` from the manifest:
309
318
  the dir was already initialised by an earlier part, that is fine:
310
319
  the DB already exists, skip the init and just ensure the fixture
311
320
  files are present.
312
- - **`reuse`** (Part 7 `cli`): assumes the prologue fixture and
313
- `.skill-map/` already exist; nothing to lay. The menu offers Part 7
321
+ - **`reuse`** (Part 8 `cli`): assumes the prologue fixture and
322
+ `.skill-map/` already exist; nothing to lay. The menu offers Part 8
314
323
  only once its `prereq` (`fundamentals`) is done, so the state is
315
324
  there. If `.skill-map/` is somehow missing, point the tester back to
316
325
  the prologue rather than re-initialising mid-part.
317
- - **`seed`** (the campaign parts `connect-harness` / `maintain` /
318
- `mcp` / `live-site`): the part builds on the accumulating portfolio
326
+ - **`seed`** (the campaign parts `connect-harness` / `run-harness` /
327
+ `maintain` / `mcp` / `live-site`): the part builds on the accumulating portfolio
319
328
  harness, but the tester may have jumped straight here from the menu.
320
329
  On entry, read the state file:
321
330
  - If every predecessor campaign part up the `prereq` chain is `done`
@@ -361,7 +370,7 @@ All three are specified in `_core.md`:
361
370
  `<provider_dir>/skills/demo-skill/`,
362
371
  `<provider_dir>/commands/demo-command.md`, `notes/todo.md`,
363
372
  `notes/demo-guideline.md`, `notes/private-credentials.md`), the
364
- Part 6 fixture if `extend` ran
373
+ Part 7 fixture if `extend` ran
365
374
  (`<provider_dir>/agents/master-agent.md`,
366
375
  `<provider_dir>/skills/master-skill/`, `notes/ideas.md`,
367
376
  `.skill-map/plugins/`), `link-validation/` if the CLI part ran,
@@ -185,12 +185,16 @@ first kind quoted, the second kind never.
185
185
  `findings.md` (in the cwd). Reactive, not proactive: only offer
186
186
  the findings log when the tester flags something, asks "is that
187
187
  normal?", or pastes an error. Never on a clean OK.
188
- 6. **One step at a time inside a chapter.** Finish a chapter (mark
189
- it `done`), then **auto-advance** to the next chapter's
190
- Announcement in the same response, unless the manifest entry is
191
- `pace: per-step` (then ask "¿seguimos?" between steps, as the
192
- fundamentals part does today). The continue-prompt at a **part
193
- boundary** routes back to the ToC menu.
188
+ 6. **The chapter's confirmation IS the go-ahead.** When the tester
189
+ confirms a chapter, mark it `done` and advance straight to the next
190
+ chapter's Announcement. NEVER ask a separate "¿seguimos?" / "shall
191
+ we continue?" between chapters, the per-chapter confirmation already
192
+ gates advancement and a second question is exactly the redundancy
193
+ testers complain about. The ONLY continue-prompt is at a **part
194
+ boundary**, where you route back to the ToC menu. (`pace` controls
195
+ batching only, see the per-step cycle: `per-step` walks one chapter
196
+ per exchange, `auto-advance` may chain chapters that need no tester
197
+ action; neither asks "¿seguimos?".)
194
198
  7. **If the state file already exists** when invoked, do not
195
199
  overwrite anything. Read it, show progress, offer to continue,
196
200
  pick another part, or start over (the last requires explicit
@@ -270,9 +274,11 @@ For every chapter:
270
274
  3. **The tester's part**: the command block(s) and instructions,
271
275
  bundled into one flow, closed by the single confirmation.
272
276
  4. **Verification**: read their reply. If something errored, suggest
273
- a fix before advancing. If fine, mark `done`. Honour the part's
274
- `pace`: `auto-advance` moves straight into the next chapter's
275
- Announcement; `per-step` asks "¿seguimos?" first.
277
+ a fix before advancing. If fine, mark `done` and move straight into
278
+ the next chapter's Announcement (the confirmation is the go-ahead,
279
+ Inviolable rule #6, NO "¿seguimos?"). `pace` only decides batching:
280
+ `per-step` presents one chapter per exchange, `auto-advance` may
281
+ chain chapters that need no tester action into one response.
276
282
 
277
283
  ## Routing + menu (orchestrator)
278
284
 
@@ -281,20 +287,52 @@ For every chapter:
281
287
  the book ToC, numbered, and let the tester pick a part by number.
282
288
  Part 0 (the prologue) is option 1, the recommended starting point,
283
289
  so a brand-new tester just types `1`. Do NOT auto-enter a part; the
284
- menu is the entry point every time. On later renders, prefix any
285
- completed part's title with `✓ `.
290
+ menu is the entry point every time. On later renders, mark completed
291
+ parts with a `✓` in their description line, not on the title (see
292
+ §Menu format).
286
293
  - **Which parts to list**: parts in `order`, `status: active` only
287
294
  (`planned` parts are hidden). A part with a `seed` (the campaign
288
295
  parts) is always shown, even out of order, its `preflight: seed`
289
296
  fast-forwards the project into it (SKILL.md §Entering a part). A
290
- part with a `prereq` but NO `seed` (Part 7 `cli`) is shown only once
297
+ part with a `prereq` but NO `seed` (Part 8 `cli`) is shown only once
291
298
  its `prereq` is `done`.
292
- - **After the tester picks**: walk that part; when it ends, return to
293
- this menu.
299
+ - **After the tester picks**: walk that part; when it ends, run
300
+ §Closing a part (a tester-facing close, then this menu).
294
301
  - **Adding content** is data-only: a new chapter in a part (or a new
295
302
  `part-<id>.md` + a manifest row). Keep chapter-id prefixes matching
296
303
  the file name so dispatch stays mechanical.
297
304
 
305
+ ### Closing a part
306
+
307
+ A part must FEEL finished before the menu comes back: the tester
308
+ should never slide into the next part as if it auto-continued. When a
309
+ part's last chapter (the last in `_manifest.yml` order) is confirmed,
310
+ before re-rendering the menu emit a short tester-facing close:
311
+
312
+ - A `✓` line naming the part just finished BY ITS TITLE (from
313
+ `_manifest.yml`), not the internal "Part N" index, which is off by
314
+ one from the menu numbering the tester sees.
315
+ - One line recapping what they built or learned (same source as the
316
+ menu description).
317
+ - A hand-off line: back to the menu, pick the next part.
318
+
319
+ Then render the menu (§Menu format) with this part now marked done (a
320
+ `✓` in its description line, not on the title); its intro may lean to
321
+ "what's next" on a post-part render. The last
322
+ chapter's own confirmation stays scoped to that chapter, it does NOT
323
+ promise or pre-announce the next part, the close and the menu own the
324
+ transition. Sample (Claude variant, mirror the tester's language,
325
+ apply the host rendering rule):
326
+
327
+ > ✓ Listo, terminaste **El proyecto desde cero**. Levantaste un
328
+ > proyecto real, su handbook y el harness `.claude/` con sus primeros
329
+ > nodos.
330
+ >
331
+ > Volvés al menú, elegí con qué seguir.
332
+
333
+ If every active part is now `✓` (nothing left to pick), skip the menu
334
+ and go straight to §Final wrap-up.
335
+
298
336
  ### Menu format
299
337
 
300
338
  Render the menu numbered and formatted (NOT a bare list), translated
@@ -302,6 +340,11 @@ to the tester's language. A one-line intro, then per part a **bold
302
340
  numbered title line** (number + title + `(~M min)`) as plain prose,
303
341
  immediately followed by a single-level `> ` blockquote one-line
304
342
  description (what the part covers, derived from its title + chapters).
343
+ A **completed part** keeps its plain title (NO `✓` on the title line)
344
+ and swaps its description for the done marker: `> ✓ ` plus a short
345
+ "already done" note (e.g. `✓ Ya la hiciste.`). The green check lives
346
+ inside the content, mirroring the `✓` confirmations used elsewhere,
347
+ never as a title prefix.
305
348
  NO blank line between a title and its description; ONE blank line
306
349
  between parts; NO outer blockquote around the whole menu. Close with a
307
350
  short "¿Cuál?" / "Which one?" on its own line. Sample (Claude variant,
@@ -325,6 +368,17 @@ single blockquote" rule: the intro, the bold titles and the trailing
325
368
  non-Claude hosts the `> ` collapses to plain prose, indent each
326
369
  description two spaces so it stays subordinate to its title.
327
370
 
371
+ Same menu after Part 1 is done (the `✓` sits in the description line,
372
+ the title stays plain):
373
+
374
+ ```
375
+ **1. El mapa en vivo** (~12 min)
376
+ > ✓ Ya la hiciste.
377
+
378
+ **2. El proyecto desde cero** (~8 min)
379
+ > Arrancás un proyecto real (un portfolio) y su harness `.claude/`.
380
+ ```
381
+
328
382
  ## Resume / restart
329
383
 
330
384
  When re-invoked and the state file already exists, do NOT repeat
@@ -44,13 +44,13 @@ parts:
44
44
  - id: kinds ; title: "The other kinds appear" ; est_min: 1
45
45
  - id: first-edit ; title: "Your first edit (the watcher reacts)" ; est_min: 1
46
46
  - id: connectors ; title: "The connectors light up" ; est_min: 2
47
- - id: inspector ; title: "The inspector and linked nodes" ; est_min: 1
47
+ - id: inspector ; title: "The inspector and connections" ; est_min: 1
48
48
  - id: edit-link ; title: "Edit a link, the topology changes" ; est_min: 3
49
49
  - id: workspace ; title: "Navigate the workspace (files, search, isolate)" ; est_min: 2
50
50
  - id: ignore ; title: "Silence a file via .skillmapignore" ; est_min: 2
51
51
 
52
52
  - id: extend
53
- order: 6
53
+ order: 7
54
54
  title: "Extend skill-map for the site"
55
55
  # Spans three chapter libraries; dispatch by chapter-id prefix:
56
56
  # settings-* -> part-settings.md
@@ -80,7 +80,7 @@ parts:
80
80
  - id: authoring-6-upgrade ; title: "Try `sm plugins upgrade`" ; est_min: 2
81
81
 
82
82
  - id: cli
83
- order: 7
83
+ order: 8
84
84
  title: "The CLI in depth"
85
85
  step_file: part-cli.md
86
86
  pace: auto-advance
@@ -130,8 +130,21 @@ parts:
130
130
  - id: links ; title: "Mentions (@) and references between assets" ; est_min: 3
131
131
  - id: confidence ; title: "Connector confidence (opacity = certainty)" ; est_min: 2
132
132
 
133
- - id: maintain
133
+ - id: run-harness
134
134
  order: 3
135
+ title: "Run the harness (your site, live)"
136
+ step_file: part-run-harness.md
137
+ pace: auto-advance
138
+ preflight: seed
139
+ seed: harness-connected # fast-forward to here if the earlier parts are not done
140
+ prereq: connect-harness
141
+ status: active
142
+ chapters:
143
+ - id: generate ; title: "The agent generates the HTML in public/" ; est_min: 3
144
+ - id: serve ; title: "node server.js: your portfolio, live next to the graph" ; est_min: 3
145
+
146
+ - id: maintain
147
+ order: 4
135
148
  title: "Maintain the site"
136
149
  step_file: part-maintain.md
137
150
  pace: auto-advance
@@ -148,7 +161,7 @@ parts:
148
161
  - id: versions ; title: "Versions: sm bump and history" ; est_min: 2
149
162
 
150
163
  - id: mcp
151
- order: 4
164
+ order: 5
152
165
  title: "MCP" # a chapter apart, just before the finale
153
166
  step_file: part-mcp.md
154
167
  pace: auto-advance
@@ -160,8 +173,8 @@ parts:
160
173
  - id: mcp-node ; title: "content-editor declares an MCP tool; the mcp:// node appears" ; est_min: 3
161
174
 
162
175
  - id: live-site
163
- order: 5
164
- title: "The site, live" # the finale / climax
176
+ order: 6
177
+ title: "Ship the site (the full publish pipeline)" # the finale / climax
165
178
  step_file: part-live-site.md
166
179
  pace: auto-advance
167
180
  preflight: seed
@@ -169,7 +182,7 @@ parts:
169
182
  prereq: connect-harness
170
183
  status: active
171
184
  chapters:
172
- - id: generate ; title: "The agent generates the HTML in public/" ; est_min: 3
173
- - id: serve ; title: "node server.js: your portfolio, live, next to the graph" ; est_min: 3
185
+ - id: pipeline ; title: "Run /publish end to end (check-links, brief, deploy runbook)" ; est_min: 4
186
+ - id: golive ; title: "Ship it: the richer site live next to the full graph" ; est_min: 3
174
187
 
175
188
  findings_file: "./findings.md"
@@ -1,12 +1,12 @@
1
1
  # Fixture templates
2
2
 
3
3
  Fixtures the orchestrator lays for the auto-fixtured parts. Two sets
4
- today: the **master fixture** (Part 6, "Extend skill-map",
4
+ today: the **master fixture** (Part 7, "Extend skill-map",
5
5
  `backstage-init`) right below, and the **portfolio fixture** (Part 1,
6
6
  "The project from zero", `portfolio-init`) at the end of this file.
7
7
  Read the set for the part being entered.
8
8
 
9
- ## Master fixture (Part 6): layout (per provider)
9
+ ## Master fixture (Part 7): layout (per provider)
10
10
 
11
11
  Per §Provider detection in `SKILL.md`, the `<provider_dir>`
12
12
  placeholder resolves to `.claude/` or `.agents/skills/` depending
@@ -134,7 +134,7 @@ Per finding:
134
134
  Laid backstage before the tester's `sm init` in Part 1. The Express
135
135
  skeleton (`server.js`, `package.json`, `public/index.html`) is plain
136
136
  scaffolding, not `.md`, so the scan ignores it; it makes the project
137
- real and runnable (Part 5 starts it). The one boot node is the
137
+ real and runnable (Part 3 runs it, Part 6 ships it). The one boot node is the
138
138
  handbook `AGENTS.md`. On `agent-skills` / Antigravity (no `agent`
139
139
  kind) the harness still works: the agent member is created as a skill
140
140
  in a later chapter.
@@ -154,15 +154,12 @@ Layout:
154
154
 
155
155
  ### File: `AGENTS.md` (kind: markdown, the boot node)
156
156
 
157
- ```markdown
158
- ---
159
- name: portfolio-handbook
160
- description: |
161
- Operating manual for this portfolio site: how its pages get
162
- written, checked, and published by the .claude/ harness.
163
- tags: [docs, portfolio]
164
- ---
157
+ No frontmatter: a real handbook is plain prose (this repo's own
158
+ `AGENTS.md` and the tutorial's `CLAUDE.md` carry none either), and a
159
+ `name:` that differs from the filename only confuses the tester. The
160
+ node displays by its path, `AGENTS.md`.
165
161
 
162
+ ```markdown
166
163
  # Portfolio handbook
167
164
 
168
165
  A small static portfolio site, served by Express (`server.js`). The
@@ -196,7 +193,7 @@ app.listen(port, () => console.log(`Portfolio live at http://localhost:${port}`)
196
193
  }
197
194
  ```
198
195
 
199
- ### File: `public/index.html` (not scanned; placeholder until Part 5)
196
+ ### File: `public/index.html` (not scanned; placeholder until Part 3)
200
197
 
201
198
  ```html
202
199
  <!doctype html>
@@ -237,7 +234,7 @@ any cross-links:
237
234
  3. `<provider_dir>/agents/content-editor.md` <- part-project-kickoff.md, chapter `first-agent`.
238
235
  4. `docs/STYLE.md` and `docs/DEPLOY.md` <- part-project-kickoff.md, chapter `real-kinds`.
239
236
 
240
- ### Seed snapshot: `harness-connected` (start of Parts 3, 4, 5)
237
+ ### Seed snapshot: `harness-connected` (start of Parts 3-6)
241
238
 
242
239
  Everything in `harness-built`, PLUS the Part 2 wiring:
243
240
 
@@ -1,6 +1,6 @@
1
- # Part 6 (c): Extend skill-map - build plugins (step library, `authoring-*` ids)
1
+ # Part 7 (c): Extend skill-map - build plugins (step library, `authoring-*` ids)
2
2
 
3
- Step bodies for the plugin-authoring chapters of Part 6.
3
+ Step bodies for the plugin-authoring chapters of Part 7.
4
4
  The SKILL.md orchestrator dispatches each `authoring-*` chapter id
5
5
  here; `settings-*` ids it dispatches to `part-settings.md`.
6
6
 
@@ -1,4 +1,4 @@
1
- # Part 7: The CLI in depth - step library
1
+ # Part 8: The CLI in depth - step library
2
2
 
3
3
  The deep-dive into the rest of the CLI: browsing verbs, ASCII graph + export, broken-ref issues, the `.sm` annotation consent prompt, and validating links to folders outside the scan scope. `pace: auto-advance` (walk straight into the next chapter's Announcement once one is marked done) and it reuses the fundamentals fixture and DB built in Part 0 (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
 
@@ -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
  ---
@@ -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).