@skill-map/cli 0.66.0 → 0.68.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.
Files changed (102) hide show
  1. package/dist/cli/tutorial/sm-tutorial/SKILL.md +16 -8
  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 -1
  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 +101 -48
  33. package/dist/cli/tutorial/sm-tutorial/references/_manifest.json +174 -0
  34. package/dist/cli/tutorial/sm-tutorial/references/_manifest.yml +90 -0
  35. package/dist/cli/tutorial/sm-tutorial/references/part-basic-connect.md +166 -0
  36. package/dist/cli/tutorial/sm-tutorial/references/part-basic-daily.md +267 -0
  37. package/dist/cli/tutorial/sm-tutorial/references/part-basic-fundamentals.md +350 -0
  38. package/dist/cli/tutorial/sm-tutorial/references/part-basic-kickoff.md +140 -0
  39. package/dist/cli/tutorial/sm-tutorial/references/part-connect-harness.md +6 -4
  40. package/dist/cli/tutorial/sm-tutorial/references/part-daily-loop.md +21 -26
  41. package/dist/cli/tutorial/sm-tutorial/references/part-fundamentals.md +10 -5
  42. package/dist/cli/tutorial/sm-tutorial/references/part-mcp.md +3 -6
  43. package/dist/cli/tutorial/sm-tutorial/references/part-project-kickoff.md +29 -14
  44. package/dist/cli/tutorial/sm-tutorial/references/part-settings.md +17 -13
  45. package/dist/cli/tutorial/sm-tutorial/scripts/fixtures.js +85 -22
  46. package/dist/cli/tutorial/sm-tutorial/scripts/lib/paths.js +74 -4
  47. package/dist/cli/tutorial/sm-tutorial/scripts/state.js +22 -6
  48. package/dist/cli.js +527 -251
  49. package/dist/conformance/index.js +42 -2
  50. package/dist/index.js +43 -30
  51. package/dist/kernel/index.d.ts +28 -5
  52. package/dist/kernel/index.js +43 -30
  53. package/dist/ui/chunk-3ANNEMV4.js +499 -0
  54. package/dist/ui/chunk-3GDWM5VM.js +2 -0
  55. package/dist/ui/{chunk-5BJGO7GH.js → chunk-3U4QZKU2.js} +4 -4
  56. package/dist/ui/chunk-3ZAHOYQ7.js +1 -0
  57. package/dist/ui/chunk-4F53HBGG.js +1845 -0
  58. package/dist/ui/{chunk-56CBK7LB.js → chunk-6FGV5O5J.js} +1 -1
  59. package/dist/ui/chunk-7WMT2LX4.js +1 -0
  60. package/dist/ui/chunk-BJUBDHJR.js +3 -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-KHDWXSGR.js +1 -0
  72. package/dist/ui/{chunk-HEK4PH5A.js → chunk-KMHXNOFZ.js} +1 -1
  73. package/dist/ui/chunk-KWT7E2RJ.js +16 -0
  74. package/dist/ui/{chunk-WHZVGOS3.js → chunk-MQSU6EFZ.js} +1 -1
  75. package/dist/ui/{chunk-43S72FTV.js → chunk-OGEE252A.js} +1 -1
  76. package/dist/ui/{chunk-J4J42HJ4.js → chunk-PU5OP5RN.js} +1 -1
  77. package/dist/ui/{chunk-UTRZTB6V.js → chunk-QVG7J2MP.js} +1 -1
  78. package/dist/ui/chunk-TQBXK5JN.js +1 -0
  79. package/dist/ui/chunk-Z7SOKILO.js +2 -0
  80. package/dist/ui/{chunk-WCABR6TI.js → chunk-ZRJ5ZCFR.js} +1 -1
  81. package/dist/ui/index.html +2 -2
  82. package/dist/ui/main-ZYRIR6DB.js +4 -0
  83. package/dist/ui/styles-VEGETYWD.css +1 -0
  84. package/package.json +17 -18
  85. package/dist/ui/chunk-34ZZDYNQ.js +0 -1
  86. package/dist/ui/chunk-44VNNUSQ.js +0 -2
  87. package/dist/ui/chunk-4SG4352Z.js +0 -7
  88. package/dist/ui/chunk-5ITZXW3A.js +0 -1
  89. package/dist/ui/chunk-7ANZW2OI.js +0 -499
  90. package/dist/ui/chunk-BJ6X6WBO.js +0 -4
  91. package/dist/ui/chunk-CZSLV6YD.js +0 -1
  92. package/dist/ui/chunk-DLYJHLJX.js +0 -2
  93. package/dist/ui/chunk-LGFABCIA.js +0 -16
  94. package/dist/ui/chunk-LPDD2DHE.js +0 -369
  95. package/dist/ui/chunk-MSKP5A4B.js +0 -3
  96. package/dist/ui/chunk-P3SNMV4X.js +0 -2
  97. package/dist/ui/chunk-S4S5ZMXJ.js +0 -3
  98. package/dist/ui/chunk-VHEFRMK3.js +0 -1
  99. package/dist/ui/chunk-X6TRIDBI.js +0 -1845
  100. package/dist/ui/main-NCNZHLLJ.js +0 -4
  101. package/dist/ui/styles-I4ULXD3V.css +0 -1
  102. /package/dist/ui/{chunk-Y2Z26SRI.js → chunk-5RNLC6V4.js} +0 -0
@@ -0,0 +1,267 @@
1
+ # Part 3 (basic track): The daily loop (step library, `daily-loop`)
2
+
3
+ The campaign's payoff and finale, basic track. The tester operates the harness
4
+ they built the way they would on any normal day, **for real**. Three acts:
5
+ **add** content, **modify / improve** it (where skill-map earns its keep), and
6
+ **publish** it. The `content-editor` and the publish flow run for real, no
7
+ role-play. Every connector on this lens is a **markdown reference**. `pace:
8
+ auto-advance`, `preflight: seed` (`harness-connected`, so a tester can jump
9
+ straight here). Shared conventions (tone, the `> ` rendering rule, the per-step
10
+ cycle, §Closing a part, §Final wrap-up) live in `_core.md`. Narrate with
11
+ `<provider_dir>` = `.agents/skills`.
12
+
13
+ **The site is the tester's.** The `setup` chapter asks who it is for and builds
14
+ it around that answer. Identity lives in Layer 2 (the HTML / CSS under
15
+ `public/`), which skill-map does not map, so the graph stays identical no matter
16
+ what the tester names their portfolio. Persist the answer with
17
+ `state.js set-identity --name "<name>" --tagline "<tagline>"`.
18
+
19
+ **Real-execution contract (read once).** When invoking the `content-editor`
20
+ skill via the Task tool, instruct it to write ONLY `.html` files under `public/`,
21
+ to NOT create any `.md` file, and to NOT touch the harness. After it runs, `Read`
22
+ what it wrote before telling the tester what landed. If the subagent is not
23
+ invocable, act as the `content-editor` yourself following its steps and
24
+ `docs/STYLE.md`.
25
+
26
+ **Live-map note (read once).** Every chapter is watched on the live **Map**, so
27
+ `sm` MUST be running before you start. If the tester entered via seed or closed
28
+ it, have them run `sm` from the project root and open the URL first. This part
29
+ has NO `sm scan` / `sm check` steps: the watcher re-scans on every save.
30
+
31
+ ---
32
+
33
+ **Act A - Add**
34
+
35
+ ## Chapter `setup` - Make it yours and bring it up (~5 min)
36
+
37
+ **Context**: the harness is wired. Now put it to work on a real day. First make
38
+ the site yours and give it a look you would share, 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
+ **Preparation**:
43
+ 1. Ask the tester, in one short exchange: what the site should be called and one
44
+ line about what it is for. If they do not care, offer defaults ("My Portfolio"
45
+ / "Small, sturdy things on the web"). Persist both with
46
+ `node .claude/skills/sm-tutorial/scripts/state.js set-identity --name "<name>" --tagline "<tagline>"`.
47
+ 2. Backstage, `Write` `public/style.css`, `public/index.html`, and
48
+ `public/about.html` from the templates in the rich daily-loop's `setup`
49
+ chapter (`part-daily-loop.md`), they are Layer 2, identical on every lens, so
50
+ reuse them verbatim, substituting the identity into the HTML.
51
+
52
+ The site is styled now, so bring it up. `sm` is still running, so the server
53
+ needs a **third terminal** in the same folder:
54
+
55
+ ```bash
56
+ npm install
57
+ node server.js
58
+ ```
59
+
60
+ > **Note:** I gave your site a face: a shared stylesheet plus a styled **Home**
61
+ > and **About** page, named after you. These are Layer 2 (the harness's output),
62
+ > so the **Map** did not move, and that is correct: skill-map maps the harness
63
+ > (the `.md` files, Layer 1), not the HTML it produces.
64
+ >
65
+ > Now bring your site up. Open a **third terminal** in this same folder and run
66
+ > the two commands. `npm install` pulls Express, and `node server.js` starts it
67
+ > and prints `Listening on http://localhost:3000`.
68
+ >
69
+ > Open `http://localhost:3000`: there is your site, named after you. Click
70
+ > **About** and back to **Home**.
71
+ >
72
+ > Now glance at the Map: it did not move. What you watched grow is your harness
73
+ > (Layer 1, the `.md` files and their references). The pages and stylesheet are
74
+ > Layer 2, what the harness produces. Two layers, one project.
75
+ >
76
+ > Does the site load and look clean?
77
+
78
+ Wait for confirmation. If `node server.js` reports `Cannot find module
79
+ 'express'`, run `npm install` first. Mark `setup`: done. Auto-advance to
80
+ `add-page`.
81
+
82
+ ## Chapter `add-page` - Add a page with your skill (~4 min)
83
+
84
+ **Context**: the daily move. You want a new page, so you ask your
85
+ `content-editor` to write it, the first time it runs **for real**. It reads
86
+ `docs/STYLE.md` and the shared stylesheet and writes a new page into `public/`.
87
+ The graph does not move (HTML is Layer 2).
88
+
89
+ Tell the tester:
90
+
91
+ > Your turn to delegate, the way you would on a real day. Tell me what page to
92
+ > add, in your own words ("add a projects page", "add a page about my talks").
93
+ > I'll hand it to your `content-editor` skill and let it write the page.
94
+
95
+ When the tester answers, invoke the project's `content-editor`
96
+ (`<provider_dir>/content-editor/SKILL.md`) via the Task tool, honouring the
97
+ real-execution contract: write ONE new `.html` page under `public/` named after
98
+ the topic (default `public/projects.html`), following the skill's steps and
99
+ `docs/STYLE.md`, and add the new page to the home nav. Do NOT write any `.md`.
100
+ Then `Read` the file it produced.
101
+
102
+ Report back using the block below (adapt the page name; keep the ENTIRE report
103
+ inside the `> ` blockquote):
104
+
105
+ > Your `content-editor` ran for real and wrote `public/projects.html`, linked
106
+ > from the home nav. Refresh the site: the new page is there, in the same style.
107
+ >
108
+ > Now glance at the Map: same nodes as before, nothing new. The page is Layer 2
109
+ > output; the harness on the canvas is Layer 1. Your nodes are not a diagram,
110
+ > they are runnable, and you just ran one.
111
+ >
112
+ > See the new page on the site, and the Map unchanged?
113
+
114
+ Wait for confirmation. Mark `add-page`: done. Auto-advance to `broken-ref`.
115
+
116
+ ---
117
+
118
+ **Act B - Modify / improve**
119
+
120
+ ## Chapter `broken-ref` - A rename breaks a link (~4 min)
121
+
122
+ **Context**: real reorganizing breaks things, and this is where skill-map earns
123
+ its keep. You rename a doc, and a link that pointed at the old name goes stale.
124
+ skill-map catches it the moment the watcher re-scans.
125
+
126
+ **Preparation**: none (the tester drives). Everything is watched live.
127
+
128
+ Tell the tester to rename the deploy runbook (their file):
129
+
130
+ ```bash
131
+ mv docs/DEPLOY.md docs/DEPLOYMENT.md
132
+ ```
133
+
134
+ > You renamed the deploy runbook, but the `publish` skill still links to the old
135
+ > path. Watch the **Map**: the `publish -> docs/DEPLOY.md` arrow disappears (a
136
+ > broken link resolves to no node, so skill-map stops drawing it) and the
137
+ > `publish` card gets a red **broken-reference** marker. Open the `publish`
138
+ > inspector and the broken reference is listed there.
139
+ >
140
+ > Now fix it the way you would for real: open `<provider_dir>/publish/SKILL.md`
141
+ > and point the deploy-runbook link at `docs/DEPLOYMENT.md` (the new name). Save.
142
+ >
143
+ > Watch the **Map** again: the arrow snaps back, solid, and the red marker
144
+ > clears, all live. That is the daily safety net: rename and move things freely,
145
+ > and skill-map shows you exactly what you forgot to update before it ships
146
+ > broken.
147
+ >
148
+ > Did the broken marker appear and then clear?
149
+
150
+ Wait for confirmation. The harness MUST be clean again before Act C. Mark
151
+ `broken-ref`: done. Auto-advance to `reserved`.
152
+
153
+ ## Chapter `reserved` - A reserved name collides (~2 min)
154
+
155
+ **Context**: you add a quick helper skill and, without thinking, name it
156
+ `config`, a name the agent runtime already owns for its own built-in slash verb.
157
+ skill-map warns you before the runtime silently ignores your skill.
158
+
159
+ **Preparation**: `Write` `<provider_dir>/config/SKILL.md`:
160
+ ```markdown
161
+ ---
162
+ name: config
163
+ description: |
164
+ Scaffolds a new empty page in public/ from the shared template.
165
+ ---
166
+
167
+ # config
168
+
169
+ Creates a blank page so you can start writing.
170
+ ```
171
+
172
+ The watcher picks up the new skill. Tell the tester:
173
+
174
+ > I added a skill named `config`. Watch the **Map**: the new `config` skill node
175
+ > appears, but flagged with a **warning** marker. Open its inspector: it reads
176
+ > `name-reserved`, `config` shadows one of the agent runtime's own built-in verbs
177
+ > (like `help`, `clear`, `model`), so the runtime would silently ignore your
178
+ > skill, it never runs. The fix is a name the runtime does not own.
179
+ >
180
+ > Rename it to `new-page`: first rename the folder `<provider_dir>/config/` to
181
+ > `<provider_dir>/new-page/`. Then open `new-page/SKILL.md` and, at the top where
182
+ > the frontmatter says `name: config`, change it to `name: new-page`; also change
183
+ > the H1 to `# new-page`. Save.
184
+ >
185
+ > Watch the **Map** again: the warning clears and the node is now `new-page`, all
186
+ > live. Notice what cleared it: changing the **name** (`frontmatter.name`), which
187
+ > for a skill must match its folder, so you rename both. Now `new-page` is yours
188
+ > and the runtime will actually run it.
189
+ >
190
+ > Did the warning clear after the rename?
191
+
192
+ Wait for confirmation. Mark `reserved`: done. Auto-advance to `publish`.
193
+
194
+ ---
195
+
196
+ **Act C - Publish**
197
+
198
+ ## Chapter `publish` - Ship it: run the publish skill for real (~4 min)
199
+
200
+ **Context**: the harness is a set of instructions, and the `publish` skill ties
201
+ them together. You run it **for real**: it runs the link checker over your pages,
202
+ hands off to the `content-editor` if anything needs a fix, then follows the
203
+ deploy runbook. Same Layer 1 / Layer 2 split, the pages are output, so the Map
204
+ stays put while the pipeline runs.
205
+
206
+ **Preparation**: make sure the pages exist (`index`, `about`, `projects`). When
207
+ the tester asks to publish, **execute the publish flow for real** by following
208
+ `<provider_dir>/publish/SKILL.md`: run the `check-links` logic over every `.html`
209
+ under `public/` (does each internal `href` resolve to a file that exists?); if
210
+ any link is broken, hand it to the `content-editor` and re-run; then walk the
211
+ deploy runbook. Do not role-play it.
212
+
213
+ Tell the tester:
214
+
215
+ > The site is ready. Tell me to publish and I'll run your `publish` skill for
216
+ > real: I follow its steps, run the link check across your pages, fix anything
217
+ > through the `content-editor`, and walk the deploy runbook, exactly what the
218
+ > skill says to do.
219
+
220
+ After running the flow, report what actually happened (keep promises conditional
221
+ on the real result):
222
+
223
+ > Here is what just ran, for real:
224
+ >
225
+ > - **check-links** walked every page under `public/` and followed each internal
226
+ > link. Result: 0 broken links. (Had it found one, the next step would hand it
227
+ > to `content-editor` to fix, then re-check.)
228
+ > - the **deploy runbook** (`docs/DEPLOYMENT.md`) lists the ship steps:
229
+ > regenerate the pages (done), run the link check (done), start the server
230
+ > (next chapter).
231
+ >
232
+ > And the Map did not move while the pipeline ran: the pages are Layer 2 output;
233
+ > the harness on the canvas is Layer 1.
234
+ >
235
+ > The link check came back clean and `publish` is wired correctly across your
236
+ > pages. Shall we continue?
237
+
238
+ Wait for confirmation. Mark `publish`: done. Auto-advance to `stability`.
239
+
240
+ ## Chapter `stability` - Set a node's stability (and the `.sm` sidecar) (~3 min)
241
+
242
+ **Context**: real maintenance includes marking how mature each piece is. skill-map
243
+ lets you tag a node's **stability** from the inspector. That is skill-map's own
244
+ metadata, so it lands in a co-located **`.sm` sidecar** next to the file (the
245
+ vendor file stays untouched), and the first `.sm` write asks for your consent.
246
+
247
+ This chapter is lens-agnostic: follow the `stability` chapter in the rich
248
+ daily-loop (`part-daily-loop.md`) verbatim, marking the `AGENTS` handbook node
249
+ `stable` from the inspector, confirming the consent dialog, and watching the
250
+ `stable` badge plus the `AGENTS.sm` sidecar appear. Nothing here depends on the
251
+ lens.
252
+
253
+ Mark `stability`: done. Auto-advance to `golive`.
254
+
255
+ ## Chapter `golive` - Your portfolio, live next to the graph (~3 min)
256
+
257
+ **Context**: the climax. Serve the finished multi-page site and click through it,
258
+ ending with the running portfolio on one side and the full harness graph on the
259
+ other. Lens-agnostic: follow the `golive` chapter in the rich daily-loop
260
+ (`part-daily-loop.md`) verbatim (the serve commands and the closing congratulation
261
+ are identical), except when you name the harness pieces on the graph, say "the
262
+ handbook, the content-editor, the style guide, the publish skill, the link
263
+ checker, the deploy runbook" (all skills + notes on this lens, no command).
264
+
265
+ Mark `golive`: done. Last chapter of the part: apply §Closing a part; since this
266
+ closes the campaign spine, if every active part is now done route to the §Final
267
+ wrap-up instead of the menu.
@@ -0,0 +1,350 @@
1
+ # Part 0 (basic track): The live map (prologue) - step library
2
+
3
+ The live-UI prologue for the **basic track** (the open-standard family:
4
+ `agent-skills`, `antigravity`). Same arc as the rich prologue, the tester runs
5
+ `sm init`, opens the browser, and watches the map update in real time, but this
6
+ lens authors only **skills** and **markdown notes**, and assets connect by
7
+ **markdown references** (`[text](path)`), the one link the Agent Skills standard
8
+ documents. There is no `agent`/`command` kind here and no `/`-invoke or
9
+ `@`-mention; those are rich-track (claude/codex) features. `pace: per-step`
10
+ (one chapter per exchange, the chapter's own confirmation advances, NO separate
11
+ "¿seguimos?"), `preflight: taught-init` (the tester runs `sm init` as the first
12
+ taught step; pre-flight lays the boot `demo-skill`). Shared conventions (tone,
13
+ provider detection / substitution, the `> ` rendering rule, the per-step cycle)
14
+ live in `_core.md`; do not restate them here. Narrate with `<provider_dir>`
15
+ resolved from `tutorial.provider` (`.agents/skills` on this track).
16
+
17
+ ## Chapter `init` - Your first node (~2 min)
18
+
19
+ Agent background (do NOT render as a separate paragraph; folded into the message
20
+ below): `sm init` creates a hidden `.skill-map/` folder in the cwd holding the
21
+ database where skill-map stores what it learns, and runs an initial scan
22
+ (mandatory first step). Typing `sm` alone then starts the UI server with the
23
+ watcher built in (an alias of `sm serve` with defaults). One process, one
24
+ terminal: it boots the server, scans the `.md` files, and pushes events over
25
+ WebSocket to the live UI. The next chapters all run against this same `sm`
26
+ session, kept alive through the `ignore` chapter.
27
+
28
+ Expected: `.skill-map/skill-map.db` appears (plus config files), the lens
29
+ auto-detects to `<provider>` from the `.agents/` marker, and the initial scan
30
+ reports one node from the boot `demo-skill` fixture pre-flight laid. `sm init`
31
+ runs and exits; `sm` then starts the UI server and stays running.
32
+
33
+ Give the tester the whole flow in ONE message with ONE confirmation. Lead with
34
+ the browser setup, then explain the two commands, then the command block, then
35
+ the URL. Don't hardcode the URL, the verb logs the bound `http://host:port`.
36
+
37
+ > First, **open your browser** and put it side by side with this
38
+ > chat so you can watch the **Map** update in real time.
39
+ >
40
+ > Then, in your second terminal, run two commands. `sm init` sets the
41
+ > project up: it creates the hidden `.skill-map/` folder with the
42
+ > database, and runs a first scan. `sm` on its own then boots the live
43
+ > UI server, with the watcher built in.
44
+
45
+ ```bash
46
+ sm init
47
+ sm
48
+ ```
49
+
50
+ > After a couple of seconds `sm` prints a URL, copy it and open it in
51
+ > your browser. You'll see one node in the **Map**: `demo-skill`. Tell
52
+ > me when the page is open showing it.
53
+
54
+ Wait for confirmation. Mark `init`: done.
55
+
56
+ ## Chapter `kinds` - Skills and notes appear (~1 min)
57
+
58
+ Leave the browser open and `sm` running. You create three more nodes **without
59
+ any links yet**, pure standalone nodes, so the tester sees them pop in. On this
60
+ lens there are exactly two authored kinds, `skill` (the boot `demo-skill`) and
61
+ `markdown` (the three notes); the rich track (claude/codex) additionally has
62
+ `agent` and `command`, which this lens does not.
63
+
64
+ Lay the three notes in one go (content lives in `fixtures-data/`). Backstage
65
+ (silent):
66
+
67
+ ```
68
+ node .claude/skills/sm-tutorial/scripts/fixtures.js lay prologue --only "__PROVIDER__/skills/demo-skill/SKILL.md,notes/todo.md,notes/demo-guideline.md,notes/demo-guideline2.md" --provider <provider> --lang <lang>
69
+ ```
70
+
71
+ (`demo-skill` is already on disk from the boot step, the lay is idempotent; the
72
+ three notes are new.) Tell the tester:
73
+
74
+ > Look at the browser. Three new nodes should have popped in:
75
+ > **Demo TODO list**, `demo-guideline`, and `demo-guideline2`.
76
+ > Four total now, **still unconnected**: they're floating nodes. The
77
+ > viewport auto-fits, so all four should be visible without panning.
78
+ >
79
+ > What I just did behind the scenes: I created three note files in
80
+ > your project, and the watcher picked them up on its own, that's why
81
+ > they appeared without you running anything:
82
+ >
83
+ > - `notes/todo.md` (kind: markdown)
84
+ > - `notes/demo-guideline.md` (kind: markdown)
85
+ > - `notes/demo-guideline2.md` (kind: markdown)
86
+ >
87
+ > Your lens authors two kinds, **skill** (`demo-skill`) and **markdown**
88
+ > (the notes). Claude and Codex projects add `agent` and `command` kinds
89
+ > on top, your open-standard lens keeps it to these two.
90
+ >
91
+ > Did the three appear? Confirm so we can wire them up.
92
+
93
+ Wait for confirmation. Mark `kinds`: done.
94
+
95
+ ## Chapter `first-edit` - Your first edit (the watcher reacts) (~1 min)
96
+
97
+ Up to here you've watched the agent write files. Now hand the keyboard over: the
98
+ watcher reacts to **any** `.md` edit under the cwd, not just files the agent
99
+ authors. After this beat the tester has the "save → map updates" muscle memory,
100
+ which the `ignore` chapter reuses.
101
+
102
+ Tell the tester:
103
+
104
+ > Your turn. First, in the browser, **expand the `demo-skill` card**
105
+ > (click the chevron on the card) so its description shows, that's the
106
+ > field you'll edit, so leave the card open and the change will be
107
+ > obvious.
108
+ >
109
+ > Now open `<provider_dir>/demo-skill/SKILL.md` in your editor. In the
110
+ > **frontmatter** at the top, change the `description:` field to any
111
+ > text you want (the content doesn't matter, just make it different).
112
+ > Save the file.
113
+ >
114
+ > Watch the browser. The `demo-skill` card should refresh its
115
+ > description in real time, no reload, same watcher that picked up the
116
+ > three notes a moment ago, this time reacting to YOUR edit.
117
+ >
118
+ > Confirm so we wire the four up.
119
+
120
+ Wait for confirmation. You MAY `Read` the file afterwards to verify (read-only,
121
+ allowed under Inviolable rule #1). Mark `first-edit`: done.
122
+
123
+ ## Chapter `connectors` - Connect with references (markdown links) (~2 min)
124
+
125
+ You edit `notes/todo.md` so it becomes the **hub** that points to the other
126
+ nodes. On this lens there is exactly one connector: the **markdown reference**.
127
+ A bullet links to another file with `[label](relative/path)`; skill-map reads
128
+ that as a `references` link and draws an arrow when the target resolves to a
129
+ real file. (The rich track also has `/`-invokes and `@`-mentions; the open
130
+ standard connects by file links only, and that is all this lens emits.)
131
+
132
+ Apply the hub bullets (content lives in `fixtures-data/`). The edit appends
133
+ three bullets after the `# Pending` heading. Backstage (silent):
134
+
135
+ ```
136
+ node .claude/skills/sm-tutorial/scripts/fixtures.js edit todo-connectors --provider <provider> --lang <lang>
137
+ ```
138
+
139
+ Tell the tester:
140
+
141
+ > Look at the magic again. **Demo TODO list** is now the hub. I added
142
+ > three linking bullets to it (open `notes/todo.md` to see them), and
143
+ > **two arrows** light up, both `references`:
144
+ >
145
+ > - `Demo TODO list → demo-skill` (a link to `demo-skill`'s SKILL.md)
146
+ > - `Demo TODO list → demo-guideline2` (a link to the note file)
147
+ >
148
+ > The arrow comes from a markdown link that lands on a real file. So
149
+ > why two arrows for three bullets? The third bullet links to
150
+ > `demo-guideline` **without the `.md` extension**, so it points at a
151
+ > path that does not exist on disk. skill-map cannot resolve it: it
152
+ > draws no arrow and instead flags the hub with a **broken reference**,
153
+ > a red error marker on the **Demo TODO list** card. Compare it with
154
+ > the bullet right above: `demo-guideline2.md` carries the extension, so
155
+ > the link finds the real file and draws a solid arrow. Same kind of
156
+ > note, one `.md` apart: one resolves, the other does not.
157
+ >
158
+ > One word on solidity: skill-map draws each connector's **confidence**
159
+ > as opacity. Both drawn arrows are fully solid (1.00) because each
160
+ > lands on a real file; the broken one would read 0.50 (a penalty, not
161
+ > "half sure") and is not drawn at all. The exact per-link numbers live
162
+ > in the inspector, next chapter.
163
+ >
164
+ > Confirm when you see the two arrows plus the broken-reference marker
165
+ > on the hub. If an arrow is missing, refresh the browser and let me
166
+ > know.
167
+
168
+ Expected: two drawn arrows plus one `core/reference-broken` error on
169
+ `notes/todo.md` for the unresolved `demo-guideline` link (the tester resolves it
170
+ by hand in `edit-link`). If an arrow is missing, do not advance. Mark
171
+ `connectors`: done.
172
+
173
+ ## Chapter `inspector` - The inspector and connections (~1 min)
174
+
175
+ The canvas only draws the resolved arrows; the full per-link breakdown,
176
+ including the broken one, lives in the Inspector. Open it on the hub.
177
+
178
+ > 💡 Tip: if the nodes are crowded, the map toolbar has a **Re-arrange
179
+ > layout** button that tidies things up.
180
+ >
181
+ > 🆕 Open the Inspector for **Demo TODO list** (click the node). Find
182
+ > the **Connections** section: **Outgoing** and **Incoming**.
183
+ > Demo TODO list lists **3 links** under Outgoing (the canvas drew two
184
+ > arrows, but the data keeps the broken `demo-guideline` link as a third
185
+ > row) and 0 under Incoming. Each row shows the link kind (`references`,
186
+ > the only kind on this lens) and a confidence badge: the
187
+ > `demo-guideline2` link reads `1.00` (resolved), while the
188
+ > `demo-guideline` link reads `0.50` and is marked broken.
189
+ >
190
+ > Now open the Inspector for a couple of nodes to read their Incoming
191
+ > count. `demo-skill` and `demo-guideline2` each show **1** incoming.
192
+ > Open `demo-guideline` and it shows **0**: the broken link never landed
193
+ > on it. Three outgoing links on the hub, but only two reach a node.
194
+ >
195
+ > Let me know when you see it.
196
+
197
+ Mark `inspector`: done.
198
+
199
+ ## Chapter `edit-link` - Edit a link, the topology changes (~3 min)
200
+
201
+ **Context**: `first-edit` changed a scalar and watched a card refresh. This
202
+ chapter edits the markdown links and watches the MAP TOPOLOGY change both ways,
203
+ a connector disappears when you remove a link, and a new one appears (clearing
204
+ the broken-reference error) when you fix the unresolved one.
205
+
206
+ The server has been live since `init`, leave it running; this chapter and the
207
+ next two reuse it.
208
+
209
+ > Your turn. Edit `notes/todo.md` and delete the bullet that links to
210
+ > `demo-skill`. Save. Watch the UI.
211
+ >
212
+ > Expected: the `Demo TODO list → demo-skill` arrow disappears in real
213
+ > time. Both nodes stay in the **Map**; only the edge goes.
214
+ >
215
+ > Tell me when the connector is gone.
216
+
217
+ Once they confirm, the second edit fixes the broken reference:
218
+
219
+ > Now the other direction, fix the broken link. Edit `notes/todo.md`
220
+ > again and add the `.md` extension to the `demo-guideline` link so the
221
+ > target reads `demo-guideline.md`. Save.
222
+ >
223
+ > Expected: a NEW arrow appears, `Demo TODO list → demo-guideline`
224
+ > (`references`), and the red broken-reference marker on the hub clears.
225
+ > The `.md` turned the dangling path into a link that lands on the real
226
+ > `demo-guideline.md`, the same contrast you saw in the connectors
227
+ > chapter, now fixed by hand.
228
+ >
229
+ > Confirm when the new arrow is in and the red marker is gone.
230
+
231
+ You verify by reading `notes/todo.md` (the `demo-skill` bullet gone, the
232
+ `demo-guideline` link now ending in `.md`). Leave the server running. Mark
233
+ `edit-link`: done.
234
+
235
+ ## Chapter `workspace` - Navigate the workspace (files, search, isolate) (~2 min)
236
+
237
+ **Context**: you've built the graph and understood it; this beat is about
238
+ *moving around* it. The workspace has two halves: the **Map**, and a **Files**
239
+ panel (a folder tree of every node). The same `sm` session is still running.
240
+
241
+ Walk the three actions one at a time (open the Files panel, search, isolate);
242
+ each ends with its own confirmation. Do NOT prepend an intro line to a block.
243
+
244
+ > Open the **Files** panel. It sits collapsed against the left edge:
245
+ > click the expand handle (the `>` arrow, tooltip "Expand files panel").
246
+ > The sidebar opens into a **folder tree**: your four nodes grouped
247
+ > under `<provider_dir>/` and `notes/`, each row showing its kind and
248
+ > how many links go in and out.
249
+ >
250
+ > Tell me when the tree is open.
251
+
252
+ > At the top of the sidebar there's a search box (placeholder
253
+ > `Search…`). Type `guideline`. Watch both halves: the tree narrows to
254
+ > the two guideline nodes and the **Map** drops every node except those
255
+ > two. The search matches a node's name, path, or description, and
256
+ > filters live, no Enter needed.
257
+ >
258
+ > Now clear the box. All four nodes come back, in both the tree and the
259
+ > Map. Confirm you saw it filter and then restore.
260
+
261
+ > Last one. In the tree, find the **Demo TODO list** row: at its right
262
+ > edge there's a small **sitemap** icon (tooltip "Isolate this node and
263
+ > its direct links on the map"). Click it.
264
+ >
265
+ > The Map collapses to **Demo TODO list** plus only the nodes it draws
266
+ > an arrow to (`demo-skill`, `demo-guideline2`). That's how you focus on
267
+ > one node's neighborhood when a map gets busy.
268
+ >
269
+ > To bring the rest back, look at the toolbar along the bottom of the
270
+ > Map: there's a **Show all** button (an eye icon). Click it and all
271
+ > four nodes return.
272
+ >
273
+ > 💡 Tip: the map-icon button next to the search box controls whether
274
+ > the search also filters the **Map** (on by default). Click it to
275
+ > filter only the files list, leaving the map in place.
276
+ >
277
+ > Did the map isolate and then restore?
278
+
279
+ Leave the server running, the next chapter is the last that uses it. Mark
280
+ `workspace`: done.
281
+
282
+ ## Chapter `ignore` - Silence a file via .skillmapignore (~2 min)
283
+
284
+ Earlier chapters showed the watcher picking up new files and edits. This chapter
285
+ flips it: a file the tester DOES NOT want in the map (a draft, a secret) gets
286
+ hidden by one line in `.skillmapignore`. Same live mechanism, no restart.
287
+
288
+ `sm init` already wrote a starter `.skillmapignore` at the scope root. One step,
289
+ one confirmation (the node vanishing): the agent seeds a file no one would want
290
+ public, shows where it lives, and the tester hides it with one glob.
291
+
292
+ **The agent seeds the file (no tester action, no separate pause).**
293
+
294
+ Lay `notes/private-credentials.md` (kind `markdown`). Backstage (silent):
295
+
296
+ ```
297
+ node .claude/skills/sm-tutorial/scripts/fixtures.js lay prologue --only "notes/private-credentials.md" --provider <provider> --lang <lang>
298
+ ```
299
+
300
+ It lands as a fifth node (`notes/private-credentials`); the watcher sees it like
301
+ any other `.md`. Do NOT pause to confirm its appearance, it folds into the
302
+ single vanish confirmation.
303
+
304
+ **The tester hides it (single message, one confirmation).** Use `Bash`
305
+ (`ls -la`, plus `ls -la notes/`) for the real listing and apply the
306
+ host-dependent rendering rule. Per Inviolable rule #2, the agent does NOT touch
307
+ `.skillmapignore`, the tester edits it:
308
+
309
+ > One last step. Your `private-credentials` note just popped into the
310
+ > map as a fifth node. Let's hide it. Here's your directory right now:
311
+
312
+ ```
313
+ . ← your cwd
314
+ ├── .agents/skills/
315
+ │ ├── demo-skill/SKILL.md
316
+ │ └── sm-tutorial/SKILL.md ← the tutorial you loaded
317
+ ├── .skill-map/ ← project DB + settings (managed)
318
+ ├── .skillmapignore ← the file we're about to edit
319
+ └── notes/
320
+ ├── todo.md
321
+ ├── demo-guideline.md
322
+ ├── demo-guideline2.md
323
+ └── private-credentials.md ← what we want to hide
324
+ ```
325
+
326
+ > The `.skillmapignore` at the root uses `.gitignore` syntax: anything
327
+ > matching a pattern there is invisible to skill-map's scan. Open it in
328
+ > your editor (cwd root) and append this on a new line at the end:
329
+
330
+ ```
331
+ notes/private-*.md
332
+ ```
333
+
334
+ > Save the file. It's a glob: `notes/private-*.md` matches
335
+ > `private-credentials.md` and any future sibling. A literal path
336
+ > (`notes/private-credentials.md`) would also work.
337
+ >
338
+ > Watch the browser when you save. The `notes/private-credentials` node
339
+ > should disappear from the **Map** in real time, no restart. Five nodes
340
+ > back to four.
341
+ >
342
+ > Did the node vanish?
343
+
344
+ Adjust the tree shown to whatever `ls -la` returns, the goal is "tester
345
+ recognises their own filesystem". After they confirm, you MAY `Read`
346
+ `.skillmapignore` to verify the appended pattern (read-only, allowed). Once
347
+ confirmed, ask them to stop the server with **Ctrl+C** before continuing.
348
+
349
+ Mark `ignore`: done. Last chapter of the part: apply §Closing a part (the close
350
+ names the part by its title and routes back to the menu).