@skill-map/cli 0.70.0 → 0.71.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/references/_core.md +27 -20
- package/dist/cli/tutorial/sm-tutorial/references/_manifest.yml +2 -2
- package/dist/cli/tutorial/sm-tutorial/references/part-authoring.md +0 -7
- package/dist/cli/tutorial/sm-tutorial/references/part-basic-daily.md +0 -21
- package/dist/cli/tutorial/sm-tutorial/references/part-basic-fundamentals.md +4 -11
- package/dist/cli/tutorial/sm-tutorial/references/part-basic-kickoff.md +12 -31
- package/dist/cli/tutorial/sm-tutorial/references/part-cli.md +0 -4
- package/dist/cli/tutorial/sm-tutorial/references/part-daily-loop.md +0 -17
- package/dist/cli/tutorial/sm-tutorial/references/part-fundamentals.md +0 -4
- package/dist/cli/tutorial/sm-tutorial/references/part-mcp.md +4 -14
- package/dist/cli/tutorial/sm-tutorial/references/part-plugins.md +0 -8
- package/dist/cli/tutorial/sm-tutorial/references/part-project-kickoff.md +5 -25
- package/dist/cli/tutorial/sm-tutorial/references/part-settings.md +2 -10
- package/dist/cli.js +274 -241
- package/dist/index.js +109 -14
- package/dist/kernel/index.js +109 -14
- package/dist/ui/chunk-CK4C2IIP.js +3 -0
- package/dist/ui/index.html +1 -1
- package/dist/ui/{main-K4O6LCIJ.js → main-GY4PAVQW.js} +1 -1
- package/package.json +2 -2
- package/dist/ui/chunk-RJUHQQOF.js +0 -3
|
@@ -21,9 +21,8 @@ Two numbering systems coexist; keep them apart:
|
|
|
21
21
|
- **Internal (authoring only)**: the `order` field in `_manifest.yml`
|
|
22
22
|
and the `# Part N` file headers, 0-based (Part 0 the prologue …
|
|
23
23
|
Part 3 the CLI deep-dive, Part 4 the Extend dev section; `mcp` at Part 5 is parked / hidden). Use it
|
|
24
|
-
in
|
|
25
|
-
|
|
26
|
-
see.
|
|
24
|
+
in author notes; NEVER say it to the tester, it is off by one from
|
|
25
|
+
what they see.
|
|
27
26
|
- **Tester-facing (`S.N`)**: every part is a **section** numbered by
|
|
28
27
|
its 1-based position in the menu (section `1` is the prologue), and
|
|
29
28
|
every chapter inside it carries a `section.chapter` number like a
|
|
@@ -160,9 +159,9 @@ documented exceptions to "all prose is quoted" are the plain
|
|
|
160
159
|
with `> `, keep that prefix verbatim (Claude mode). Do NOT strip
|
|
161
160
|
`> ` on short intro lines, do NOT merge adjacent blockquote
|
|
162
161
|
paragraphs into plain prose. The source already encodes which lines
|
|
163
|
-
are tester-facing (`> `-prefixed) vs agent-only (plain prose
|
|
164
|
-
|
|
165
|
-
|
|
162
|
+
are tester-facing (`> `-prefixed) vs agent-only (plain prose,
|
|
163
|
+
`Expected:` lines, `Mark <chapter-id>: done` markers, "Walk the
|
|
164
|
+
tester through …" meta instructions). Render the
|
|
166
165
|
first kind quoted, the second kind never.
|
|
167
166
|
|
|
168
167
|
### Language mirroring + fixture content
|
|
@@ -178,6 +177,15 @@ first kind quoted, the second kind never.
|
|
|
178
177
|
English regardless**: file paths and filenames, frontmatter keys,
|
|
179
178
|
node identifiers, link target paths inside `[...]( ... )`, code
|
|
180
179
|
snippets, fenced blocks, anything the kernel parses structurally.
|
|
180
|
+
- **Copyable blocks are byte-exact**: when you render a fenced block
|
|
181
|
+
the tester copies verbatim (a `SKILL.md` / command body, a config
|
|
182
|
+
snippet), reproduce it line for line, preserving every line break,
|
|
183
|
+
indentation level, and tab. NEVER soft-wrap a long line, and in
|
|
184
|
+
particular NEVER let a newline fall inside a markdown link: the
|
|
185
|
+
`[text](path)` token, above all the `(path)` half, must stay on one
|
|
186
|
+
physical line. A break inside the path (`(../content-` then a newline
|
|
187
|
+
then `editor/SKILL.md)`) splits it, the link stops resolving, and no
|
|
188
|
+
arrow is drawn.
|
|
181
189
|
- **No em dashes** in tester-facing prose: prefer a comma or
|
|
182
190
|
parentheses (project-wide style).
|
|
183
191
|
|
|
@@ -260,7 +268,7 @@ A skill-map project reads its files through exactly ONE active lens
|
|
|
260
268
|
|----------------|-------------------------------------------|--------------------------------|--------------------------------|--------------------|------------------|---------|
|
|
261
269
|
| `claude` | `.claude/` (agents, commands, skills) | agent, command, skill, markdown| `/` invokes, `@` mentions, refs| `.claude/` | stable | rich |
|
|
262
270
|
| `codex` | `.codex/agents/*.toml` + `.agents/skills/`| agent (TOML), skill, markdown | `$` invokes, `@` file-refs, refs| `.codex/` | beta | rich |
|
|
263
|
-
| `antigravity` | `.agents/skills/`
|
|
271
|
+
| `antigravity` | `.agents/skills/` + `.agent/workflows/` | skill, workflow, markdown | `/` invokes, `@` file-refs, refs | `.agent/workflows/`| beta | basic |
|
|
264
272
|
| `agent-skills` | `.agents/skills/` | skill, markdown | refs only | `.agents/` | stable (default) | basic |
|
|
265
273
|
|
|
266
274
|
`core/markdown` classifies every orphan `.md` under whatever lens is
|
|
@@ -275,11 +283,17 @@ active; it is the universal base, never a selectable lens.
|
|
|
275
283
|
mention an agent by name, and `/` is a Codex built-in command, not a skill
|
|
276
284
|
invocation). Both also use markdown references.
|
|
277
285
|
- **basic** (`agent-skills`, `antigravity`): the open-standard family,
|
|
278
|
-
`skill` + `markdown`
|
|
286
|
+
built on `skill` + `markdown` and wired with **markdown references**
|
|
279
287
|
(`[text](path)`), the one connection the Agent Skills standard
|
|
280
|
-
documents.
|
|
281
|
-
|
|
282
|
-
references
|
|
288
|
+
documents. They diverge on what Antigravity bolts on top of the
|
|
289
|
+
standard: `agent-skills` is the pure subset (skill + markdown,
|
|
290
|
+
references only, no `@`), while `antigravity` adds its OWN `workflow`
|
|
291
|
+
kind (`.agent/workflows/*.md`), `/`-invocation (the slash resolves to
|
|
292
|
+
both skills and workflows), and `@`-file references (a file-shaped
|
|
293
|
+
`@path` token, the same file-picker grammar Codex uses, distinct from
|
|
294
|
+
Claude's `@`-agent-mention). That slash, the `workflow` kind, and the
|
|
295
|
+
`@`-file refs are Antigravity-only, NOT part of the neutral standard,
|
|
296
|
+
so under the `agent-skills` lens only markdown references form.
|
|
283
297
|
|
|
284
298
|
Why references and not slash on the open standard: the Agent Skills
|
|
285
299
|
spec (agentskills.io) activates a skill by its `description` and
|
|
@@ -398,15 +412,8 @@ For every chapter:
|
|
|
398
412
|
the chapter inside that part, resetting per part (§Numbering), so
|
|
399
413
|
section 5's third chapter announces as `Capítulo 5.3`. The title
|
|
400
414
|
comes from the chapter's `title` in `_manifest.yml` (translated per
|
|
401
|
-
§Tone), not the internal id.
|
|
402
|
-
|
|
403
|
-
context, and render it **under the `> ` bar as the opening line of
|
|
404
|
-
the SAME blockquote as the chapter's instructions** (Claude variant:
|
|
405
|
-
put `>` on the blank line between the context and the instructions
|
|
406
|
-
so they read as one continuous separator bar, never two stacked
|
|
407
|
-
blocks; the context line is tester-facing, so it is never plain
|
|
408
|
-
prose). When the source has no `**Context**:` field, announce the
|
|
409
|
-
title alone.
|
|
415
|
+
§Tone), not the internal id. Announce the title alone, then go
|
|
416
|
+
straight into the chapter's instructions.
|
|
410
417
|
2. **Preparation** (if applicable): create or modify the fixture
|
|
411
418
|
files the chapter calls for (silently, per §Silence).
|
|
412
419
|
3. **The tester's part**: the command block(s) and instructions,
|
|
@@ -170,10 +170,10 @@ parts:
|
|
|
170
170
|
- id: stability ; title: "Set a node's stability (and the `.sm` sidecar)" ; est_min: 3
|
|
171
171
|
- id: golive ; title: "Your website, live next to the graph" ; est_min: 3
|
|
172
172
|
|
|
173
|
-
# ----- the basic-track campaign (open
|
|
173
|
+
# ----- the basic-track campaign (the Agent Skills open standard; vendors like Antigravity build on it) -----
|
|
174
174
|
# Mirrors the rich campaign arc with skill + markdown only, connected by
|
|
175
175
|
# markdown references. Same fixtures (portfolio / harness) laid under the
|
|
176
|
-
#
|
|
176
|
+
# `agent-skills` lens, which renders the agent/command nodes as skills.
|
|
177
177
|
|
|
178
178
|
- id: basic-kickoff
|
|
179
179
|
order: 1
|
|
@@ -21,13 +21,6 @@ gone, re-invoke the tutorial from an empty dir") and stop.
|
|
|
21
21
|
|
|
22
22
|
## Step `authoring-1-scaffold` - `sm plugins create extractor demo-highlight` (~2 min)
|
|
23
23
|
|
|
24
|
-
**Context**: We're building `demo-highlight`: a tiny extractor
|
|
25
|
-
that scans each node's body for the keywords `TODO` and `FIXME`
|
|
26
|
-
and shows the count as a chip on the node card. The scaffolder
|
|
27
|
-
emits a working version of it; over the next steps we'll tweak
|
|
28
|
-
its setting, move the chip to a different slot, and break the
|
|
29
|
-
manifest on purpose to see the diagnostic catch it.
|
|
30
|
-
|
|
31
24
|
> Let's scaffold it with `sm plugins create`:
|
|
32
25
|
|
|
33
26
|
```bash
|
|
@@ -34,11 +34,6 @@ has NO `sm scan` / `sm check` steps: the watcher re-scans on every save.
|
|
|
34
34
|
|
|
35
35
|
## Chapter `setup` - Make it yours and bring it up (~5 min)
|
|
36
36
|
|
|
37
|
-
**Context**: the harness is wired. Now put it to work on a real day. First make
|
|
38
|
-
the site yours, about whatever you like, then serve it. The HTML and
|
|
39
|
-
CSS are Layer 2 (the harness's output); skill-map maps the harness (Layer 1, the
|
|
40
|
-
`.md` files), so the site landing on disk does NOT move the graph.
|
|
41
|
-
|
|
42
37
|
**Preparation**:
|
|
43
38
|
1. Ask the tester the two questions straight, with no "before we build, let's
|
|
44
39
|
make it yours" lead-in: what the site should be called and one line about what
|
|
@@ -114,10 +109,6 @@ Wait for confirmation. Mark `add-page`: done. Auto-advance to `broken-ref`.
|
|
|
114
109
|
|
|
115
110
|
## Chapter `broken-ref` - A rename breaks a link (~4 min)
|
|
116
111
|
|
|
117
|
-
**Context**: the daily safety net, and where skill-map earns its keep: rename and
|
|
118
|
-
move things freely, and skill-map shows you exactly what you forgot to update
|
|
119
|
-
before it ships broken.
|
|
120
|
-
|
|
121
112
|
**Preparation**: none (the tester drives). Everything is watched live.
|
|
122
113
|
|
|
123
114
|
Tell the tester to free the third terminal, then rename the deploy runbook
|
|
@@ -180,24 +171,12 @@ The watcher picks up the new skill. Tell the tester:
|
|
|
180
171
|
|
|
181
172
|
Wait for confirmation. Mark `reserved`: done. Auto-advance to `publish`.
|
|
182
173
|
|
|
183
|
-
**Antigravity delta** (`tutorial.provider == antigravity`): skills ARE
|
|
184
|
-
`/`-invoked here, so a built-in verb DOES collide. Name the skill `goal` (an
|
|
185
|
-
Antigravity built-in) instead of `model`, narrate the `name-reserved`
|
|
186
|
-
**warning** that appears, and have the tester clear it by renaming the folder +
|
|
187
|
-
`frontmatter.name` to `new-page` (the warning clears live). That collision-and-
|
|
188
|
-
fix beat is the Antigravity version; `agent-skills` gets the "names are free"
|
|
189
|
-
lesson above.
|
|
190
|
-
|
|
191
174
|
---
|
|
192
175
|
|
|
193
176
|
**Act C - Publish**
|
|
194
177
|
|
|
195
178
|
## Chapter `publish` - Ship it: run the publish skill for real (~4 min)
|
|
196
179
|
|
|
197
|
-
**Context**: the publish flow only earns its keep when something is actually
|
|
198
|
-
wrong, so first you plant a real bug in the site, then watch the publish skill
|
|
199
|
-
catch and fix it for real.
|
|
200
|
-
|
|
201
180
|
**Preparation**: make sure the pages exist (`index`, `about`, `projects`).
|
|
202
181
|
|
|
203
182
|
This chapter has two beats: the tester breaks a link in the HTML first, then runs
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
# Part 0 (basic track): The live map (prologue) - step library
|
|
2
2
|
|
|
3
|
-
The live-UI prologue for the **basic track
|
|
4
|
-
`agent-skills
|
|
3
|
+
The live-UI prologue for the **basic track**: the **Agent Skills open
|
|
4
|
+
standard** (the `agent-skills` lens; vendors like Antigravity build on it and
|
|
5
|
+
add their own extras, which this book does not teach). Same arc as the rich
|
|
6
|
+
prologue, the tester runs
|
|
5
7
|
`sm init`, opens the browser, and watches the map update in real time, but this
|
|
6
8
|
lens authors only **skills** and **markdown notes**, and assets connect by
|
|
7
9
|
**markdown references** (`[text](path)`), the one link the Agent Skills standard
|
|
@@ -196,11 +198,6 @@ Mark `inspector`: done.
|
|
|
196
198
|
|
|
197
199
|
## Chapter `edit-link` - Edit a link, the topology changes (~3 min)
|
|
198
200
|
|
|
199
|
-
**Context**: `first-edit` changed a scalar and watched a card refresh. This
|
|
200
|
-
chapter edits the markdown links and watches the MAP TOPOLOGY change both ways,
|
|
201
|
-
a connector disappears when you remove a link, and a new one appears (clearing
|
|
202
|
-
the broken-reference error) when you fix the unresolved one.
|
|
203
|
-
|
|
204
201
|
The server has been live since `init`, leave it running; this chapter and the
|
|
205
202
|
next two reuse it.
|
|
206
203
|
|
|
@@ -232,10 +229,6 @@ You verify by reading `notes/todo.md` (the `demo-skill` bullet gone, the
|
|
|
232
229
|
|
|
233
230
|
## Chapter `workspace` - Navigate the workspace (files, search, isolate) (~2 min)
|
|
234
231
|
|
|
235
|
-
**Context**: you've built the graph and understood it; this beat is about
|
|
236
|
-
*moving around* it. The workspace has two halves: the **Map**, and a **Files**
|
|
237
|
-
panel (a folder tree of every node). The same `sm` session is still running.
|
|
238
|
-
|
|
239
232
|
Walk the three actions one at a time (open the Files panel, search, isolate);
|
|
240
233
|
each ends with its own confirmation. Do NOT prepend an intro line to a block.
|
|
241
234
|
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
# Part 1 (basic track): The harness from zero (step library, `kickoff-*` ids)
|
|
2
2
|
|
|
3
|
-
The campaign turns real here for the **basic track
|
|
4
|
-
`agent-skills
|
|
3
|
+
The campaign turns real here for the **basic track**: the **Agent Skills open
|
|
4
|
+
standard** (the `agent-skills` lens; vendors like Antigravity build on it).
|
|
5
|
+
After the abstract prologue, the tester starts an
|
|
5
6
|
actual project: a tiny personal **portfolio website**, fully static, served by a
|
|
6
7
|
~15-line Express server, plus the `.agents/skills/` **harness** that maintains
|
|
7
8
|
it. skill-map maps the harness (the `.md` assets and how they reference each
|
|
@@ -22,9 +23,6 @@ The chapters grow the harness from there.
|
|
|
22
23
|
|
|
23
24
|
## Chapter `kickoff` - Start the portfolio (~2 min)
|
|
24
25
|
|
|
25
|
-
**Context**: same `sm init` from the prologue, now on a real project. The map
|
|
26
|
-
shows the project's harness, not throwaway demo nodes.
|
|
27
|
-
|
|
28
26
|
If the prologue (`basic-fundamentals`) ran first here, `portfolio-init` already
|
|
29
27
|
cleared the demo fixture during pre-flight, so the tester sees only the
|
|
30
28
|
portfolio. If anything demo lingers, mention it once and move on.
|
|
@@ -59,11 +57,6 @@ Wait for confirmation. Mark `kickoff`: done.
|
|
|
59
57
|
|
|
60
58
|
## Chapter `manual` - The handbook and an entry pointer (~2 min)
|
|
61
59
|
|
|
62
|
-
**Context**: the first connector on the real project. A project often keeps a
|
|
63
|
-
short entry file that points readers (and tools) at the handbook. On this lens
|
|
64
|
-
that pointer is a plain **markdown link**, the only connector the open standard
|
|
65
|
-
defines, and it is the tester's first real reference here.
|
|
66
|
-
|
|
67
60
|
Tell the tester to create the file themselves (their project's file, Inviolable
|
|
68
61
|
rule #2):
|
|
69
62
|
|
|
@@ -110,11 +103,6 @@ Wait for confirmation. Mark `first-skill`: done.
|
|
|
110
103
|
|
|
111
104
|
## Chapter `real-kinds` - The kinds in context (~2 min)
|
|
112
105
|
|
|
113
|
-
**Context**: the prologue showed this lens's two kinds on abstract demo nodes.
|
|
114
|
-
Now name them on the real project, and add the two markdown docs the harness
|
|
115
|
-
references later (the style guide and the deploy runbook), so the daily loop's
|
|
116
|
-
maintenance beats have something to point at.
|
|
117
|
-
|
|
118
106
|
Lay the two docs (content lives in `fixtures-data/`). Backstage (silent):
|
|
119
107
|
|
|
120
108
|
```
|
|
@@ -142,10 +130,6 @@ Wait for confirmation. Mark `real-kinds`: done.
|
|
|
142
130
|
|
|
143
131
|
## Chapter `check-links` - The link checker (~3 min)
|
|
144
132
|
|
|
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
133
|
Lay the `check-links` skill (content lives in `fixtures-data/`). Backstage
|
|
150
134
|
(silent):
|
|
151
135
|
|
|
@@ -164,15 +148,14 @@ Wait for confirmation. Mark `check-links`: done.
|
|
|
164
148
|
|
|
165
149
|
## Chapter `publish` - The publish skill (~4 min)
|
|
166
150
|
|
|
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
151
|
Tell the tester to create the file themselves (Inviolable rule #2). Render the
|
|
173
152
|
block as a **top-level fenced code block** at column 0, NOT inside the `> `
|
|
174
153
|
blockquote, so the frontmatter fences (`---`) land on column 0 (indented fences
|
|
175
|
-
never parse, and `sm check` then warns `frontmatter-malformed`).
|
|
154
|
+
never parse, and `sm check` then warns `frontmatter-malformed`). Emit every line
|
|
155
|
+
verbatim: never soft-wrap, and never let a newline fall inside a `[text](path)`
|
|
156
|
+
link, a break inside the `(path)` splits it (`(../content-editor/SKILL.md)` must
|
|
157
|
+
stay on one line) and the link stops resolving (see `_core.md` §Language
|
|
158
|
+
mirroring + fixture content).
|
|
176
159
|
|
|
177
160
|
> Create `<provider_dir>/publish/SKILL.md` with exactly this content (the first
|
|
178
161
|
> line is `---`, nothing before it):
|
|
@@ -220,10 +203,6 @@ indented on paste, re-align every line flush left). Mark `publish`: done.
|
|
|
220
203
|
|
|
221
204
|
## Chapter `links` - The handbook becomes the hub (~4 min)
|
|
222
205
|
|
|
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
206
|
Apply both edits (content lives in `fixtures-data/`). The first appends two hub
|
|
228
207
|
bullets (markdown links) to `AGENTS.md`; the second adds the style-guide
|
|
229
208
|
reference to the content-editor skill. Backstage (silent):
|
|
@@ -275,8 +254,10 @@ Tell the tester:
|
|
|
275
254
|
> file, and it drew a solid arrow at **1.00**.
|
|
276
255
|
>
|
|
277
256
|
> **IMPORTANT:** why does confidence matter? It mirrors how an agent resolves a
|
|
278
|
-
> reference, a deterministic name-and-path lookup, no guessing.
|
|
279
|
-
>
|
|
257
|
+
> reference, a deterministic name-and-path lookup, no guessing. A link that does
|
|
258
|
+
> not resolve sends the agent guessing and retrying, which burns time and tokens;
|
|
259
|
+
> a deterministic one is cheaper and does not fail, the same reason a clean,
|
|
260
|
+
> well-named harness is worth keeping.
|
|
280
261
|
>
|
|
281
262
|
> Do you see every badge reading 1.00 in the Inspector?
|
|
282
263
|
|
|
@@ -67,8 +67,6 @@ Mark `issues`: done.
|
|
|
67
67
|
|
|
68
68
|
## Chapter `annotations` - Annotations and the .sm consent prompt (~3 min)
|
|
69
69
|
|
|
70
|
-
**Context**: skill-map keeps each tracked `.md`'s metadata (version, history, tags, annotations) in a sibling **`.sm` companion file** so the `.md` stays clean, and the first time it writes one in a project it asks for consent (remembered in the gitignored `settings.local.json`). The Maintain part walks that consent flow in full; this chapter does not re-teach it. The CLI focus here is what Maintain does not cover: the **three sidecar verbs** and the `--yes` non-interactive switch. A tester who jumped straight here gets a one-line refresher in the demo below.
|
|
71
|
-
|
|
72
70
|
Create a scaffold for `notes/todo.md` so there is a `.sm` on disk to talk about. **Reset any prior consent state first** so the prompt appears (an earlier step may have flipped the flag, in which case the verb skips straight past it):
|
|
73
71
|
|
|
74
72
|
```bash
|
|
@@ -90,8 +88,6 @@ Mark `annotations`: done.
|
|
|
90
88
|
|
|
91
89
|
## Chapter `reference-paths` - Validate links to folders outside the scan scope (~4 min)
|
|
92
90
|
|
|
93
|
-
**Context**: until now the map saw only files inside the cwd. In real projects a repo often links to files in a sibling repo (a specs project, a sibling package in a monorepo). Skill-map only scans from its cwd downwards, so a link to `../sibling/file.md` shows up as broken. The fix is to declare the external folders in `scan.referencePaths`, which lets the `reference-broken` analyzer validate path-style links against those extra roots **without indexing their files as nodes**. The folders are checked, not walked as part of the map.
|
|
94
|
-
|
|
95
91
|
**Setup (you, silent)**: lay the fixture under the tutorial cwd so both sub-projects are siblings of each other but children of the tutorial root (its content + translation live in `fixtures-data/`). No confirmation beat needed, the tester learns about the files in the next message. Backstage (silent):
|
|
96
92
|
|
|
97
93
|
```
|
|
@@ -125,15 +125,6 @@ broken-reference markers, and confidence live.
|
|
|
125
125
|
|
|
126
126
|
## Chapter `setup` - Make it yours and bring it up (~5 min)
|
|
127
127
|
|
|
128
|
-
**Context**: the harness is wired (you built it in the earlier parts). Now you
|
|
129
|
-
put it to work on a real day. First, make the site yours, about whatever you
|
|
130
|
-
like, then serve it and open it in the browser, the early payoff before the
|
|
131
|
-
daily loop fills it with pages. The honest beat: the HTML
|
|
132
|
-
and CSS are Layer 2 (the harness's output); skill-map maps the harness (Layer 1,
|
|
133
|
-
the `.md` files), so the site landing on disk does NOT move the graph, and that
|
|
134
|
-
is correct, not a bug. The tester runs the serve commands themselves (one of the
|
|
135
|
-
few non-`sm` beats); guide them, do not run them.
|
|
136
|
-
|
|
137
128
|
**Preparation**:
|
|
138
129
|
|
|
139
130
|
1. Ask the tester the two questions straight, with no "before we build, let's
|
|
@@ -326,10 +317,6 @@ Wait for confirmation. Mark `add-page`: done. Auto-advance to `broken-ref`.
|
|
|
326
317
|
|
|
327
318
|
## Chapter `broken-ref` - A rename breaks a link (~4 min)
|
|
328
319
|
|
|
329
|
-
**Context**: the daily safety net, and where skill-map earns its keep: rename and
|
|
330
|
-
move things freely, and skill-map shows you exactly what you forgot to update
|
|
331
|
-
before it ships broken.
|
|
332
|
-
|
|
333
320
|
**Preparation**: none (the tester drives). Everything here is watched live on
|
|
334
321
|
the Map; no `sm` commands.
|
|
335
322
|
|
|
@@ -405,10 +392,6 @@ Wait for confirmation. Mark `reserved`: done. Auto-advance to `publish`.
|
|
|
405
392
|
|
|
406
393
|
## Chapter `publish` - Ship it: run /publish for real (~4 min)
|
|
407
394
|
|
|
408
|
-
**Context**: the publish flow only earns its keep when something is actually
|
|
409
|
-
wrong, so first you plant a real bug in the site, then watch `/publish` catch and
|
|
410
|
-
fix it for real.
|
|
411
|
-
|
|
412
395
|
**Preparation**: make sure the pages exist (`index`, `about`, `projects` from the
|
|
413
396
|
earlier chapters; lay any that are missing from the templates in `setup`).
|
|
414
397
|
|
|
@@ -200,8 +200,6 @@ Mark `inspector`: done.
|
|
|
200
200
|
|
|
201
201
|
## Chapter `edit-link` - Edit a link, the topology changes (~3 min)
|
|
202
202
|
|
|
203
|
-
**Context**: the `first-edit` chapter had the tester edit a scalar (`description`) and watch the inspector card refresh. This chapter raises the bar: edit Markdown links and watch the MAP TOPOLOGY change both ways, a connector disappears when you remove a link, and a new one appears (clearing the broken-reference error) when you fix the unresolved one.
|
|
204
|
-
|
|
205
203
|
The server has been live since the `init` chapter, leave it running; this chapter and the next two (the workspace tour, then `.skillmapignore`) reuse it.
|
|
206
204
|
|
|
207
205
|
> Your turn. Edit `notes/todo.md` with your editor of choice and
|
|
@@ -232,8 +230,6 @@ You verify by reading `notes/todo.md` to confirm both edits landed (the `@demo-a
|
|
|
232
230
|
|
|
233
231
|
## Chapter `workspace` - Navigate the workspace (files, search, isolate) (~2 min)
|
|
234
232
|
|
|
235
|
-
**Context**: you've built the graph and understood it; this beat is about *moving around* it. The workspace has two halves: the **Map** you've been working in, and a **Files** panel, a folder tree of every node. You'll open that tree and filter it with the search box. The same `sm` session you booted back in the `init` chapter is still running.
|
|
236
|
-
|
|
237
233
|
Walk the three tester actions below one at a time (open the Files
|
|
238
234
|
panel, then search, then isolate); each ends with its own
|
|
239
235
|
confirmation, so present one and wait for the tester before the next.
|
|
@@ -12,20 +12,10 @@ only. Shared conventions live in `_core.md`.
|
|
|
12
12
|
|
|
13
13
|
## Chapter `mcp-node` - The agent reaches for an MCP tool (~3 min)
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
server
|
|
18
|
-
|
|
19
|
-
Claude names those tools `mcp__<server>__<tool>` in an agent's
|
|
20
|
-
frontmatter. When the agent declares it uses `mcp__images__search`
|
|
21
|
-
(an image-search tool, so it can find art for the pages), skill-map's
|
|
22
|
-
`core/mcp-tools` extractor reads that declaration and draws a
|
|
23
|
-
virtual `mcp://images` node plus a `references` link from
|
|
24
|
-
content-editor to it. The link confidence is around 0.85 (high, but
|
|
25
|
-
not the 1.00 of a markdown link to a real file, because the target is
|
|
26
|
-
an external service, not a file on disk). If several harness members
|
|
27
|
-
named the same server, skill-map would draw a single shared
|
|
28
|
-
`mcp://images` node, not one per caller.
|
|
15
|
+
Agent note (not narrated, the demo only adds one tool so it never
|
|
16
|
+
manifests here): if several harness members named the same MCP
|
|
17
|
+
server, skill-map draws ONE shared `mcp://images` node, not one per
|
|
18
|
+
caller.
|
|
29
19
|
|
|
30
20
|
**Preparation**: `Edit` `.claude/agents/content-editor.md`. Do NOT
|
|
31
21
|
rewrite the file. Change only the `tools:` line in the frontmatter so
|
|
@@ -23,10 +23,6 @@ restore the files.") and stop.
|
|
|
23
23
|
|
|
24
24
|
## Step `tour-1-intro` - how plugins work (~4 min)
|
|
25
25
|
|
|
26
|
-
**Context**: A short tour of what a plugin is, how it groups
|
|
27
|
-
extensions, and a peek at the five plugins that ship
|
|
28
|
-
pre-installed.
|
|
29
|
-
|
|
30
26
|
> Plugins are how skill-map gets extended. A **plugin** is the
|
|
31
27
|
> deployable unit: one directory with a `plugin.json` manifest and
|
|
32
28
|
> the extension code. It groups one or more **extensions**, the
|
|
@@ -130,10 +126,6 @@ Mark `tour-2-kinds: done`.
|
|
|
130
126
|
|
|
131
127
|
## Step `tour-3-explore` - explore one extension up close (~4 min)
|
|
132
128
|
|
|
133
|
-
**Context**: Drill into a single extension to see its detail,
|
|
134
|
-
run the diagnostic, then toggle one off and back on so you see
|
|
135
|
-
the change persists.
|
|
136
|
-
|
|
137
129
|
> Pick one extension and look at its details. We'll use
|
|
138
130
|
> `core/external-url-counter`, an extractor that counts how many
|
|
139
131
|
> external URLs each node body contains:
|
|
@@ -45,10 +45,6 @@ The chapters grow the harness from there.
|
|
|
45
45
|
|
|
46
46
|
## Chapter `kickoff` - Start the portfolio (~2 min)
|
|
47
47
|
|
|
48
|
-
**Context**: same `sm init` the tester learned in the prologue, but
|
|
49
|
-
now on a real project. The map will show the project's harness, not
|
|
50
|
-
throwaway demo nodes.
|
|
51
|
-
|
|
52
48
|
If the prologue (`fundamentals`) ran first in this directory, the
|
|
53
49
|
demo fixture (`demo-agent`, `demo-skill`, `notes/…`) is still on
|
|
54
50
|
disk. The orchestrator's `portfolio-init` already cleared it during
|
|
@@ -90,12 +86,6 @@ Wait for confirmation. Mark `kickoff`: done.
|
|
|
90
86
|
|
|
91
87
|
## Chapter `manual` - The handbook (AGENTS.md) and CLAUDE.md (~2 min)
|
|
92
88
|
|
|
93
|
-
**Context**: the dogfood beat. Real Claude Code projects can
|
|
94
|
-
reference the generic `AGENTS.md` from their `CLAUDE.md` (this very
|
|
95
|
-
repo does). That one-line pointer is a real `references` link (the
|
|
96
|
-
`.md` extension makes `@AGENTS.md` a file pointer), the tester's first
|
|
97
|
-
connector on the real project.
|
|
98
|
-
|
|
99
89
|
Tell the tester to create the file themselves (it is their project's
|
|
100
90
|
file, Inviolable rule #2). Backstage, get the content:
|
|
101
91
|
`node .claude/skills/sm-tutorial/scripts/fixtures.js cat portfolio --file "CLAUDE.md" --provider <provider> --lang <lang>`,
|
|
@@ -147,11 +137,6 @@ Wait for confirmation. Mark `first-agent`: done.
|
|
|
147
137
|
|
|
148
138
|
## Chapter `real-kinds` - The real kinds in context (~2 min)
|
|
149
139
|
|
|
150
|
-
**Context**: the prologue showed the four kinds on abstract demo
|
|
151
|
-
nodes. Now name them on the real project, and add the two markdown
|
|
152
|
-
docs the harness references later (the style guide and the deploy
|
|
153
|
-
runbook), so the Daily Loop's maintenance beats have something to point at.
|
|
154
|
-
|
|
155
140
|
Lay the two markdown docs the harness references later (their content
|
|
156
141
|
+ translation live in `fixtures-data/`). Backstage (silent):
|
|
157
142
|
|
|
@@ -181,8 +166,6 @@ Wait for confirmation. Mark `real-kinds`: done.
|
|
|
181
166
|
|
|
182
167
|
## Chapter `check-links` - The link checker (~3 min)
|
|
183
168
|
|
|
184
|
-
**Context**: the harness needs a guard that runs before publishing, a skill that checks the site's internal links resolve before it ships. We only create the `skill` node here; the `publish` command in the next chapter is its caller.
|
|
185
|
-
|
|
186
169
|
Lay the `check-links` skill (its content + translation live in
|
|
187
170
|
`fixtures-data/`; this kind exists on every provider, so no skip).
|
|
188
171
|
Backstage (silent):
|
|
@@ -203,9 +186,7 @@ Wait for confirmation. Mark `check-links`: done.
|
|
|
203
186
|
|
|
204
187
|
## Chapter `publish` - The publish command (~4 min)
|
|
205
188
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
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.
|
|
189
|
+
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, line for line: never soft-wrap, and never let a newline fall inside a `[text](path)` link (a break inside the `(path)`, e.g. `(../../docs/DEPLOY.md)`, splits it and the link stops resolving). See `_core.md` §Language mirroring + fixture content.
|
|
209
190
|
|
|
210
191
|
> Create `.claude/commands/publish.md` with exactly this content (the first line is `---`, nothing before it):
|
|
211
192
|
|
|
@@ -253,8 +234,6 @@ Wait for confirmation. You MAY use `Read` on the file afterwards to verify it la
|
|
|
253
234
|
|
|
254
235
|
## Chapter `links` - The handbook becomes the hub (~4 min)
|
|
255
236
|
|
|
256
|
-
**Context**: the handbook (`AGENTS.md`) has been a lonely node since the start of this part. Here it becomes the hub: we add two bullets so it mentions the content editor and invokes the publish command. We also give the content editor a reference to the style guide it follows. Several connectors land, and we recap the three link kinds and which syntax produced each.
|
|
257
|
-
|
|
258
237
|
Apply both edits (their content + translation live in `fixtures-data/`).
|
|
259
238
|
The first appends the two hub bullets to `AGENTS.md`; the second adds
|
|
260
239
|
the style-guide reference line to the content-editor. Backstage (silent):
|
|
@@ -325,9 +304,10 @@ Tell the tester:
|
|
|
325
304
|
>
|
|
326
305
|
> **IMPORTANT:** why does confidence matter? It mirrors how the runtime itself
|
|
327
306
|
> resolves a reference: a deterministic name-and-path lookup, no guessing
|
|
328
|
-
> and no scanning the tree for a file under some other extension.
|
|
329
|
-
>
|
|
330
|
-
>
|
|
307
|
+
> and no scanning the tree for a file under some other extension. A link that
|
|
308
|
+
> does not resolve sends the agent guessing and retrying, which burns time and
|
|
309
|
+
> tokens; a deterministic one does not fail and resolves first try, the same
|
|
310
|
+
> reason a clean, well-named harness is worth keeping.
|
|
331
311
|
>
|
|
332
312
|
> Do you see every badge reading 1.00 in the Inspector?
|
|
333
313
|
|
|
@@ -22,9 +22,6 @@ stop, do not try to re-init mid-chapter.
|
|
|
22
22
|
|
|
23
23
|
## Step `settings-1-layers` - the config layers (~3 min)
|
|
24
24
|
|
|
25
|
-
**Context**: where settings live and how `sm` resolves a value
|
|
26
|
-
when more than one place sets it.
|
|
27
|
-
|
|
28
25
|
> `sm` resolves every setting through a stack of **layers**, each
|
|
29
26
|
> one overriding the layer below it:
|
|
30
27
|
>
|
|
@@ -74,9 +71,6 @@ Mark `settings-1-layers: done`.
|
|
|
74
71
|
|
|
75
72
|
## Step `settings-2-resolve` - read, resolve, and set a value (~3 min)
|
|
76
73
|
|
|
77
|
-
**Context**: the four config verbs (`get`, `show`, `set`, `reset`)
|
|
78
|
-
and how `show --source` reveals which layer won.
|
|
79
|
-
|
|
80
74
|
> Read a single setting. We'll use `scan.maxNodes`, the cap on how
|
|
81
75
|
> many nodes a scan walks:
|
|
82
76
|
|
|
@@ -123,10 +117,8 @@ Mark `settings-2-resolve: done`.
|
|
|
123
117
|
|
|
124
118
|
## Step `settings-3-lens` - the active provider lens (~2 min)
|
|
125
119
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
never touches your `.md` files. (Agent: substitute `<provider>` with
|
|
129
|
-
`tutorial.provider`, the lens this run was scaffolded for.)
|
|
120
|
+
(Agent: substitute `<provider>` with `tutorial.provider`, the lens
|
|
121
|
+
this run was scaffolded for.)
|
|
130
122
|
|
|
131
123
|
> One setting earns its own step: the **active provider lens**. A
|
|
132
124
|
> skill-map project reads its files through exactly **one** provider
|