@skill-map/cli 0.67.0 → 0.68.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.
Files changed (105) hide show
  1. package/dist/cli/tutorial/sm-tutorial/SKILL.md +30 -23
  2. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/agents-hub/providers/agent-skills/en/agents-hub.md +2 -0
  3. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/agents-hub/providers/agent-skills/es/agents-hub.md +2 -0
  4. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/content-editor-style/providers/agent-skills/en/content-editor-style.md +1 -0
  5. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/content-editor-style/providers/agent-skills/es/content-editor-style.md +1 -0
  6. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/providers/agent-skills/en/todo-bullet-guideline.md +1 -0
  7. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/providers/agent-skills/en/todo-bullet-guideline2.md +1 -0
  8. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/providers/agent-skills/en/todo-bullet-skill.md +1 -0
  9. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/providers/agent-skills/es/todo-bullet-guideline.md +1 -0
  10. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/providers/agent-skills/es/todo-bullet-guideline2.md +1 -0
  11. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/providers/agent-skills/es/todo-bullet-skill.md +1 -0
  12. package/dist/cli/tutorial/sm-tutorial/fixtures-data/manifest.json +9 -4
  13. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/harness/providers/agent-skills/en/__PROVIDER__/skills/publish/SKILL.md +15 -0
  14. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/harness/providers/agent-skills/es/__PROVIDER__/skills/publish/SKILL.md +16 -0
  15. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/harness/providers/codex/en/__PROVIDER__/skills/publish/SKILL.md +15 -0
  16. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/harness/providers/codex/es/__PROVIDER__/skills/publish/SKILL.md +16 -0
  17. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/master/providers/agent-skills/en/__PROVIDER__/skills/master-agent/SKILL.md +13 -0
  18. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/master/providers/agent-skills/es/__PROVIDER__/skills/master-agent/SKILL.md +14 -0
  19. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/master/providers/codex/en/.codex/agents/master-agent.toml +10 -0
  20. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/master/providers/codex/es/.codex/agents/master-agent.toml +10 -0
  21. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/providers/agent-skills/en/AGENTS.md +7 -0
  22. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/providers/agent-skills/en/__PROVIDER__/skills/content-editor/SKILL.md +20 -0
  23. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/providers/agent-skills/es/AGENTS.md +7 -0
  24. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/providers/agent-skills/es/__PROVIDER__/skills/content-editor/SKILL.md +20 -0
  25. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/providers/agent-skills/shared/CLAUDE.md +1 -0
  26. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/providers/codex/en/.codex/agents/content-editor.toml +19 -0
  27. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/providers/codex/es/.codex/agents/content-editor.toml +19 -0
  28. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/providers/codex/en/.codex/agents/demo-agent.toml +13 -0
  29. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/providers/codex/en/__PROVIDER__/skills/demo-command/SKILL.md +11 -0
  30. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/providers/codex/es/.codex/agents/demo-agent.toml +13 -0
  31. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/providers/codex/es/__PROVIDER__/skills/demo-command/SKILL.md +12 -0
  32. package/dist/cli/tutorial/sm-tutorial/references/_core.md +102 -49
  33. package/dist/cli/tutorial/sm-tutorial/references/_manifest.json +168 -20
  34. package/dist/cli/tutorial/sm-tutorial/references/_manifest.yml +85 -19
  35. package/dist/cli/tutorial/sm-tutorial/references/fixtures.md +6 -7
  36. package/dist/cli/tutorial/sm-tutorial/references/part-authoring.md +2 -2
  37. package/dist/cli/tutorial/sm-tutorial/references/part-basic-daily.md +241 -0
  38. package/dist/cli/tutorial/sm-tutorial/references/part-basic-fundamentals.md +351 -0
  39. package/dist/cli/tutorial/sm-tutorial/references/part-basic-kickoff.md +285 -0
  40. package/dist/cli/tutorial/sm-tutorial/references/part-cli.md +1 -1
  41. package/dist/cli/tutorial/sm-tutorial/references/part-daily-loop.md +62 -99
  42. package/dist/cli/tutorial/sm-tutorial/references/part-fundamentals.md +35 -34
  43. package/dist/cli/tutorial/sm-tutorial/references/part-mcp.md +3 -6
  44. package/dist/cli/tutorial/sm-tutorial/references/part-plugins.md +1 -1
  45. package/dist/cli/tutorial/sm-tutorial/references/part-project-kickoff.md +198 -26
  46. package/dist/cli/tutorial/sm-tutorial/references/part-settings.md +19 -15
  47. package/dist/cli/tutorial/sm-tutorial/scripts/fixtures.js +85 -22
  48. package/dist/cli/tutorial/sm-tutorial/scripts/lib/paths.js +74 -4
  49. package/dist/cli/tutorial/sm-tutorial/scripts/state.js +22 -6
  50. package/dist/cli.js +409 -168
  51. package/dist/conformance/index.js +42 -2
  52. package/dist/index.js +43 -30
  53. package/dist/kernel/index.d.ts +28 -5
  54. package/dist/kernel/index.js +43 -30
  55. package/dist/ui/chunk-22EQLC23.js +1845 -0
  56. package/dist/ui/chunk-3ANNEMV4.js +499 -0
  57. package/dist/ui/{chunk-5BJGO7GH.js → chunk-3U4QZKU2.js} +4 -4
  58. package/dist/ui/chunk-3ZAHOYQ7.js +1 -0
  59. package/dist/ui/{chunk-56CBK7LB.js → chunk-6FGV5O5J.js} +1 -1
  60. package/dist/ui/chunk-7WMT2LX4.js +1 -0
  61. package/dist/ui/{chunk-276RLZR4.js → chunk-BSIR3ADF.js} +14 -14
  62. package/dist/ui/{chunk-FC22ZJQZ.js → chunk-CG25RHMO.js} +1 -1
  63. package/dist/ui/chunk-EFSC6SOL.js +3 -0
  64. package/dist/ui/chunk-EJVWTBMV.js +4 -0
  65. package/dist/ui/chunk-EZI3BXQN.js +1 -0
  66. package/dist/ui/{chunk-JZ2YF7EL.js → chunk-GUPPOK7U.js} +8 -8
  67. package/dist/ui/{chunk-CJURGJTN.js → chunk-HLALESGR.js} +1 -1
  68. package/dist/ui/chunk-I3I4KHR5.js +2 -0
  69. package/dist/ui/{chunk-BOVJVOLH.js → chunk-I6ED2OW7.js} +1 -1
  70. package/dist/ui/chunk-JKPG5PO7.js +375 -0
  71. package/dist/ui/chunk-K3ZRQNN5.js +2 -0
  72. package/dist/ui/chunk-KHDWXSGR.js +1 -0
  73. package/dist/ui/{chunk-HEK4PH5A.js → chunk-KMHXNOFZ.js} +1 -1
  74. package/dist/ui/chunk-KWT7E2RJ.js +16 -0
  75. package/dist/ui/{chunk-WHZVGOS3.js → chunk-MQSU6EFZ.js} +1 -1
  76. package/dist/ui/{chunk-43S72FTV.js → chunk-OGEE252A.js} +1 -1
  77. package/dist/ui/{chunk-J4J42HJ4.js → chunk-PU5OP5RN.js} +1 -1
  78. package/dist/ui/{chunk-UTRZTB6V.js → chunk-QVG7J2MP.js} +1 -1
  79. package/dist/ui/chunk-TLMV4LOQ.js +3 -0
  80. package/dist/ui/chunk-TQBXK5JN.js +1 -0
  81. package/dist/ui/chunk-Z7SOKILO.js +2 -0
  82. package/dist/ui/{chunk-WCABR6TI.js → chunk-ZRJ5ZCFR.js} +1 -1
  83. package/dist/ui/index.html +2 -2
  84. package/dist/ui/main-R7BIU4HU.js +4 -0
  85. package/dist/ui/styles-VEGETYWD.css +1 -0
  86. package/package.json +17 -18
  87. package/dist/cli/tutorial/sm-tutorial/references/part-connect-harness.md +0 -173
  88. package/dist/ui/chunk-34ZZDYNQ.js +0 -1
  89. package/dist/ui/chunk-444BFYGR.js +0 -3
  90. package/dist/ui/chunk-44VNNUSQ.js +0 -2
  91. package/dist/ui/chunk-4SG4352Z.js +0 -7
  92. package/dist/ui/chunk-5ITZXW3A.js +0 -1
  93. package/dist/ui/chunk-7ANZW2OI.js +0 -499
  94. package/dist/ui/chunk-BJ6X6WBO.js +0 -4
  95. package/dist/ui/chunk-CZSLV6YD.js +0 -1
  96. package/dist/ui/chunk-DLYJHLJX.js +0 -2
  97. package/dist/ui/chunk-LGFABCIA.js +0 -16
  98. package/dist/ui/chunk-LPDD2DHE.js +0 -369
  99. package/dist/ui/chunk-P3SNMV4X.js +0 -2
  100. package/dist/ui/chunk-S4S5ZMXJ.js +0 -3
  101. package/dist/ui/chunk-VHEFRMK3.js +0 -1
  102. package/dist/ui/chunk-X6TRIDBI.js +0 -1845
  103. package/dist/ui/main-V77F2KZX.js +0 -4
  104. package/dist/ui/styles-I4ULXD3V.css +0 -1
  105. /package/dist/ui/{chunk-Y2Z26SRI.js → chunk-5RNLC6V4.js} +0 -0
@@ -0,0 +1,285 @@
1
+ # Part 1 (basic track): The project from zero (step library, `kickoff-*` ids)
2
+
3
+ The campaign turns real here for the **basic track** (the open-standard family:
4
+ `agent-skills`, `antigravity`). After the abstract prologue, the tester starts an
5
+ actual project: a tiny personal **portfolio website**, fully static, served by a
6
+ ~15-line Express server, plus the `.agents/skills/` **harness** that maintains
7
+ it. skill-map maps the harness (the `.md` assets and how they reference each
8
+ other); the site itself is plain HTML the harness produces (the daily loop, Part
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
15
+ `<provider_dir>` = `.agents/skills`.
16
+
17
+ The orchestrator's `portfolio-init` pre-flight (backstage, silent) has already
18
+ laid the bare skeleton before the tester runs `sm init`: `server.js`,
19
+ `package.json`, `public/index.html` (none `.md`, so the scan ignores them), the
20
+ portfolio `.skillmapignore`, and the handbook `AGENTS.md` (the one boot node).
21
+ The chapters grow the harness from there.
22
+
23
+ ## Chapter `kickoff` - Start the portfolio (~2 min)
24
+
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
+ If the prologue (`basic-fundamentals`) ran first here, `portfolio-init` already
29
+ cleared the demo fixture during pre-flight, so the tester sees only the
30
+ portfolio. If anything demo lingers, mention it once and move on.
31
+
32
+ The project carries a `.agents/` marker (the open-standard skill home where the
33
+ tutorial itself lives), so `sm init` auto-detects the `<provider>` lens with no
34
+ prompt. The root `AGENTS.md` is the vendor-neutral handbook, NOT a lens marker.
35
+
36
+ ```bash
37
+ sm init
38
+ sm
39
+ ```
40
+
41
+ Tell the tester:
42
+
43
+ > This is a real project now: a small **portfolio website**. It's static HTML
44
+ > served by a tiny Express server (`server.js`), and the `.agents/skills/` folder
45
+ > is the **harness** (the helpers that maintain the site). skill-map maps that
46
+ > harness.
47
+ >
48
+ > Run `sm init`, it auto-detects your `<provider>` lens from the `.agents/`
49
+ > folder. Then run `sm` to boot the live UI.
50
+ >
51
+ > Open the URL `sm` printed. You'll see **one node**: `AGENTS.md`, the project's
52
+ > handbook (the operating manual for the site). `server.js`, `package.json` and
53
+ > the HTML under `public/` are not `.md`, so skill-map leaves them out, it maps
54
+ > the harness, not the served files.
55
+ >
56
+ > See the handbook node? Then we start building.
57
+
58
+ Wait for confirmation. Mark `kickoff`: done.
59
+
60
+ ## Chapter `manual` - The handbook and an entry pointer (~2 min)
61
+
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
+ Tell the tester to create the file themselves (their project's file, Inviolable
68
+ rule #2):
69
+
70
+ > Create a file called `CLAUDE.md` at the project root with exactly this content:
71
+ >
72
+ > ```markdown
73
+ > See the [handbook](AGENTS.md).
74
+ > ```
75
+ >
76
+ > Save it. Watch the map: a new `CLAUDE.md` node appears with a `references`
77
+ > connector pointing at `AGENTS.md`, solid at 1.00. The markdown link
78
+ > `[handbook](AGENTS.md)` is a file pointer (the same kind of reference you met
79
+ > in the prologue), and since the handbook is right there the link resolves with
80
+ > full confidence. It tells anyone (and skill-map) that this file defers to the
81
+ > handbook.
82
+ >
83
+ > Did the connector light up?
84
+
85
+ Wait for confirmation. Mark `manual`: done.
86
+
87
+ ## Chapter `first-skill` - The first harness skill (~2 min)
88
+
89
+ Lay the first harness skill (content lives in `fixtures-data/`; the `skill` kind
90
+ exists on every lens, so no skip). Backstage (silent):
91
+
92
+ ```
93
+ node .claude/skills/sm-tutorial/scripts/fixtures.js lay portfolio --only "__PROVIDER__/skills/content-editor/SKILL.md" --provider <provider> --lang <lang>
94
+ ```
95
+
96
+ Tell the tester:
97
+
98
+ > I added the first real member of your harness: a skill called `content-editor`
99
+ > (its job is to write the site's pages). A new `skill` node appeared on the map.
100
+ > Right now it stands alone; later in this part we wire it to the handbook and the
101
+ > style guide.
102
+ >
103
+ > 💡 Tip: I create these harness files for you. If you'd like to see what's
104
+ > inside, open `<provider_dir>/content-editor/SKILL.md` in your editor, and feel
105
+ > free to peek at the files I add in the coming chapters too.
106
+ >
107
+ > See the new skill node?
108
+
109
+ Wait for confirmation. Mark `first-skill`: done.
110
+
111
+ ## Chapter `real-kinds` - The kinds in context (~2 min)
112
+
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
+ Lay the two docs (content lives in `fixtures-data/`). Backstage (silent):
119
+
120
+ ```
121
+ node .claude/skills/sm-tutorial/scripts/fixtures.js lay portfolio --only "docs/STYLE.md,docs/DEPLOY.md" --provider <provider> --lang <lang>
122
+ ```
123
+
124
+ Tell the tester:
125
+
126
+ > Two more nodes joined the map, both `markdown` (the catch-all kind for `.md`
127
+ > files that are not a skill): `docs/STYLE.md` (the style guide) and
128
+ > `docs/DEPLOY.md` (the deploy runbook). So now you have your lens's two kinds in
129
+ > front of you:
130
+ >
131
+ > - **skill**: `content-editor` (does work on your behalf).
132
+ > - **markdown**: `AGENTS.md`, `CLAUDE.md`, the two docs (plain notes and
133
+ > manuals).
134
+ >
135
+ > Your lens authors exactly these two; Claude and Codex projects add `agent` and
136
+ > `command` kinds on top. Your handbook now has a real harness around it: a
137
+ > `content-editor` skill plus its docs, all on the map.
138
+ >
139
+ > See the skill and the docs in the map?
140
+
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
284
+ §Closing a part (name the part by its title, route back to the menu; do NOT lead
285
+ into the next part from here).
@@ -1,4 +1,4 @@
1
- # Part 5: The CLI in depth - step library
1
+ # Part 4: The CLI in depth - step library
2
2
 
3
3
  The deep-dive into the rest of the CLI: browsing verbs, ASCII graph + export, broken-ref issues, the `.sm` annotation consent prompt, and validating links to folders outside the scan scope. `pace: auto-advance` (walk straight into the next chapter's Announcement once one is marked done) and `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 3: The daily loop (step library, `daily-loop`)
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
@@ -18,11 +18,25 @@ what the tester names their portfolio. Persist the answer with
18
18
  `state.js set-identity --name "<name>" --tagline "<tagline>"` (it records
19
19
  `tester.site_identity` in `tutorial-state.json`).
20
20
 
21
- **Provider note (read once).** Substitute `.claude/` with the detected
22
- `<provider_dir>`. On `agent-skills` / Antigravity the `content-editor` is a
23
- **skill**, not an agent (invoke it as a skill); there is no `command` kind, so
24
- the `reserved` chapter is skipped and the `broken-ref` / `publish` chapters use
25
- their agent-skills variant (notes inline).
21
+ **Provider note (read once).** This is the rich track; the bodies below are the
22
+ `claude` layout (`.claude/`). The open-standard family (agent-skills /
23
+ antigravity) walks its own `basic-daily` part. **Codex deltas** (when
24
+ `tutorial.provider == codex`): the `content-editor` is a TOML agent at
25
+ `.codex/agents/content-editor.toml`, and Codex has no `command` kind, so
26
+ `publish` is a **skill** at `.agents/skills/publish/SKILL.md`. The `@`/`/`
27
+ connectors all resolve on Codex, so every beat lands the same; only the path /
28
+ kind of those two nodes changes. Per chapter:
29
+
30
+ - `add-page`: invoke the `content-editor` TOML agent via the Task tool (same flow).
31
+ - `broken-ref`: the deploy link that breaks lives in the `publish` SKILL; fix it
32
+ in `.agents/skills/publish/SKILL.md` (not a `.claude/commands/` file).
33
+ - `reserved`: Codex has no command, so create a SKILL with a reserved name
34
+ instead, `Write` `.agents/skills/config/SKILL.md` named `config` (it shadows
35
+ the open-standard `COMMONS_RESERVED_NAMES`); clear it by renaming the folder +
36
+ `frontmatter.name` to `new-page`, exactly like the basic track's `reserved`
37
+ chapter, on a skill.
38
+ - `publish`: run the `publish` SKILL's steps for real (same `/check-links` +
39
+ `@content-editor` + deploy runbook).
26
40
 
27
41
  **Real-execution contract (read once).** When invoking the `content-editor` via
28
42
  the Task tool, instruct it explicitly to write ONLY `.html` files under
@@ -48,9 +62,9 @@ broken-reference markers, and confidence live.
48
62
  ## Chapter `setup` - Make it yours and bring it up (~5 min)
49
63
 
50
64
  **Context**: the harness is wired (you built it in the earlier parts). Now you
51
- put it to work on a real day. First, make the site yours and give it a look you
52
- would not be embarrassed to share, then serve it and open it in the browser, the
53
- early payoff before the daily loop fills it with pages. The honest beat: the HTML
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
54
68
  and CSS are Layer 2 (the harness's output); skill-map maps the harness (Layer 1,
55
69
  the `.md` files), so the site landing on disk does NOT move the graph, and that
56
70
  is correct, not a bug. The tester runs the serve commands themselves (one of the
@@ -58,10 +72,11 @@ few non-`sm` beats); guide them, do not run them.
58
72
 
59
73
  **Preparation**:
60
74
 
61
- 1. Ask the tester, in one short exchange: what the site should be called (their
62
- name or a title) and one line about what it is for. Keep it light; if they do
63
- not care, offer defaults ("My Portfolio" / "Small, sturdy things on the
64
- web"). Persist both with
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
65
80
  `node .claude/skills/sm-tutorial/scripts/state.js set-identity --name "<name>" --tagline "<tagline>"`
66
81
  (it writes `tester.site_identity` into `tutorial-state.json`).
67
82
  2. Backstage, `Write` `public/style.css` exactly as below (Layer 2, ignored by
@@ -194,12 +209,6 @@ node server.js
194
209
  > Open `http://localhost:3000`: there is your site, named after you, with a
195
210
  > clean layout. Click **About** and back to **Home**.
196
211
  >
197
- > Now glance at the Map: it did not move. Everything you watched grow on the
198
- > canvas is your harness, the `.md` files and how they reference each other
199
- > (Layer 1). The pages and the stylesheet are Layer 2, what the harness
200
- > produces, and skill-map maps the harness, not its output. Two layers, one
201
- > project.
202
- >
203
212
  > Does the site load and look clean?
204
213
 
205
214
  Wait for confirmation. If `node server.js` reports `Cannot find module
@@ -210,11 +219,6 @@ project root and Node is on PATH. Mark `setup`: done. Auto-advance to
210
219
 
211
220
  ## Chapter `add-page` - Add a page with your agent (~4 min)
212
221
 
213
- **Context**: the daily move. You want a new page, so you ask your
214
- `content-editor` to write it. This is the first time it runs **for real** (no
215
- more playing the agent). It reads `docs/STYLE.md` and the shared stylesheet and
216
- writes a new page into `public/`. The graph does not move (HTML is Layer 2).
217
-
218
222
  **Preparation**: none until the tester asks.
219
223
 
220
224
  Tell the tester:
@@ -225,8 +229,8 @@ Tell the tester:
225
229
  > page.
226
230
 
227
231
  When the tester answers, invoke the project's `content-editor` (the
228
- `<provider_dir>/agents/content-editor.md` agent, or the skill on `agent-skills`)
229
- via the Task tool, honouring the real-execution contract above: write ONE new
232
+ `.claude/agents/content-editor.md` agent) via the Task tool, honouring the
233
+ real-execution contract above: write ONE new
230
234
  `.html` page under `public/` named after the topic (default `public/projects.html`),
231
235
  following the agent's own steps and `docs/STYLE.md` (the shared shell, link
232
236
  `/style.css`, one `<h1>`, a nav link back to Home), and add the new page to the
@@ -255,18 +259,18 @@ Wait for confirmation. Mark `add-page`: done. Auto-advance to `broken-ref`.
255
259
 
256
260
  ## Chapter `broken-ref` - A rename breaks a link (~4 min)
257
261
 
258
- **Context**: real reorganizing breaks things, and this is where skill-map earns
259
- its keep. You rename a doc, and a link that pointed at the old name goes stale.
260
- skill-map catches it the moment you re-scan.
261
-
262
- On `agent-skills` / Antigravity there is no `/publish` command holding the deploy
263
- link; use the variant in the note at the end of this chapter (rename
264
- `docs/STYLE.md` to break the `content-editor`'s style-guide reference instead).
262
+ **Context**: the daily safety net, and where skill-map earns its keep: rename and
263
+ move things freely, and skill-map shows you exactly what you forgot to update
264
+ before it ships broken.
265
265
 
266
266
  **Preparation**: none (the tester drives). Everything here is watched live on
267
267
  the Map; no `sm` commands.
268
268
 
269
- Tell the tester to rename the deploy runbook (their file):
269
+ Tell the tester to free the third terminal, then rename the deploy runbook
270
+ themselves (their file):
271
+
272
+ > In your **third terminal** (the one running `node server.js`), press
273
+ > **Ctrl+C** to stop the site server, then rename the deploy runbook there:
270
274
 
271
275
  ```bash
272
276
  mv docs/DEPLOY.md docs/DEPLOYMENT.md
@@ -283,9 +287,7 @@ mv docs/DEPLOY.md docs/DEPLOYMENT.md
283
287
  > point the deploy-runbook link at `docs/DEPLOYMENT.md` (the new name). Save.
284
288
  >
285
289
  > Watch the **Map** again: the arrow snaps back, solid, and the red marker
286
- > clears, all live, no command to run. That is the daily safety net: rename and
287
- > move things freely, and skill-map shows you exactly what you forgot to update
288
- > before it ships broken.
290
+ > clears, all live, no command to run.
289
291
  >
290
292
  > Did the broken marker appear and then clear?
291
293
 
@@ -293,23 +295,8 @@ Wait for confirmation. The harness MUST be clean again (the red marker gone)
293
295
  before Act C (the real `/publish` later follows this runbook). Mark `broken-ref`:
294
296
  done. Auto-advance to `reserved`.
295
297
 
296
- On `agent-skills` / Antigravity (no `command` kind), run the same beat on a link
297
- that exists there: `mv docs/STYLE.md docs/STYLE-GUIDE.md`, which breaks the
298
- `content-editor` skill's `[style guide]` reference; the Map flags the broken
299
- reference on the `content-editor`; fix the link in the skill body and watch it
300
- clear.
301
-
302
298
  ## Chapter `reserved` - A reserved name collides (~2 min)
303
299
 
304
- **Context**: you add a quick command to scaffold new pages and, without
305
- thinking, name it `init`, a name Claude Code already owns for its own slash
306
- command. skill-map warns you before the runtime silently ignores your file.
307
-
308
- On `agent-skills` / Antigravity there is no `command` kind: **skip this chapter**
309
- and fold a one-line mention ("skill-map also warns when a file's name collides
310
- with a runtime built-in") into the close of the previous chapter. Adjust the
311
- section's chapter count accordingly.
312
-
313
300
  **Preparation**: `Write` `.claude/commands/init.md`:
314
301
  ```markdown
315
302
  ---
@@ -334,14 +321,12 @@ The watcher picks up the new command. Tell the tester:
334
321
  > Rename it to `new-page`: first rename the file `.claude/commands/init.md` to
335
322
  > `.claude/commands/new-page.md`. Then open it in your text editor / IDE and, at
336
323
  > the top, where the frontmatter says `name: init`, change it to
337
- > `name: new-page`; also change the H1 to `# new-page` (a command's H1 stays a
338
- > plain title, never `# /new-page`). Save.
324
+ > `name: new-page`. Save.
339
325
  >
340
326
  > Watch the **Map** again: the warning clears and the node is now `new-page`,
341
- > all live. Notice what cleared it: changing the **name** (`frontmatter.name`),
342
- > not just the filename, the reserved check looks at the command's name, which
343
- > is why the warning said to rename "the file or `frontmatter.name`". Now
344
- > `new-page` is yours and the runtime will actually run it.
327
+ > all live. What cleared it was changing `frontmatter.name` (not just the
328
+ > filename), the reserved check looks at the name. Now `new-page` is yours and
329
+ > the runtime will run it.
345
330
  >
346
331
  > Did the warning clear after the rename?
347
332
 
@@ -353,16 +338,6 @@ Wait for confirmation. Mark `reserved`: done. Auto-advance to `publish`.
353
338
 
354
339
  ## Chapter `publish` - Ship it: run /publish for real (~4 min)
355
340
 
356
- **Context**: the harness is not a picture, it is a set of instructions, and
357
- `/publish` ties them together. You run it **for real** now: it invokes the link
358
- checker over your pages, briefs the `content-editor` if anything needs a fix,
359
- then follows the deploy runbook. This is the same Layer 1 / Layer 2 split, the
360
- pages are output, so the Map stays put while the pipeline runs.
361
-
362
- On `agent-skills` / Antigravity there is no `/publish` command: run the
363
- `check-links` skill directly over `public/`, then follow `docs/DEPLOYMENT.md` by
364
- hand. Everything else in this chapter is identical.
365
-
366
341
  **Preparation**: make sure the pages exist (`index`, `about`, `projects` from the
367
342
  earlier chapters; lay any that are missing from the templates in `setup`). When the tester asks to publish, **execute the publish flow for real**
368
343
  by following `.claude/commands/publish.md`: run the `check-links` logic over
@@ -375,7 +350,9 @@ Tell the tester:
375
350
  > The site is ready. Tell me to publish (or type `/publish`) and I'll run your
376
351
  > publish command for real: I follow its steps, run the link check across your
377
352
  > pages, fix anything through the `content-editor`, and walk the deploy runbook,
378
- > exactly what the command says to do.
353
+ > exactly what the command says to do. (You can read the command's content
354
+ > anytime by clicking the `publish` node on the Map, then opening its **Body**
355
+ > section.)
379
356
 
380
357
  After running the flow, report what actually happened (keep the promises
381
358
  conditional on the real result):
@@ -390,9 +367,6 @@ conditional on the real result):
390
367
  > regenerate the pages (done), run the link check (done), start the server
391
368
  > (next chapter).
392
369
  >
393
- > And the Map did not move while the pipeline ran: the pages are Layer 2 output;
394
- > the harness on the canvas is Layer 1, and that is what skill-map maps.
395
- >
396
370
  > As you saw in the lines just above, I did not report anything odd: the link
397
371
  > check came back clean and `/publish` is wired correctly across your pages.
398
372
  > Shall we continue?
@@ -401,46 +375,35 @@ Wait for confirmation. Mark `publish`: done. Auto-advance to `stability`.
401
375
 
402
376
  ## Chapter `stability` - Set a node's stability (and the `.sm` sidecar) (~3 min)
403
377
 
404
- **Context**: real maintenance includes marking how mature each piece is. skill-map
405
- lets you tag a node's **stability** (`experimental` / `stable` / `deprecated`)
406
- from the inspector. That is skill-map's own metadata, so it lands in a co-located
407
- **`.sm` sidecar** next to the file (the vendor file stays untouched), and the
408
- first `.sm` write asks for your consent. Good moment now that the site shipped:
409
- mark the handbook as the stable core it is.
410
-
411
378
  **Preparation**: none for a first-time tester. (If re-entering a dir where the
412
379
  sidecar already exists, reset consent first with `rm -f AGENTS.sm
413
380
  .skill-map/settings.local.json` so the consent prompt shows again.)
414
381
 
415
382
  Tell the tester:
416
383
 
417
- > Your harness shipped, so let's mark the handbook as the **stable** core it is.
418
- > Open the Inspector for the `AGENTS` node (click it on the **Map**) and find the
419
- > **stability** action (the action button in the inspector). Click it and pick
420
- > `stable` from the list.
384
+ > Your harness shipped, so let's set its **stability**. Open the Inspector for
385
+ > the `AGENTS` node (click it on the **Map**) and click the **Set stability**
386
+ > button. Pick any of `experimental` / `stable` / `deprecated` from the list.
421
387
  >
422
388
  > The first time skill-map writes its own metadata it asks for **consent**:
423
- > confirm it in the dialog that pops up. Two things happen at once: a `stable`
424
- > badge appears on the `AGENTS` node, and skill-map creates a **`.sm` sidecar**
425
- > (`AGENTS.sm`) right next to the handbook to hold that metadata, your `AGENTS.md`
426
- > itself is never touched. Your consent is remembered for the project, so it
427
- > will not ask again.
389
+ > confirm it in the dialog that pops up. Two things happen at once: a stability
390
+ > badge for the stage you picked appears on the `AGENTS` node, and skill-map
391
+ > creates a **`.sm` sidecar file** (`AGENTS.sm`) right next to the handbook to
392
+ > hold that metadata, your `AGENTS.md` itself is never touched. Your consent is
393
+ > remembered for the project, so it will not ask again.
428
394
  >
429
395
  > That sidecar is where skill-map keeps what it knows about a node that does not
430
- > belong in the vendor file (stability, version, tags). You just wrote your first
431
- > one, by clicking, no command needed.
396
+ > belong in the vendor file (stability, version, tags).
432
397
  >
433
- > See the `stable` badge on the handbook?
398
+ > See the new stability badge on the handbook?
434
399
 
435
400
  Wait for confirmation. Mark `stability`: done. Auto-advance to `golive`.
436
401
 
437
- ## Chapter `golive` - Your portfolio, live next to the graph (~3 min)
402
+ ## Chapter `golive` - Your website, live next to the graph (~3 min)
438
403
 
439
- **Context**: the climax. Serve the finished multi-page site and click through it,
440
- ending with the running portfolio on one side and the full harness graph on the
441
- other. One of the few chapters where the tester runs non-`sm` commands
442
- themselves; guide them, do not run it for them. `npm install` is idempotent, so
443
- it is safe whether or not they ran it in `setup`.
404
+ One of the few chapters where the tester runs non-`sm` commands themselves;
405
+ guide them, do not run it for them. `npm install` is idempotent, so it is safe
406
+ whether or not they ran it in `setup`.
444
407
 
445
408
  **Preparation**: none. `server.js` / `package.json` exist from the kickoff; the
446
409
  pages exist from the earlier chapters.
@@ -456,7 +419,7 @@ node server.js
456
419
  > Open `http://localhost:3000` and click through Home, About, and Projects, the
457
420
  > pages your harness produced and shipped through the publish flow you just ran.
458
421
  >
459
- > Now take it in at once. On one side, your real running portfolio, named after
422
+ > Now take it in at once. On one side, your real running website, named after
460
423
  > you, that you could deploy as-is. On the other, the skill-map graph of the
461
424
  > harness that built it: the handbook, the content-editor, the style guide, the
462
425
  > publish command, the link checker, the deploy runbook, all wired together. You
@@ -471,7 +434,7 @@ Wait for confirmation. The tester runs the commands; do not run them. If
471
434
  server with Ctrl+C and apply the ports edge case.
472
435
 
473
436
  This is the campaign finale. Congratulate them plainly: they went from an empty
474
- directory to a real, running portfolio plus a complete map of its harness. Then
437
+ directory to a real, running website plus a complete map of its harness. Then
475
438
  invite them to keep going on their own:
476
439
 
477
440
  > And this site is yours to keep playing with: add more pages, refine the style