@skill-map/cli 0.68.0 → 0.69.0
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 +14 -15
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/manifest.json +0 -3
- package/dist/cli/tutorial/sm-tutorial/references/_core.md +15 -6
- package/dist/cli/tutorial/sm-tutorial/references/_manifest.json +93 -119
- package/dist/cli/tutorial/sm-tutorial/references/_manifest.yml +46 -70
- package/dist/cli/tutorial/sm-tutorial/references/fixtures.md +5 -6
- package/dist/cli/tutorial/sm-tutorial/references/part-authoring.md +23 -6
- package/dist/cli/tutorial/sm-tutorial/references/part-basic-daily.md +98 -76
- package/dist/cli/tutorial/sm-tutorial/references/part-basic-fundamentals.md +21 -20
- package/dist/cli/tutorial/sm-tutorial/references/part-basic-kickoff.md +151 -6
- package/dist/cli/tutorial/sm-tutorial/references/part-cli.md +1 -1
- package/dist/cli/tutorial/sm-tutorial/references/part-daily-loop.md +114 -100
- package/dist/cli/tutorial/sm-tutorial/references/part-fundamentals.md +27 -31
- package/dist/cli/tutorial/sm-tutorial/references/part-project-kickoff.md +171 -14
- package/dist/cli/tutorial/sm-tutorial/scripts/state.js +4 -4
- package/dist/cli.js +708 -334
- package/dist/conformance/index.js +3 -3
- package/dist/index.js +11 -10
- package/dist/kernel/index.d.ts +27 -17
- package/dist/kernel/index.js +11 -10
- package/dist/migrations/001_initial.sql +7 -3
- package/dist/ui/chunk-E7GLGHVY.js +1 -0
- package/dist/ui/chunk-RLRSNHYG.js +3 -0
- package/dist/ui/{chunk-4F53HBGG.js → chunk-RRRXQNG6.js} +1 -1
- package/dist/ui/{chunk-3GDWM5VM.js → chunk-SI4MGFOW.js} +1 -1
- package/dist/ui/index.html +1 -1
- package/dist/ui/{main-ZYRIR6DB.js → main-23NGLEUB.js} +3 -3
- package/migrations/001_initial.sql +7 -3
- package/package.json +2 -2
- package/dist/cli/tutorial/sm-tutorial/references/part-basic-connect.md +0 -166
- package/dist/cli/tutorial/sm-tutorial/references/part-connect-harness.md +0 -175
- package/dist/ui/chunk-BJUBDHJR.js +0 -3
- package/dist/ui/chunk-PU5OP5RN.js +0 -1
- /package/dist/ui/{chunk-KMHXNOFZ.js → chunk-SXSNTF26.js} +0 -0
|
@@ -155,11 +155,8 @@ Tell the tester:
|
|
|
155
155
|
> the link finds the real file and draws a solid arrow. Same kind of
|
|
156
156
|
> note, one `.md` apart: one resolves, the other does not.
|
|
157
157
|
>
|
|
158
|
-
>
|
|
159
|
-
>
|
|
160
|
-
> lands on a real file; the broken one would read 0.50 (a penalty, not
|
|
161
|
-
> "half sure") and is not drawn at all. The exact per-link numbers live
|
|
162
|
-
> in the inspector, next chapter.
|
|
158
|
+
> 💡 Tip: if the nodes are crowded, the map toolbar has a **Re-arrange
|
|
159
|
+
> layout** button that tidies things up.
|
|
163
160
|
>
|
|
164
161
|
> Confirm when you see the two arrows plus the broken-reference marker
|
|
165
162
|
> on the hub. If an arrow is missing, refresh the browser and let me
|
|
@@ -175,9 +172,6 @@ by hand in `edit-link`). If an arrow is missing, do not advance. Mark
|
|
|
175
172
|
The canvas only draws the resolved arrows; the full per-link breakdown,
|
|
176
173
|
including the broken one, lives in the Inspector. Open it on the hub.
|
|
177
174
|
|
|
178
|
-
> 💡 Tip: if the nodes are crowded, the map toolbar has a **Re-arrange
|
|
179
|
-
> layout** button that tidies things up.
|
|
180
|
-
>
|
|
181
175
|
> 🆕 Open the Inspector for **Demo TODO list** (click the node). Find
|
|
182
176
|
> the **Connections** section: **Outgoing** and **Incoming**.
|
|
183
177
|
> Demo TODO list lists **3 links** under Outgoing (the canvas drew two
|
|
@@ -192,6 +186,10 @@ including the broken one, lives in the Inspector. Open it on the hub.
|
|
|
192
186
|
> Open `demo-guideline` and it shows **0**: the broken link never landed
|
|
193
187
|
> on it. Three outgoing links on the hub, but only two reach a node.
|
|
194
188
|
>
|
|
189
|
+
> 💡 Tip: skill-map draws each connector's **confidence** as opacity.
|
|
190
|
+
> Both drawn arrows are solid (1.00) because each lands on a real file;
|
|
191
|
+
> the broken one is flagged instead of drawn.
|
|
192
|
+
>
|
|
195
193
|
> Let me know when you see it.
|
|
196
194
|
|
|
197
195
|
Mark `inspector`: done.
|
|
@@ -250,17 +248,19 @@ each ends with its own confirmation. Do NOT prepend an intro line to a block.
|
|
|
250
248
|
> Tell me when the tree is open.
|
|
251
249
|
|
|
252
250
|
> At the top of the sidebar there's a search box (placeholder
|
|
253
|
-
> `Search…`). Type `guideline`. Watch
|
|
254
|
-
>
|
|
255
|
-
>
|
|
256
|
-
> filters
|
|
251
|
+
> `Search…`). Type `guideline`. Watch the tree narrow to the two
|
|
252
|
+
> guideline nodes. The search matches a node's name, path, or
|
|
253
|
+
> description, and filters live, no Enter needed. The **Map** stays
|
|
254
|
+
> put: by default the search filters only the files list, not the map
|
|
255
|
+
> (the tip below changes that).
|
|
257
256
|
>
|
|
258
|
-
> Now clear the box. All four nodes come back
|
|
259
|
-
>
|
|
257
|
+
> Now clear the box. All four nodes come back in the tree. Confirm you
|
|
258
|
+
> saw it filter and then restore.
|
|
260
259
|
|
|
261
|
-
> Last one. In the tree, find the
|
|
262
|
-
>
|
|
263
|
-
>
|
|
260
|
+
> Last one. In the tree, find the `notes/todo` row (the **Demo TODO
|
|
261
|
+
> list** hub, the tree labels rows by file name): at its right edge
|
|
262
|
+
> there's a small **sitemap** icon (tooltip "Isolate this node and its
|
|
263
|
+
> direct links on the map"). Click it.
|
|
264
264
|
>
|
|
265
265
|
> The Map collapses to **Demo TODO list** plus only the nodes it draws
|
|
266
266
|
> an arrow to (`demo-skill`, `demo-guideline2`). That's how you focus on
|
|
@@ -271,8 +271,9 @@ each ends with its own confirmation. Do NOT prepend an intro line to a block.
|
|
|
271
271
|
> four nodes return.
|
|
272
272
|
>
|
|
273
273
|
> 💡 Tip: the map-icon button next to the search box controls whether
|
|
274
|
-
> the search also filters the **Map** (
|
|
275
|
-
>
|
|
274
|
+
> the search also filters the **Map** (off by default, which is why the
|
|
275
|
+
> map stayed put while only the tree narrowed). Click it on if you want
|
|
276
|
+
> a search to filter the map too.
|
|
276
277
|
>
|
|
277
278
|
> Did the map isolate and then restore?
|
|
278
279
|
|
|
@@ -314,7 +315,7 @@ host-dependent rendering rule. Per Inviolable rule #2, the agent does NOT touch
|
|
|
314
315
|
├── .agents/skills/
|
|
315
316
|
│ ├── demo-skill/SKILL.md
|
|
316
317
|
│ └── sm-tutorial/SKILL.md ← the tutorial you loaded
|
|
317
|
-
├── .skill-map/ ← project DB + settings
|
|
318
|
+
├── .skill-map/ ← project DB + settings
|
|
318
319
|
├── .skillmapignore ← the file we're about to edit
|
|
319
320
|
└── notes/
|
|
320
321
|
├── todo.md
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Part 1 (basic track): The
|
|
1
|
+
# Part 1 (basic track): The harness from zero (step library, `kickoff-*` ids)
|
|
2
2
|
|
|
3
3
|
The campaign turns real here for the **basic track** (the open-standard family:
|
|
4
4
|
`agent-skills`, `antigravity`). After the abstract prologue, the tester starts an
|
|
@@ -6,9 +6,12 @@ actual project: a tiny personal **portfolio website**, fully static, served by a
|
|
|
6
6
|
~15-line Express server, plus the `.agents/skills/` **harness** that maintains
|
|
7
7
|
it. skill-map maps the harness (the `.md` assets and how they reference each
|
|
8
8
|
other); the site itself is plain HTML the harness produces (the daily loop, Part
|
|
9
|
-
|
|
10
|
-
and they connect by **markdown references** (`[text](path)`).
|
|
11
|
-
|
|
9
|
+
2, runs and ships it). This lens authors only **skills** and **markdown notes**,
|
|
10
|
+
and they connect by **markdown references** (`[text](path)`). This part runs end
|
|
11
|
+
to end: it boots the project and grows its harness members (the `kickoff` to
|
|
12
|
+
`real-kinds` chapters), then wires them into a connected graph (the `check-links`
|
|
13
|
+
to `confidence` chapters). `pace: per-step`, `preflight: portfolio-init`. Shared
|
|
14
|
+
conventions live in `_core.md`. Narrate with
|
|
12
15
|
`<provider_dir>` = `.agents/skills`.
|
|
13
16
|
|
|
14
17
|
The orchestrator's `portfolio-init` pre-flight (backstage, silent) has already
|
|
@@ -94,7 +97,7 @@ Tell the tester:
|
|
|
94
97
|
|
|
95
98
|
> I added the first real member of your harness: a skill called `content-editor`
|
|
96
99
|
> (its job is to write the site's pages). A new `skill` node appeared on the map.
|
|
97
|
-
> Right now it stands alone; in
|
|
100
|
+
> Right now it stands alone; later in this part we wire it to the handbook and the
|
|
98
101
|
> style guide.
|
|
99
102
|
>
|
|
100
103
|
> 💡 Tip: I create these harness files for you. If you'd like to see what's
|
|
@@ -135,6 +138,148 @@ Tell the tester:
|
|
|
135
138
|
>
|
|
136
139
|
> See the skill and the docs in the map?
|
|
137
140
|
|
|
138
|
-
Wait for confirmation. Mark `real-kinds`: done.
|
|
141
|
+
Wait for confirmation. Mark `real-kinds`: done.
|
|
142
|
+
|
|
143
|
+
## Chapter `check-links` - The link checker (~3 min)
|
|
144
|
+
|
|
145
|
+
**Context**: the harness needs a guard that runs before publishing, a skill that
|
|
146
|
+
checks the site's internal links resolve before it ships. We only create the
|
|
147
|
+
`skill` node here; the `publish` skill in the next chapter is what calls it.
|
|
148
|
+
|
|
149
|
+
Lay the `check-links` skill (content lives in `fixtures-data/`). Backstage
|
|
150
|
+
(silent):
|
|
151
|
+
|
|
152
|
+
```
|
|
153
|
+
node .claude/skills/sm-tutorial/scripts/fixtures.js lay harness --only "__PROVIDER__/skills/check-links/SKILL.md" --provider <provider> --lang <lang>
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
Tell the tester:
|
|
157
|
+
|
|
158
|
+
> So I added that guard: a skill called `check-links`. A new `skill` node
|
|
159
|
+
> appeared on the **Map**, alone for now; the next chapter gives it a caller.
|
|
160
|
+
>
|
|
161
|
+
> See the new skill node?
|
|
162
|
+
|
|
163
|
+
Wait for confirmation. Mark `check-links`: done.
|
|
164
|
+
|
|
165
|
+
## Chapter `publish` - The publish skill (~4 min)
|
|
166
|
+
|
|
167
|
+
**Context**: the chapter where the graph comes alive. The `publish` skill ties
|
|
168
|
+
three pieces together in one body: it points at the link checker, at the content
|
|
169
|
+
editor, and at the deploy runbook. On this lens all three are **markdown
|
|
170
|
+
references**, so three reference arrows light up from a single new node.
|
|
171
|
+
|
|
172
|
+
Tell the tester to create the file themselves (Inviolable rule #2). Render the
|
|
173
|
+
block as a **top-level fenced code block** at column 0, NOT inside the `> `
|
|
174
|
+
blockquote, so the frontmatter fences (`---`) land on column 0 (indented fences
|
|
175
|
+
never parse, and `sm check` then warns `frontmatter-malformed`).
|
|
176
|
+
|
|
177
|
+
> Create `<provider_dir>/publish/SKILL.md` with exactly this content (the first
|
|
178
|
+
> line is `---`, nothing before it):
|
|
179
|
+
|
|
180
|
+
```markdown
|
|
181
|
+
---
|
|
182
|
+
name: publish
|
|
183
|
+
description: |
|
|
184
|
+
Publishes the portfolio: runs the link check, hands off to the
|
|
185
|
+
content editor for any last fixes, then follows the deploy runbook.
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
# publish
|
|
189
|
+
|
|
190
|
+
The one skill you run when the site is ready to go out.
|
|
191
|
+
|
|
192
|
+
## Steps
|
|
193
|
+
1. Run the [check-links](../check-links/SKILL.md) skill on the pages in public/. If it reports broken links, stop and fix them first.
|
|
194
|
+
2. If a page needs a content fix, hand the change to [content-editor](../content-editor/SKILL.md).
|
|
195
|
+
3. Follow the [deploy runbook](../../../docs/DEPLOY.md): regenerate pages, run the link check, start the server.
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
Continue the tester message:
|
|
199
|
+
|
|
200
|
+
> Save it. Watch the **Map**: **three** new arrows light up at once from the new
|
|
201
|
+
> `publish` node, all of them `references` (the open standard's one connector),
|
|
202
|
+
> each landing on a real file:
|
|
203
|
+
>
|
|
204
|
+
> - `publish -> check-links` (the `[check-links](../check-links/SKILL.md)` link)
|
|
205
|
+
> - `publish -> content-editor` (the `[content-editor](../content-editor/SKILL.md)` link)
|
|
206
|
+
> - `publish -> docs/DEPLOY.md` (the `[deploy runbook](../../../docs/DEPLOY.md)` link)
|
|
207
|
+
>
|
|
208
|
+
> One node, three connectors, all references. On a vendor lens (claude/codex) the
|
|
209
|
+
> first two would be a `/`-invoke and an `@`-mention; the open standard wires
|
|
210
|
+
> everything with file links, and that is all this lens emits. The harness is
|
|
211
|
+
> starting to look like a real graph.
|
|
212
|
+
>
|
|
213
|
+
> 💡 Tip: to tidy the layout, click **Re-arrange layout** in the map toolbar.
|
|
214
|
+
>
|
|
215
|
+
> Did the three arrows appear?
|
|
216
|
+
|
|
217
|
+
Wait for confirmation. You MAY `Read` the file to verify the `---` fences are
|
|
218
|
+
flush at column 0 (if `sm check` flags `frontmatter-malformed`, the fences got
|
|
219
|
+
indented on paste, re-align every line flush left). Mark `publish`: done.
|
|
220
|
+
|
|
221
|
+
## Chapter `links` - The handbook becomes the hub (~4 min)
|
|
222
|
+
|
|
223
|
+
**Context**: the handbook (`AGENTS.md`) has been a lonely node since the start of
|
|
224
|
+
this part. Here it becomes the hub: two bullets point it at the content editor
|
|
225
|
+
and the publish skill. We also give the content editor a reference to the style guide it follows.
|
|
226
|
+
|
|
227
|
+
Apply both edits (content lives in `fixtures-data/`). The first appends two hub
|
|
228
|
+
bullets (markdown links) to `AGENTS.md`; the second adds the style-guide
|
|
229
|
+
reference to the content-editor skill. Backstage (silent):
|
|
230
|
+
|
|
231
|
+
```
|
|
232
|
+
node .claude/skills/sm-tutorial/scripts/fixtures.js edit agents-hub --provider <provider> --lang <lang>
|
|
233
|
+
node .claude/skills/sm-tutorial/scripts/fixtures.js edit content-editor-style --provider <provider> --lang <lang>
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
Tell the tester:
|
|
237
|
+
|
|
238
|
+
> Two edits, and the **Map** fills in. Your handbook (`AGENTS.md`) is now the hub:
|
|
239
|
+
> it points at the content editor and at the publish skill. And the content
|
|
240
|
+
> editor now reaches the style guide it follows. New arrows, all `references`:
|
|
241
|
+
>
|
|
242
|
+
> - `AGENTS.md -> content-editor` (a `[content-editor](...)` link)
|
|
243
|
+
> - `AGENTS.md -> publish` (a `[publish](...)` link)
|
|
244
|
+
> - `content-editor -> docs/STYLE.md` (a `[style guide](...)` link)
|
|
245
|
+
>
|
|
246
|
+
> The whole harness is wired end to end now: the handbook reaches the work, the
|
|
247
|
+
> work reaches the docs, and `publish` pulls the publish flow together, every
|
|
248
|
+
> connection a markdown reference, the one link the open standard documents.
|
|
249
|
+
>
|
|
250
|
+
> Did the new arrows light up?
|
|
251
|
+
|
|
252
|
+
Wait for confirmation. You MAY `Read` the two files to verify. Mark `links`: done.
|
|
253
|
+
|
|
254
|
+
## Chapter `confidence` - How sure is each link (~3 min)
|
|
255
|
+
|
|
256
|
+
No file edits, pure observation.
|
|
257
|
+
|
|
258
|
+
Tell the tester:
|
|
259
|
+
|
|
260
|
+
> Last beat of this part: how sure is skill-map about each connection? It records
|
|
261
|
+
> a **confidence** for every link and draws it as opacity: a link that resolves
|
|
262
|
+
> to a real file is solid (**1.00**), one that does not lands fainter, so a glance
|
|
263
|
+
> at the **Map** separates solid wiring from problem links.
|
|
264
|
+
>
|
|
265
|
+
> Open the Inspector for the `publish` node (click it). Scroll to the
|
|
266
|
+
> **Connections** panel and read the **Outgoing** rows. Each shows the link kind
|
|
267
|
+
> (`references`, the only kind here) and a confidence badge, every one reads
|
|
268
|
+
> **1.00**, because each link lands on a file that exists on disk.
|
|
269
|
+
>
|
|
270
|
+
> Your whole harness reads solid because every link resolves. So what does a link
|
|
271
|
+
> that does NOT resolve look like? You met one in the prologue: the
|
|
272
|
+
> `demo-guideline` link had no `.md`, so it pointed at a path that did not exist,
|
|
273
|
+
> skill-map drew no arrow and flagged it as a **broken reference**, confidence
|
|
274
|
+
> knocked to **0.50**. Adding `.md` turned it into a link that landed on the real
|
|
275
|
+
> file, and it drew a solid arrow at **1.00**.
|
|
276
|
+
>
|
|
277
|
+
> **IMPORTANT:** why does confidence matter? It mirrors how an agent resolves a
|
|
278
|
+
> reference, a deterministic name-and-path lookup, no guessing. That is cheaper
|
|
279
|
+
> and does not fail, the same reason a clean, well-named harness is worth keeping.
|
|
280
|
+
>
|
|
281
|
+
> Do you see every badge reading 1.00 in the Inspector?
|
|
282
|
+
|
|
283
|
+
Wait for confirmation. Mark `confidence`: done. Last chapter of the part: apply
|
|
139
284
|
§Closing a part (name the part by its title, route back to the menu; do NOT lead
|
|
140
285
|
into the next part from here).
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Part
|
|
1
|
+
# Part 3: The CLI for you and your agent - 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 `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
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Part
|
|
1
|
+
# Part 2: The daily loop (step library, `daily-loop`)
|
|
2
2
|
|
|
3
3
|
The campaign's payoff and finale fused into one part: the tester operates the
|
|
4
4
|
harness they built the way they would on any normal day, **for real**. Three
|
|
@@ -31,7 +31,7 @@ kind of those two nodes changes. Per chapter:
|
|
|
31
31
|
- `broken-ref`: the deploy link that breaks lives in the `publish` SKILL; fix it
|
|
32
32
|
in `.agents/skills/publish/SKILL.md` (not a `.claude/commands/` file).
|
|
33
33
|
- `reserved`: Codex has no command, so create a SKILL with a reserved name
|
|
34
|
-
instead, `Write` `.agents/skills/
|
|
34
|
+
instead, `Write` `.agents/skills/model/SKILL.md` named `model` (it shadows
|
|
35
35
|
the open-standard `COMMONS_RESERVED_NAMES`); clear it by renaming the folder +
|
|
36
36
|
`frontmatter.name` to `new-page`, exactly like the basic track's `reserved`
|
|
37
37
|
chapter, on a skill.
|
|
@@ -62,9 +62,9 @@ broken-reference markers, and confidence live.
|
|
|
62
62
|
## Chapter `setup` - Make it yours and bring it up (~5 min)
|
|
63
63
|
|
|
64
64
|
**Context**: the harness is wired (you built it in the earlier parts). Now you
|
|
65
|
-
put it to work on a real day. First, make the site yours
|
|
66
|
-
|
|
67
|
-
|
|
65
|
+
put it to work on a real day. First, make the site yours, about whatever you
|
|
66
|
+
like, then serve it and open it in the browser, the early payoff before the
|
|
67
|
+
daily loop fills it with pages. The honest beat: the HTML
|
|
68
68
|
and CSS are Layer 2 (the harness's output); skill-map maps the harness (Layer 1,
|
|
69
69
|
the `.md` files), so the site landing on disk does NOT move the graph, and that
|
|
70
70
|
is correct, not a bug. The tester runs the serve commands themselves (one of the
|
|
@@ -72,10 +72,11 @@ few non-`sm` beats); guide them, do not run them.
|
|
|
72
72
|
|
|
73
73
|
**Preparation**:
|
|
74
74
|
|
|
75
|
-
1. Ask the tester
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
web"). Persist
|
|
75
|
+
1. Ask the tester the two questions straight, with no "before we build, let's
|
|
76
|
+
make it yours" lead-in: what the site should be called (their name or a
|
|
77
|
+
title) and one line about what it is for. Keep it light; if they do not care,
|
|
78
|
+
offer defaults ("My Portfolio" / "Small, sturdy things on the web"). Persist
|
|
79
|
+
both with
|
|
79
80
|
`node .claude/skills/sm-tutorial/scripts/state.js set-identity --name "<name>" --tagline "<tagline>"`
|
|
80
81
|
(it writes `tester.site_identity` into `tutorial-state.json`).
|
|
81
82
|
2. Backstage, `Write` `public/style.css` exactly as below (Layer 2, ignored by
|
|
@@ -208,12 +209,6 @@ node server.js
|
|
|
208
209
|
> Open `http://localhost:3000`: there is your site, named after you, with a
|
|
209
210
|
> clean layout. Click **About** and back to **Home**.
|
|
210
211
|
>
|
|
211
|
-
> Now glance at the Map: it did not move. Everything you watched grow on the
|
|
212
|
-
> canvas is your harness, the `.md` files and how they reference each other
|
|
213
|
-
> (Layer 1). The pages and the stylesheet are Layer 2, what the harness
|
|
214
|
-
> produces, and skill-map maps the harness, not its output. Two layers, one
|
|
215
|
-
> project.
|
|
216
|
-
>
|
|
217
212
|
> Does the site load and look clean?
|
|
218
213
|
|
|
219
214
|
Wait for confirmation. If `node server.js` reports `Cannot find module
|
|
@@ -224,11 +219,6 @@ project root and Node is on PATH. Mark `setup`: done. Auto-advance to
|
|
|
224
219
|
|
|
225
220
|
## Chapter `add-page` - Add a page with your agent (~4 min)
|
|
226
221
|
|
|
227
|
-
**Context**: the daily move. You want a new page, so you ask your
|
|
228
|
-
`content-editor` to write it. This is the first time it runs **for real** (no
|
|
229
|
-
more playing the agent). It reads `docs/STYLE.md` and the shared stylesheet and
|
|
230
|
-
writes a new page into `public/`. The graph does not move (HTML is Layer 2).
|
|
231
|
-
|
|
232
222
|
**Preparation**: none until the tester asks.
|
|
233
223
|
|
|
234
224
|
Tell the tester:
|
|
@@ -259,6 +249,9 @@ the `> ` blockquote, do NOT drop the bar when you personalise it.
|
|
|
259
249
|
> output; the harness on the canvas is Layer 1. Your nodes are not a diagram,
|
|
260
250
|
> they are runnable, and you just ran one.
|
|
261
251
|
>
|
|
252
|
+
> If the new page is not showing, refresh the browser with F5, the site does
|
|
253
|
+
> not reload on its own.
|
|
254
|
+
>
|
|
262
255
|
> See the new page on the site, and the Map unchanged?
|
|
263
256
|
|
|
264
257
|
Wait for confirmation. Mark `add-page`: done. Auto-advance to `broken-ref`.
|
|
@@ -269,14 +262,18 @@ Wait for confirmation. Mark `add-page`: done. Auto-advance to `broken-ref`.
|
|
|
269
262
|
|
|
270
263
|
## Chapter `broken-ref` - A rename breaks a link (~4 min)
|
|
271
264
|
|
|
272
|
-
**Context**:
|
|
273
|
-
|
|
274
|
-
|
|
265
|
+
**Context**: the daily safety net, and where skill-map earns its keep: rename and
|
|
266
|
+
move things freely, and skill-map shows you exactly what you forgot to update
|
|
267
|
+
before it ships broken.
|
|
275
268
|
|
|
276
269
|
**Preparation**: none (the tester drives). Everything here is watched live on
|
|
277
270
|
the Map; no `sm` commands.
|
|
278
271
|
|
|
279
|
-
Tell the tester to rename the deploy runbook
|
|
272
|
+
Tell the tester to free the third terminal, then rename the deploy runbook
|
|
273
|
+
themselves (their file):
|
|
274
|
+
|
|
275
|
+
> In your **third terminal** (the one running `node server.js`), press
|
|
276
|
+
> **Ctrl+C** to stop the site server, then rename the deploy runbook there:
|
|
280
277
|
|
|
281
278
|
```bash
|
|
282
279
|
mv docs/DEPLOY.md docs/DEPLOYMENT.md
|
|
@@ -293,9 +290,7 @@ mv docs/DEPLOY.md docs/DEPLOYMENT.md
|
|
|
293
290
|
> point the deploy-runbook link at `docs/DEPLOYMENT.md` (the new name). Save.
|
|
294
291
|
>
|
|
295
292
|
> Watch the **Map** again: the arrow snaps back, solid, and the red marker
|
|
296
|
-
> clears, all live, no command to run.
|
|
297
|
-
> move things freely, and skill-map shows you exactly what you forgot to update
|
|
298
|
-
> before it ships broken.
|
|
293
|
+
> clears, all live, no command to run.
|
|
299
294
|
>
|
|
300
295
|
> Did the broken marker appear and then clear?
|
|
301
296
|
|
|
@@ -305,42 +300,36 @@ done. Auto-advance to `reserved`.
|
|
|
305
300
|
|
|
306
301
|
## Chapter `reserved` - A reserved name collides (~2 min)
|
|
307
302
|
|
|
308
|
-
**
|
|
309
|
-
thinking, name it `init`, a name Claude Code already owns for its own slash
|
|
310
|
-
command. skill-map warns you before the runtime silently ignores your file.
|
|
311
|
-
|
|
312
|
-
**Preparation**: `Write` `.claude/commands/init.md`:
|
|
303
|
+
**Preparation**: `Write` `.claude/commands/model.md`:
|
|
313
304
|
```markdown
|
|
314
305
|
---
|
|
315
|
-
name:
|
|
306
|
+
name: model
|
|
316
307
|
description: |
|
|
317
308
|
Scaffolds a new empty page in public/ from the shared template.
|
|
318
309
|
---
|
|
319
310
|
|
|
320
|
-
#
|
|
311
|
+
# model
|
|
321
312
|
|
|
322
313
|
Creates a blank page so you can start writing.
|
|
323
314
|
```
|
|
324
315
|
|
|
325
316
|
The watcher picks up the new command. Tell the tester:
|
|
326
317
|
|
|
327
|
-
> I added a command named `
|
|
318
|
+
> I added a command named `model`. Watch the **Map**: the new `model` command node
|
|
328
319
|
> appears, but flagged with a **warning** marker. Open its inspector: it reads
|
|
329
|
-
> `name-reserved`, `
|
|
320
|
+
> `name-reserved`, `model` shadows one of Claude Code's own slash commands (like
|
|
330
321
|
> `/help`, `/clear`, `/config`), so the runtime would silently ignore your file,
|
|
331
322
|
> it never runs. The fix is a name the runtime does not own.
|
|
332
323
|
>
|
|
333
|
-
> Rename it to `new-page`: first rename the file `.claude/commands/
|
|
324
|
+
> Rename it to `new-page`: first rename the file `.claude/commands/model.md` to
|
|
334
325
|
> `.claude/commands/new-page.md`. Then open it in your text editor / IDE and, at
|
|
335
|
-
> the top, where the frontmatter says `name:
|
|
336
|
-
> `name: new-page
|
|
337
|
-
> plain title, never `# /new-page`). Save.
|
|
326
|
+
> the top, where the frontmatter says `name: model`, change it to
|
|
327
|
+
> `name: new-page`. Save.
|
|
338
328
|
>
|
|
339
329
|
> Watch the **Map** again: the warning clears and the node is now `new-page`,
|
|
340
|
-
> all live.
|
|
341
|
-
>
|
|
342
|
-
>
|
|
343
|
-
> `new-page` is yours and the runtime will actually run it.
|
|
330
|
+
> all live. What cleared it was changing `frontmatter.name` (not just the
|
|
331
|
+
> filename), the reserved check looks at the name. Now `new-page` is yours and
|
|
332
|
+
> the runtime will run it.
|
|
344
333
|
>
|
|
345
334
|
> Did the warning clear after the rename?
|
|
346
335
|
|
|
@@ -352,90 +341,115 @@ Wait for confirmation. Mark `reserved`: done. Auto-advance to `publish`.
|
|
|
352
341
|
|
|
353
342
|
## Chapter `publish` - Ship it: run /publish for real (~4 min)
|
|
354
343
|
|
|
355
|
-
**Context**: the
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
then follows the deploy runbook. This is the same Layer 1 / Layer 2 split, the
|
|
359
|
-
pages are output, so the Map stays put while the pipeline runs.
|
|
344
|
+
**Context**: the publish flow only earns its keep when something is actually
|
|
345
|
+
wrong, so first you plant a real bug in the site, then watch `/publish` catch and
|
|
346
|
+
fix it for real.
|
|
360
347
|
|
|
361
348
|
**Preparation**: make sure the pages exist (`index`, `about`, `projects` from the
|
|
362
|
-
earlier chapters; lay any that are missing from the templates in `setup`).
|
|
363
|
-
by following `.claude/commands/publish.md`: run the `check-links` logic over
|
|
364
|
-
every `.html` under `public/` (does each internal `href` resolve to a file that
|
|
365
|
-
exists?); if any link is broken, brief the `content-editor` to fix it and
|
|
366
|
-
re-run the check; then walk the deploy runbook steps. Do not role-play it.
|
|
349
|
+
earlier chapters; lay any that are missing from the templates in `setup`).
|
|
367
350
|
|
|
368
|
-
|
|
351
|
+
This chapter has two beats: the tester breaks a link in the HTML first, then runs
|
|
352
|
+
`/publish` so the skill catches the break. The split is required, the publish run
|
|
353
|
+
cannot demonstrate the catch until the break is in place.
|
|
354
|
+
|
|
355
|
+
**Beat 1, plant the bug (the tester breaks the HTML, their file).** Tell the
|
|
356
|
+
tester:
|
|
357
|
+
|
|
358
|
+
> Before we ship, let's break something on purpose. Open `public/index.html` in
|
|
359
|
+
> your editor and find the **About** link in the top nav:
|
|
360
|
+
>
|
|
361
|
+
> ```html
|
|
362
|
+
> <a href="/about.html">About</a>
|
|
363
|
+
> ```
|
|
364
|
+
>
|
|
365
|
+
> Change the target to a typo that points at a page that does not exist, then
|
|
366
|
+
> save:
|
|
367
|
+
>
|
|
368
|
+
> ```html
|
|
369
|
+
> <a href="/abuot.html">About</a>
|
|
370
|
+
> ```
|
|
371
|
+
>
|
|
372
|
+
> Now watch the **Map**. Nothing happens: no arrow moves, no red marker. Back in
|
|
373
|
+
> the `broken-ref` chapter, breaking a link between your `.md` files lit up the
|
|
374
|
+
> graph the instant you saved. This break is invisible to it, and that is
|
|
375
|
+
> correct: skill-map maps your **harness** (the `.md` files, Layer 1), not the
|
|
376
|
+
> HTML pages it produces (Layer 2, your `public/` folder, which is even in
|
|
377
|
+
> `.skillmapignore`). A broken link inside your actual site never shows on the
|
|
378
|
+
> graph. The one thing that catches it is your `check-links` skill, which is
|
|
379
|
+
> exactly what `/publish` runs as its first step.
|
|
380
|
+
>
|
|
381
|
+
> Saved the typo, and the Map stayed unchanged?
|
|
382
|
+
|
|
383
|
+
Wait for confirmation. The Map MUST stay unchanged; if a marker appeared they
|
|
384
|
+
edited a `.md` by mistake, point them back at `public/index.html`.
|
|
369
385
|
|
|
370
|
-
|
|
371
|
-
> publish command for real: I follow its steps, run the link check across your
|
|
372
|
-
> pages, fix anything through the `content-editor`, and walk the deploy runbook,
|
|
373
|
-
> exactly what the command says to do.
|
|
386
|
+
**Beat 2, run /publish for real.** Tell the tester:
|
|
374
387
|
|
|
375
|
-
|
|
376
|
-
|
|
388
|
+
> Now ship it. Tell me to publish (or type `/publish`) and I'll run your publish
|
|
389
|
+
> command for real, exactly as written. (You can read the command anytime by
|
|
390
|
+
> clicking the `publish` node on the Map, then opening its **Body** section.)
|
|
391
|
+
|
|
392
|
+
When the tester asks to publish, **execute the publish flow for real** by
|
|
393
|
+
following `.claude/commands/publish.md`: run the `check-links` logic over every
|
|
394
|
+
`.html` under `public/` (does each internal `href` resolve to a file that
|
|
395
|
+
exists?), which now finds the planted typo; per step 2, brief the
|
|
396
|
+
`content-editor` to fix it (point the link back at `/about.html`), re-run the
|
|
397
|
+
check until it is clean, then walk the deploy runbook. Do not role-play it;
|
|
398
|
+
`Read` `public/index.html` before and after the fix so the report is honest.
|
|
399
|
+
|
|
400
|
+
After running the flow, report what actually happened:
|
|
377
401
|
|
|
378
402
|
> Here is what just ran, for real:
|
|
379
403
|
>
|
|
380
404
|
> - **check-links** walked every page under `public/` and followed each internal
|
|
381
|
-
> link.
|
|
382
|
-
>
|
|
383
|
-
>
|
|
405
|
+
> link. It caught **1 broken link**: `/abuot.html` on `index.html`, the typo
|
|
406
|
+
> you planted. The graph never flagged it, but the skill did, because the skill
|
|
407
|
+
> reads your real pages.
|
|
408
|
+
> - **step 2 kicked in**: I briefed your `content-editor` to fix it. It pointed
|
|
409
|
+
> the link back at `/about.html`, and a re-run of **check-links** came back
|
|
410
|
+
> clean: 0 broken links.
|
|
384
411
|
> - the **deploy runbook** (`docs/DEPLOYMENT.md`) lists the ship steps:
|
|
385
|
-
> regenerate the pages (done), run the link check (done), start the
|
|
386
|
-
> (next chapter).
|
|
412
|
+
> regenerate the pages (done), run the link check (done, now clean), start the
|
|
413
|
+
> server (next chapter).
|
|
387
414
|
>
|
|
388
|
-
>
|
|
389
|
-
>
|
|
390
|
-
>
|
|
391
|
-
> As you saw in the lines just above, I did not report anything odd: the link
|
|
392
|
-
> check came back clean and `/publish` is wired correctly across your pages.
|
|
393
|
-
> Shall we continue?
|
|
415
|
+
> That is the whole point of the harness: you broke the site, the graph stayed
|
|
416
|
+
> quiet because the HTML is its output and not its map, and your own publish
|
|
417
|
+
> command caught the break and fixed it before it shipped. Shall we continue?
|
|
394
418
|
|
|
395
|
-
Wait for confirmation.
|
|
419
|
+
Wait for confirmation. The site MUST be clean again (the typo fixed) before
|
|
420
|
+
`golive`. Mark `publish`: done. Auto-advance to `stability`.
|
|
396
421
|
|
|
397
422
|
## Chapter `stability` - Set a node's stability (and the `.sm` sidecar) (~3 min)
|
|
398
423
|
|
|
399
|
-
**Context**: real maintenance includes marking how mature each piece is. skill-map
|
|
400
|
-
lets you tag a node's **stability** (`experimental` / `stable` / `deprecated`)
|
|
401
|
-
from the inspector. That is skill-map's own metadata, so it lands in a co-located
|
|
402
|
-
**`.sm` sidecar** next to the file (the vendor file stays untouched), and the
|
|
403
|
-
first `.sm` write asks for your consent. Good moment now that the site shipped:
|
|
404
|
-
mark the handbook as the stable core it is.
|
|
405
|
-
|
|
406
424
|
**Preparation**: none for a first-time tester. (If re-entering a dir where the
|
|
407
425
|
sidecar already exists, reset consent first with `rm -f AGENTS.sm
|
|
408
426
|
.skill-map/settings.local.json` so the consent prompt shows again.)
|
|
409
427
|
|
|
410
428
|
Tell the tester:
|
|
411
429
|
|
|
412
|
-
> Your harness shipped, so let's
|
|
413
|
-
>
|
|
414
|
-
>
|
|
415
|
-
> `stable` from the list.
|
|
430
|
+
> Your harness shipped, so let's set its **stability**. Open the Inspector for
|
|
431
|
+
> the `AGENTS` node (click it on the **Map**) and click the **Set stability**
|
|
432
|
+
> button. Pick any of `experimental` / `stable` / `deprecated` from the list.
|
|
416
433
|
>
|
|
417
434
|
> The first time skill-map writes its own metadata it asks for **consent**:
|
|
418
|
-
> confirm it in the dialog that pops up. Two things happen at once: a
|
|
419
|
-
> badge appears on the `AGENTS` node, and skill-map
|
|
420
|
-
> (`AGENTS.sm`) right next to the handbook to
|
|
421
|
-
> itself is never touched. Your consent is
|
|
422
|
-
> will not ask again.
|
|
435
|
+
> confirm it in the dialog that pops up. Two things happen at once: a stability
|
|
436
|
+
> badge for the stage you picked appears on the `AGENTS` node, and skill-map
|
|
437
|
+
> creates a **`.sm` sidecar file** (`AGENTS.sm`) right next to the handbook to
|
|
438
|
+
> hold that metadata, your `AGENTS.md` itself is never touched. Your consent is
|
|
439
|
+
> remembered for the project, so it will not ask again.
|
|
423
440
|
>
|
|
424
441
|
> That sidecar is where skill-map keeps what it knows about a node that does not
|
|
425
|
-
> belong in the vendor file (stability, version, tags).
|
|
426
|
-
> one, by clicking, no command needed.
|
|
442
|
+
> belong in the vendor file (stability, version, tags).
|
|
427
443
|
>
|
|
428
|
-
> See the
|
|
444
|
+
> See the new stability badge on the handbook?
|
|
429
445
|
|
|
430
446
|
Wait for confirmation. Mark `stability`: done. Auto-advance to `golive`.
|
|
431
447
|
|
|
432
|
-
## Chapter `golive` - Your
|
|
448
|
+
## Chapter `golive` - Your website, live next to the graph (~3 min)
|
|
433
449
|
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
themselves; guide them, do not run it for them. `npm install` is idempotent, so
|
|
438
|
-
it is safe whether or not they ran it in `setup`.
|
|
450
|
+
One of the few chapters where the tester runs non-`sm` commands themselves;
|
|
451
|
+
guide them, do not run it for them. `npm install` is idempotent, so it is safe
|
|
452
|
+
whether or not they ran it in `setup`.
|
|
439
453
|
|
|
440
454
|
**Preparation**: none. `server.js` / `package.json` exist from the kickoff; the
|
|
441
455
|
pages exist from the earlier chapters.
|
|
@@ -451,7 +465,7 @@ node server.js
|
|
|
451
465
|
> Open `http://localhost:3000` and click through Home, About, and Projects, the
|
|
452
466
|
> pages your harness produced and shipped through the publish flow you just ran.
|
|
453
467
|
>
|
|
454
|
-
> Now take it in at once. On one side, your real running
|
|
468
|
+
> Now take it in at once. On one side, your real running website, named after
|
|
455
469
|
> you, that you could deploy as-is. On the other, the skill-map graph of the
|
|
456
470
|
> harness that built it: the handbook, the content-editor, the style guide, the
|
|
457
471
|
> publish command, the link checker, the deploy runbook, all wired together. You
|
|
@@ -466,7 +480,7 @@ Wait for confirmation. The tester runs the commands; do not run them. If
|
|
|
466
480
|
server with Ctrl+C and apply the ports edge case.
|
|
467
481
|
|
|
468
482
|
This is the campaign finale. Congratulate them plainly: they went from an empty
|
|
469
|
-
directory to a real, running
|
|
483
|
+
directory to a real, running website plus a complete map of its harness. Then
|
|
470
484
|
invite them to keep going on their own:
|
|
471
485
|
|
|
472
486
|
> And this site is yours to keep playing with: add more pages, refine the style
|