@skill-map/cli 0.68.1 → 0.69.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 (31) hide show
  1. package/dist/cli/tutorial/sm-tutorial/references/_core.md +15 -6
  2. package/dist/cli/tutorial/sm-tutorial/references/_manifest.json +70 -70
  3. package/dist/cli/tutorial/sm-tutorial/references/_manifest.yml +38 -38
  4. package/dist/cli/tutorial/sm-tutorial/references/fixtures.md +3 -3
  5. package/dist/cli/tutorial/sm-tutorial/references/part-authoring.md +25 -8
  6. package/dist/cli/tutorial/sm-tutorial/references/part-basic-daily.md +77 -29
  7. package/dist/cli/tutorial/sm-tutorial/references/part-basic-fundamentals.md +1 -1
  8. package/dist/cli/tutorial/sm-tutorial/references/part-basic-kickoff.md +1 -1
  9. package/dist/cli/tutorial/sm-tutorial/references/part-cli.md +1 -1
  10. package/dist/cli/tutorial/sm-tutorial/references/part-daily-loop.md +77 -31
  11. package/dist/cli/tutorial/sm-tutorial/references/part-fundamentals.md +3 -3
  12. package/dist/cli/tutorial/sm-tutorial/references/part-plugins.md +1 -1
  13. package/dist/cli/tutorial/sm-tutorial/references/part-project-kickoff.md +2 -2
  14. package/dist/cli/tutorial/sm-tutorial/references/part-settings.md +2 -2
  15. package/dist/cli.js +699 -326
  16. package/dist/conformance/index.js +3 -3
  17. package/dist/index.js +11 -10
  18. package/dist/kernel/index.d.ts +27 -17
  19. package/dist/kernel/index.js +11 -10
  20. package/dist/migrations/001_initial.sql +7 -3
  21. package/dist/ui/chunk-E7GLGHVY.js +1 -0
  22. package/dist/ui/chunk-RLRSNHYG.js +3 -0
  23. package/dist/ui/{chunk-22EQLC23.js → chunk-RRRXQNG6.js} +1 -1
  24. package/dist/ui/{chunk-K3ZRQNN5.js → chunk-SI4MGFOW.js} +1 -1
  25. package/dist/ui/index.html +1 -1
  26. package/dist/ui/{main-R7BIU4HU.js → main-23NGLEUB.js} +3 -3
  27. package/migrations/001_initial.sql +7 -3
  28. package/package.json +2 -2
  29. package/dist/ui/chunk-PU5OP5RN.js +0 -1
  30. package/dist/ui/chunk-TLMV4LOQ.js +0 -3
  31. /package/dist/ui/{chunk-KMHXNOFZ.js → chunk-SXSNTF26.js} +0 -0
@@ -20,7 +20,7 @@ Two numbering systems coexist; keep them apart:
20
20
 
21
21
  - **Internal (authoring only)**: the `order` field in `_manifest.yml`
22
22
  and the `# Part N` file headers, 0-based (Part 0 the prologue …
23
- Part 4 the CLI deep-dive; `mcp` at Part 5 is parked / hidden). Use it
23
+ Part 3 the CLI deep-dive, Part 4 the Extend dev section; `mcp` at Part 5 is parked / hidden). Use it
24
24
  in `**Context**:` blocks and author
25
25
  notes; NEVER say it to the tester, it is off by one from what they
26
26
  see.
@@ -336,14 +336,23 @@ references all resolve on both), so the rich part bodies are written in the
336
336
  "open the agent file" point at the `.toml`; a chapter that has the tester
337
337
  read or tweak an agent works on the TOML frontmatter / `developer_instructions`.
338
338
  - **No `command` kind.** Where the claude book authors a `command` (the
339
- `/publish` command, the reserved-name chapter's `init` command), Codex uses a
339
+ `/publish` command, the reserved-name chapter's `model` command), Codex uses a
340
340
  **skill** at `.agents/skills/<name>/SKILL.md`. The body is identical (same
341
341
  `/check-links` + `@content-editor` + deploy reference); only the kind and path
342
342
  change. `cat <set> --file … --provider codex` already returns the Codex skill
343
343
  body, so the create-the-file block stays a copy-paste. The reserved-name beat
344
344
  uses a skill named with a reserved verb (Codex inherits the open-standard
345
- `COMMONS_RESERVED_NAMES`, e.g. `config`), exactly like the basic track's
345
+ `COMMONS_RESERVED_NAMES`, e.g. `model`), exactly like the basic track's
346
346
  `reserved` chapter, on a skill instead of a command.
347
+ **Apply every substitution silently.** Use the Codex path, kind and file
348
+ directly in the tester-facing prose, but never EXPLAIN the substitution or
349
+ compare it to the claude shape. The Codex tester only ever sees a `skill`
350
+ where the claude book has a command; never tell them "Codex has no `command`
351
+ kind", never say a node "is a command that shows as a skill", never reference
352
+ "the claude command". On Codex these nodes were always skills, there is
353
+ nothing to explain. (Same for the TOML-agent and path swaps above: point the
354
+ tester at the real `.toml` / `.agents/` file when they interact with it, just
355
+ do not narrate that it "would be" something else on claude.)
347
356
  - **Skills** live under `.agents/skills/<name>/SKILL.md` (the open layout Codex
348
357
  adopted), same as the basic family.
349
358
  - Everything else (the `@`/`/` syntax, the confidence numbers, the hub, the
@@ -444,7 +453,7 @@ promise or pre-announce the next part, the close and the menu own the
444
453
  transition. Sample (Claude variant, mirror the tester's language,
445
454
  apply the host rendering rule):
446
455
 
447
- > ✓ Listo, terminaste **El proyecto desde cero**. Levantaste un
456
+ > ✓ Listo, terminaste **El harness desde cero**. Levantaste un
448
457
  > proyecto real, su handbook y el harness `.claude/` con sus primeros
449
458
  > nodos.
450
459
  >
@@ -484,7 +493,7 @@ fill the parts and durations from `_manifest.yml`):
484
493
  **1. El mapa en vivo** (~12 min)
485
494
  > El prólogo: corrés `sm`, abrís el browser y ves el mapa actualizarse en vivo mientras editás `.md`. Si es tu primera vez, empezá por acá.
486
495
 
487
- **2. El proyecto desde cero** (~8 min)
496
+ **2. El harness desde cero** (~8 min)
488
497
  > Arrancás un proyecto real (un portfolio) y su harness `.claude/`.
489
498
 
490
499
  ¿Cuál?
@@ -503,7 +512,7 @@ the title stays plain):
503
512
  **1. El mapa en vivo** (~12 min)
504
513
  > ✓ Ya la hiciste.
505
514
 
506
- **2. El proyecto desde cero** (~8 min)
515
+ **2. El harness desde cero** (~8 min)
507
516
  > Arrancás un proyecto real (un portfolio) y su harness `.claude/`.
508
517
  ```
509
518
 
@@ -29,7 +29,7 @@
29
29
  {
30
30
  "id": "connectors",
31
31
  "title": "The connectors light up",
32
- "est_min": 2
32
+ "est_min": 1
33
33
  },
34
34
  {
35
35
  "id": "inspector",
@@ -39,17 +39,17 @@
39
39
  {
40
40
  "id": "edit-link",
41
41
  "title": "Edit a link, the topology changes",
42
- "est_min": 3
42
+ "est_min": 2
43
43
  },
44
44
  {
45
45
  "id": "workspace",
46
46
  "title": "Navigate the workspace (files, search, isolate)",
47
- "est_min": 2
47
+ "est_min": 1
48
48
  },
49
49
  {
50
50
  "id": "ignore",
51
51
  "title": "Silence a file via .skillmapignore",
52
- "est_min": 2
52
+ "est_min": 1
53
53
  }
54
54
  ]
55
55
  },
@@ -82,7 +82,7 @@
82
82
  {
83
83
  "id": "connectors",
84
84
  "title": "Connect with references (markdown links)",
85
- "est_min": 2
85
+ "est_min": 1
86
86
  },
87
87
  {
88
88
  "id": "inspector",
@@ -92,24 +92,24 @@
92
92
  {
93
93
  "id": "edit-link",
94
94
  "title": "Edit a link, the topology changes",
95
- "est_min": 3
95
+ "est_min": 2
96
96
  },
97
97
  {
98
98
  "id": "workspace",
99
99
  "title": "Navigate the workspace (files, search, isolate)",
100
- "est_min": 2
100
+ "est_min": 1
101
101
  },
102
102
  {
103
103
  "id": "ignore",
104
104
  "title": "Silence a file via .skillmapignore",
105
- "est_min": 2
105
+ "est_min": 1
106
106
  }
107
107
  ]
108
108
  },
109
109
  {
110
110
  "id": "project-kickoff",
111
111
  "order": 1,
112
- "title": "The project from zero",
112
+ "title": "The harness from zero",
113
113
  "status": "active",
114
114
  "preflight": "portfolio-init",
115
115
  "seed": null,
@@ -135,22 +135,22 @@
135
135
  {
136
136
  "id": "real-kinds",
137
137
  "title": "The real kinds in context",
138
- "est_min": 2
138
+ "est_min": 1
139
139
  },
140
140
  {
141
141
  "id": "check-links",
142
142
  "title": "The check-links skill",
143
- "est_min": 2
143
+ "est_min": 1
144
144
  },
145
145
  {
146
146
  "id": "publish",
147
147
  "title": "The /publish command invokes the skill",
148
- "est_min": 3
148
+ "est_min": 2
149
149
  },
150
150
  {
151
151
  "id": "links",
152
152
  "title": "Mentions (@) and references between assets",
153
- "est_min": 3
153
+ "est_min": 2
154
154
  },
155
155
  {
156
156
  "id": "confidence",
@@ -162,7 +162,7 @@
162
162
  {
163
163
  "id": "basic-kickoff",
164
164
  "order": 1,
165
- "title": "The project from zero",
165
+ "title": "The harness from zero",
166
166
  "status": "active",
167
167
  "preflight": "portfolio-init",
168
168
  "seed": null,
@@ -193,22 +193,22 @@
193
193
  {
194
194
  "id": "check-links",
195
195
  "title": "The link checker",
196
- "est_min": 3
196
+ "est_min": 2
197
197
  },
198
198
  {
199
199
  "id": "publish",
200
200
  "title": "The publish skill references the harness",
201
- "est_min": 4
201
+ "est_min": 3
202
202
  },
203
203
  {
204
204
  "id": "links",
205
205
  "title": "The handbook becomes the hub (references)",
206
- "est_min": 4
206
+ "est_min": 3
207
207
  },
208
208
  {
209
209
  "id": "confidence",
210
210
  "title": "Connector confidence (opacity = certainty)",
211
- "est_min": 3
211
+ "est_min": 2
212
212
  }
213
213
  ]
214
214
  },
@@ -226,17 +226,17 @@
226
226
  {
227
227
  "id": "setup",
228
228
  "title": "Make it yours and bring it up",
229
- "est_min": 5
229
+ "est_min": 4
230
230
  },
231
231
  {
232
232
  "id": "add-page",
233
233
  "title": "Add a page with your agent",
234
- "est_min": 4
234
+ "est_min": 3
235
235
  },
236
236
  {
237
237
  "id": "broken-ref",
238
238
  "title": "A rename breaks a link",
239
- "est_min": 4
239
+ "est_min": 3
240
240
  },
241
241
  {
242
242
  "id": "reserved",
@@ -246,7 +246,7 @@
246
246
  {
247
247
  "id": "publish",
248
248
  "title": "Ship it: run /publish for real",
249
- "est_min": 4
249
+ "est_min": 3
250
250
  },
251
251
  {
252
252
  "id": "stability",
@@ -274,17 +274,17 @@
274
274
  {
275
275
  "id": "setup",
276
276
  "title": "Make it yours and bring it up",
277
- "est_min": 5
277
+ "est_min": 4
278
278
  },
279
279
  {
280
280
  "id": "add-page",
281
281
  "title": "Add a page with your skill",
282
- "est_min": 4
282
+ "est_min": 3
283
283
  },
284
284
  {
285
285
  "id": "broken-ref",
286
286
  "title": "A rename breaks a link",
287
- "est_min": 4
287
+ "est_min": 3
288
288
  },
289
289
  {
290
290
  "id": "reserved",
@@ -294,7 +294,7 @@
294
294
  {
295
295
  "id": "publish",
296
296
  "title": "Ship it: run the publish skill for real",
297
- "est_min": 4
297
+ "est_min": 3
298
298
  },
299
299
  {
300
300
  "id": "stability",
@@ -309,9 +309,47 @@
309
309
  ]
310
310
  },
311
311
  {
312
- "id": "extend",
312
+ "id": "cli",
313
313
  "order": 3,
314
- "title": "Extend skill-map for the site",
314
+ "title": "The CLI for you and your agent",
315
+ "status": "active",
316
+ "preflight": "seed",
317
+ "seed": "prologue-built",
318
+ "prereq": "fundamentals",
319
+ "pace": "auto-advance",
320
+ "track": "both",
321
+ "chapters": [
322
+ {
323
+ "id": "browse",
324
+ "title": "list / show / check",
325
+ "est_min": 2
326
+ },
327
+ {
328
+ "id": "graph-export",
329
+ "title": "graph / export (query, formatters)",
330
+ "est_min": 2
331
+ },
332
+ {
333
+ "id": "issues",
334
+ "title": "Issues and broken refs (--analyzers, --json)",
335
+ "est_min": 2
336
+ },
337
+ {
338
+ "id": "annotations",
339
+ "title": "Annotations and the .sm consent prompt",
340
+ "est_min": 3
341
+ },
342
+ {
343
+ "id": "reference-paths",
344
+ "title": "Validate links to folders outside the scan scope",
345
+ "est_min": 3
346
+ }
347
+ ]
348
+ },
349
+ {
350
+ "id": "extend",
351
+ "order": 4,
352
+ "title": "Extend skill-map with plugins",
315
353
  "status": "active",
316
354
  "preflight": "backstage-init",
317
355
  "seed": null,
@@ -332,22 +370,22 @@
332
370
  {
333
371
  "id": "settings-3-lens",
334
372
  "title": "The active provider lens (`activeProvider`)",
335
- "est_min": 4
373
+ "est_min": 3
336
374
  },
337
375
  {
338
376
  "id": "tour-1-intro",
339
377
  "title": "How plugins work",
340
- "est_min": 4
378
+ "est_min": 3
341
379
  },
342
380
  {
343
381
  "id": "tour-2-kinds",
344
382
  "title": "The six extension kinds",
345
- "est_min": 5
383
+ "est_min": 4
346
384
  },
347
385
  {
348
386
  "id": "tour-3-explore",
349
387
  "title": "Explore one extension up close",
350
- "est_min": 4
388
+ "est_min": 3
351
389
  },
352
390
  {
353
391
  "id": "authoring-1-scaffold",
@@ -376,44 +414,6 @@
376
414
  }
377
415
  ]
378
416
  },
379
- {
380
- "id": "cli",
381
- "order": 4,
382
- "title": "The CLI in depth",
383
- "status": "active",
384
- "preflight": "seed",
385
- "seed": "prologue-built",
386
- "prereq": "fundamentals",
387
- "pace": "auto-advance",
388
- "track": "both",
389
- "chapters": [
390
- {
391
- "id": "browse",
392
- "title": "list / show / check",
393
- "est_min": 3
394
- },
395
- {
396
- "id": "graph-export",
397
- "title": "graph / export (query, formatters)",
398
- "est_min": 3
399
- },
400
- {
401
- "id": "issues",
402
- "title": "Issues and broken refs (--analyzers, --json)",
403
- "est_min": 3
404
- },
405
- {
406
- "id": "annotations",
407
- "title": "Annotations and the .sm consent prompt",
408
- "est_min": 3
409
- },
410
- {
411
- "id": "reference-paths",
412
- "title": "Validate links to folders outside the scan scope",
413
- "est_min": 4
414
- }
415
- ]
416
- },
417
417
  {
418
418
  "id": "mcp",
419
419
  "order": 5,
@@ -53,11 +53,11 @@ parts:
53
53
  - id: init ; title: "Your first node (sm init, sm, the UI)" ; est_min: 2
54
54
  - id: kinds ; title: "The other kinds appear" ; est_min: 1
55
55
  - id: first-edit ; title: "Your first edit (the watcher reacts)" ; est_min: 1
56
- - id: connectors ; title: "The connectors light up" ; est_min: 2
56
+ - id: connectors ; title: "The connectors light up" ; est_min: 1
57
57
  - id: inspector ; title: "The inspector and connections" ; est_min: 1
58
- - id: edit-link ; title: "Edit a link, the topology changes" ; est_min: 3
59
- - id: workspace ; title: "Navigate the workspace (files, search, isolate)" ; est_min: 2
60
- - id: ignore ; title: "Silence a file via .skillmapignore" ; est_min: 2
58
+ - id: edit-link ; title: "Edit a link, the topology changes" ; est_min: 2
59
+ - id: workspace ; title: "Navigate the workspace (files, search, isolate)" ; est_min: 1
60
+ - id: ignore ; title: "Silence a file via .skillmapignore" ; est_min: 1
61
61
 
62
62
  - id: basic-fundamentals
63
63
  order: 0
@@ -72,15 +72,15 @@ parts:
72
72
  - id: init ; title: "Your first node (sm init, sm, the UI)" ; est_min: 2
73
73
  - id: kinds ; title: "Skills and notes appear" ; est_min: 1
74
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
75
+ - id: connectors ; title: "Connect with references (markdown links)" ; est_min: 1
76
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
77
+ - id: edit-link ; title: "Edit a link, the topology changes" ; est_min: 2
78
+ - id: workspace ; title: "Navigate the workspace (files, search, isolate)" ; est_min: 1
79
+ - id: ignore ; title: "Silence a file via .skillmapignore" ; est_min: 1
80
80
 
81
81
  - id: extend
82
- order: 3
83
- title: "Extend skill-map for the site"
82
+ order: 4
83
+ title: "Extend skill-map with plugins"
84
84
  # Spans three chapter libraries; dispatch by chapter-id prefix:
85
85
  # settings-* -> part-settings.md
86
86
  # tour-* -> part-plugins.md
@@ -97,10 +97,10 @@ parts:
97
97
  chapters:
98
98
  - id: settings-1-layers ; title: "The config layers and `sm config list`" ; est_min: 3
99
99
  - id: settings-2-resolve ; title: "Read, resolve, and set a value with `sm config`" ; est_min: 3
100
- - id: settings-3-lens ; title: "The active provider lens (`activeProvider`)" ; est_min: 4
101
- - id: tour-1-intro ; title: "How plugins work" ; est_min: 4
102
- - id: tour-2-kinds ; title: "The six extension kinds" ; est_min: 5
103
- - id: tour-3-explore ; title: "Explore one extension up close" ; est_min: 4
100
+ - id: settings-3-lens ; title: "The active provider lens (`activeProvider`)" ; est_min: 3
101
+ - id: tour-1-intro ; title: "How plugins work" ; est_min: 3
102
+ - id: tour-2-kinds ; title: "The six extension kinds" ; est_min: 4
103
+ - id: tour-3-explore ; title: "Explore one extension up close" ; est_min: 3
104
104
  - id: authoring-1-scaffold ; title: "`sm plugins create extractor demo-highlight`" ; est_min: 2
105
105
  - id: authoring-2-anatomy ; title: "Tour the scaffold (plugin.json + stubs + README)" ; est_min: 3
106
106
  - id: authoring-3-edit-setting ; title: "Edit a setting (string-list) and observe it in the UI" ; est_min: 3
@@ -108,8 +108,8 @@ parts:
108
108
  - id: authoring-5-doctor-author ; title: "Catch a manifest mistake with `sm plugins doctor`" ; est_min: 2
109
109
 
110
110
  - id: cli
111
- order: 4
112
- title: "The CLI in depth"
111
+ order: 3
112
+ title: "The CLI for you and your agent"
113
113
  step_file: part-cli.md
114
114
  pace: auto-advance
115
115
  preflight: seed # self-seeds the Part 0 demo fixture
@@ -118,11 +118,11 @@ parts:
118
118
  track: both # CLI verbs are lens-agnostic; prose notes lens-specific node counts
119
119
  status: active
120
120
  chapters:
121
- - id: browse ; title: "list / show / check" ; est_min: 3
122
- - id: graph-export ; title: "graph / export (query, formatters)" ; est_min: 3
123
- - id: issues ; title: "Issues and broken refs (--analyzers, --json)" ; est_min: 3
121
+ - id: browse ; title: "list / show / check" ; est_min: 2
122
+ - id: graph-export ; title: "graph / export (query, formatters)" ; est_min: 2
123
+ - id: issues ; title: "Issues and broken refs (--analyzers, --json)" ; est_min: 2
124
124
  - id: annotations ; title: "Annotations and the .sm consent prompt" ; est_min: 3
125
- - id: reference-paths ; title: "Validate links to folders outside the scan scope" ; est_min: 4
125
+ - id: reference-paths ; title: "Validate links to folders outside the scan scope" ; est_min: 3
126
126
 
127
127
  # ----- the portfolio campaign (the spine's real project) -----
128
128
  # Each part builds on the prior one's accumulated harness. Run in
@@ -133,7 +133,7 @@ parts:
133
133
 
134
134
  - id: project-kickoff
135
135
  order: 1
136
- title: "The project from zero"
136
+ title: "The harness from zero"
137
137
  step_file: part-project-kickoff.md
138
138
  pace: per-step
139
139
  preflight: portfolio-init # lays the Express skeleton + AGENTS.md; clears the prologue demo fixture if present
@@ -144,10 +144,10 @@ parts:
144
144
  - id: kickoff ; title: "Start the portfolio (sm init on the real skeleton)" ; est_min: 2
145
145
  - id: manual ; title: "The handbook (AGENTS.md) and CLAUDE.md" ; est_min: 2
146
146
  - id: first-agent ; title: "The first harness agent (content-editor)" ; est_min: 2
147
- - id: real-kinds ; title: "The real kinds in context" ; est_min: 2
148
- - id: check-links ; title: "The check-links skill" ; est_min: 2
149
- - id: publish ; title: "The /publish command invokes the skill" ; est_min: 3
150
- - id: links ; title: "Mentions (@) and references between assets" ; est_min: 3
147
+ - id: real-kinds ; title: "The real kinds in context" ; est_min: 1
148
+ - id: check-links ; title: "The check-links skill" ; est_min: 1
149
+ - id: publish ; title: "The /publish command invokes the skill" ; est_min: 2
150
+ - id: links ; title: "Mentions (@) and references between assets" ; est_min: 2
151
151
  - id: confidence ; title: "Connector confidence (opacity = certainty)" ; est_min: 2
152
152
 
153
153
  - id: daily-loop
@@ -162,11 +162,11 @@ parts:
162
162
  track: rich # agent-driven page add + reserved command; basic track has its own counterpart
163
163
  status: active
164
164
  chapters:
165
- - id: setup ; title: "Make it yours and bring it up" ; est_min: 5
166
- - id: add-page ; title: "Add a page with your agent" ; est_min: 4
167
- - id: broken-ref ; title: "A rename breaks a link" ; est_min: 4
165
+ - id: setup ; title: "Make it yours and bring it up" ; est_min: 4
166
+ - id: add-page ; title: "Add a page with your agent" ; est_min: 3
167
+ - id: broken-ref ; title: "A rename breaks a link" ; est_min: 3
168
168
  - id: reserved ; title: "A reserved name collides" ; est_min: 2
169
- - id: publish ; title: "Ship it: run /publish for real" ; est_min: 4
169
+ - id: publish ; title: "Ship it: run /publish for real" ; est_min: 3
170
170
  - id: stability ; title: "Set a node's stability (and the `.sm` sidecar)" ; est_min: 3
171
171
  - id: golive ; title: "Your website, live next to the graph" ; est_min: 3
172
172
 
@@ -177,7 +177,7 @@ parts:
177
177
 
178
178
  - id: basic-kickoff
179
179
  order: 1
180
- title: "The project from zero"
180
+ title: "The harness from zero"
181
181
  step_file: part-basic-kickoff.md
182
182
  pace: per-step
183
183
  preflight: portfolio-init
@@ -189,10 +189,10 @@ parts:
189
189
  - id: manual ; title: "The handbook (AGENTS.md) and an entry pointer" ; est_min: 2
190
190
  - id: first-skill ; title: "The first harness skill (content-editor)" ; est_min: 2
191
191
  - id: real-kinds ; title: "The kinds in context" ; est_min: 2
192
- - id: check-links ; title: "The link checker" ; est_min: 3
193
- - id: publish ; title: "The publish skill references the harness" ; est_min: 4
194
- - id: links ; title: "The handbook becomes the hub (references)" ; est_min: 4
195
- - id: confidence ; title: "Connector confidence (opacity = certainty)" ; est_min: 3
192
+ - id: check-links ; title: "The link checker" ; est_min: 2
193
+ - id: publish ; title: "The publish skill references the harness" ; est_min: 3
194
+ - id: links ; title: "The handbook becomes the hub (references)" ; est_min: 3
195
+ - id: confidence ; title: "Connector confidence (opacity = certainty)" ; est_min: 2
196
196
 
197
197
  - id: basic-daily
198
198
  order: 2
@@ -206,11 +206,11 @@ parts:
206
206
  track: basic
207
207
  status: active
208
208
  chapters:
209
- - id: setup ; title: "Make it yours and bring it up" ; est_min: 5
210
- - id: add-page ; title: "Add a page with your skill" ; est_min: 4
211
- - id: broken-ref ; title: "A rename breaks a link" ; est_min: 4
209
+ - id: setup ; title: "Make it yours and bring it up" ; est_min: 4
210
+ - id: add-page ; title: "Add a page with your skill" ; est_min: 3
211
+ - id: broken-ref ; title: "A rename breaks a link" ; est_min: 3
212
212
  - id: reserved ; title: "A reserved name collides" ; est_min: 2
213
- - id: publish ; title: "Ship it: run the publish skill for real" ; est_min: 4
213
+ - id: publish ; title: "Ship it: run the publish skill for real" ; est_min: 3
214
214
  - id: stability ; title: "Set a node's stability (and the `.sm` sidecar)" ; est_min: 3
215
215
  - id: golive ; title: "Your website, live next to the graph" ; est_min: 3
216
216
 
@@ -40,8 +40,8 @@ fixtures-data/
40
40
  | `prologue` | the seven Part 0 demo nodes | Part 0 (progressive, `--only`), `prologue-built` seed |
41
41
  | `portfolio` | Express skeleton, handbook, `content-editor`, `docs/STYLE` + `DEPLOY` | Part 1 (`--only` boot, chapters lay the rest), `harness-connected` seed |
42
42
  | `harness` | `check-links` skill, `publish` command | Part 1 connect chapters, `harness-connected` seed |
43
- | `master` | `master-agent`, `master-skill`, `notes/ideas` | Part 3 `backstage-init` |
44
- | `cli-external` | `link-validation/hijoA` + `hijoB` | Part 4 `reference-paths` |
43
+ | `master` | `master-agent`, `master-skill`, `notes/ideas` | Part 4 `backstage-init` |
44
+ | `cli-external` | `link-validation/hijoA` + `hijoB` | Part 3 `reference-paths` |
45
45
 
46
46
  ## Edits (append fragments)
47
47
 
@@ -62,7 +62,7 @@ entered out of order.
62
62
 
63
63
  | Seed | Lays | Edits | Drops |
64
64
  |---|---|---|---|
65
- | `prologue-built` (Part 4) | `prologue` | `todo-connectors` | `notes/private-credentials.md` |
65
+ | `prologue-built` (Part 3) | `prologue` | `todo-connectors` | `notes/private-credentials.md` |
66
66
  | `harness-connected` (Part 2) | `portfolio` + `harness` | `agents-hub`, `content-editor-style` | , |
67
67
 
68
68
  ## Footprints (what `clear` and `wipe` remove)
@@ -1,6 +1,6 @@
1
- # Part 3 (c): Extend skill-map - build plugins (step library, `authoring-*` ids)
1
+ # Part 4 (c): Extend skill-map - build plugins (step library, `authoring-*` ids)
2
2
 
3
- Step bodies for the plugin-authoring chapters of Part 3.
3
+ Step bodies for the plugin-authoring chapters of Part 4.
4
4
  The SKILL.md orchestrator dispatches each `authoring-*` chapter id
5
5
  here; `settings-*` ids it dispatches to `part-settings.md`.
6
6
 
@@ -41,6 +41,7 @@ Created /<cwd>/.skill-map/plugins/demo-highlight
41
41
  Next:
42
42
  - Edit extractors/demo-highlight-extractor/index.js
43
43
  - Run sm plugins doctor to confirm it loads
44
+ - Run sm plugins trust demo-highlight to let its code run (project-local plugins are untrusted until you allow them)
44
45
  - sm plugins slots list: browse slots and input-types
45
46
  ```
46
47
 
@@ -48,6 +49,28 @@ Next:
48
49
  slashes, no uppercase. `demo-highlight` is fine, `demo/highlight`
49
50
  or `Demo-Highlight` are rejected.
50
51
 
52
+ **Trust it before it can run.** A project-local plugin you just dropped
53
+ into `.skill-map/plugins/` is discovered but its code does NOT run until
54
+ you trust it on this machine, a security gate so cloning a repo never
55
+ auto-executes its plugins behind your back. The plugin is yours (you just
56
+ wrote it), so grant trust now; the next chapters need it to run. Tell the
57
+ tester:
58
+
59
+ > One more step before your plugin can run. skill-map found it but will
60
+ > not execute its code until you **trust** it, your local consent that
61
+ > this code may run on your machine. It is yours, so trust it:
62
+
63
+ ```bash
64
+ sm plugins trust demo-highlight
65
+ ```
66
+
67
+ > Two separate ideas, on purpose: **enable** says "this plugin is part of
68
+ > the project" (shared, lives in the config), **trust** says "I let it run
69
+ > on this machine" (local, never travels in a commit). A scaffolded plugin
70
+ > is enabled by default, so trusting it is all it needs to run. You can
71
+ > revoke later with `sm plugins untrust demo-highlight`, or use the
72
+ > per-plugin Trust control in the Settings UI.
73
+
51
74
  Mark `authoring-1-scaffold: done`.
52
75
 
53
76
  ## Step `authoring-2-anatomy` - tour the scaffold (~3 min)
@@ -162,12 +185,6 @@ the browser, click `notes/ideas`, and find the chip in the card's
162
185
  **left footer** (it also shows in the inspector). It reads
163
186
  `🔍 kw 3`, one match per keyword.
164
187
 
165
- > Heads up: editing only the fixture (`notes/ideas.md`) updates
166
- > live through the watcher, but it recounts with the OLD keyword
167
- > set, so the chip would read `🔍 kw 2`. The new `XXX` keyword
168
- > lives in the plugin, and the plugin is read at boot, that is why
169
- > restarting `sm` is the step that takes the count to 3.
170
-
171
188
  > Three matches. The setting flowed from the extension's `settings`
172
189
  > through `ctx.settings.keywords` into the extractor, the extractor
173
190
  > counted them, the kernel persisted the contribution, and the UI