@skill-map/cli 0.60.4 → 0.61.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 (87) hide show
  1. package/README.md +1 -1
  2. package/dist/cli/tutorial/sm-tutorial/SKILL.md +161 -266
  3. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/agents-hub/en/agents-hub.md +2 -0
  4. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/agents-hub/es/agents-hub.md +2 -0
  5. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/content-editor-style/en/content-editor-style.md +1 -0
  6. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/content-editor-style/es/content-editor-style.md +1 -0
  7. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/en/todo-bullet-agent.md +1 -0
  8. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/en/todo-bullet-command.md +1 -0
  9. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/en/todo-bullet-guideline.md +1 -0
  10. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/en/todo-bullet-guideline2.md +1 -0
  11. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/en/todo-bullet-skill.md +1 -0
  12. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/es/todo-bullet-agent.md +1 -0
  13. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/es/todo-bullet-command.md +1 -0
  14. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/es/todo-bullet-guideline.md +1 -0
  15. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/es/todo-bullet-guideline2.md +1 -0
  16. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/es/todo-bullet-skill.md +1 -0
  17. package/dist/cli/tutorial/sm-tutorial/fixtures-data/manifest.json +85 -0
  18. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/cli-external/en/link-validation/hijoA/note-with-external-link.md +10 -0
  19. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/cli-external/en/link-validation/hijoB/spec.md +11 -0
  20. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/cli-external/es/link-validation/hijoA/note-with-external-link.md +10 -0
  21. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/cli-external/es/link-validation/hijoB/spec.md +11 -0
  22. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/harness/en/__PROVIDER__/commands/publish.md +15 -0
  23. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/harness/en/__PROVIDER__/skills/check-links/SKILL.md +16 -0
  24. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/harness/es/__PROVIDER__/commands/publish.md +16 -0
  25. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/harness/es/__PROVIDER__/skills/check-links/SKILL.md +17 -0
  26. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/master/en/__PROVIDER__/agents/master-agent.md +14 -0
  27. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/master/en/__PROVIDER__/skills/master-skill/SKILL.md +18 -0
  28. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/master/en/notes/ideas.md +11 -0
  29. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/master/es/__PROVIDER__/agents/master-agent.md +15 -0
  30. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/master/es/__PROVIDER__/skills/master-skill/SKILL.md +18 -0
  31. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/master/es/notes/ideas.md +11 -0
  32. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/en/AGENTS.md +6 -0
  33. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/en/__PROVIDER__/agents/content-editor.md +21 -0
  34. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/en/docs/DEPLOY.md +11 -0
  35. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/en/docs/STYLE.md +20 -0
  36. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/en/public/index.html +5 -0
  37. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/es/AGENTS.md +7 -0
  38. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/es/__PROVIDER__/agents/content-editor.md +21 -0
  39. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/es/docs/DEPLOY.md +12 -0
  40. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/es/docs/STYLE.md +21 -0
  41. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/es/public/index.html +5 -0
  42. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/shared/CLAUDE.md +1 -0
  43. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/shared/package.json +6 -0
  44. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/shared/server.js +11 -0
  45. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/en/__PROVIDER__/agents/demo-agent.md +16 -0
  46. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/en/__PROVIDER__/commands/demo-command.md +11 -0
  47. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/en/__PROVIDER__/skills/demo-skill/SKILL.md +16 -0
  48. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/en/notes/demo-guideline.md +16 -0
  49. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/en/notes/demo-guideline2.md +12 -0
  50. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/en/notes/private-credentials.md +11 -0
  51. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/en/notes/todo.md +9 -0
  52. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/es/__PROVIDER__/agents/demo-agent.md +16 -0
  53. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/es/__PROVIDER__/commands/demo-command.md +11 -0
  54. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/es/__PROVIDER__/skills/demo-skill/SKILL.md +16 -0
  55. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/es/notes/demo-guideline.md +16 -0
  56. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/es/notes/demo-guideline2.md +13 -0
  57. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/es/notes/private-credentials.md +11 -0
  58. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/es/notes/todo.md +9 -0
  59. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/universal/en/findings.md +10 -0
  60. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/universal/es/findings.md +10 -0
  61. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/universal/shared/.skillmapignore +28 -0
  62. package/dist/cli/tutorial/sm-tutorial/references/_core.md +60 -40
  63. package/dist/cli/tutorial/sm-tutorial/references/_manifest.json +304 -0
  64. package/dist/cli/tutorial/sm-tutorial/references/_manifest.yml +4 -5
  65. package/dist/cli/tutorial/sm-tutorial/references/fixtures.md +93 -271
  66. package/dist/cli/tutorial/sm-tutorial/references/part-authoring.md +1 -2
  67. package/dist/cli/tutorial/sm-tutorial/references/part-cli.md +7 -30
  68. package/dist/cli/tutorial/sm-tutorial/references/part-connect-harness.md +21 -40
  69. package/dist/cli/tutorial/sm-tutorial/references/part-daily-loop.md +107 -194
  70. package/dist/cli/tutorial/sm-tutorial/references/part-fundamentals.md +58 -143
  71. package/dist/cli/tutorial/sm-tutorial/references/part-plugins.md +2 -3
  72. package/dist/cli/tutorial/sm-tutorial/references/part-project-kickoff.md +22 -69
  73. package/dist/cli/tutorial/sm-tutorial/scripts/fixtures.js +238 -0
  74. package/dist/cli/tutorial/sm-tutorial/scripts/lib/args.js +29 -0
  75. package/dist/cli/tutorial/sm-tutorial/scripts/lib/fixtures-manifest.js +32 -0
  76. package/dist/cli/tutorial/sm-tutorial/scripts/lib/io.js +37 -0
  77. package/dist/cli/tutorial/sm-tutorial/scripts/lib/manifest.js +24 -0
  78. package/dist/cli/tutorial/sm-tutorial/scripts/lib/paths.js +68 -0
  79. package/dist/cli/tutorial/sm-tutorial/scripts/state.js +262 -0
  80. package/dist/cli.js +7 -8
  81. package/dist/index.js +6 -4
  82. package/dist/kernel/index.js +6 -4
  83. package/dist/ui/chunk-DG3EAGXB.js +3 -0
  84. package/dist/ui/index.html +1 -1
  85. package/dist/ui/{main-VJJVD754.js → main-32BO6UKY.js} +1 -1
  86. package/package.json +5 -3
  87. package/dist/ui/chunk-DDDCORVR.js +0 -3
@@ -0,0 +1,11 @@
1
+ ---
2
+ name: private-credentials
3
+ description: |
4
+ Tokens de API personales, existe en el repo pero no debería
5
+ aparecer en el mapa de skill-map. Demuestra el flujo de
6
+ .skillmapignore.
7
+ ---
8
+
9
+ # Privado
10
+
11
+ API_TOKEN: example-not-real
@@ -0,0 +1,9 @@
1
+ ---
2
+ name: Demo TODO list
3
+ description: |
4
+ Lista en vivo de cosas para revisar en la demo. Se convertirá en
5
+ el hub que apunta al resto del set de prueba en el próximo
6
+ sub-paso.
7
+ ---
8
+
9
+ # Pendientes
@@ -0,0 +1,10 @@
1
+ # Findings: sm-tutorial
2
+
3
+ If you spot anything weird during the tutorial, log it here.
4
+
5
+ Per finding:
6
+ - **Chapter**: <id>
7
+ - **Command**: `sm ...`
8
+ - **Expected**: ...
9
+ - **Got**: ...
10
+ - **Notes**: ...
@@ -0,0 +1,10 @@
1
+ # Hallazgos: sm-tutorial
2
+
3
+ Si ves algo raro durante el tutorial, anótalo aquí.
4
+
5
+ Por hallazgo:
6
+ - **Capítulo**: <id>
7
+ - **Comando**: `sm ...`
8
+ - **Esperado**: ...
9
+ - **Obtenido**: ...
10
+ - **Notas**: ...
@@ -0,0 +1,28 @@
1
+ # Bundled defaults that matter inside the tutorial scope.
2
+ .git/
3
+ .skill-map/
4
+ .tmp/
5
+ .DS_Store
6
+
7
+ # sm-tutorial internal files. Without these, the first sm init scan
8
+ # reports the tutorial's own .md files as project nodes.
9
+ sm-tutorial.md
10
+ findings.md
11
+ tutorial-state.json
12
+
13
+ # sm-tutorial skill installation (loaded as a project-local skill).
14
+ .claude/skills/sm-tutorial/
15
+ .agents/skills/sm-tutorial/
16
+
17
+ # Tutorial outputs that may land at the root.
18
+ export.*
19
+ dump.sql
20
+
21
+ # The reference-paths chapter spawns a self-contained sub-project
22
+ # under link-validation/hijoA with its own .skill-map/.
23
+ link-validation/
24
+
25
+ # Portfolio campaign: the Express install and the generated HTML
26
+ # (the site output, not part of the harness graph).
27
+ node_modules/
28
+ public/
@@ -193,16 +193,22 @@ first kind quoted, the second kind never.
193
193
  `sm init` in pre-flight, the tester runs it as the first taught
194
194
  step. You also DO NOT run `sm plugins create` on their behalf;
195
195
  the scaffold is part of the authoring chapters.
196
- Your responsibilities: `Write` fixture files and the state file;
197
- `Edit` `.md` fixtures when a chapter calls for it (the live-UI
198
- chapters need this so the watcher has something to react to);
199
- `Read` files to verify what the tester modified. Everything else
200
- the tester runs.
196
+ **The tutorial's own backstage scripts are NOT teaching `sm` verbs.**
197
+ `node .claude/skills/sm-tutorial/scripts/fixtures.js …` (lays /
198
+ seeds / clears fixtures) and `…/scripts/state.js …` (owns the state
199
+ file) are machinery you run silently, the same class as `Write`.
200
+ Your responsibilities: run those scripts to lay / seed / clear
201
+ fixtures and to read / update progress; `Edit` a fixture `.md` when
202
+ a chapter's live-UI beat needs the watcher to react, or generate
203
+ tester-specific content yourself when a chapter calls for it (the
204
+ daily loop's pages); `Read` files to verify what the tester
205
+ modified. Everything else the tester runs.
201
206
  2. **Configuration files have two-mode access.**
202
- - **Backstage setup (you DO edit)**: writing the universal
203
- `.skillmapignore` in pre-flight and appending a part's own
204
- additions on entry (the portfolio's `node_modules/` / `public/`);
205
- writing the state file; writing fixture `.md` files.
207
+ - **Backstage setup (you DO run the scripts)**: laying the
208
+ universal files (`.skillmapignore`, `findings.md`) and every
209
+ fixture via `fixtures.js`; reading / updating progress via
210
+ `state.js`. You never embed file content or hand-edit the state
211
+ file; the scripts own both.
206
212
  - **Teach moment (you DO NOT edit)**: any change to
207
213
  `.skill-map/settings.json`, `.skill-map/settings.local.json`,
208
214
  `.skillmapignore`, or `.gitignore` that is part of a chapter
@@ -212,9 +218,11 @@ first kind quoted, the second kind never.
212
218
  too.
213
219
  3. **After every command block, stop and wait.** The tester pastes
214
220
  the output or replies "OK" / "done". Only then advance.
215
- 4. **Persist progress after every chapter.** Update the state file
216
- (`parts.<id>.chapters.<id>.status` = `done` / `failed` /
217
- `skipped` + a timestamp). The state file is the ONLY progress
221
+ 4. **Persist progress after every chapter** by running
222
+ `node .claude/skills/sm-tutorial/scripts/state.js mark <part> <chapter> done|failed|skipped`.
223
+ The script owns `tutorial-state.json` (stamps the timestamp and
224
+ auto-promotes the part to `done` when its last chapter lands);
225
+ never hand-edit the file. The state file is the ONLY progress
218
226
  tracker. Do NOT create harness tasks (`TaskCreate` / `TaskUpdate`)
219
227
  for tutorial progress, they clutter the tester's task list and add
220
228
  nothing the state file does not already hold.
@@ -233,9 +241,9 @@ first kind quoted, the second kind never.
233
241
  per exchange, `auto-advance` may chain chapters that need no tester
234
242
  action; neither asks "¿seguimos?".)
235
243
  7. **If the state file already exists** when invoked, do not
236
- overwrite anything. Read it, show progress, offer to continue,
237
- pick another part, or start over (the last requires explicit
238
- confirmation, see §Resume / restart).
244
+ overwrite anything. Run `state.js status`, show progress, offer to
245
+ continue, pick another part, or start over (the last requires
246
+ explicit confirmation, see §Resume / restart).
239
247
  8. **Never modify files outside the tutorial cwd.**
240
248
  9. **Never ask the tester to `cd` outside the tutorial cwd.** All
241
249
  command blocks assume the second terminal is anchored to the
@@ -272,12 +280,18 @@ on-disk convention:
272
280
  Persist `provider` into the state file (`tutorial.provider`) so a
273
281
  resumed session does not re-detect.
274
282
 
275
- **Global substitution rule**: wherever a part file says `.claude/`,
276
- swap it for the detected `<provider_dir>`. **Skip any fixture file
277
- or step whose kind is not in the provider's supported set** (on
278
- `agent-skills` / Antigravity: only the skill + markdown notes are
279
- valid; drop agent + command files and the connectors that target
280
- them, and adjust node counts accordingly).
283
+ **Global substitution rule**: the fixture scripts do the file-level
284
+ work. You pass `--provider <p>` (the value persisted in
285
+ `tutorial.provider`) and `--lang <l>`, and they resolve the
286
+ `__PROVIDER__` path token, skip files whose kind the provider does
287
+ not claim, and report the adjusted `nodeCount` plus the `skipped`
288
+ list in their summary. Your job is the **narration**: wherever a part
289
+ file's tester-facing prose says `.claude/`, swap it for the detected
290
+ `<provider_dir>`, and narrate the node count from the script summary
291
+ (on `agent-skills` / Antigravity only the skill + markdown notes
292
+ exist, so the count is lower and the agent / command beats fold
293
+ away). The campaign cross-link chapters target `claude` today (see
294
+ the reality check below).
281
295
 
282
296
  **Reality check (don't mention to the tester)**: this skill ships
283
297
  at `.claude/skills/sm-tutorial/`, so Claude Code is the only host
@@ -324,6 +338,11 @@ For every chapter:
324
338
  Inviolable rule #6, NO "¿seguimos?"). `pace` only decides batching:
325
339
  `per-step` presents one chapter per exchange, `auto-advance` may
326
340
  chain chapters that need no tester action into one response.
341
+ **Either pace still emits every chapter's `Capítulo S.N` Announcement
342
+ (step 1).** `auto-advance` drops only the inter-chapter "¿seguimos?"
343
+ pause, never the per-chapter announcement, so any chapter with a
344
+ tester-facing beat always opens with its number, even when it
345
+ follows straight on from the previous one.
327
346
 
328
347
  ## Routing + menu (orchestrator)
329
348
 
@@ -429,25 +448,26 @@ the title stays plain):
429
448
  ## Resume / restart
430
449
 
431
450
  When re-invoked and the state file already exists, do NOT repeat
432
- pre-flight from scratch. Show progress (one line per part with its
433
- status) and offer: **continue** the current part, **pick another
434
- part** (re-show the ToC), **start over** (wipes the tutorial
435
- content, asks for confirmation), or **exit**.
436
-
437
- On **start over**, before deleting anything:
438
-
439
- 1. Read `tutorial.cwd` from the state file and compare with `pwd`.
440
- If they differ, **refuse** and tell the tester to move to the
441
- saved cwd or delete the state file by hand (their `.claude/`,
442
- `notes/`, etc. here are probably theirs, not the tutorial's).
443
- 2. If the cwd matches, read `tutorial.provider`, compute
444
- `<provider_dir>` + the subset of files actually created, show
445
- the exact list of paths you'll delete, and require the literal
446
- typed confirmation `yes, wipe`.
447
- 3. Only on `yes, wipe`, delete those exact paths (do NOT `rm -rf`
448
- `<provider_dir>/` or `notes/` as directories, only the specific
449
- tutorial-owned files inside; `rmdir` empty parents silently).
450
- Then start from pre-flight.
451
+ pre-flight from scratch. Run
452
+ `node .claude/skills/sm-tutorial/scripts/state.js status` and render
453
+ progress from its `parts[]` (one line per part with its status), then
454
+ offer: **continue** the current part, **pick another part** (re-show
455
+ the ToC), **start over** (wipes the tutorial content, asks for
456
+ confirmation), or **exit**.
457
+
458
+ On **start over**, the script owns the path computation and the cwd
459
+ safety check:
460
+
461
+ 1. Run `state.js wipe-list`. It re-checks `tutorial.cwd` against the
462
+ current dir and returns a `cwd-mismatch` error if they differ;
463
+ surface that refusal (tell the tester to move to the saved cwd or
464
+ delete `tutorial-state.json` by hand, their `.claude/`, `notes/`,
465
+ etc. here are probably theirs).
466
+ 2. Show the returned `paths` and require the literal typed
467
+ confirmation `yes, wipe`.
468
+ 3. Only on `yes, wipe`, run `state.js wipe --confirm` (it deletes
469
+ exactly those paths and `rmdir`s empty parents, never a whole user
470
+ dir). Then start from pre-flight.
451
471
 
452
472
  ## Edge cases
453
473
 
@@ -0,0 +1,304 @@
1
+ {
2
+ "parts": [
3
+ {
4
+ "id": "fundamentals",
5
+ "order": 0,
6
+ "title": "The live map (prologue)",
7
+ "status": "active",
8
+ "preflight": "taught-init",
9
+ "seed": null,
10
+ "prereq": null,
11
+ "pace": "per-step",
12
+ "chapters": [
13
+ {
14
+ "id": "init",
15
+ "title": "Your first node (sm init, sm, the UI)",
16
+ "est_min": 2
17
+ },
18
+ {
19
+ "id": "kinds",
20
+ "title": "The other kinds appear",
21
+ "est_min": 1
22
+ },
23
+ {
24
+ "id": "first-edit",
25
+ "title": "Your first edit (the watcher reacts)",
26
+ "est_min": 1
27
+ },
28
+ {
29
+ "id": "connectors",
30
+ "title": "The connectors light up",
31
+ "est_min": 2
32
+ },
33
+ {
34
+ "id": "inspector",
35
+ "title": "The inspector and connections",
36
+ "est_min": 1
37
+ },
38
+ {
39
+ "id": "edit-link",
40
+ "title": "Edit a link, the topology changes",
41
+ "est_min": 3
42
+ },
43
+ {
44
+ "id": "workspace",
45
+ "title": "Navigate the workspace (files, search, isolate)",
46
+ "est_min": 2
47
+ },
48
+ {
49
+ "id": "ignore",
50
+ "title": "Silence a file via .skillmapignore",
51
+ "est_min": 2
52
+ }
53
+ ]
54
+ },
55
+ {
56
+ "id": "project-kickoff",
57
+ "order": 1,
58
+ "title": "The project from zero",
59
+ "status": "active",
60
+ "preflight": "portfolio-init",
61
+ "seed": null,
62
+ "prereq": null,
63
+ "pace": "per-step",
64
+ "chapters": [
65
+ {
66
+ "id": "kickoff",
67
+ "title": "Start the portfolio (sm init on the real skeleton)",
68
+ "est_min": 2
69
+ },
70
+ {
71
+ "id": "manual",
72
+ "title": "The handbook (AGENTS.md) and CLAUDE.md",
73
+ "est_min": 2
74
+ },
75
+ {
76
+ "id": "first-agent",
77
+ "title": "The first harness agent (content-editor)",
78
+ "est_min": 2
79
+ },
80
+ {
81
+ "id": "real-kinds",
82
+ "title": "The real kinds in context",
83
+ "est_min": 2
84
+ }
85
+ ]
86
+ },
87
+ {
88
+ "id": "connect-harness",
89
+ "order": 2,
90
+ "title": "Connect the harness",
91
+ "status": "active",
92
+ "preflight": "seed",
93
+ "seed": "harness-built",
94
+ "prereq": "project-kickoff",
95
+ "pace": "auto-advance",
96
+ "chapters": [
97
+ {
98
+ "id": "check-links",
99
+ "title": "The check-links skill",
100
+ "est_min": 2
101
+ },
102
+ {
103
+ "id": "publish",
104
+ "title": "The /publish command invokes the skill",
105
+ "est_min": 3
106
+ },
107
+ {
108
+ "id": "links",
109
+ "title": "Mentions (@) and references between assets",
110
+ "est_min": 3
111
+ },
112
+ {
113
+ "id": "confidence",
114
+ "title": "Connector confidence (opacity = certainty)",
115
+ "est_min": 2
116
+ }
117
+ ]
118
+ },
119
+ {
120
+ "id": "daily-loop",
121
+ "order": 3,
122
+ "title": "The daily loop (add, improve, publish)",
123
+ "status": "active",
124
+ "preflight": "seed",
125
+ "seed": "harness-connected",
126
+ "prereq": "connect-harness",
127
+ "pace": "auto-advance",
128
+ "chapters": [
129
+ {
130
+ "id": "setup",
131
+ "title": "Make it yours, make it presentable",
132
+ "est_min": 3
133
+ },
134
+ {
135
+ "id": "preview",
136
+ "title": "Bring it up and see your site",
137
+ "est_min": 2
138
+ },
139
+ {
140
+ "id": "add-page",
141
+ "title": "Add a page with your agent",
142
+ "est_min": 4
143
+ },
144
+ {
145
+ "id": "broken-ref",
146
+ "title": "A rename breaks a link",
147
+ "est_min": 4
148
+ },
149
+ {
150
+ "id": "reserved",
151
+ "title": "A reserved name collides",
152
+ "est_min": 2
153
+ },
154
+ {
155
+ "id": "publish",
156
+ "title": "Ship it: run /publish for real",
157
+ "est_min": 4
158
+ },
159
+ {
160
+ "id": "stability",
161
+ "title": "Set a node's stability (and the `.sm` sidecar)",
162
+ "est_min": 3
163
+ },
164
+ {
165
+ "id": "golive",
166
+ "title": "Your portfolio, live next to the graph",
167
+ "est_min": 3
168
+ }
169
+ ]
170
+ },
171
+ {
172
+ "id": "extend",
173
+ "order": 4,
174
+ "title": "Extend skill-map for the site",
175
+ "status": "active",
176
+ "preflight": "backstage-init",
177
+ "seed": null,
178
+ "prereq": null,
179
+ "pace": "auto-advance",
180
+ "chapters": [
181
+ {
182
+ "id": "settings-1-layers",
183
+ "title": "The config layers and `sm config list`",
184
+ "est_min": 3
185
+ },
186
+ {
187
+ "id": "settings-2-resolve",
188
+ "title": "Read, resolve, and set a value with `sm config`",
189
+ "est_min": 3
190
+ },
191
+ {
192
+ "id": "settings-3-lens",
193
+ "title": "The active provider lens (`activeProvider`)",
194
+ "est_min": 4
195
+ },
196
+ {
197
+ "id": "tour-1-intro",
198
+ "title": "How plugins work",
199
+ "est_min": 4
200
+ },
201
+ {
202
+ "id": "tour-2-kinds",
203
+ "title": "The six extension kinds",
204
+ "est_min": 5
205
+ },
206
+ {
207
+ "id": "tour-3-explore",
208
+ "title": "Explore one extension up close",
209
+ "est_min": 4
210
+ },
211
+ {
212
+ "id": "authoring-1-scaffold",
213
+ "title": "`sm plugins create demo-highlight`",
214
+ "est_min": 2
215
+ },
216
+ {
217
+ "id": "authoring-2-anatomy",
218
+ "title": "Tour the scaffold (plugin.json + stubs + README)",
219
+ "est_min": 3
220
+ },
221
+ {
222
+ "id": "authoring-3-edit-setting",
223
+ "title": "Edit a setting (string-list) and observe it in the UI",
224
+ "est_min": 3
225
+ },
226
+ {
227
+ "id": "authoring-4-edit-slot",
228
+ "title": "Change the view-slot the contribution targets",
229
+ "est_min": 2
230
+ },
231
+ {
232
+ "id": "settings-6-contributions",
233
+ "title": "Watch contributions land in the inspector",
234
+ "est_min": 2
235
+ },
236
+ {
237
+ "id": "authoring-5-doctor-author",
238
+ "title": "Catch a manifest mistake with `sm plugins doctor`",
239
+ "est_min": 2
240
+ },
241
+ {
242
+ "id": "authoring-6-upgrade",
243
+ "title": "Try `sm plugins upgrade`",
244
+ "est_min": 2
245
+ }
246
+ ]
247
+ },
248
+ {
249
+ "id": "cli",
250
+ "order": 5,
251
+ "title": "The CLI in depth",
252
+ "status": "active",
253
+ "preflight": "seed",
254
+ "seed": "prologue-built",
255
+ "prereq": "fundamentals",
256
+ "pace": "auto-advance",
257
+ "chapters": [
258
+ {
259
+ "id": "browse",
260
+ "title": "list / show / check",
261
+ "est_min": 3
262
+ },
263
+ {
264
+ "id": "graph-export",
265
+ "title": "graph / export (query, formatters)",
266
+ "est_min": 3
267
+ },
268
+ {
269
+ "id": "issues",
270
+ "title": "Issues and broken refs (--analyzers, --json)",
271
+ "est_min": 3
272
+ },
273
+ {
274
+ "id": "annotations",
275
+ "title": "Annotations and the .sm consent prompt",
276
+ "est_min": 3
277
+ },
278
+ {
279
+ "id": "reference-paths",
280
+ "title": "Validate links to folders outside the scan scope",
281
+ "est_min": 4
282
+ }
283
+ ]
284
+ },
285
+ {
286
+ "id": "mcp",
287
+ "order": 6,
288
+ "title": "MCP",
289
+ "status": "planned",
290
+ "preflight": "seed",
291
+ "seed": "harness-connected",
292
+ "prereq": "connect-harness",
293
+ "pace": "auto-advance",
294
+ "chapters": [
295
+ {
296
+ "id": "mcp-node",
297
+ "title": "\"content-editor declares an MCP tool",
298
+ "est_min": 3
299
+ }
300
+ ]
301
+ }
302
+ ],
303
+ "findings_file": "./findings.md"
304
+ }
@@ -77,7 +77,7 @@ parts:
77
77
  - id: authoring-3-edit-setting ; title: "Edit a setting (string-list) and observe it in the UI" ; est_min: 3
78
78
  - id: authoring-4-edit-slot ; title: "Change the view-slot the contribution targets" ; est_min: 2
79
79
  - id: settings-6-contributions ; title: "Watch contributions land in the inspector" ; est_min: 2
80
- - id: authoring-5-doctor-author; title: "Catch a manifest mistake with `sm plugins doctor`" ; est_min: 2
80
+ - id: authoring-5-doctor-author ; title: "Catch a manifest mistake with `sm plugins doctor`" ; est_min: 2
81
81
  - id: authoring-6-upgrade ; title: "Try `sm plugins upgrade`" ; est_min: 2
82
82
 
83
83
  - id: cli
@@ -113,7 +113,7 @@ parts:
113
113
  status: active
114
114
  chapters:
115
115
  - id: kickoff ; title: "Start the portfolio (sm init on the real skeleton)" ; est_min: 2
116
- - id: manual ; title: "The handbook and CLAUDE.md (@AGENTS.md)" ; est_min: 2
116
+ - id: manual ; title: "The handbook (AGENTS.md) and CLAUDE.md" ; est_min: 2
117
117
  - id: first-agent ; title: "The first harness agent (content-editor)" ; est_min: 2
118
118
  - id: real-kinds ; title: "The real kinds in context" ; est_min: 2
119
119
 
@@ -144,13 +144,12 @@ parts:
144
144
  status: active
145
145
  chapters:
146
146
  - id: setup ; title: "Make it yours, make it presentable" ; est_min: 3
147
+ - id: preview ; title: "Bring it up and see your site" ; est_min: 2
147
148
  - id: add-page ; title: "Add a page with your agent" ; est_min: 4
148
- - id: orphan-draft ; title: "A page nobody links to yet" ; est_min: 2
149
- - id: wire-and-improve ; title: "Wire the draft in" ; est_min: 3
150
149
  - id: broken-ref ; title: "A rename breaks a link" ; est_min: 4
151
150
  - id: reserved ; title: "A reserved name collides" ; est_min: 2
152
151
  - id: publish ; title: "Ship it: run /publish for real" ; est_min: 4
153
- - id: sidecar ; title: "Annotate the handbook (.sm and consent)" ; est_min: 3
152
+ - id: stability ; title: "Set a node's stability (and the `.sm` sidecar)" ; est_min: 3
154
153
  - id: golive ; title: "Your portfolio, live next to the graph" ; est_min: 3
155
154
 
156
155
  # ----- parked: MCP returns later as its own iteration (body kept in part-mcp.md) -----