@skill-map/cli 0.61.0 → 0.61.1
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 +16 -4
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/manifest.json +0 -2
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/en/__PROVIDER__/agents/demo-agent.md +0 -2
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/es/__PROVIDER__/agents/demo-agent.md +0 -2
- package/dist/cli/tutorial/sm-tutorial/references/_core.md +5 -0
- package/dist/cli/tutorial/sm-tutorial/references/_manifest.json +8 -13
- package/dist/cli/tutorial/sm-tutorial/references/_manifest.yml +3 -4
- package/dist/cli/tutorial/sm-tutorial/references/fixtures.md +2 -3
- package/dist/cli/tutorial/sm-tutorial/references/part-connect-harness.md +10 -11
- package/dist/cli/tutorial/sm-tutorial/references/part-daily-loop.md +101 -190
- package/dist/cli/tutorial/sm-tutorial/references/part-fundamentals.md +43 -26
- package/dist/cli/tutorial/sm-tutorial/references/part-project-kickoff.md +9 -4
- package/dist/cli.js +3 -3
- package/dist/index.js +3 -3
- package/dist/kernel/index.js +3 -3
- package/dist/ui/chunk-DG3EAGXB.js +3 -0
- package/dist/ui/index.html +1 -1
- package/dist/ui/{main-5GMGTLYQ.js → main-32BO6UKY.js} +1 -1
- package/package.json +1 -1
- package/dist/ui/chunk-FDBHGLTW.js +0 -3
|
@@ -161,11 +161,19 @@ cd <cwd>
|
|
|
161
161
|
> Got the second terminal open and anchored to the folder? Confirm
|
|
162
162
|
> before we move on.
|
|
163
163
|
|
|
164
|
+
**HARD STOP here.** This message ends at the confirmation question
|
|
165
|
+
above, that is its own beat. Do NOT run step 5, do NOT render the
|
|
166
|
+
menu, do NOT add a "meanwhile / mientras tanto" bridge in the same
|
|
167
|
+
message. Wait for the tester to confirm the second terminal is open
|
|
168
|
+
and anchored; only then continue to step 5.
|
|
169
|
+
|
|
164
170
|
### 5. Initialise state, lay the universal files, show the menu
|
|
165
171
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
172
|
+
**Run this only after the tester has confirmed step 4.** Pre-flight
|
|
173
|
+
does NOT pre-lay any part's fixture and does NOT auto-enter a part. It
|
|
174
|
+
initialises state, lays the universal files every part needs, then
|
|
175
|
+
routes to the menu. The init + lay are silent (backstage); the menu is
|
|
176
|
+
the first thing the tester sees in this post-confirmation message:
|
|
169
177
|
|
|
170
178
|
- Create the state file (carries the detected provider, the running
|
|
171
179
|
`sm version`, the cwd, and the tester's language):
|
|
@@ -280,8 +288,12 @@ the `__PROVIDER__` token and skip kinds the provider does not claim.
|
|
|
280
288
|
`fixtures.js clear portfolio --provider <provider>`, `rm -rf .skill-map`.
|
|
281
289
|
2. `fixtures.js seed prologue-built --provider <provider> --lang <lang>`
|
|
282
290
|
(lays the six demo nodes, wires the hub, drops `private-credentials`).
|
|
291
|
+
Run this ALWAYS, even if a demo fixture from a prior prologue run is
|
|
292
|
+
on disk, so the deliberate broken reference is the pristine
|
|
293
|
+
`prologue-built` state, not whatever the tester edited in the
|
|
294
|
+
prologue (they resolve it by hand in `edit-link`).
|
|
283
295
|
3. `sm init` (single `.claude/` marker, no lens prompt), then `sm scan`.
|
|
284
|
-
If
|
|
296
|
+
If `.skill-map/` already exists, skip the init and just `sm scan`.
|
|
285
297
|
|
|
286
298
|
- **`seed`** (campaign parts `connect-harness`, `daily-loop`): builds
|
|
287
299
|
on the accumulating portfolio, but the tester may have jumped here.
|
|
@@ -23,12 +23,10 @@
|
|
|
23
23
|
"public/index.html",
|
|
24
24
|
"public/about.html",
|
|
25
25
|
"public/projects.html",
|
|
26
|
-
"public/posts.html",
|
|
27
26
|
"public/style.css",
|
|
28
27
|
"docs/STYLE.md",
|
|
29
28
|
"docs/DEPLOY.md",
|
|
30
29
|
"docs/DEPLOYMENT.md",
|
|
31
|
-
"docs/draft.md",
|
|
32
30
|
"__PROVIDER__/agents/content-editor.md",
|
|
33
31
|
"__PROVIDER__/skills/check-links",
|
|
34
32
|
"__PROVIDER__/commands/publish.md",
|
|
@@ -338,6 +338,11 @@ For every chapter:
|
|
|
338
338
|
Inviolable rule #6, NO "¿seguimos?"). `pace` only decides batching:
|
|
339
339
|
`per-step` presents one chapter per exchange, `auto-advance` may
|
|
340
340
|
chain chapters that need no tester action into one response.
|
|
341
|
+
**Either pace still emits every chapter's `Capítulo S.N` Announcement
|
|
342
|
+
(step 1).** `auto-advance` drops only the inter-chapter "¿seguimos?"
|
|
343
|
+
pause, never the per-chapter announcement, so any chapter with a
|
|
344
|
+
tester-facing beat always opens with its number, even when it
|
|
345
|
+
follows straight on from the previous one.
|
|
341
346
|
|
|
342
347
|
## Routing + menu (orchestrator)
|
|
343
348
|
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
},
|
|
70
70
|
{
|
|
71
71
|
"id": "manual",
|
|
72
|
-
"title": "The handbook and CLAUDE.md
|
|
72
|
+
"title": "The handbook (AGENTS.md) and CLAUDE.md",
|
|
73
73
|
"est_min": 2
|
|
74
74
|
},
|
|
75
75
|
{
|
|
@@ -132,19 +132,14 @@
|
|
|
132
132
|
"est_min": 3
|
|
133
133
|
},
|
|
134
134
|
{
|
|
135
|
-
"id": "
|
|
136
|
-
"title": "
|
|
137
|
-
"est_min": 4
|
|
138
|
-
},
|
|
139
|
-
{
|
|
140
|
-
"id": "orphan-draft",
|
|
141
|
-
"title": "A page nobody links to yet",
|
|
135
|
+
"id": "preview",
|
|
136
|
+
"title": "Bring it up and see your site",
|
|
142
137
|
"est_min": 2
|
|
143
138
|
},
|
|
144
139
|
{
|
|
145
|
-
"id": "
|
|
146
|
-
"title": "
|
|
147
|
-
"est_min":
|
|
140
|
+
"id": "add-page",
|
|
141
|
+
"title": "Add a page with your agent",
|
|
142
|
+
"est_min": 4
|
|
148
143
|
},
|
|
149
144
|
{
|
|
150
145
|
"id": "broken-ref",
|
|
@@ -162,8 +157,8 @@
|
|
|
162
157
|
"est_min": 4
|
|
163
158
|
},
|
|
164
159
|
{
|
|
165
|
-
"id": "
|
|
166
|
-
"title": "
|
|
160
|
+
"id": "stability",
|
|
161
|
+
"title": "Set a node's stability (and the `.sm` sidecar)",
|
|
167
162
|
"est_min": 3
|
|
168
163
|
},
|
|
169
164
|
{
|
|
@@ -113,7 +113,7 @@ parts:
|
|
|
113
113
|
status: active
|
|
114
114
|
chapters:
|
|
115
115
|
- id: kickoff ; title: "Start the portfolio (sm init on the real skeleton)" ; est_min: 2
|
|
116
|
-
- id: manual ; title: "The handbook and CLAUDE.md
|
|
116
|
+
- id: manual ; title: "The handbook (AGENTS.md) and CLAUDE.md" ; est_min: 2
|
|
117
117
|
- id: first-agent ; title: "The first harness agent (content-editor)" ; est_min: 2
|
|
118
118
|
- id: real-kinds ; title: "The real kinds in context" ; est_min: 2
|
|
119
119
|
|
|
@@ -144,13 +144,12 @@ parts:
|
|
|
144
144
|
status: active
|
|
145
145
|
chapters:
|
|
146
146
|
- id: setup ; title: "Make it yours, make it presentable" ; est_min: 3
|
|
147
|
+
- id: preview ; title: "Bring it up and see your site" ; est_min: 2
|
|
147
148
|
- id: add-page ; title: "Add a page with your agent" ; est_min: 4
|
|
148
|
-
- id: orphan-draft ; title: "A page nobody links to yet" ; est_min: 2
|
|
149
|
-
- id: wire-and-improve ; title: "Wire the draft in" ; est_min: 3
|
|
150
149
|
- id: broken-ref ; title: "A rename breaks a link" ; est_min: 4
|
|
151
150
|
- id: reserved ; title: "A reserved name collides" ; est_min: 2
|
|
152
151
|
- id: publish ; title: "Ship it: run /publish for real" ; est_min: 4
|
|
153
|
-
- id:
|
|
152
|
+
- id: stability ; title: "Set a node's stability (and the `.sm` sidecar)" ; est_min: 3
|
|
154
153
|
- id: golive ; title: "Your portfolio, live next to the graph" ; est_min: 3
|
|
155
154
|
|
|
156
155
|
# ----- parked: MCP returns later as its own iteration (body kept in part-mcp.md) -----
|
|
@@ -70,9 +70,8 @@ entered out of order.
|
|
|
70
70
|
|
|
71
71
|
`manifest.json#footprints` lists the full on-disk reach of each
|
|
72
72
|
fixture, INCLUDING files a part's later chapters add (the daily loop's
|
|
73
|
-
`
|
|
74
|
-
`
|
|
75
|
-
rename). `fixtures.js clear <footprint>` (part-entry resets) and
|
|
73
|
+
`public/style.css` + generated pages, the renamed `new-page` command,
|
|
74
|
+
`AGENTS.sm`; the portfolio's `DEPLOYMENT.md` rename). `fixtures.js clear <footprint>` (part-entry resets) and
|
|
76
75
|
`state.js wipe` (start-over) both read it, so the per-fixture path list
|
|
77
76
|
lives in ONE place. Add or drop a harness file there.
|
|
78
77
|
|
|
@@ -32,7 +32,7 @@ Wait for confirmation. Mark `check-links`: done.
|
|
|
32
32
|
|
|
33
33
|
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.
|
|
34
34
|
|
|
35
|
-
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. Backstage, get the content: `node .claude/skills/sm-tutorial/scripts/fixtures.js cat harness --file "__PROVIDER__/commands/publish.md" --provider <provider> --lang <lang>`, then render it
|
|
35
|
+
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. Backstage, get the content: `node .claude/skills/sm-tutorial/scripts/fixtures.js cat harness --file "__PROVIDER__/commands/publish.md" --provider <provider> --lang <lang>`, then render it as a **top-level fenced code block**: at column 0, NOT inside the `> ` blockquote and with NO leading indentation, so the tester's copy keeps every line flush left. The frontmatter fences (`---`) MUST land on column 0. If the block is rendered (or pasted) indented, the opening and closing `---` shift off column 0, the YAML never parses, and the `publish` node loads body-only without its `name` / `description` (`sm check` then warns `frontmatter-malformed`). Present the block below exactly as written.
|
|
36
36
|
|
|
37
37
|
> Create `.claude/commands/publish.md` with exactly this content (the first line is `---`, nothing before it):
|
|
38
38
|
|
|
@@ -78,7 +78,7 @@ Continue the tester message:
|
|
|
78
78
|
>
|
|
79
79
|
> Did the three arrows appear?
|
|
80
80
|
|
|
81
|
-
Wait for confirmation. You MAY use `Read` on the file afterwards to verify it landed. Mark `publish`: done.
|
|
81
|
+
Wait for confirmation. You MAY use `Read` on the file afterwards to verify it landed, in particular that the opening and closing `---` are flush at column 0. If a later `sm check` flags `frontmatter-malformed` on `publish.md`, the fences got indented on paste: have the tester re-align every line flush left (strip the leading spaces so `---` is at column 0), then the next scan reads it clean. Mark `publish`: done.
|
|
82
82
|
|
|
83
83
|
## Chapter `links` - The handbook becomes the hub (~4 min)
|
|
84
84
|
|
|
@@ -122,7 +122,7 @@ Wait for confirmation. You MAY use `Read` on the two files afterwards to verify
|
|
|
122
122
|
|
|
123
123
|
## Chapter `confidence` - How sure is each link (~3 min)
|
|
124
124
|
|
|
125
|
-
**Context**: skill-map records 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 broken-reference case is the one the tester met in the prologue (the
|
|
125
|
+
**Context**: skill-map records 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 broken-reference case is the one the tester met in the prologue (the `@demo-guideline` reference skill-map could not resolve, drawn as no arrow and flagged `reference-broken` at 0.50, then resolved by hand with `.md`). 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.
|
|
126
126
|
|
|
127
127
|
No file edits in this chapter, pure observation on the graph the tester just built.
|
|
128
128
|
|
|
@@ -147,14 +147,13 @@ Tell the tester:
|
|
|
147
147
|
>
|
|
148
148
|
> Your whole harness reads solid because every link lands on a real
|
|
149
149
|
> node, that is what a clean, fully wired graph looks like. So what
|
|
150
|
-
> does a link that does NOT resolve look like? You
|
|
151
|
-
> prologue: `@demo-guideline` was a
|
|
152
|
-
>
|
|
153
|
-
> it
|
|
154
|
-
>
|
|
155
|
-
>
|
|
156
|
-
>
|
|
157
|
-
> real file and drew a solid arrow at **1.00**.
|
|
150
|
+
> does a link that does NOT resolve look like? You met one back in the
|
|
151
|
+
> prologue: `@demo-guideline` was a reference skill-map could not
|
|
152
|
+
> resolve, it had nothing to land on, so skill-map drew no arrow and
|
|
153
|
+
> flagged it as a **broken reference**, its confidence knocked down to
|
|
154
|
+
> **0.50** by the broken penalty. The fix was one character: adding
|
|
155
|
+
> `.md` (`@demo-guideline.md`) turned it into a file reference to the
|
|
156
|
+
> real `demo-guideline.md`, and it drew a solid arrow at **1.00**.
|
|
158
157
|
>
|
|
159
158
|
> So confidence here is really about resolution: **1.00** for a link
|
|
160
159
|
> that lands on a real node, **0.50** for one flagged broken. There is
|
|
@@ -32,6 +32,15 @@ landed (this keeps the node-count promises honest). If the subagent is not
|
|
|
32
32
|
invocable in the tester's setup, act as the `content-editor` yourself following
|
|
33
33
|
its rules and `docs/STYLE.md`, so the beat still lands.
|
|
34
34
|
|
|
35
|
+
**Live-map note (read once).** Every chapter here is watched on the live
|
|
36
|
+
**Map**, so skill-map's UI (`sm`) MUST be running before you start, watcher
|
|
37
|
+
picking up edits. In the full campaign the tester booted it back in the kickoff
|
|
38
|
+
chapter and kept it open; if they entered this part directly (via seed) or
|
|
39
|
+
closed it, have them start it now, run `sm` from the project root and open the
|
|
40
|
+
URL it prints, before the first chapter. This part has NO `sm scan` / `sm check`
|
|
41
|
+
steps: the watcher re-scans on every save, and the Map shows new nodes,
|
|
42
|
+
broken-reference markers, and confidence live.
|
|
43
|
+
|
|
35
44
|
---
|
|
36
45
|
|
|
37
46
|
**Act A - Add**
|
|
@@ -160,16 +169,31 @@ footer.site { border-top: 1px solid var(--border); padding: 2rem 0; color: var(-
|
|
|
160
169
|
</html>
|
|
161
170
|
```
|
|
162
171
|
|
|
163
|
-
|
|
172
|
+
Tell the tester the face is on (no serving yet, that is the next chapter):
|
|
173
|
+
|
|
174
|
+
> I gave your site a face: a shared stylesheet plus a styled **Home** and
|
|
175
|
+
> **About** page, named after you. These are Layer 2 (the harness's output), so
|
|
176
|
+
> the **Map** did not move, and that is correct: skill-map maps the harness (the
|
|
177
|
+
> `.md` files, Layer 1), not the HTML it produces. Next we bring it up so you
|
|
178
|
+
> can see it.
|
|
179
|
+
|
|
180
|
+
Mark `setup`: done. Auto-advance to `preview`.
|
|
181
|
+
|
|
182
|
+
## Chapter `preview` - Bring it up and see your site (~2 min)
|
|
183
|
+
|
|
184
|
+
**Context**: the first look. The site is styled but the tester has only seen it
|
|
185
|
+
as files; now serve it and open it in the browser, the early payoff before the
|
|
186
|
+
daily loop fills it with pages. The tester runs the commands themselves (one of
|
|
187
|
+
the few non-`sm` beats); guide them, do not run them.
|
|
164
188
|
|
|
165
189
|
```bash
|
|
166
190
|
npm install
|
|
167
191
|
node server.js
|
|
168
192
|
```
|
|
169
193
|
|
|
170
|
-
>
|
|
171
|
-
>
|
|
172
|
-
>
|
|
194
|
+
> Bring your site up. `npm install` pulls the one small library the server needs
|
|
195
|
+
> (Express, on the Node you already have), and `node server.js` starts it and
|
|
196
|
+
> prints a line like `Listening on http://localhost:3000`.
|
|
173
197
|
>
|
|
174
198
|
> Open `http://localhost:3000`: there is your site, named after you, with a
|
|
175
199
|
> clean layout. Click **About** and back to **Home**.
|
|
@@ -182,7 +206,11 @@ node server.js
|
|
|
182
206
|
>
|
|
183
207
|
> Does the site load and look clean?
|
|
184
208
|
|
|
185
|
-
Wait for confirmation.
|
|
209
|
+
Wait for confirmation. If `node server.js` reports `Cannot find module
|
|
210
|
+
'express'`, `npm install` did not run first, run it (it reads `package.json` and
|
|
211
|
+
pulls Express), then retry; if `npm install` itself fails, check they are in the
|
|
212
|
+
project root and Node is on PATH. Mark `preview`: done. Auto-advance to
|
|
213
|
+
`add-page`.
|
|
186
214
|
|
|
187
215
|
## Chapter `add-page` - Add a page with your agent (~4 min)
|
|
188
216
|
|
|
@@ -209,6 +237,10 @@ following the agent's own steps and `docs/STYLE.md` (the shared shell, link
|
|
|
209
237
|
home nav. Do NOT write any `.md`, do NOT touch the harness. Then `Read` the file
|
|
210
238
|
it produced.
|
|
211
239
|
|
|
240
|
+
Report back using the block below as the template: adapt the page name and add a
|
|
241
|
+
one-line description of what it actually wrote, but keep the ENTIRE report inside
|
|
242
|
+
the `> ` blockquote, do NOT drop the bar when you personalise it.
|
|
243
|
+
|
|
212
244
|
> Your `content-editor` ran for real and wrote `public/projects.html`, linked
|
|
213
245
|
> from the home nav. Refresh the site: the new page is there, in the same style
|
|
214
246
|
> as the rest.
|
|
@@ -219,88 +251,12 @@ it produced.
|
|
|
219
251
|
>
|
|
220
252
|
> See the new page on the site, and the Map unchanged?
|
|
221
253
|
|
|
222
|
-
Wait for confirmation. Mark `add-page`: done. Auto-advance to `
|
|
223
|
-
|
|
224
|
-
## Chapter `orphan-draft` - A page nobody links to yet (~2 min)
|
|
225
|
-
|
|
226
|
-
**Context**: mid-day you jot an idea for the next page but do not wire it up yet.
|
|
227
|
-
skill-map shows it as an **orphan**: a real node with nothing pointing at it.
|
|
228
|
-
|
|
229
|
-
**Preparation**: `Write` `docs/draft.md` (markdown kind):
|
|
230
|
-
```markdown
|
|
231
|
-
---
|
|
232
|
-
name: draft
|
|
233
|
-
description: |
|
|
234
|
-
A rough idea for the next page. Not linked from anywhere yet.
|
|
235
|
-
---
|
|
236
|
-
|
|
237
|
-
# Draft
|
|
238
|
-
|
|
239
|
-
Notes toward a posts page. Nothing wired up.
|
|
240
|
-
```
|
|
241
|
-
|
|
242
|
-
Tell the tester to run:
|
|
243
|
-
|
|
244
|
-
```bash
|
|
245
|
-
sm scan
|
|
246
|
-
sm show docs/draft.md
|
|
247
|
-
```
|
|
248
|
-
|
|
249
|
-
> A new `docs/draft` node appeared on the Map as a floating dot, no arrows in or
|
|
250
|
-
> out. `sm show docs/draft.md` has no "Links in" section: nothing references it.
|
|
251
|
-
> That is an **orphan**, a valid node with no incoming links.
|
|
252
|
-
>
|
|
253
|
-
> An orphan is NOT an error: run `sm check` and the harness still reads clean.
|
|
254
|
-
> It is just a node nobody points at yet. Keep three ideas apart: an **orphan**
|
|
255
|
-
> (a real node, no incoming link), a **broken reference** (a link with no target
|
|
256
|
-
> on the other end), and an **issue** (a rule violation `sm check` flags). You
|
|
257
|
-
> will meet the other two in a moment.
|
|
258
|
-
>
|
|
259
|
-
> See the floating dot, and the empty "Links in"?
|
|
260
|
-
|
|
261
|
-
Wait for confirmation. Mark `orphan-draft`: done. Auto-advance to `wire-and-improve`.
|
|
254
|
+
Wait for confirmation. Mark `add-page`: done. Auto-advance to `broken-ref`.
|
|
262
255
|
|
|
263
256
|
---
|
|
264
257
|
|
|
265
258
|
**Act B - Modify / improve**
|
|
266
259
|
|
|
267
|
-
## Chapter `wire-and-improve` - Wire the draft in (~3 min)
|
|
268
|
-
|
|
269
|
-
**Context**: you turn the draft into a real page and link it, so it stops being
|
|
270
|
-
an orphan. Two moves: the `content-editor` writes the actual page (Layer 2), and
|
|
271
|
-
you add a link to the draft note from the handbook (Layer 1), which gives the
|
|
272
|
-
orphan an incoming edge.
|
|
273
|
-
|
|
274
|
-
**Preparation**: invoke the `content-editor` via the Task tool (real-execution
|
|
275
|
-
contract) to write `public/posts.html` from the draft idea (a couple of short
|
|
276
|
-
sample posts, shared shell, nav link back to Home). `Read` it afterwards.
|
|
277
|
-
|
|
278
|
-
Then tell the tester to wire the note in (their file, Inviolable rule #2):
|
|
279
|
-
|
|
280
|
-
> Two moves to close the loop on that draft. First, I had your `content-editor`
|
|
281
|
-
> turn it into a real page: `public/posts.html` now exists (Layer 2, so the Map
|
|
282
|
-
> stays put for it). Second, your turn: open `AGENTS.md` and add this line to
|
|
283
|
-
> the body, so the handbook actually points at the draft note:
|
|
284
|
-
>
|
|
285
|
-
> ```markdown
|
|
286
|
-
> - The next page started as notes in [draft](docs/draft.md).
|
|
287
|
-
> ```
|
|
288
|
-
>
|
|
289
|
-
> Save it, then re-scan and look at the draft again:
|
|
290
|
-
|
|
291
|
-
```bash
|
|
292
|
-
sm scan
|
|
293
|
-
sm show docs/draft.md
|
|
294
|
-
```
|
|
295
|
-
|
|
296
|
-
> `docs/draft` is no longer an orphan: `sm show` now lists `Links in (1)
|
|
297
|
-
> ← references AGENTS.md`, and on the Map the floating dot is connected to the
|
|
298
|
-
> handbook. One incoming link is all it took to fold it into the graph.
|
|
299
|
-
>
|
|
300
|
-
> Did the draft connect to the handbook?
|
|
301
|
-
|
|
302
|
-
Wait for confirmation. Mark `wire-and-improve`: done. Auto-advance to `broken-ref`.
|
|
303
|
-
|
|
304
260
|
## Chapter `broken-ref` - A rename breaks a link (~4 min)
|
|
305
261
|
|
|
306
262
|
**Context**: real reorganizing breaks things, and this is where skill-map earns
|
|
@@ -311,60 +267,41 @@ On `agent-skills` / Antigravity there is no `/publish` command holding the deplo
|
|
|
311
267
|
link; use the variant in the note at the end of this chapter (rename
|
|
312
268
|
`docs/STYLE.md` to break the `content-editor`'s style-guide reference instead).
|
|
313
269
|
|
|
314
|
-
**Preparation**: none (the tester drives).
|
|
270
|
+
**Preparation**: none (the tester drives). Everything here is watched live on
|
|
271
|
+
the Map; no `sm` commands.
|
|
315
272
|
|
|
316
273
|
Tell the tester to rename the deploy runbook (their file):
|
|
317
274
|
|
|
318
275
|
```bash
|
|
319
276
|
mv docs/DEPLOY.md docs/DEPLOYMENT.md
|
|
320
|
-
sm scan
|
|
321
|
-
sm check
|
|
322
277
|
```
|
|
323
278
|
|
|
324
279
|
> You renamed the deploy runbook, but `/publish` still links to the old path.
|
|
325
|
-
> `
|
|
326
|
-
>
|
|
327
|
-
>
|
|
328
|
-
>
|
|
280
|
+
> Watch the **Map**: the `publish → docs/DEPLOY.md` arrow disappears (a broken
|
|
281
|
+
> link resolves to no node, so skill-map stops drawing it) and the `publish`
|
|
282
|
+
> card gets a red **broken-reference** marker, a link whose target no longer
|
|
283
|
+
> exists. Open the `publish` node's inspector and the broken reference is listed
|
|
284
|
+
> there.
|
|
329
285
|
>
|
|
330
|
-
> .claude/commands/publish.md
|
|
331
|
-
> ✕ reference-broken Broken references reference → docs/DEPLOY.md
|
|
332
|
-
> ```
|
|
333
|
-
>
|
|
334
|
-
> That is the `reference-broken` analyzer: a link whose target no longer exists.
|
|
335
|
-
> On the Map the `publish → docs/DEPLOY.md` arrow has disappeared: a broken link
|
|
336
|
-
> resolves to no node, so skill-map stops drawing it and flags the `publish` card
|
|
337
|
-
> with a red error instead. `sm check` runs the full analyzer catalogue (around a
|
|
338
|
-
> dozen rules); to narrow it to one rule:
|
|
339
|
-
|
|
340
|
-
```bash
|
|
341
|
-
sm check --analyzers reference-broken
|
|
342
|
-
```
|
|
343
|
-
|
|
344
286
|
> Now fix it the way you would for real: open `.claude/commands/publish.md` and
|
|
345
|
-
> point the deploy-runbook link at `docs/DEPLOYMENT.md` (the new name).
|
|
346
|
-
>
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
```
|
|
352
|
-
|
|
353
|
-
> `✓ No issues`. The arrow is solid again. That is the daily safety net: rename
|
|
354
|
-
> and move things freely, and skill-map tells you exactly what you forgot to
|
|
355
|
-
> update, before it ships broken.
|
|
287
|
+
> point the deploy-runbook link at `docs/DEPLOYMENT.md` (the new name). Save.
|
|
288
|
+
>
|
|
289
|
+
> Watch the **Map** again: the arrow snaps back, solid, and the red marker
|
|
290
|
+
> clears, all live, no command to run. That is the daily safety net: rename and
|
|
291
|
+
> move things freely, and skill-map shows you exactly what you forgot to update
|
|
292
|
+
> before it ships broken.
|
|
356
293
|
>
|
|
357
|
-
> Did
|
|
294
|
+
> Did the broken marker appear and then clear?
|
|
358
295
|
|
|
359
|
-
Wait for confirmation. The harness MUST
|
|
360
|
-
real `/publish` later follows this runbook). Mark `broken-ref`:
|
|
361
|
-
Auto-advance to `reserved`.
|
|
296
|
+
Wait for confirmation. The harness MUST be clean again (the red marker gone)
|
|
297
|
+
before Act C (the real `/publish` later follows this runbook). Mark `broken-ref`:
|
|
298
|
+
done. Auto-advance to `reserved`.
|
|
362
299
|
|
|
363
300
|
On `agent-skills` / Antigravity (no `command` kind), run the same beat on a link
|
|
364
301
|
that exists there: `mv docs/STYLE.md docs/STYLE-GUIDE.md`, which breaks the
|
|
365
|
-
`content-editor` skill's `[style guide]` reference;
|
|
366
|
-
|
|
367
|
-
|
|
302
|
+
`content-editor` skill's `[style guide]` reference; the Map flags the broken
|
|
303
|
+
reference on the `content-editor`; fix the link in the skill body and watch it
|
|
304
|
+
clear.
|
|
368
305
|
|
|
369
306
|
## Chapter `reserved` - A reserved name collides (~2 min)
|
|
370
307
|
|
|
@@ -390,41 +327,24 @@ description: |
|
|
|
390
327
|
Creates a blank page so you can start writing.
|
|
391
328
|
```
|
|
392
329
|
|
|
393
|
-
|
|
330
|
+
The watcher picks up the new command. Tell the tester:
|
|
394
331
|
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
> `sm check` warns:
|
|
401
|
-
>
|
|
402
|
-
> ```
|
|
403
|
-
> sm check: 1 warning
|
|
332
|
+
> I added a command named `init`. Watch the **Map**: the new `init` command node
|
|
333
|
+
> appears, but flagged with a **warning** marker. Open its inspector: it reads
|
|
334
|
+
> `name-reserved`, `init` shadows one of Claude Code's own slash commands (like
|
|
335
|
+
> `/help`, `/clear`, `/config`), so the runtime would silently ignore your file,
|
|
336
|
+
> it never runs. The fix is a name the runtime does not own.
|
|
404
337
|
>
|
|
405
|
-
>
|
|
406
|
-
>
|
|
407
|
-
>
|
|
338
|
+
> Rename it to `new-page`: rename the file `.claude/commands/init.md` to
|
|
339
|
+
> `.claude/commands/new-page.md`, AND change `frontmatter.name` to `new-page`
|
|
340
|
+
> and the H1 to `# new-page` (a command's H1 stays a plain title, never
|
|
341
|
+
> `# /new-page`). Save.
|
|
408
342
|
>
|
|
409
|
-
>
|
|
410
|
-
>
|
|
411
|
-
>
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
`.claude/commands/new-page.md`, AND change `frontmatter.name` to `new-page` and
|
|
415
|
-
the H1 to `# new-page` (a command's H1 stays a plain title, never `# /new-page`).
|
|
416
|
-
Then have the tester re-scan and re-check:
|
|
417
|
-
|
|
418
|
-
```bash
|
|
419
|
-
sm scan
|
|
420
|
-
sm check
|
|
421
|
-
```
|
|
422
|
-
|
|
423
|
-
> `✓ No issues`. Notice what cleared the warning: changing the **name**, not
|
|
424
|
-
> just the filename. The reserved check looks at the command's name (its
|
|
425
|
-
> `frontmatter.name`), which is why the warning told you to rename "the file or
|
|
426
|
-
> `frontmatter.name`". Now `new-page` is yours and the runtime will actually run
|
|
427
|
-
> it.
|
|
343
|
+
> Watch the **Map** again: the warning clears and the node is now `new-page`,
|
|
344
|
+
> all live. Notice what cleared it: changing the **name** (`frontmatter.name`),
|
|
345
|
+
> not just the filename, the reserved check looks at the command's name, which
|
|
346
|
+
> is why the warning said to rename "the file or `frontmatter.name`". Now
|
|
347
|
+
> `new-page` is yours and the runtime will actually run it.
|
|
428
348
|
>
|
|
429
349
|
> Did the warning clear after the rename?
|
|
430
350
|
|
|
@@ -446,9 +366,8 @@ On `agent-skills` / Antigravity there is no `/publish` command: run the
|
|
|
446
366
|
`check-links` skill directly over `public/`, then follow `docs/DEPLOYMENT.md` by
|
|
447
367
|
hand. Everything else in this chapter is identical.
|
|
448
368
|
|
|
449
|
-
**Preparation**: make sure the pages exist (`index`, `about`, `projects
|
|
450
|
-
|
|
451
|
-
`setup`). When the tester asks to publish, **execute the publish flow for real**
|
|
369
|
+
**Preparation**: make sure the pages exist (`index`, `about`, `projects` from the
|
|
370
|
+
earlier chapters; lay any that are missing from the templates in `setup`). When the tester asks to publish, **execute the publish flow for real**
|
|
452
371
|
by following `.claude/commands/publish.md`: run the `check-links` logic over
|
|
453
372
|
every `.html` under `public/` (does each internal `href` resolve to a file that
|
|
454
373
|
exists?); if any link is broken, brief the `content-editor` to fix it and
|
|
@@ -479,49 +398,42 @@ conditional on the real result):
|
|
|
479
398
|
>
|
|
480
399
|
> Did the publish run report the link check clean?
|
|
481
400
|
|
|
482
|
-
Wait for confirmation. Mark `publish`: done. Auto-advance to `
|
|
401
|
+
Wait for confirmation. Mark `publish`: done. Auto-advance to `stability`.
|
|
483
402
|
|
|
484
|
-
## Chapter `
|
|
403
|
+
## Chapter `stability` - Set a node's stability (and the `.sm` sidecar) (~3 min)
|
|
485
404
|
|
|
486
|
-
**Context**:
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
405
|
+
**Context**: real maintenance includes marking how mature each piece is. skill-map
|
|
406
|
+
lets you tag a node's **stability** (`experimental` / `stable` / `deprecated`)
|
|
407
|
+
from the inspector. That is skill-map's own metadata, so it lands in a co-located
|
|
408
|
+
**`.sm` sidecar** next to the file (the vendor file stays untouched), and the
|
|
409
|
+
first `.sm` write asks for your consent. Good moment now that the site shipped:
|
|
410
|
+
mark the handbook as the stable core it is.
|
|
490
411
|
|
|
491
412
|
**Preparation**: none for a first-time tester. (If re-entering a dir where the
|
|
492
413
|
sidecar already exists, reset consent first with `rm -f AGENTS.sm
|
|
493
|
-
.skill-map/settings.local.json` so the prompt shows again.)
|
|
414
|
+
.skill-map/settings.local.json` so the consent prompt shows again.)
|
|
494
415
|
|
|
495
416
|
Tell the tester:
|
|
496
417
|
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
> The first time you write a `.sm`, skill-map asks for consent: answer `y` at the
|
|
502
|
-
> `[Y/n]` prompt. It then scaffolds `AGENTS.sm` next to `AGENTS.md`:
|
|
418
|
+
> Your harness shipped, so let's mark the handbook as the **stable** core it is.
|
|
419
|
+
> Open the Inspector for the `AGENTS` node (click it on the **Map**) and find the
|
|
420
|
+
> **stability** action (the action button in the inspector). Click it and pick
|
|
421
|
+
> `stable` from the list.
|
|
503
422
|
>
|
|
504
|
-
>
|
|
505
|
-
>
|
|
506
|
-
>
|
|
423
|
+
> The first time skill-map writes its own metadata it asks for **consent**:
|
|
424
|
+
> confirm it in the dialog that pops up. Two things happen at once: a `stable`
|
|
425
|
+
> badge appears on the `AGENTS` node, and skill-map creates a **`.sm` sidecar**
|
|
426
|
+
> (`AGENTS.sm`) right next to the handbook to hold that metadata, your `AGENTS.md`
|
|
427
|
+
> itself is never touched. Your consent is remembered for the project, so it
|
|
428
|
+
> will not ask again.
|
|
507
429
|
>
|
|
508
|
-
>
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
cat AGENTS.sm
|
|
512
|
-
cat .skill-map/settings.local.json
|
|
513
|
-
```
|
|
514
|
-
|
|
515
|
-
> `AGENTS.sm` holds an `identity:` block (hashes that tie it to the live file)
|
|
516
|
-
> and an empty `annotations: {}` ready for you to fill in. And
|
|
517
|
-
> `.skill-map/settings.local.json` now records your consent,
|
|
518
|
-
> `{ "allowEditSmFiles": true }`, so skill-map will not ask again in this
|
|
519
|
-
> project. Open the Inspector for the `AGENTS` node: it now has a **Metadata**
|
|
520
|
-
> section it did not have before.
|
|
430
|
+
> That sidecar is where skill-map keeps what it knows about a node that does not
|
|
431
|
+
> belong in the vendor file (stability, version, tags). You just wrote your first
|
|
432
|
+
> one, by clicking, no command needed.
|
|
521
433
|
>
|
|
522
|
-
> See `
|
|
434
|
+
> See the `stable` badge on the handbook?
|
|
523
435
|
|
|
524
|
-
Wait for confirmation. Mark `
|
|
436
|
+
Wait for confirmation. Mark `stability`: done. Auto-advance to `golive`.
|
|
525
437
|
|
|
526
438
|
## Chapter `golive` - Your portfolio, live next to the graph (~3 min)
|
|
527
439
|
|
|
@@ -542,9 +454,8 @@ node server.js
|
|
|
542
454
|
> Last step, the fun one. `npm install` confirms the one small library is there,
|
|
543
455
|
> and `node server.js` starts the server (`Listening on http://localhost:3000`).
|
|
544
456
|
>
|
|
545
|
-
> Open `http://localhost:3000` and click through Home, About, Projects,
|
|
546
|
-
>
|
|
547
|
-
> just ran.
|
|
457
|
+
> Open `http://localhost:3000` and click through Home, About, and Projects, the
|
|
458
|
+
> pages your harness produced and shipped through the publish flow you just ran.
|
|
548
459
|
>
|
|
549
460
|
> Now take it in at once. On one side, your real running portfolio, named after
|
|
550
461
|
> you, that you could deploy as-is. On the other, the skill-map graph of the
|