@skill-map/cli 0.53.3 → 0.53.5
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 +108 -48
- package/dist/cli/tutorial/sm-tutorial/references/_core.md +13 -11
- package/dist/cli/tutorial/sm-tutorial/references/_manifest.yml +18 -16
- package/dist/cli/tutorial/sm-tutorial/references/fixtures.md +43 -17
- package/dist/cli/tutorial/sm-tutorial/references/part-authoring.md +7 -7
- package/dist/cli/tutorial/sm-tutorial/references/part-cli.md +3 -3
- package/dist/cli/tutorial/sm-tutorial/references/part-connect-harness.md +32 -17
- package/dist/cli/tutorial/sm-tutorial/references/part-fundamentals.md +86 -53
- package/dist/cli/tutorial/sm-tutorial/references/part-live-site.md +2 -2
- package/dist/cli/tutorial/sm-tutorial/references/part-maintain.md +42 -43
- package/dist/cli/tutorial/sm-tutorial/references/part-mcp.md +6 -6
- package/dist/cli/tutorial/sm-tutorial/references/part-plugins.md +5 -4
- package/dist/cli/tutorial/sm-tutorial/references/part-project-kickoff.md +11 -7
- package/dist/cli/tutorial/sm-tutorial/references/part-run-harness.md +34 -8
- package/dist/cli/tutorial/sm-tutorial/references/part-settings.md +6 -5
- package/dist/cli.js +3 -3
- package/dist/index.js +3 -3
- package/dist/kernel/index.js +3 -3
- package/dist/ui/{chunk-ISIHN6HU.js → chunk-7OJPO3XD.js} +6 -6
- package/dist/ui/{chunk-22XUPND3.js → chunk-MWDBZ2BE.js} +1 -1
- package/dist/ui/index.html +1 -1
- package/dist/ui/{main-Z4RJNI4X.js → main-QLIHFXBC.js} +2 -2
- package/package.json +1 -1
|
@@ -145,7 +145,7 @@ every other `<cwd>` mention.
|
|
|
145
145
|
> output, and I verify.
|
|
146
146
|
> 2. **A second terminal**: open it now (new window or tab), then run
|
|
147
147
|
> the command below so it's anchored **exactly to this folder**.
|
|
148
|
-
> That's where you copy and paste every
|
|
148
|
+
> That's where you copy and paste every command I give you to run.
|
|
149
149
|
|
|
150
150
|
```bash
|
|
151
151
|
cd <cwd>
|
|
@@ -160,9 +160,19 @@ cd <cwd>
|
|
|
160
160
|
### 5. Write the universal files and show the menu
|
|
161
161
|
|
|
162
162
|
Pre-flight does NOT pre-lay any part's fixture and does NOT auto-enter
|
|
163
|
-
a part. It writes only the
|
|
164
|
-
the menu:
|
|
165
|
-
|
|
163
|
+
a part. It writes only the universal files every part needs, then
|
|
164
|
+
routes to the menu:
|
|
165
|
+
|
|
166
|
+
- `.skillmapignore` (block below). Universal, not a part fixture:
|
|
167
|
+
every part scans, and every part needs the tutorial's own machinery
|
|
168
|
+
kept out of the map (this skill's `.claude/skills/sm-tutorial/` dir,
|
|
169
|
+
`findings.md`, `tutorial-state.yml`, the CLI part's
|
|
170
|
+
`link-validation/`, and so on). Writing it here, once, before any
|
|
171
|
+
`sm init`, is what guarantees no part-entry can forget it on a
|
|
172
|
+
direct jump from the menu. `sm init` only writes `.skillmapignore`
|
|
173
|
+
when it is absent, so the tester's later `sm init` leaves this one
|
|
174
|
+
intact. Parts that need more append their own lines on entry (the
|
|
175
|
+
portfolio's `node_modules/` and `public/`).
|
|
166
176
|
- `findings.md` (block below).
|
|
167
177
|
- `tutorial-state.yml` (template below; it starts with `parts: {}`,
|
|
168
178
|
empty, a part's entry is added the first time the tester picks it).
|
|
@@ -171,14 +181,31 @@ Then **route** per §Routing + menu in `_core.md`: render the **start
|
|
|
171
181
|
menu** (numbered, Part 0 the prologue as option 1, the recommended
|
|
172
182
|
first pick). The tester picks a part by number; that part's own
|
|
173
183
|
`preflight` (see §Entering a part) lays its fixture when it begins.
|
|
174
|
-
Part 0's demo fixture (the `demo-agent`
|
|
175
|
-
|
|
184
|
+
Part 0's demo fixture (the `demo-agent` block below) is laid by its
|
|
185
|
+
`taught-init` entry, not here.
|
|
176
186
|
|
|
177
187
|
## Fixture and state templates
|
|
178
188
|
|
|
179
|
-
The `findings.md
|
|
180
|
-
in pre-flight); the `demo-agent.md`
|
|
181
|
-
|
|
189
|
+
The `.skillmapignore`, `findings.md`, and `tutorial-state.yml` here are
|
|
190
|
+
universal (written in pre-flight); the `demo-agent.md` is Part 0's
|
|
191
|
+
fixture (laid by its `taught-init` entry).
|
|
192
|
+
|
|
193
|
+
The **full Part 0 demo fixture** is the boot `demo-agent.md` above plus
|
|
194
|
+
the files the prologue's own chapters lay as taught steps, exactly this
|
|
195
|
+
set: `<provider_dir>/agents/demo-agent.md`,
|
|
196
|
+
`<provider_dir>/skills/demo-skill/`,
|
|
197
|
+
`<provider_dir>/commands/demo-command.md`, `notes/todo.md`,
|
|
198
|
+
`notes/demo-guideline.md`, `notes/demo-guideline2.md`,
|
|
199
|
+
`notes/private-credentials.md`. This is the
|
|
200
|
+
single source for that list. Four entry points delete exactly this set
|
|
201
|
+
when the prologue ran first in the dir: `portfolio-init`, the campaign
|
|
202
|
+
`seed` fast-forward, and `backstage-init` (Part 6), each so the part's
|
|
203
|
+
own fixture starts from a clean slate, plus start-over (§Menu, resume,
|
|
204
|
+
wrap-up). Part 7 `cli` is the inverse
|
|
205
|
+
consumer: its `prologue-built` seed *lays* this fixture (the
|
|
206
|
+
connector-chapter subset, without `notes/private-credentials.md`)
|
|
207
|
+
instead of deleting it, see `fixtures.md` §Seed snapshots. Keep the list
|
|
208
|
+
here in sync if a prologue chapter adds or drops a demo file.
|
|
182
209
|
|
|
183
210
|
`<provider_dir>/agents/demo-agent.md`:
|
|
184
211
|
```markdown
|
|
@@ -284,60 +311,96 @@ When a part begins, honour its `preflight` from the manifest:
|
|
|
284
311
|
|
|
285
312
|
- **`taught-init`** (Part 0): silently, before the tester's `sm init`
|
|
286
313
|
in the `init` chapter, `Write` the demo fixture (the
|
|
287
|
-
`<provider_dir>/agents/demo-agent.md` boot node
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
314
|
+
`<provider_dir>/agents/demo-agent.md` boot node, in the §Fixture
|
|
315
|
+
blocks above), substituting `<provider_dir>` per detection. The
|
|
316
|
+
universal `.skillmapignore` is already on disk from pre-flight, so
|
|
317
|
+
the first scan never sees the tutorial's own files; nothing to lay
|
|
318
|
+
here for it. The tester runs `sm init` themselves in the first
|
|
319
|
+
chapter (`sm init` only writes `.skillmapignore` when absent, so it
|
|
320
|
+
leaves the pre-flight one intact).
|
|
293
321
|
- **`portfolio-init`** (Part 1 `project-kickoff`): the campaign's
|
|
294
322
|
real project begins. Backstage, before the tester's `sm init` in
|
|
295
323
|
the `kickoff` chapter: (1) if the prologue ran first in this dir,
|
|
296
|
-
clear its demo fixture so the map starts clean, delete ONLY the
|
|
297
|
-
Part 0 fixture
|
|
298
|
-
`<provider_dir>/skills/demo-skill/`,
|
|
299
|
-
`<provider_dir>/commands/demo-command.md`, `notes/todo.md`,
|
|
300
|
-
`notes/demo-guideline.md`, `notes/private-credentials.md`) plus the
|
|
324
|
+
clear its demo fixture so the map starts clean, delete ONLY the full
|
|
325
|
+
Part 0 demo fixture set (§Fixture and state templates) plus the
|
|
301
326
|
stale `.skill-map/` DB (a fresh `sm init` rebuilds it), never the
|
|
302
327
|
tester's own files; (2) `Write` the portfolio fixture from
|
|
303
328
|
`references/fixtures.md` (the Express skeleton + the handbook
|
|
304
|
-
`AGENTS.md`); (3)
|
|
305
|
-
|
|
329
|
+
`AGENTS.md`); (3) append the portfolio additions (`node_modules/`,
|
|
330
|
+
`public/`) to the universal `.skillmapignore` pre-flight already
|
|
331
|
+
wrote (its tutorial internals are already there). The tester runs `sm init`
|
|
306
332
|
themselves in the first chapter. (The later campaign parts use
|
|
307
333
|
`preflight: seed` to fast-forward into them directly, see the `seed`
|
|
308
334
|
case below; `portfolio-init` is just Part 1's flavour of that,
|
|
309
335
|
handling the Part 0 to Part 1 transition.)
|
|
310
|
-
- **`backstage-init`** (Part
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
336
|
+
- **`backstage-init`** (Part 6 `extend`): the part teaches plugins on
|
|
337
|
+
its own **master fixture**, distinct from both the demo and the
|
|
338
|
+
portfolio, so on entry make the master fixture the only one on disk.
|
|
339
|
+
Silently, with no narration: (1) clear whatever prior-part fixture is
|
|
340
|
+
present so the master map starts clean (never the tester's own files;
|
|
341
|
+
the universal `.skillmapignore` stays):
|
|
342
|
+
- Part 0 demo fixture present (the tester came from the prologue) →
|
|
343
|
+
delete the full Part 0 demo fixture set (§Fixture and state
|
|
344
|
+
templates);
|
|
345
|
+
- portfolio fixture present instead (the tester ran the campaign) →
|
|
346
|
+
delete everything `portfolio-init` and the campaign chapters lay
|
|
347
|
+
(see `fixtures.md` §Portfolio fixture + §Seed snapshots);
|
|
348
|
+
- in either of those cases also drop the stale `.skill-map/` DB so a
|
|
349
|
+
fresh init rebuilds it.
|
|
350
|
+
(2) run `sm init --no-scan` from the cwd (the universal
|
|
351
|
+
`.skillmapignore` from pre-flight is already on disk, so init leaves
|
|
352
|
+
it intact and the tutorial's own files stay out of the scan); (3)
|
|
353
|
+
`Write` the part's fixture (read `references/fixtures.md` for the
|
|
354
|
+
verbatim `master-agent` / `master-skill` / `notes/ideas` files; skip
|
|
355
|
+
kinds the provider doesn't claim). If nothing needed clearing and the
|
|
356
|
+
dir was already initialised with the master fixture in place (Part 6
|
|
357
|
+
re-entry), that is fine: skip the init and just ensure the fixture
|
|
320
358
|
files are present.
|
|
321
|
-
- **`
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
359
|
+
- **`seed: prologue-built`** (Part 7 `cli`): the part reads the **Part 0
|
|
360
|
+
demo fixture**, NOT the cumulative portfolio, so on entry make that
|
|
361
|
+
fixture the one on disk. Read the state, then:
|
|
362
|
+
- Demo fixture already present (the tester came straight from the
|
|
363
|
+
prologue) → just `sm scan`, nothing to lay.
|
|
364
|
+
- **Portfolio** fixture present instead (the tester ran the campaign)
|
|
365
|
+
→ clear it first (the inverse of `portfolio-init`: delete the
|
|
366
|
+
portfolio fixture, everything `portfolio-init` and the campaign
|
|
367
|
+
chapters lay, see `fixtures.md` §Portfolio fixture + §Seed snapshots,
|
|
368
|
+
plus the stale `.skill-map/` DB; never the tester's own files), then
|
|
369
|
+
lay the `prologue-built` snapshot from `fixtures.md` (§Seed
|
|
370
|
+
snapshots), `sm init`, `sm scan`.
|
|
371
|
+
- Nothing there → lay the snapshot, `sm init`, `sm scan`.
|
|
326
372
|
- **`seed`** (the campaign parts `connect-harness` / `run-harness` /
|
|
327
373
|
`maintain` / `mcp` / `live-site`): the part builds on the accumulating portfolio
|
|
328
374
|
harness, but the tester may have jumped straight here from the menu.
|
|
329
375
|
On entry, read the state file:
|
|
330
376
|
- If every predecessor campaign part up the `prereq` chain is `done`
|
|
331
377
|
→ reuse the accumulated state; an `sm scan` to refresh is enough,
|
|
332
|
-
nothing to lay.
|
|
378
|
+
nothing to lay. **`mcp` is the exception**: it is ordered last,
|
|
379
|
+
after `extend` (Part 6) and `cli` (Part 7), which both replace the
|
|
380
|
+
portfolio on disk with their own master / demo fixture, so its
|
|
381
|
+
accumulated state cannot be trusted to still be the portfolio.
|
|
382
|
+
`mcp` therefore ALWAYS re-lays its `harness-connected` snapshot on
|
|
383
|
+
entry (clearing a master / demo fixture first if one is present,
|
|
384
|
+
the same clears the `backstage-init` and `prologue-built` cases
|
|
385
|
+
do), then `sm init` if `.skill-map/` is missing and `sm scan`,
|
|
386
|
+
exactly like the fast-forward branch below.
|
|
333
387
|
- Else → **fast-forward, silently** (backstage, do not narrate the
|
|
334
|
-
plumbing):
|
|
388
|
+
plumbing): first, if the prologue ran first in this dir, clear the
|
|
389
|
+
full Part 0 demo fixture set (§Fixture and state templates) so the
|
|
390
|
+
seeded campaign map does not carry the prologue's demo nodes (the
|
|
391
|
+
`sm scan` below reconciles the removed files out of the DB). Then
|
|
392
|
+
lay the part's `seed` snapshot from
|
|
335
393
|
`references/fixtures.md` (§Seed snapshots) by following its
|
|
336
394
|
checklist, copy each file's canonical content from the chapter the
|
|
337
395
|
row names, apply the `EDIT` rows on top, substituting
|
|
338
396
|
`<provider_dir>` and skipping provider-unsupported kinds per
|
|
339
|
-
`_core.md`.
|
|
340
|
-
`
|
|
397
|
+
`_core.md`. The snapshot's `.skillmapignore` additions
|
|
398
|
+
(`node_modules/`, `public/`) are appended to the universal
|
|
399
|
+
`.skillmapignore` pre-flight already wrote, so the tutorial's own
|
|
400
|
+
`.claude/skills/sm-tutorial/` files stay out of the scan even on a
|
|
401
|
+
direct jump here. Then run `sm init` if `.skill-map/` is missing
|
|
402
|
+
(it will not overwrite that `.skillmapignore`), then `sm scan` so
|
|
403
|
+
the map reflects the seeded harness. Mark the skipped
|
|
341
404
|
predecessor campaign parts `skipped` in the state (they stay in the
|
|
342
405
|
menu for later). Then emit exactly ONE tester-facing line:
|
|
343
406
|
|
|
@@ -359,18 +422,15 @@ All three are specified in `_core.md`:
|
|
|
359
422
|
the **numbered start menu** (Part 0 is option 1, the recommended
|
|
360
423
|
first pick); the menu (the ToC from `_manifest.yml`, numbered,
|
|
361
424
|
completed parts ticked, `planned` parts hidden, `prereq` gating only
|
|
362
|
-
|
|
425
|
+
seedless parts, none today since Part 7 `cli` now self-seeds) is the
|
|
426
|
+
entry point on the first
|
|
363
427
|
invocation and after every part closes / on resume. Render it with
|
|
364
428
|
the format in `_core.md` §Menu format.
|
|
365
429
|
- **Resume / restart**: §Resume / restart. On start-over, the exact
|
|
366
430
|
wipe list is whatever the tester's parts actually created:
|
|
367
431
|
`tutorial-state.yml`, `findings.md`, `.skillmapignore`,
|
|
368
|
-
`.skill-map/`, the Part 0 fixture
|
|
369
|
-
|
|
370
|
-
`<provider_dir>/skills/demo-skill/`,
|
|
371
|
-
`<provider_dir>/commands/demo-command.md`, `notes/todo.md`,
|
|
372
|
-
`notes/demo-guideline.md`, `notes/private-credentials.md`), the
|
|
373
|
-
Part 7 fixture if `extend` ran
|
|
432
|
+
`.skill-map/`, the full Part 0 demo fixture set (§Fixture and state
|
|
433
|
+
templates), the Part 6 fixture if `extend` ran
|
|
374
434
|
(`<provider_dir>/agents/master-agent.md`,
|
|
375
435
|
`<provider_dir>/skills/master-skill/`, `notes/ideas.md`,
|
|
376
436
|
`.skill-map/plugins/`), `link-validation/` if the CLI part ran,
|
|
@@ -149,9 +149,10 @@ first kind quoted, the second kind never.
|
|
|
149
149
|
pre-flight only (both silent, no narration):
|
|
150
150
|
- `sm version` ONCE to verify the install.
|
|
151
151
|
- `sm init --no-scan` ONCE for parts whose manifest entry is
|
|
152
|
-
`preflight: backstage-init`, to provision `.skill-map/`
|
|
153
|
-
|
|
154
|
-
tutorial's
|
|
152
|
+
`preflight: backstage-init`, to provision `.skill-map/` BEFORE
|
|
153
|
+
any scan. The universal `.skillmapignore` written in pre-flight
|
|
154
|
+
already keeps the tutorial's own files out, so there is nothing
|
|
155
|
+
to append here.
|
|
155
156
|
Parts with `preflight: taught-init` (e.g. Part 0) do NOT run
|
|
156
157
|
`sm init` in pre-flight, the tester runs it as the first taught
|
|
157
158
|
step. You also DO NOT run `sm plugins create` on their behalf;
|
|
@@ -162,10 +163,10 @@ first kind quoted, the second kind never.
|
|
|
162
163
|
`Read` files to verify what the tester modified. Everything else
|
|
163
164
|
the tester runs.
|
|
164
165
|
2. **Configuration files have two-mode access.**
|
|
165
|
-
- **Backstage setup (you DO edit)**:
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
`.md` files.
|
|
166
|
+
- **Backstage setup (you DO edit)**: writing the universal
|
|
167
|
+
`.skillmapignore` in pre-flight and appending a part's own
|
|
168
|
+
additions on entry (the portfolio's `node_modules/` / `public/`);
|
|
169
|
+
writing the state file; writing fixture `.md` files.
|
|
169
170
|
- **Teach moment (you DO NOT edit)**: any change to
|
|
170
171
|
`.skill-map/settings.json`, `.skill-map/settings.local.json`,
|
|
171
172
|
`.skillmapignore`, or `.gitignore` that is part of a chapter
|
|
@@ -292,10 +293,11 @@ For every chapter:
|
|
|
292
293
|
§Menu format).
|
|
293
294
|
- **Which parts to list**: parts in `order`, `status: active` only
|
|
294
295
|
(`planned` parts are hidden). A part with a `seed` (the campaign
|
|
295
|
-
parts) is always shown, even out of order, its
|
|
296
|
-
fast-forwards the project into it (SKILL.md
|
|
297
|
-
part with a `prereq` but NO `seed`
|
|
298
|
-
its `prereq` is `done
|
|
296
|
+
parts plus Part 7 `cli`) is always shown, even out of order, its
|
|
297
|
+
`preflight: seed` fast-forwards the project into it (SKILL.md
|
|
298
|
+
§Entering a part). A part with a `prereq` but NO `seed` would be
|
|
299
|
+
shown only once its `prereq` is `done`; no active part is in that
|
|
300
|
+
state today (Part 7 `cli` used to be, now it self-seeds).
|
|
299
301
|
- **After the tester picks**: walk that part; when it ends, run
|
|
300
302
|
§Closing a part (a tester-facing close, then this menu).
|
|
301
303
|
- **Adding content** is data-only: a new chapter in a part (or a new
|
|
@@ -15,11 +15,12 @@
|
|
|
15
15
|
# step_files list form when a part spans several files; dispatch
|
|
16
16
|
# by chapter-id prefix.
|
|
17
17
|
# pace per-step | auto-advance (see _core.md per-step cycle).
|
|
18
|
-
# preflight taught-init | backstage-init | portfolio-init | seed
|
|
19
|
-
#
|
|
20
|
-
# seed which
|
|
21
|
-
#
|
|
22
|
-
#
|
|
18
|
+
# preflight taught-init | backstage-init | portfolio-init | seed
|
|
19
|
+
# (see _core.md rule #1 + SKILL.md §Entering a part).
|
|
20
|
+
# seed which snapshot to fast-forward to when this part is
|
|
21
|
+
# entered out of order (see fixtures.md §Seed snapshot:*).
|
|
22
|
+
# Campaign parts use a cumulative portfolio snapshot;
|
|
23
|
+
# Part 8 `cli` uses the standalone `prologue-built` demo.
|
|
23
24
|
# prereq recommended predecessor. Gates the menu ONLY for a part
|
|
24
25
|
# with NO `seed`; a seedable part is always shown (its
|
|
25
26
|
# seed bridges the gap, predecessors get marked `skipped`).
|
|
@@ -50,7 +51,7 @@ parts:
|
|
|
50
51
|
- id: ignore ; title: "Silence a file via .skillmapignore" ; est_min: 2
|
|
51
52
|
|
|
52
53
|
- id: extend
|
|
53
|
-
order:
|
|
54
|
+
order: 6
|
|
54
55
|
title: "Extend skill-map for the site"
|
|
55
56
|
# Spans three chapter libraries; dispatch by chapter-id prefix:
|
|
56
57
|
# settings-* -> part-settings.md
|
|
@@ -80,12 +81,13 @@ parts:
|
|
|
80
81
|
- id: authoring-6-upgrade ; title: "Try `sm plugins upgrade`" ; est_min: 2
|
|
81
82
|
|
|
82
83
|
- id: cli
|
|
83
|
-
order:
|
|
84
|
+
order: 7
|
|
84
85
|
title: "The CLI in depth"
|
|
85
86
|
step_file: part-cli.md
|
|
86
87
|
pace: auto-advance
|
|
87
|
-
preflight:
|
|
88
|
-
|
|
88
|
+
preflight: seed # self-seeds the Part 0 demo fixture
|
|
89
|
+
seed: prologue-built # the prologue demo fixture (not the cumulative portfolio)
|
|
90
|
+
prereq: fundamentals # recommended predecessor; cli self-seeds, so it is always shown
|
|
89
91
|
status: active
|
|
90
92
|
chapters:
|
|
91
93
|
- id: browse ; title: "list / show / check" ; est_min: 3
|
|
@@ -140,8 +142,9 @@ parts:
|
|
|
140
142
|
prereq: connect-harness
|
|
141
143
|
status: active
|
|
142
144
|
chapters:
|
|
143
|
-
- id: generate
|
|
144
|
-
- id: serve
|
|
145
|
+
- id: generate ; title: "The agent generates the HTML in public/" ; est_min: 3
|
|
146
|
+
- id: serve ; title: "node server.js: your portfolio, live next to the graph" ; est_min: 3
|
|
147
|
+
- id: editor-live ; title: "Let the content-editor agent write a posts page (optional)" ; est_min: 3
|
|
145
148
|
|
|
146
149
|
- id: maintain
|
|
147
150
|
order: 4
|
|
@@ -155,14 +158,13 @@ parts:
|
|
|
155
158
|
chapters:
|
|
156
159
|
- id: broken-ref ; title: "A ref breaks (you rename DEPLOY.md)" ; est_min: 3
|
|
157
160
|
- id: analyzers ; title: "The analyzer catalogue (what sm check catches)" ; est_min: 3
|
|
158
|
-
- id: orphans ; title: "Orphans (
|
|
161
|
+
- id: orphans ; title: "Orphans (a page nobody links to)" ; est_min: 2
|
|
159
162
|
- id: reserved ; title: "Reserved names" ; est_min: 2
|
|
160
163
|
- id: sidecar ; title: "Annotations .sm and consent" ; est_min: 3
|
|
161
|
-
- id: versions ; title: "Versions: sm bump and history" ; est_min: 2
|
|
162
164
|
|
|
163
165
|
- id: mcp
|
|
164
|
-
order:
|
|
165
|
-
title: "MCP" #
|
|
166
|
+
order: 8
|
|
167
|
+
title: "MCP" # standalone appendix, ordered last; ALWAYS re-seeds harness-connected (extend/cli wipe the portfolio before it)
|
|
166
168
|
step_file: part-mcp.md
|
|
167
169
|
pace: auto-advance
|
|
168
170
|
preflight: seed
|
|
@@ -173,7 +175,7 @@ parts:
|
|
|
173
175
|
- id: mcp-node ; title: "content-editor declares an MCP tool; the mcp:// node appears" ; est_min: 3
|
|
174
176
|
|
|
175
177
|
- id: live-site
|
|
176
|
-
order:
|
|
178
|
+
order: 5
|
|
177
179
|
title: "Ship the site (the full publish pipeline)" # the finale / climax
|
|
178
180
|
step_file: part-live-site.md
|
|
179
181
|
pace: auto-advance
|
|
@@ -1,12 +1,24 @@
|
|
|
1
1
|
# Fixture templates
|
|
2
2
|
|
|
3
|
-
Fixtures the orchestrator lays for the auto-fixtured parts. Two
|
|
4
|
-
|
|
5
|
-
`backstage-init`) right below, and the **portfolio
|
|
6
|
-
"The project from zero", `portfolio-init`) at the
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
3
|
+
Fixtures the orchestrator lays for the auto-fixtured parts. Two full
|
|
4
|
+
templates live here: the **master fixture** (Part 6, "Extend
|
|
5
|
+
skill-map", `backstage-init`) right below, and the **portfolio
|
|
6
|
+
fixture** (Part 1, "The project from zero", `portfolio-init`) at the
|
|
7
|
+
end of this file. The **Part 0 demo fixture** is not templated here:
|
|
8
|
+
its content lives in `SKILL.md` (§Fixture and state templates) and
|
|
9
|
+
`part-fundamentals.md`, and the `prologue-built` seed snapshot below
|
|
10
|
+
just points at those. Read the set for the part being entered.
|
|
11
|
+
|
|
12
|
+
**Authoring note (command fixtures).** A `command` node's H1 is a plain
|
|
13
|
+
title (`# publish`), never the slash form (`# /publish`). The `slash`
|
|
14
|
+
extractor reads a `/name` token anywhere in the body, the H1 included,
|
|
15
|
+
as an `invoke`, so `# /publish` makes the command invoke itself and
|
|
16
|
+
`sm check` emits a spurious `core/link-self-loop` the tester has no
|
|
17
|
+
context for. Holds for every command fixture wherever it is defined
|
|
18
|
+
(today: the prologue `demo-command`, the `publish` command, and the
|
|
19
|
+
`reserved` chapter's `init`).
|
|
20
|
+
|
|
21
|
+
## Master fixture (Part 6): layout (per provider)
|
|
10
22
|
|
|
11
23
|
Per §Provider detection in `SKILL.md`, the `<provider_dir>`
|
|
12
24
|
placeholder resolves to `.claude/` or `.agents/skills/` depending
|
|
@@ -134,7 +146,7 @@ Per finding:
|
|
|
134
146
|
Laid backstage before the tester's `sm init` in Part 1. The Express
|
|
135
147
|
skeleton (`server.js`, `package.json`, `public/index.html`) is plain
|
|
136
148
|
scaffolding, not `.md`, so the scan ignores it; it makes the project
|
|
137
|
-
real and runnable (Part 3 runs it, Part
|
|
149
|
+
real and runnable (Part 3 runs it, Part 5 ships it). The one boot node is the
|
|
138
150
|
handbook `AGENTS.md`. On `agent-skills` / Antigravity (no `agent`
|
|
139
151
|
kind) the harness still works: the agent member is created as a skill
|
|
140
152
|
in a later chapter.
|
|
@@ -205,15 +217,16 @@ app.listen(port, () => console.log(`Portfolio live at http://localhost:${port}`)
|
|
|
205
217
|
|
|
206
218
|
### `.skillmapignore` additions
|
|
207
219
|
|
|
208
|
-
Append to the
|
|
209
|
-
|
|
210
|
-
|
|
220
|
+
Append to the universal `.skillmapignore` (written in pre-flight, see
|
|
221
|
+
`SKILL.md`): `node_modules/` (the Express install) and `public/`
|
|
222
|
+
(generated HTML, not part of the harness graph).
|
|
211
223
|
|
|
212
|
-
## Seed snapshots (for `preflight: seed
|
|
224
|
+
## Seed snapshots (for `preflight: seed`)
|
|
213
225
|
|
|
214
|
-
When the orchestrator enters a
|
|
215
|
-
predecessors are not `done
|
|
216
|
-
|
|
226
|
+
When the orchestrator enters a seedable part out of order (the campaign
|
|
227
|
+
parts when their predecessors are not `done`, or Part 7 `cli` when the
|
|
228
|
+
demo fixture is not the one on disk), it fast-forwards the project by
|
|
229
|
+
laying the snapshot below, then `sm init` (if `.skill-map/` is missing) +
|
|
217
230
|
`sm scan`. These are **checklists, not content**: each row names a file
|
|
218
231
|
and the chapter that holds its canonical content. Lay each file by
|
|
219
232
|
copying the content from the named chapter (substitute `<provider_dir>`
|
|
@@ -243,6 +256,19 @@ Everything in `harness-built`, PLUS the Part 2 wiring:
|
|
|
243
256
|
7. EDIT `AGENTS.md`: append the two hub bullets (mention `@content-editor`, invoke `/publish`) <- part-connect-harness.md, chapter `links`.
|
|
244
257
|
8. EDIT `<provider_dir>/agents/content-editor.md`: add the `[style guide](../../docs/STYLE.md)` line <- part-connect-harness.md, chapter `links`.
|
|
245
258
|
|
|
246
|
-
After laying a snapshot the map matches the state a tester would
|
|
247
|
-
the END of the part just before the one being entered.
|
|
259
|
+
After laying a campaign snapshot the map matches the state a tester would
|
|
260
|
+
have at the END of the part just before the one being entered.
|
|
261
|
+
|
|
262
|
+
### Seed snapshot: `prologue-built` (Part 7 `cli`)
|
|
263
|
+
|
|
264
|
+
NOT cumulative and NOT the portfolio: this is the **Part 0 demo
|
|
265
|
+
fixture**, the six standalone demo nodes with `notes/todo` wired as the
|
|
266
|
+
hub, the clean state (`✓ No issues`) at the end of the prologue's
|
|
267
|
+
connector chapters. Part 7 only reads it. Because it is a different
|
|
268
|
+
fixture from the portfolio, entry first resets any portfolio on disk
|
|
269
|
+
(see SKILL.md §Entering a part, the `cli` case).
|
|
270
|
+
|
|
271
|
+
1. `<provider_dir>/agents/demo-agent.md` <- SKILL.md §Fixture and state templates. (The `.skillmapignore` is universal, already on disk from pre-flight; the snapshot does not lay it.)
|
|
272
|
+
2. `<provider_dir>/skills/demo-skill/SKILL.md`, `<provider_dir>/commands/demo-command.md`, `notes/todo.md`, `notes/demo-guideline.md`, `notes/demo-guideline2.md` <- part-fundamentals.md, chapter `kinds`.
|
|
273
|
+
3. EDIT `notes/todo.md`: wire the hub bullets pointing at the five other nodes <- part-fundamentals.md, chapter `connectors`.
|
|
248
274
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Part
|
|
1
|
+
# Part 6 (c): Extend skill-map - build plugins (step library, `authoring-*` ids)
|
|
2
2
|
|
|
3
|
-
Step bodies for the plugin-authoring chapters of Part
|
|
3
|
+
Step bodies for the plugin-authoring chapters of Part 6.
|
|
4
4
|
The SKILL.md orchestrator dispatches each `authoring-*` chapter id
|
|
5
5
|
here; `settings-*` ids it dispatches to `part-settings.md`.
|
|
6
6
|
|
|
@@ -11,11 +11,11 @@ view-slot, and confirm the contribution lands in the UI.
|
|
|
11
11
|
|
|
12
12
|
## Precondition check
|
|
13
13
|
|
|
14
|
-
Verify that `.skill-map/` exists in the cwd (
|
|
15
|
-
|
|
16
|
-
the
|
|
17
|
-
this is the expected state regardless
|
|
18
|
-
the plugins chapters first). If `.skill-map/` is missing, the fixture
|
|
14
|
+
Verify that `.skill-map/` exists in the cwd (the `extend` part's
|
|
15
|
+
`backstage-init` preflight ran `sm init --no-scan` to provision it;
|
|
16
|
+
the universal `.skillmapignore` from pre-flight keeps the tutorial's
|
|
17
|
+
own files out of the scan, so this is the expected state regardless
|
|
18
|
+
of whether the tester ran the plugins chapters first). If `.skill-map/` is missing, the fixture
|
|
19
19
|
is corrupted: surface the mismatch ("the project bootstrap is
|
|
20
20
|
gone, re-invoke the tutorial from an empty dir") and stop.
|
|
21
21
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Part
|
|
1
|
+
# Part 7: The CLI in depth - step library
|
|
2
2
|
|
|
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
|
|
3
|
+
The deep-dive into the rest of the CLI: browsing verbs, ASCII graph + export, broken-ref issues, the `.sm` annotation consent prompt, and validating links to folders outside the scan scope. `pace: auto-advance` (walk straight into the next chapter's Announcement once one is marked done) and `preflight: seed` with the `prologue-built` snapshot: it self-seeds its own copy of the Part 0 demo fixture, so it works even if the campaign already replaced that fixture with the portfolio (see SKILL.md §Entering a part, the `cli` case). Shared conventions (tone, provider detection / substitution, the `> ` rendering rule, the per-step cycle) live in `_core.md`; do not restate them here.
|
|
4
4
|
|
|
5
5
|
## Chapter `browse` - list / show / check (~3 min)
|
|
6
6
|
|
|
@@ -13,7 +13,7 @@ sm show .claude/skills/demo-skill/SKILL.md
|
|
|
13
13
|
sm check
|
|
14
14
|
```
|
|
15
15
|
|
|
16
|
-
Expected: you see the
|
|
16
|
+
Expected: you see the 6 fixture nodes listed with their kind: `demo-skill` (skill), `demo-agent` (agent), `demo-command` (command), `notes/todo` (`markdown`, the catch-all per the `kinds` chapter), and the two guideline notes `notes/demo-guideline` and `notes/demo-guideline2` (both `markdown`, the hub's confidence pair: a faint `mentions` at 0.50 and a resolved `references` at 1.00). `check` reads the persisted `scan_issues` table, it does NOT re-walk the filesystem. The fixture is clean (the connector / inspector chapters captured the latest state before Ctrl+C), so the verb prints `✓ No issues`. We will plant one in the `issues` chapter and watch the rule catch it after a fresh `sm scan`.
|
|
17
17
|
|
|
18
18
|
Mark `browse`: done.
|
|
19
19
|
|
|
@@ -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:
|
|
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
|
|
|
@@ -55,9 +55,9 @@ Wait for confirmation. Mark `check-links`: done.
|
|
|
55
55
|
|
|
56
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
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:
|
|
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. The frontmatter fence (`---`) MUST sit on column 0 with no leading spaces: present the block below exactly as written, and if the tester pastes it indented, have them strip the leading whitespace. An indented `---` does not parse as YAML, so the `publish` node would land without its `name`, `description`, or `shortcut`.
|
|
59
59
|
|
|
60
|
-
> Create `.claude/commands/publish.md` with exactly this content:
|
|
60
|
+
> Create `.claude/commands/publish.md` with exactly this content (the first line is `---`, nothing before it):
|
|
61
61
|
|
|
62
62
|
```markdown
|
|
63
63
|
---
|
|
@@ -73,7 +73,7 @@ args:
|
|
|
73
73
|
required: true
|
|
74
74
|
---
|
|
75
75
|
|
|
76
|
-
#
|
|
76
|
+
# publish
|
|
77
77
|
|
|
78
78
|
The one command you run when the site is ready to go out.
|
|
79
79
|
|
|
@@ -99,6 +99,12 @@ Continue the tester message:
|
|
|
99
99
|
> One node, three connectors, three link kinds. The harness is
|
|
100
100
|
> starting to look like a real graph.
|
|
101
101
|
>
|
|
102
|
+
> 💡 Tip: to tidy every node into a clean layout, click the
|
|
103
|
+
> **Re-arrange layout** button in the map toolbar (tooltip
|
|
104
|
+
> "Re-arrange the visible nodes"). Handy whenever the graph starts to
|
|
105
|
+
> look crowded. If you've dragged nodes by hand it asks for
|
|
106
|
+
> confirmation first, otherwise it just re-arranges.
|
|
107
|
+
>
|
|
102
108
|
> Did the three arrows appear?
|
|
103
109
|
|
|
104
110
|
Wait for confirmation. You MAY use `Read` on the file afterwards to verify it landed. Mark `publish`: done.
|
|
@@ -150,34 +156,43 @@ Wait for confirmation. You MAY use `Read` on the two files afterwards to verify
|
|
|
150
156
|
|
|
151
157
|
## Chapter `confidence` - How sure is each link (~3 min)
|
|
152
158
|
|
|
153
|
-
**Context**:
|
|
159
|
+
**Context**: skill-map estimates how sure it is of every connection and shows that as opacity. In this harness every link resolves to a real node, so they all read solid (1.00); the faint, low-confidence case is the one the tester met in the prologue (the bare `@demo-guideline` mention that had nothing to resolve to). Here we open the Inspector on a real harness node, read the all-solid numbers, and point back to that prologue contrast. Mirrors the prologue's connectors beat on the portfolio.
|
|
154
160
|
|
|
155
161
|
No file edits in this chapter, pure observation on the graph the tester just built.
|
|
156
162
|
|
|
157
163
|
Tell the tester:
|
|
158
164
|
|
|
159
165
|
> Last beat of this part: how sure is skill-map about each connection?
|
|
160
|
-
>
|
|
161
|
-
>
|
|
162
|
-
>
|
|
166
|
+
> It estimates a **confidence** for every link and draws it as opacity:
|
|
167
|
+
> the surer a connection is real, the more solid the arrow; the less
|
|
168
|
+
> sure, the more translucent.
|
|
163
169
|
>
|
|
164
170
|
> Open the Inspector for the `publish` node (click it on the **Map**).
|
|
165
171
|
> Scroll down to the **Connections** panel and read the **Outgoing**
|
|
166
|
-
> rows. Each row shows the link kind and a confidence badge
|
|
172
|
+
> rows. Each row shows the link kind and a confidence badge, and here
|
|
173
|
+
> every one reads **1.00**:
|
|
174
|
+
>
|
|
175
|
+
> - `publish -> docs/DEPLOY.md` (`references`) is a markdown link to a
|
|
176
|
+
> file that exists on disk, so skill-map is certain.
|
|
177
|
+
> - `publish -> content-editor` (`mentions`) resolves to the real
|
|
178
|
+
> content-editor agent, and `publish -> check-links` (`invokes`)
|
|
179
|
+
> resolves to the real check-links skill, so both are certain too.
|
|
167
180
|
>
|
|
168
|
-
>
|
|
169
|
-
>
|
|
170
|
-
>
|
|
171
|
-
> -
|
|
172
|
-
>
|
|
173
|
-
>
|
|
174
|
-
>
|
|
181
|
+
> Your whole harness reads solid because every link lands on a real
|
|
182
|
+
> node, that is what a clean, fully wired graph looks like. So what
|
|
183
|
+
> does a *low*-confidence connector look like? You saw one back in the
|
|
184
|
+
> prologue: `@demo-guideline` was a bare `@`-mention pointing at a
|
|
185
|
+
> note, and a bare `@handle` only firmly resolves to an agent, so it
|
|
186
|
+
> had nothing to land on and stayed a soft guess at **0.50**, drawn
|
|
187
|
+
> translucent. The fix there was one character: `@demo-guideline2.md`,
|
|
188
|
+
> the same handle plus a `.md`, resolved to the real file and jumped to
|
|
189
|
+
> **1.00**.
|
|
175
190
|
>
|
|
176
191
|
> The number is the certainty, and the opacity on the canvas is just
|
|
177
192
|
> that number drawn as transparency: a glance at the **Map** tells you
|
|
178
193
|
> which connections are rock solid and which are skill-map's best
|
|
179
194
|
> guess.
|
|
180
195
|
>
|
|
181
|
-
> Do you see
|
|
196
|
+
> Do you see every badge reading 1.00 in the Inspector?
|
|
182
197
|
|
|
183
198
|
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).
|