@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
@@ -1,6 +1,6 @@
1
- # Part 4 (c): Extend skill-map - build plugins (step library, `authoring-*` ids)
1
+ # Part 3 (c): Extend skill-map - build plugins (step library, `authoring-*` ids)
2
2
 
3
- Step bodies for the plugin-authoring chapters of Part 4.
3
+ Step bodies for the plugin-authoring chapters of Part 3.
4
4
  The SKILL.md orchestrator dispatches each `authoring-*` chapter id
5
5
  here; `settings-*` ids it dispatches to `part-settings.md`.
6
6
 
@@ -0,0 +1,241 @@
1
+ # Part 2 (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, 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
+ **Preparation**:
43
+ 1. Ask the tester the two questions straight, with no "before we build, let's
44
+ make it yours" lead-in: what the site should be called and one line about what
45
+ it is for. If they do not care, offer defaults ("My Portfolio"
46
+ / "Small, sturdy things on the web"). Persist both with
47
+ `node .claude/skills/sm-tutorial/scripts/state.js set-identity --name "<name>" --tagline "<tagline>"`.
48
+ 2. Backstage, `Write` `public/style.css`, `public/index.html`, and
49
+ `public/about.html` from the templates in the rich daily-loop's `setup`
50
+ chapter (`part-daily-loop.md`), they are Layer 2, identical on every lens, so
51
+ reuse them verbatim, substituting the identity into the HTML.
52
+
53
+ The site is styled now, so bring it up. `sm` is still running, so the server
54
+ needs a **third terminal** in the same folder:
55
+
56
+ ```bash
57
+ npm install
58
+ node server.js
59
+ ```
60
+
61
+ > **Note:** I gave your site a face: a shared stylesheet plus a styled **Home**
62
+ > and **About** page, named after you. These are Layer 2 (the harness's output),
63
+ > so the **Map** did not move, and that is correct: skill-map maps the harness
64
+ > (the `.md` files, Layer 1), not the HTML it produces.
65
+ >
66
+ > Now bring your site up. Open a **third terminal** in this same folder and run
67
+ > the two commands. `npm install` pulls Express, and `node server.js` starts it
68
+ > and prints `Listening on http://localhost:3000`.
69
+ >
70
+ > Open `http://localhost:3000`: there is your site, named after you. Click
71
+ > **About** and back to **Home**.
72
+ >
73
+ > Does the site load and look clean?
74
+
75
+ Wait for confirmation. If `node server.js` reports `Cannot find module
76
+ 'express'`, run `npm install` first. Mark `setup`: done. Auto-advance to
77
+ `add-page`.
78
+
79
+ ## Chapter `add-page` - Add a page with your skill (~4 min)
80
+
81
+ Tell the tester:
82
+
83
+ > Your turn to delegate, the way you would on a real day. Tell me what page to
84
+ > add, in your own words ("add a projects page", "add a page about my talks").
85
+ > I'll hand it to your `content-editor` skill and let it write the page.
86
+
87
+ When the tester answers, invoke the project's `content-editor`
88
+ (`<provider_dir>/content-editor/SKILL.md`) via the Task tool, honouring the
89
+ real-execution contract: write ONE new `.html` page under `public/` named after
90
+ the topic (default `public/projects.html`), following the skill's steps and
91
+ `docs/STYLE.md`, and add the new page to the home nav. Do NOT write any `.md`.
92
+ Then `Read` the file it produced.
93
+
94
+ Report back using the block below (adapt the page name; keep the ENTIRE report
95
+ inside the `> ` blockquote):
96
+
97
+ > Your `content-editor` ran for real and wrote `public/projects.html`, linked
98
+ > from the home nav. Refresh the site: the new page is there, in the same style.
99
+ >
100
+ > Now glance at the Map: same nodes as before, nothing new. The page is Layer 2
101
+ > output; the harness on the canvas is Layer 1. Your nodes are not a diagram,
102
+ > they are runnable, and you just ran one.
103
+ >
104
+ > See the new page on the site, and the Map unchanged?
105
+
106
+ Wait for confirmation. Mark `add-page`: done. Auto-advance to `broken-ref`.
107
+
108
+ ---
109
+
110
+ **Act B - Modify / improve**
111
+
112
+ ## Chapter `broken-ref` - A rename breaks a link (~4 min)
113
+
114
+ **Context**: the daily safety net, and where skill-map earns its keep: rename and
115
+ move things freely, and skill-map shows you exactly what you forgot to update
116
+ before it ships broken.
117
+
118
+ **Preparation**: none (the tester drives). Everything is watched live.
119
+
120
+ Tell the tester to free the third terminal, then rename the deploy runbook
121
+ themselves (their file):
122
+
123
+ > In your **third terminal** (the one running `node server.js`), press
124
+ > **Ctrl+C** to stop the site server, then rename the deploy runbook there:
125
+
126
+ ```bash
127
+ mv docs/DEPLOY.md docs/DEPLOYMENT.md
128
+ ```
129
+
130
+ > You renamed the deploy runbook, but the `publish` skill still links to the old
131
+ > path. Watch the **Map**: the `publish -> docs/DEPLOY.md` arrow disappears (a
132
+ > broken link resolves to no node, so skill-map stops drawing it) and the
133
+ > `publish` card gets a red **broken-reference** marker. Open the `publish`
134
+ > inspector and the broken reference is listed there.
135
+ >
136
+ > Now fix it the way you would for real: open `<provider_dir>/publish/SKILL.md`
137
+ > and point the deploy-runbook link at `docs/DEPLOYMENT.md` (the new name). Save.
138
+ >
139
+ > Watch the **Map** again: the arrow snaps back, solid, and the red marker
140
+ > clears, all live.
141
+ >
142
+ > Did the broken marker appear and then clear?
143
+
144
+ Wait for confirmation. The harness MUST be clean again before Act C. Mark
145
+ `broken-ref`: done. Auto-advance to `reserved`.
146
+
147
+ ## Chapter `reserved` - A reserved name collides (~2 min)
148
+
149
+ **Preparation**: `Write` `<provider_dir>/config/SKILL.md`:
150
+ ```markdown
151
+ ---
152
+ name: config
153
+ description: |
154
+ Scaffolds a new empty page in public/ from the shared template.
155
+ ---
156
+
157
+ # config
158
+
159
+ Creates a blank page so you can start writing.
160
+ ```
161
+
162
+ The watcher picks up the new skill. Tell the tester:
163
+
164
+ > I added a skill named `config`. Watch the **Map**: the new `config` skill node
165
+ > appears, but flagged with a **warning** marker. Open its inspector: it reads
166
+ > `name-reserved`, `config` shadows one of the agent runtime's own built-in verbs
167
+ > (like `help`, `clear`, `model`), so the runtime would silently ignore your
168
+ > skill, it never runs. The fix is a name the runtime does not own.
169
+ >
170
+ > Rename it to `new-page`: first rename the folder `<provider_dir>/config/` to
171
+ > `<provider_dir>/new-page/`. Then open `new-page/SKILL.md` and, at the top where
172
+ > the frontmatter says `name: config`, change it to `name: new-page`. Save.
173
+ >
174
+ > Watch the **Map** again: the warning clears and the node is now `new-page`, all
175
+ > live. What cleared it was changing `frontmatter.name` (which for a skill must
176
+ > match its folder, so you renamed both). Now `new-page` is yours and the runtime
177
+ > will run it.
178
+ >
179
+ > Did the warning clear after the rename?
180
+
181
+ Wait for confirmation. Mark `reserved`: done. Auto-advance to `publish`.
182
+
183
+ ---
184
+
185
+ **Act C - Publish**
186
+
187
+ ## Chapter `publish` - Ship it: run the publish skill for real (~4 min)
188
+
189
+ **Preparation**: make sure the pages exist (`index`, `about`, `projects`). When
190
+ the tester asks to publish, **execute the publish flow for real** by following
191
+ `<provider_dir>/publish/SKILL.md`: run the `check-links` logic over every `.html`
192
+ under `public/` (does each internal `href` resolve to a file that exists?); if
193
+ any link is broken, hand it to the `content-editor` and re-run; then walk the
194
+ deploy runbook. Do not role-play it.
195
+
196
+ Tell the tester:
197
+
198
+ > The site is ready. Tell me to publish and I'll run your `publish` skill for
199
+ > real: I follow its steps, run the link check across your pages, fix anything
200
+ > through the `content-editor`, and walk the deploy runbook, exactly what the
201
+ > skill says to do. (You can read the skill's content anytime by clicking the
202
+ > `publish` node on the Map, then opening its **Body** section.)
203
+
204
+ After running the flow, report what actually happened (keep promises conditional
205
+ on the real result):
206
+
207
+ > Here is what just ran, for real:
208
+ >
209
+ > - **check-links** walked every page under `public/` and followed each internal
210
+ > link. Result: 0 broken links. (Had it found one, the next step would hand it
211
+ > to `content-editor` to fix, then re-check.)
212
+ > - the **deploy runbook** (`docs/DEPLOYMENT.md`) lists the ship steps:
213
+ > regenerate the pages (done), run the link check (done), start the server
214
+ > (next chapter).
215
+ >
216
+ > The link check came back clean and `publish` is wired correctly across your
217
+ > pages. Shall we continue?
218
+
219
+ Wait for confirmation. Mark `publish`: done. Auto-advance to `stability`.
220
+
221
+ ## Chapter `stability` - Set a node's stability (and the `.sm` sidecar) (~3 min)
222
+
223
+ This chapter is lens-agnostic: follow the `stability` chapter in the rich
224
+ daily-loop (`part-daily-loop.md`) verbatim, setting the `AGENTS` handbook node's
225
+ stability from the inspector, confirming the consent dialog, and watching the
226
+ stability badge plus the `AGENTS.sm` sidecar appear. Nothing here depends on the
227
+ lens.
228
+
229
+ Mark `stability`: done. Auto-advance to `golive`.
230
+
231
+ ## Chapter `golive` - Your website, live next to the graph (~3 min)
232
+
233
+ Lens-agnostic: follow the `golive` chapter in the rich daily-loop
234
+ (`part-daily-loop.md`) verbatim (the serve commands and the closing congratulation
235
+ are identical), except when you name the harness pieces on the graph, say "the
236
+ handbook, the content-editor, the style guide, the publish skill, the link
237
+ checker, the deploy runbook" (all skills + notes on this lens, no command).
238
+
239
+ Mark `golive`: done. Last chapter of the part: apply §Closing a part; since this
240
+ closes the campaign spine, if every active part is now done route to the §Final
241
+ wrap-up instead of the menu.
@@ -0,0 +1,351 @@
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
+ > 💡 Tip: if the nodes are crowded, the map toolbar has a **Re-arrange
159
+ > layout** button that tidies things up.
160
+ >
161
+ > Confirm when you see the two arrows plus the broken-reference marker
162
+ > on the hub. If an arrow is missing, refresh the browser and let me
163
+ > know.
164
+
165
+ Expected: two drawn arrows plus one `core/reference-broken` error on
166
+ `notes/todo.md` for the unresolved `demo-guideline` link (the tester resolves it
167
+ by hand in `edit-link`). If an arrow is missing, do not advance. Mark
168
+ `connectors`: done.
169
+
170
+ ## Chapter `inspector` - The inspector and connections (~1 min)
171
+
172
+ The canvas only draws the resolved arrows; the full per-link breakdown,
173
+ including the broken one, lives in the Inspector. Open it on the hub.
174
+
175
+ > 🆕 Open the Inspector for **Demo TODO list** (click the node). Find
176
+ > the **Connections** section: **Outgoing** and **Incoming**.
177
+ > Demo TODO list lists **3 links** under Outgoing (the canvas drew two
178
+ > arrows, but the data keeps the broken `demo-guideline` link as a third
179
+ > row) and 0 under Incoming. Each row shows the link kind (`references`,
180
+ > the only kind on this lens) and a confidence badge: the
181
+ > `demo-guideline2` link reads `1.00` (resolved), while the
182
+ > `demo-guideline` link reads `0.50` and is marked broken.
183
+ >
184
+ > Now open the Inspector for a couple of nodes to read their Incoming
185
+ > count. `demo-skill` and `demo-guideline2` each show **1** incoming.
186
+ > Open `demo-guideline` and it shows **0**: the broken link never landed
187
+ > on it. Three outgoing links on the hub, but only two reach a node.
188
+ >
189
+ > 💡 Tip: skill-map draws each connector's **confidence** as opacity.
190
+ > Both drawn arrows are solid (1.00) because each lands on a real file;
191
+ > the broken one is flagged instead of drawn.
192
+ >
193
+ > Let me know when you see it.
194
+
195
+ Mark `inspector`: done.
196
+
197
+ ## Chapter `edit-link` - Edit a link, the topology changes (~3 min)
198
+
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
+ The server has been live since `init`, leave it running; this chapter and the
205
+ next two reuse it.
206
+
207
+ > Your turn. Edit `notes/todo.md` and delete the bullet that links to
208
+ > `demo-skill`. Save. Watch the UI.
209
+ >
210
+ > Expected: the `Demo TODO list → demo-skill` arrow disappears in real
211
+ > time. Both nodes stay in the **Map**; only the edge goes.
212
+ >
213
+ > Tell me when the connector is gone.
214
+
215
+ Once they confirm, the second edit fixes the broken reference:
216
+
217
+ > Now the other direction, fix the broken link. Edit `notes/todo.md`
218
+ > again and add the `.md` extension to the `demo-guideline` link so the
219
+ > target reads `demo-guideline.md`. Save.
220
+ >
221
+ > Expected: a NEW arrow appears, `Demo TODO list → demo-guideline`
222
+ > (`references`), and the red broken-reference marker on the hub clears.
223
+ > The `.md` turned the dangling path into a link that lands on the real
224
+ > `demo-guideline.md`, the same contrast you saw in the connectors
225
+ > chapter, now fixed by hand.
226
+ >
227
+ > Confirm when the new arrow is in and the red marker is gone.
228
+
229
+ You verify by reading `notes/todo.md` (the `demo-skill` bullet gone, the
230
+ `demo-guideline` link now ending in `.md`). Leave the server running. Mark
231
+ `edit-link`: done.
232
+
233
+ ## Chapter `workspace` - Navigate the workspace (files, search, isolate) (~2 min)
234
+
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
+ Walk the three actions one at a time (open the Files panel, search, isolate);
240
+ each ends with its own confirmation. Do NOT prepend an intro line to a block.
241
+
242
+ > Open the **Files** panel. It sits collapsed against the left edge:
243
+ > click the expand handle (the `>` arrow, tooltip "Expand files panel").
244
+ > The sidebar opens into a **folder tree**: your four nodes grouped
245
+ > under `<provider_dir>/` and `notes/`, each row showing its kind and
246
+ > how many links go in and out.
247
+ >
248
+ > Tell me when the tree is open.
249
+
250
+ > At the top of the sidebar there's a search box (placeholder
251
+ > `Search…`). Type `guideline`. Watch the tree narrow to the two
252
+ > guideline nodes. The search matches a node's name, path, or
253
+ > description, and filters live, no Enter needed. The **Map** stays
254
+ > put: by default the search filters only the files list, not the map
255
+ > (the tip below changes that).
256
+ >
257
+ > Now clear the box. All four nodes come back in the tree. Confirm you
258
+ > saw it filter and then restore.
259
+
260
+ > Last one. In the tree, find the `notes/todo` row (the **Demo TODO
261
+ > list** hub, the tree labels rows by file name): at its right edge
262
+ > there's a small **sitemap** icon (tooltip "Isolate this node and its
263
+ > direct links on the map"). Click it.
264
+ >
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** (off by default, which is why the
275
+ > map stayed put while only the tree narrowed). Click it on if you want
276
+ > a search to filter the map too.
277
+ >
278
+ > Did the map isolate and then restore?
279
+
280
+ Leave the server running, the next chapter is the last that uses it. Mark
281
+ `workspace`: done.
282
+
283
+ ## Chapter `ignore` - Silence a file via .skillmapignore (~2 min)
284
+
285
+ Earlier chapters showed the watcher picking up new files and edits. This chapter
286
+ flips it: a file the tester DOES NOT want in the map (a draft, a secret) gets
287
+ hidden by one line in `.skillmapignore`. Same live mechanism, no restart.
288
+
289
+ `sm init` already wrote a starter `.skillmapignore` at the scope root. One step,
290
+ one confirmation (the node vanishing): the agent seeds a file no one would want
291
+ public, shows where it lives, and the tester hides it with one glob.
292
+
293
+ **The agent seeds the file (no tester action, no separate pause).**
294
+
295
+ Lay `notes/private-credentials.md` (kind `markdown`). Backstage (silent):
296
+
297
+ ```
298
+ node .claude/skills/sm-tutorial/scripts/fixtures.js lay prologue --only "notes/private-credentials.md" --provider <provider> --lang <lang>
299
+ ```
300
+
301
+ It lands as a fifth node (`notes/private-credentials`); the watcher sees it like
302
+ any other `.md`. Do NOT pause to confirm its appearance, it folds into the
303
+ single vanish confirmation.
304
+
305
+ **The tester hides it (single message, one confirmation).** Use `Bash`
306
+ (`ls -la`, plus `ls -la notes/`) for the real listing and apply the
307
+ host-dependent rendering rule. Per Inviolable rule #2, the agent does NOT touch
308
+ `.skillmapignore`, the tester edits it:
309
+
310
+ > One last step. Your `private-credentials` note just popped into the
311
+ > map as a fifth node. Let's hide it. Here's your directory right now:
312
+
313
+ ```
314
+ . ← your cwd
315
+ ├── .agents/skills/
316
+ │ ├── demo-skill/SKILL.md
317
+ │ └── sm-tutorial/SKILL.md ← the tutorial you loaded
318
+ ├── .skill-map/ ← project DB + settings (managed)
319
+ ├── .skillmapignore ← the file we're about to edit
320
+ └── notes/
321
+ ├── todo.md
322
+ ├── demo-guideline.md
323
+ ├── demo-guideline2.md
324
+ └── private-credentials.md ← what we want to hide
325
+ ```
326
+
327
+ > The `.skillmapignore` at the root uses `.gitignore` syntax: anything
328
+ > matching a pattern there is invisible to skill-map's scan. Open it in
329
+ > your editor (cwd root) and append this on a new line at the end:
330
+
331
+ ```
332
+ notes/private-*.md
333
+ ```
334
+
335
+ > Save the file. It's a glob: `notes/private-*.md` matches
336
+ > `private-credentials.md` and any future sibling. A literal path
337
+ > (`notes/private-credentials.md`) would also work.
338
+ >
339
+ > Watch the browser when you save. The `notes/private-credentials` node
340
+ > should disappear from the **Map** in real time, no restart. Five nodes
341
+ > back to four.
342
+ >
343
+ > Did the node vanish?
344
+
345
+ Adjust the tree shown to whatever `ls -la` returns, the goal is "tester
346
+ recognises their own filesystem". After they confirm, you MAY `Read`
347
+ `.skillmapignore` to verify the appended pattern (read-only, allowed). Once
348
+ confirmed, ask them to stop the server with **Ctrl+C** before continuing.
349
+
350
+ Mark `ignore`: done. Last chapter of the part: apply §Closing a part (the close
351
+ names the part by its title and routes back to the menu).