@skill-map/cli 0.67.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 +400 -160
  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-444BFYGR.js +0 -3
  87. package/dist/ui/chunk-44VNNUSQ.js +0 -2
  88. package/dist/ui/chunk-4SG4352Z.js +0 -7
  89. package/dist/ui/chunk-5ITZXW3A.js +0 -1
  90. package/dist/ui/chunk-7ANZW2OI.js +0 -499
  91. package/dist/ui/chunk-BJ6X6WBO.js +0 -4
  92. package/dist/ui/chunk-CZSLV6YD.js +0 -1
  93. package/dist/ui/chunk-DLYJHLJX.js +0 -2
  94. package/dist/ui/chunk-LGFABCIA.js +0 -16
  95. package/dist/ui/chunk-LPDD2DHE.js +0 -369
  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-V77F2KZX.js +0 -4
  101. package/dist/ui/styles-I4ULXD3V.css +0 -1
  102. /package/dist/ui/{chunk-Y2Z26SRI.js → chunk-5RNLC6V4.js} +0 -0
@@ -9,6 +9,7 @@
9
9
  "seed": null,
10
10
  "prereq": null,
11
11
  "pace": "per-step",
12
+ "track": "rich",
12
13
  "chapters": [
13
14
  {
14
15
  "id": "init",
@@ -52,6 +53,59 @@
52
53
  }
53
54
  ]
54
55
  },
56
+ {
57
+ "id": "basic-fundamentals",
58
+ "order": 0,
59
+ "title": "The live map (prologue)",
60
+ "status": "active",
61
+ "preflight": "taught-init",
62
+ "seed": null,
63
+ "prereq": null,
64
+ "pace": "per-step",
65
+ "track": "basic",
66
+ "chapters": [
67
+ {
68
+ "id": "init",
69
+ "title": "Your first node (sm init, sm, the UI)",
70
+ "est_min": 2
71
+ },
72
+ {
73
+ "id": "kinds",
74
+ "title": "Skills and notes appear",
75
+ "est_min": 1
76
+ },
77
+ {
78
+ "id": "first-edit",
79
+ "title": "Your first edit (the watcher reacts)",
80
+ "est_min": 1
81
+ },
82
+ {
83
+ "id": "connectors",
84
+ "title": "Connect with references (markdown links)",
85
+ "est_min": 2
86
+ },
87
+ {
88
+ "id": "inspector",
89
+ "title": "The inspector and connections",
90
+ "est_min": 1
91
+ },
92
+ {
93
+ "id": "edit-link",
94
+ "title": "Edit a link, the topology changes",
95
+ "est_min": 3
96
+ },
97
+ {
98
+ "id": "workspace",
99
+ "title": "Navigate the workspace (files, search, isolate)",
100
+ "est_min": 2
101
+ },
102
+ {
103
+ "id": "ignore",
104
+ "title": "Silence a file via .skillmapignore",
105
+ "est_min": 2
106
+ }
107
+ ]
108
+ },
55
109
  {
56
110
  "id": "project-kickoff",
57
111
  "order": 1,
@@ -61,6 +115,7 @@
61
115
  "seed": null,
62
116
  "prereq": null,
63
117
  "pace": "per-step",
118
+ "track": "rich",
64
119
  "chapters": [
65
120
  {
66
121
  "id": "kickoff",
@@ -84,6 +139,39 @@
84
139
  }
85
140
  ]
86
141
  },
142
+ {
143
+ "id": "basic-kickoff",
144
+ "order": 1,
145
+ "title": "The project from zero",
146
+ "status": "active",
147
+ "preflight": "portfolio-init",
148
+ "seed": null,
149
+ "prereq": null,
150
+ "pace": "per-step",
151
+ "track": "basic",
152
+ "chapters": [
153
+ {
154
+ "id": "kickoff",
155
+ "title": "Start the portfolio (sm init on the real skeleton)",
156
+ "est_min": 2
157
+ },
158
+ {
159
+ "id": "manual",
160
+ "title": "The handbook (AGENTS.md) and an entry pointer",
161
+ "est_min": 2
162
+ },
163
+ {
164
+ "id": "first-skill",
165
+ "title": "The first harness skill (content-editor)",
166
+ "est_min": 2
167
+ },
168
+ {
169
+ "id": "real-kinds",
170
+ "title": "The kinds in context",
171
+ "est_min": 2
172
+ }
173
+ ]
174
+ },
87
175
  {
88
176
  "id": "connect-harness",
89
177
  "order": 2,
@@ -93,6 +181,7 @@
93
181
  "seed": "harness-built",
94
182
  "prereq": "project-kickoff",
95
183
  "pace": "auto-advance",
184
+ "track": "rich",
96
185
  "chapters": [
97
186
  {
98
187
  "id": "check-links",
@@ -116,6 +205,39 @@
116
205
  }
117
206
  ]
118
207
  },
208
+ {
209
+ "id": "basic-connect",
210
+ "order": 2,
211
+ "title": "Connect the harness",
212
+ "status": "active",
213
+ "preflight": "seed",
214
+ "seed": "harness-built",
215
+ "prereq": "basic-kickoff",
216
+ "pace": "auto-advance",
217
+ "track": "basic",
218
+ "chapters": [
219
+ {
220
+ "id": "check-links",
221
+ "title": "The link checker",
222
+ "est_min": 3
223
+ },
224
+ {
225
+ "id": "publish",
226
+ "title": "The publish skill references the harness",
227
+ "est_min": 4
228
+ },
229
+ {
230
+ "id": "links",
231
+ "title": "The handbook becomes the hub (references)",
232
+ "est_min": 4
233
+ },
234
+ {
235
+ "id": "confidence",
236
+ "title": "Connector confidence (opacity = certainty)",
237
+ "est_min": 3
238
+ }
239
+ ]
240
+ },
119
241
  {
120
242
  "id": "daily-loop",
121
243
  "order": 3,
@@ -125,6 +247,7 @@
125
247
  "seed": "harness-connected",
126
248
  "prereq": "connect-harness",
127
249
  "pace": "auto-advance",
250
+ "track": "rich",
128
251
  "chapters": [
129
252
  {
130
253
  "id": "setup",
@@ -163,6 +286,54 @@
163
286
  }
164
287
  ]
165
288
  },
289
+ {
290
+ "id": "basic-daily",
291
+ "order": 3,
292
+ "title": "The daily loop (add, improve, publish)",
293
+ "status": "active",
294
+ "preflight": "seed",
295
+ "seed": "harness-connected",
296
+ "prereq": "basic-connect",
297
+ "pace": "auto-advance",
298
+ "track": "basic",
299
+ "chapters": [
300
+ {
301
+ "id": "setup",
302
+ "title": "Make it yours and bring it up",
303
+ "est_min": 5
304
+ },
305
+ {
306
+ "id": "add-page",
307
+ "title": "Add a page with your skill",
308
+ "est_min": 4
309
+ },
310
+ {
311
+ "id": "broken-ref",
312
+ "title": "A rename breaks a link",
313
+ "est_min": 4
314
+ },
315
+ {
316
+ "id": "reserved",
317
+ "title": "A reserved name collides",
318
+ "est_min": 2
319
+ },
320
+ {
321
+ "id": "publish",
322
+ "title": "Ship it: run the publish skill for real",
323
+ "est_min": 4
324
+ },
325
+ {
326
+ "id": "stability",
327
+ "title": "Set a node's stability (and the `.sm` sidecar)",
328
+ "est_min": 3
329
+ },
330
+ {
331
+ "id": "golive",
332
+ "title": "Your portfolio, live next to the graph",
333
+ "est_min": 3
334
+ }
335
+ ]
336
+ },
166
337
  {
167
338
  "id": "extend",
168
339
  "order": 4,
@@ -172,6 +343,7 @@
172
343
  "seed": null,
173
344
  "prereq": null,
174
345
  "pace": "auto-advance",
346
+ "track": "both",
175
347
  "chapters": [
176
348
  {
177
349
  "id": "settings-1-layers",
@@ -239,6 +411,7 @@
239
411
  "seed": "prologue-built",
240
412
  "prereq": "fundamentals",
241
413
  "pace": "auto-advance",
414
+ "track": "both",
242
415
  "chapters": [
243
416
  {
244
417
  "id": "browse",
@@ -276,6 +449,7 @@
276
449
  "seed": "harness-connected",
277
450
  "prereq": "connect-harness",
278
451
  "pace": "auto-advance",
452
+ "track": "rich",
279
453
  "chapters": [
280
454
  {
281
455
  "id": "mcp-node",
@@ -27,6 +27,14 @@
27
27
  # fixture which fixture this part lays (see fixtures.md / the
28
28
  # part body); `inline` means the chapters lay it as a
29
29
  # taught step.
30
+ # track which capability track shows this part (see _core.md
31
+ # §Provider detection): `rich` (claude/codex: agent +
32
+ # command + slash + `@`), `basic` (the open-standard
33
+ # family agent-skills/antigravity: skill + markdown,
34
+ # connected by markdown references), or `both` (renders
35
+ # lens-aware, slash/`@` on rich, references on basic).
36
+ # The menu shows only parts whose track is the resolved
37
+ # `tutorial.track` or `both`.
30
38
  # status active (default, shown) | planned (no body yet, hidden).
31
39
 
32
40
  parts:
@@ -39,6 +47,7 @@ parts:
39
47
  pace: per-step
40
48
  preflight: taught-init
41
49
  fixture: inline # the chapters lay the basics fixture as taught steps
50
+ track: rich # claude/codex prologue: agent/command kinds, slash + @ connectors
42
51
  status: active
43
52
  chapters:
44
53
  - id: init ; title: "Your first node (sm init, sm, the UI)" ; est_min: 2
@@ -50,6 +59,25 @@ parts:
50
59
  - id: workspace ; title: "Navigate the workspace (files, search, isolate)" ; est_min: 2
51
60
  - id: ignore ; title: "Silence a file via .skillmapignore" ; est_min: 2
52
61
 
62
+ - id: basic-fundamentals
63
+ order: 0
64
+ title: "The live map (prologue)"
65
+ step_file: part-basic-fundamentals.md
66
+ pace: per-step
67
+ preflight: taught-init # same flavour as `fundamentals`; the boot node is demo-skill on the basic track
68
+ fixture: inline # the chapters lay the basics fixture (skill + markdown only) as taught steps
69
+ track: basic # open-standard family: skill + markdown, connected by markdown references
70
+ status: active
71
+ chapters:
72
+ - id: init ; title: "Your first node (sm init, sm, the UI)" ; est_min: 2
73
+ - id: kinds ; title: "Skills and notes appear" ; est_min: 1
74
+ - id: first-edit ; title: "Your first edit (the watcher reacts)" ; est_min: 1
75
+ - id: connectors ; title: "Connect with references (markdown links)" ; est_min: 2
76
+ - id: inspector ; title: "The inspector and connections" ; est_min: 1
77
+ - id: edit-link ; title: "Edit a link, the topology changes" ; est_min: 3
78
+ - id: workspace ; title: "Navigate the workspace (files, search, isolate)" ; est_min: 2
79
+ - id: ignore ; title: "Silence a file via .skillmapignore" ; est_min: 2
80
+
53
81
  - id: extend
54
82
  order: 4
55
83
  title: "Extend skill-map for the site"
@@ -64,6 +92,7 @@ parts:
64
92
  pace: auto-advance
65
93
  preflight: backstage-init # lays the fixture below + sm init --no-scan
66
94
  fixture: master # master-agent / master-skill / notes/ideas (fixtures.md)
95
+ track: both # settings / plugins / authoring are lens-agnostic
67
96
  status: active
68
97
  chapters:
69
98
  - id: settings-1-layers ; title: "The config layers and `sm config list`" ; est_min: 3
@@ -86,6 +115,7 @@ parts:
86
115
  preflight: seed # self-seeds the Part 0 demo fixture
87
116
  seed: prologue-built # the prologue demo fixture (not the cumulative portfolio)
88
117
  prereq: fundamentals # recommended predecessor; cli self-seeds, so it is always shown
118
+ track: both # CLI verbs are lens-agnostic; prose notes lens-specific node counts
89
119
  status: active
90
120
  chapters:
91
121
  - id: browse ; title: "list / show / check" ; est_min: 3
@@ -108,6 +138,7 @@ parts:
108
138
  pace: per-step
109
139
  preflight: portfolio-init # lays the Express skeleton + AGENTS.md; clears the prologue demo fixture if present
110
140
  fixture: portfolio
141
+ track: rich # uses the agent kind; basic track has its own counterpart
111
142
  status: active
112
143
  chapters:
113
144
  - id: kickoff ; title: "Start the portfolio (sm init on the real skeleton)" ; est_min: 2
@@ -123,6 +154,7 @@ parts:
123
154
  preflight: seed
124
155
  seed: harness-built # fast-forward to here if project-kickoff is not done
125
156
  prereq: project-kickoff
157
+ track: rich # /publish command + @mentions; basic track connects via references
126
158
  status: active
127
159
  chapters:
128
160
  - id: check-links ; title: "The check-links skill" ; est_min: 2
@@ -139,6 +171,7 @@ parts:
139
171
  seed: harness-connected # fast-forward to here if the earlier parts are not done
140
172
  prereq: connect-harness
141
173
  fixture: portfolio # reuses the wired harness; lays the pretty site (style.css + pages) as taught steps
174
+ track: rich # agent-driven page add + reserved command; basic track has its own counterpart
142
175
  status: active
143
176
  chapters:
144
177
  - id: setup ; title: "Make it yours and bring it up" ; est_min: 5
@@ -149,6 +182,62 @@ parts:
149
182
  - id: stability ; title: "Set a node's stability (and the `.sm` sidecar)" ; est_min: 3
150
183
  - id: golive ; title: "Your portfolio, live next to the graph" ; est_min: 3
151
184
 
185
+ # ----- the basic-track campaign (open-standard family: agent-skills / antigravity) -----
186
+ # Mirrors the rich campaign arc with skill + markdown only, connected by
187
+ # markdown references. Same fixtures (portfolio / harness) laid under the
188
+ # basic provider, which renders the agent/command nodes as skills.
189
+
190
+ - id: basic-kickoff
191
+ order: 1
192
+ title: "The project from zero"
193
+ step_file: part-basic-kickoff.md
194
+ pace: per-step
195
+ preflight: portfolio-init
196
+ fixture: portfolio
197
+ track: basic
198
+ status: active
199
+ chapters:
200
+ - id: kickoff ; title: "Start the portfolio (sm init on the real skeleton)" ; est_min: 2
201
+ - id: manual ; title: "The handbook (AGENTS.md) and an entry pointer" ; est_min: 2
202
+ - id: first-skill ; title: "The first harness skill (content-editor)" ; est_min: 2
203
+ - id: real-kinds ; title: "The kinds in context" ; est_min: 2
204
+
205
+ - id: basic-connect
206
+ order: 2
207
+ title: "Connect the harness"
208
+ step_file: part-basic-connect.md
209
+ pace: auto-advance
210
+ preflight: seed
211
+ seed: harness-built
212
+ prereq: basic-kickoff
213
+ track: basic
214
+ status: active
215
+ chapters:
216
+ - id: check-links ; title: "The link checker" ; est_min: 3
217
+ - id: publish ; title: "The publish skill references the harness" ; est_min: 4
218
+ - id: links ; title: "The handbook becomes the hub (references)" ; est_min: 4
219
+ - id: confidence ; title: "Connector confidence (opacity = certainty)" ; est_min: 3
220
+
221
+ - id: basic-daily
222
+ order: 3
223
+ title: "The daily loop (add, improve, publish)"
224
+ step_file: part-basic-daily.md
225
+ pace: auto-advance
226
+ preflight: seed
227
+ seed: harness-connected
228
+ prereq: basic-connect
229
+ fixture: portfolio
230
+ track: basic
231
+ status: active
232
+ chapters:
233
+ - id: setup ; title: "Make it yours and bring it up" ; est_min: 5
234
+ - id: add-page ; title: "Add a page with your skill" ; est_min: 4
235
+ - id: broken-ref ; title: "A rename breaks a link" ; est_min: 4
236
+ - id: reserved ; title: "A reserved name collides" ; est_min: 2
237
+ - id: publish ; title: "Ship it: run the publish skill for real" ; est_min: 4
238
+ - id: stability ; title: "Set a node's stability (and the `.sm` sidecar)" ; est_min: 3
239
+ - id: golive ; title: "Your portfolio, live next to the graph" ; est_min: 3
240
+
152
241
  # ----- parked: MCP returns later as its own iteration (body kept in part-mcp.md) -----
153
242
  - id: mcp
154
243
  order: 6
@@ -158,6 +247,7 @@ parts:
158
247
  preflight: seed
159
248
  seed: harness-connected
160
249
  prereq: connect-harness
250
+ track: rich # MCP tool declaration sits on an agent/command body
161
251
  status: planned # temporarily disabled, hidden from the menu. Body exists; re-enable when MCP returns.
162
252
  chapters:
163
253
  - id: mcp-node ; title: "content-editor declares an MCP tool; the mcp:// node appears" ; est_min: 3
@@ -0,0 +1,166 @@
1
+ # Part 2 (basic track): Connect the harness (step library, `connect-harness`)
2
+
3
+ The wiring part, basic track. Part 1 grew a small set of standalone nodes around
4
+ the handbook; here the tester turns that scatter into a connected graph: a link
5
+ checker, a publish skill that pulls three pieces together, the handbook becoming
6
+ a real hub, and a close-up on confidence. Every connector on this lens is a
7
+ **markdown reference** (`[text](path)`); there is no `/`-invoke or `@`-mention
8
+ here, those are rich-track features. `pace: auto-advance`, `preflight: seed`
9
+ (builds on the Part 1 harness; `harness-built`). Shared conventions live in
10
+ `_core.md`. Narrate with `<provider_dir>` = `.agents/skills`.
11
+
12
+ ## Chapter `check-links` - The link checker (~3 min)
13
+
14
+ **Context**: the harness needs a guard that runs before publishing: a skill that
15
+ walks every page and checks the internal links resolve. We create it here (a
16
+ standalone `skill` node); the `publish` skill in the next chapter is what calls
17
+ it.
18
+
19
+ Lay the `check-links` skill (content lives in `fixtures-data/`). Backstage
20
+ (silent):
21
+
22
+ ```
23
+ node .claude/skills/sm-tutorial/scripts/fixtures.js lay harness --only "__PROVIDER__/skills/check-links/SKILL.md" --provider <provider> --lang <lang>
24
+ ```
25
+
26
+ Tell the tester:
27
+
28
+ > I added a new helper to your harness: a skill called `check-links` (its job is
29
+ > to make sure every internal link on the site works before you publish). A new
30
+ > `skill` node appeared on the **Map**. It stands alone for now, the next step
31
+ > gives it a caller.
32
+ >
33
+ > See the new skill node?
34
+
35
+ Wait for confirmation. Mark `check-links`: done.
36
+
37
+ ## Chapter `publish` - The publish skill (~4 min)
38
+
39
+ **Context**: the chapter where the graph comes alive. The `publish` skill ties
40
+ three pieces together in one body: it points at the link checker, at the content
41
+ editor, and at the deploy runbook. On this lens all three are **markdown
42
+ references**, so three reference arrows light up from a single new node.
43
+
44
+ Tell the tester to create the file themselves (Inviolable rule #2). Render the
45
+ block as a **top-level fenced code block** at column 0, NOT inside the `> `
46
+ blockquote, so the frontmatter fences (`---`) land on column 0 (indented fences
47
+ never parse, and `sm check` then warns `frontmatter-malformed`).
48
+
49
+ > Create `<provider_dir>/publish/SKILL.md` with exactly this content (the first
50
+ > line is `---`, nothing before it):
51
+
52
+ ```markdown
53
+ ---
54
+ name: publish
55
+ description: |
56
+ Publishes the portfolio: runs the link check, hands off to the
57
+ content editor for any last fixes, then follows the deploy runbook.
58
+ ---
59
+
60
+ # publish
61
+
62
+ The one skill you run when the site is ready to go out.
63
+
64
+ ## Steps
65
+ 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.
66
+ 2. If a page needs a content fix, hand the change to [content-editor](../content-editor/SKILL.md).
67
+ 3. Follow the [deploy runbook](../../../docs/DEPLOY.md): regenerate pages, run the link check, start the server.
68
+ ```
69
+
70
+ Continue the tester message:
71
+
72
+ > Save it. Watch the **Map**: **three** new arrows light up at once from the new
73
+ > `publish` node, all of them `references` (the open standard's one connector),
74
+ > each landing on a real file:
75
+ >
76
+ > - `publish -> check-links` (the `[check-links](../check-links/SKILL.md)` link)
77
+ > - `publish -> content-editor` (the `[content-editor](../content-editor/SKILL.md)` link)
78
+ > - `publish -> docs/DEPLOY.md` (the `[deploy runbook](../../../docs/DEPLOY.md)` link)
79
+ >
80
+ > One node, three connectors, all references. On a vendor lens (claude/codex) the
81
+ > first two would be a `/`-invoke and an `@`-mention; the open standard wires
82
+ > everything with file links, and that is all this lens emits. The harness is
83
+ > starting to look like a real graph.
84
+ >
85
+ > 💡 Tip: to tidy the layout, click **Re-arrange layout** in the map toolbar.
86
+ >
87
+ > Did the three arrows appear?
88
+
89
+ Wait for confirmation. You MAY `Read` the file to verify the `---` fences are
90
+ flush at column 0 (if `sm check` flags `frontmatter-malformed`, the fences got
91
+ indented on paste, re-align every line flush left). Mark `publish`: done.
92
+
93
+ ## Chapter `links` - The handbook becomes the hub (~4 min)
94
+
95
+ **Context**: the handbook (`AGENTS.md`) has been a lonely node since Part 1. Here
96
+ it becomes the hub: two bullets point it at the content editor and the publish
97
+ skill. We also give the content editor a reference to the style guide it follows.
98
+
99
+ Apply both edits (content lives in `fixtures-data/`). The first appends two hub
100
+ bullets (markdown links) to `AGENTS.md`; the second adds the style-guide
101
+ reference to the content-editor skill. Backstage (silent):
102
+
103
+ ```
104
+ node .claude/skills/sm-tutorial/scripts/fixtures.js edit agents-hub --provider <provider> --lang <lang>
105
+ node .claude/skills/sm-tutorial/scripts/fixtures.js edit content-editor-style --provider <provider> --lang <lang>
106
+ ```
107
+
108
+ Tell the tester:
109
+
110
+ > Two edits, and the **Map** fills in. Your handbook (`AGENTS.md`) is now the hub:
111
+ > it points at the content editor and at the publish skill. And the content
112
+ > editor now reaches the style guide it follows. New arrows, all `references`:
113
+ >
114
+ > - `AGENTS.md -> content-editor` (a `[content-editor](...)` link)
115
+ > - `AGENTS.md -> publish` (a `[publish](...)` link)
116
+ > - `content-editor -> docs/STYLE.md` (a `[style guide](...)` link)
117
+ >
118
+ > The whole harness is wired end to end now: the handbook reaches the work, the
119
+ > work reaches the docs, and `publish` pulls the publish flow together, every
120
+ > connection a markdown reference, the one link the open standard documents.
121
+ >
122
+ > Did the new arrows light up?
123
+
124
+ Wait for confirmation. You MAY `Read` the two files to verify. Mark `links`: done.
125
+
126
+ ## Chapter `confidence` - How sure is each link (~3 min)
127
+
128
+ **Context**: skill-map records how sure it is of every connection and draws it as
129
+ opacity. In this harness every link resolves to a real file, so they all read
130
+ solid (1.00); the broken case is the one from the prologue (the `demo-guideline`
131
+ link with no `.md`, drawn as no arrow and flagged at 0.50, then fixed by hand).
132
+
133
+ No file edits, pure observation.
134
+
135
+ Tell the tester:
136
+
137
+ > Last beat of this part: how sure is skill-map about each connection? It records
138
+ > a **confidence** for every link and draws it as opacity: a link that resolves
139
+ > to a real file is solid (**1.00**), one that does not lands fainter, so a glance
140
+ > at the **Map** separates solid wiring from problem links.
141
+ >
142
+ > Open the Inspector for the `publish` node (click it). Scroll to the
143
+ > **Connections** panel and read the **Outgoing** rows. Each shows the link kind
144
+ > (`references`, the only kind here) and a confidence badge, every one reads
145
+ > **1.00**, because each link lands on a file that exists on disk.
146
+ >
147
+ > Your whole harness reads solid because every link resolves. So what does a link
148
+ > that does NOT resolve look like? You met one in the prologue: the
149
+ > `demo-guideline` link had no `.md`, so it pointed at a path that did not exist,
150
+ > skill-map drew no arrow and flagged it as a **broken reference**, confidence
151
+ > knocked to **0.50**. Adding `.md` turned it into a link that landed on the real
152
+ > file, and it drew a solid arrow at **1.00**.
153
+ >
154
+ > So confidence here is really about resolution: **1.00** for a link that lands on
155
+ > a real file, **0.50** for one flagged broken. The opacity on the canvas is just
156
+ > that number drawn as transparency.
157
+ >
158
+ > **Note:** why does confidence matter? It mirrors how an agent resolves a
159
+ > reference, a deterministic name-and-path lookup, no guessing. That is cheaper
160
+ > and does not fail, the same reason a clean, well-named harness is worth keeping.
161
+ >
162
+ > Do you see every badge reading 1.00 in the Inspector?
163
+
164
+ Wait for confirmation. Mark `confidence`: done. Last chapter of the part: apply
165
+ §Closing a part (name the part by its title, route back to the menu; do NOT lead
166
+ into the next part from here).