@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
@@ -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 5 the CLI deep-dive; `mcp` at Part 6 is parked / hidden). Use it
23
+ Part 4 the CLI deep-dive; `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.
@@ -251,54 +251,103 @@ first kind quoted, the second kind never.
251
251
  command blocks assume the second terminal is anchored to the
252
252
  fixture folder.
253
253
 
254
- ## Provider detection
255
-
256
- Skill-map ships built-in vendor providers, each walking its own
257
- on-disk convention:
258
-
259
- | Provider | Base dir | Kinds it claims | Detect via env var(s) |
260
- |----------------|-------------------|-----------------------------|--------------------------------------------------------|
261
- | `claude` | `.claude/` | `agent`, `command`, `skill` | `CLAUDECODE=1` OR `AI_AGENT` starts with `claude-code` |
262
- | `agent-skills` | `.agents/skills/` | `skill` only (vendor-neutral; also the on-disk home for Google's Antigravity CLI, which replaced the Gemini CLI on 2026-05-19 and adopted this open standard) | experimental (ships disabled; `sm tutorial --experimental` to offer it) |
263
- | `codex` | `.codex/` | `agent` (`.codex/agents/*.toml`) | experimental (ships disabled by default) |
264
-
265
- **Decision logic, applied silently during pre-flight**: the tutorial
266
- demonstrates the `claude` provider only. `agent-skills` and `codex`
267
- are **experimental** (ship disabled by default) and are not selectable
268
- here, so there is no runtime to detect or opt into.
269
-
270
- 1. `provider = claude`, `<provider_dir> = .claude`, kinds =
271
- `{agent, command, skill}`. Always.
272
- 2. Do NOT offer Antigravity / agent-skills / codex as an alternative,
273
- and do NOT ask the tester which runtime hosts them. If a tester
274
- says they use another runtime, acknowledge it briefly and explain
275
- that those providers are experimental, the tutorial demos `claude`
276
- (`.claude/`) today:
277
-
278
- > Heads up: skill-map also reads Antigravity, agent-skills and
279
- > Codex projects, but those providers are experimental in this
280
- > tutorial. We'll demo skill-map's Claude provider (`.claude/`)
281
- > today.
282
-
283
- Persist `provider` into the state file (`tutorial.provider`) so a
284
- resumed session does not re-detect. (It is always `claude` for now.)
254
+ ## Provider detection (and the track it selects)
255
+
256
+ A skill-map project reads its files through exactly ONE active lens
257
+ (provider). The built-in providers and what each claims:
258
+
259
+ | Provider | Asset layout | Kinds | Connectors that form | Marker | Stability | Track |
260
+ |----------------|-------------------------------------------|--------------------------------|--------------------------------|--------------------|------------------|---------|
261
+ | `claude` | `.claude/` (agents, commands, skills) | agent, command, skill, markdown| `/` invokes, `@` mentions, refs| `.claude/` | stable | rich |
262
+ | `codex` | `.codex/agents/*.toml` + `.agents/skills/`| agent (TOML), skill, markdown | `/` invokes, `@` mentions, refs| `.codex/` | beta | rich |
263
+ | `antigravity` | `.agents/skills/` | skill, markdown | `/` invokes, refs | `.agent/workflows/`| beta | basic |
264
+ | `agent-skills` | `.agents/skills/` | skill, markdown | refs only | `.agents/` | stable (default) | basic |
265
+
266
+ `core/markdown` classifies every orphan `.md` under whatever lens is
267
+ active; it is the universal base, never a selectable lens.
268
+
269
+ **Two tracks, by capability** (the axis is "does the lens have an
270
+ `agent` kind?"):
271
+
272
+ - **rich** (`claude`, `codex`): agents + skills (+ commands on claude),
273
+ wired with `/` invocations and `@` mentions plus markdown references.
274
+ - **basic** (`agent-skills`, `antigravity`): the open-standard family,
275
+ `skill` + `markdown` only, wired with **markdown references**
276
+ (`[text](path)`), the one connection the Agent Skills standard
277
+ documents. No `@`. `/` invocation is an Antigravity-only bonus, it is
278
+ NOT part of the neutral standard, so under the `agent-skills` lens only
279
+ references form.
280
+
281
+ Why references and not slash on the open standard: the Agent Skills
282
+ spec (agentskills.io) activates a skill by its `description` and
283
+ connects files by relative markdown links; it has no `/`-invocation
284
+ syntax. claude/codex add `/` and `@` as vendor features on top.
285
+
286
+ **Decision logic, applied silently at pre-flight:**
287
+
288
+ 1. The provider is the lens the scaffold set up. Check the vendor markers
289
+ FIRST (they ride on top of the shared `.agents/skills/` skill home), then
290
+ the skill home itself:
291
+ - a `.codex/` dir present (the marker `sm tutorial --for codex` drops) →
292
+ `provider = codex`, `track = rich`.
293
+ - else a `.agent/workflows/` dir present → `provider = antigravity`,
294
+ `track = basic`.
295
+ - else skill under `.claude/skills/sm-tutorial/` → `provider = claude`,
296
+ `<provider_dir> = .claude`, `track = rich`.
297
+ - else skill under `.agents/skills/sm-tutorial/` → `provider = agent-skills`,
298
+ `<provider_dir> = .agents/skills`, `track = basic`.
299
+ **Lens ambiguity for codex / antigravity**: both adopt the open
300
+ `.agents/skills/` layout, so their own marker (`.codex/` or
301
+ `.agent/workflows/`) coexists with the `agent-skills` marker (`.agents/`)
302
+ and a plain `sm scan --yes` reports the lens as ambiguous. For those two,
303
+ set it explicitly once before the first scan, `sm config set
304
+ activeProvider <codex|antigravity> --yes`, then the book runs unchanged
305
+ (the fixture engine renders the right shape: codex its TOML agents +
306
+ command-as-skill, antigravity reuses the `agent-skills` overlays).
307
+ 2. `state.js init --provider <p>` persists `provider` plus the derived
308
+ `track`, so a resumed session never re-detects.
309
+ 3. Render only the parts whose `track` is `tutorial.track` (or `both`).
310
+ Never offer a rich-only part under the basic track, or vice versa.
285
311
 
286
312
  **Global substitution rule**: the fixture scripts do the file-level
287
313
  work. You pass `--provider <p>` (the value persisted in
288
314
  `tutorial.provider`) and `--lang <l>`, and they resolve the
289
- `__PROVIDER__` path token, skip files whose kind the provider does
290
- not claim, and report the adjusted `nodeCount` plus the `skipped`
291
- list in their summary. Today `provider` is always `claude`, so the
292
- narration uses `.claude/` throughout; the `--provider` plumbing stays
293
- wired so the coming-soon providers (`agent-skills` / Antigravity,
294
- `codex`) drop in later without a narrative rewrite. The campaign
295
- cross-link chapters target `claude` today (see the reality check
296
- below).
297
-
298
- **Reality check (don't mention to the tester)**: this skill ships
299
- at `.claude/skills/sm-tutorial/`, so Claude Code is the only host
300
- today. The detection wiring is here so mirrored skills at
301
- `.agents/skills/sm-tutorial/` reuse it as-is.
315
+ `__PROVIDER__` path token, skip files whose kind the provider does not
316
+ claim, lay any per-provider skill overlay (the open standard renders an
317
+ agent/command as a `skill`), and report the adjusted `nodeCount` plus
318
+ the `skipped` list. Narrate with `<provider_dir>` resolved to the value
319
+ above, never a hard-coded `.claude/`.
320
+
321
+ **Reality check (don't mention to the tester)**: the source skill ships
322
+ at `.claude/skills/sm-tutorial/` (this repo is itself a Claude project);
323
+ `sm tutorial` materializes it under `.claude/skills/` (rich) or
324
+ `.agents/skills/` (basic). Both are real, walkable books.
325
+
326
+ ### Rendering the rich book on Codex
327
+
328
+ The rich track has two lenses, `claude` and `codex`. They teach the SAME
329
+ lessons with the SAME connectors (`/` invocations, `@` mentions, markdown
330
+ references all resolve on both), so the rich part bodies are written in the
331
+ `claude` shape; when `tutorial.provider == codex`, apply these substitutions:
332
+
333
+ - **Agents are TOML.** A Codex agent is a single `.codex/agents/<name>.toml`
334
+ file (the prompt lives in its `developer_instructions` field), NOT a
335
+ `.claude/agents/<name>.md`. The fixtures lay them, so when a chapter says
336
+ "open the agent file" point at the `.toml`; a chapter that has the tester
337
+ read or tweak an agent works on the TOML frontmatter / `developer_instructions`.
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
340
+ **skill** at `.agents/skills/<name>/SKILL.md`. The body is identical (same
341
+ `/check-links` + `@content-editor` + deploy reference); only the kind and path
342
+ change. `cat <set> --file … --provider codex` already returns the Codex skill
343
+ body, so the create-the-file block stays a copy-paste. The reserved-name beat
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
346
+ `reserved` chapter, on a skill instead of a command.
347
+ - **Skills** live under `.agents/skills/<name>/SKILL.md` (the open layout Codex
348
+ adopted), same as the basic family.
349
+ - Everything else (the `@`/`/` syntax, the confidence numbers, the hub, the
350
+ broken-reference contrast) is identical to claude; the graph topology matches.
302
351
 
303
352
  ## Per-step cycle (inside a chapter)
304
353
 
@@ -357,10 +406,14 @@ For every chapter:
357
406
  parts with a `✓` in their description line, not on the title (see
358
407
  §Menu format).
359
408
  - **Which parts to list**: parts in `order`, `status: active` only
360
- (`planned` parts are hidden). A part with a `seed` (the campaign
361
- parts plus `cli`) is always shown, even out of order, its
362
- `preflight: seed` fast-forwards the project into it (SKILL.md
363
- §Entering a part). A part with a `prereq` but NO `seed` would be
409
+ (`planned` parts are hidden), AND **matching the active track**, a
410
+ part whose `track` is `tutorial.track` (`rich` or `basic`) or `both`.
411
+ The rich and basic campaigns share titles and `order`, so the track
412
+ filter is what keeps the menu showing exactly ONE book, never both;
413
+ list a part once, by the track the session resolved at pre-flight.
414
+ A part with a `seed` (the campaign parts plus `cli`) is always shown,
415
+ even out of order, its `preflight: seed` fast-forwards the project
416
+ into it (SKILL.md §Entering a part). A part with a `prereq` but NO `seed` would be
364
417
  shown only once its `prereq` is `done`; no active part is in that
365
418
  state today (`cli` used to be, now it self-seeds).
366
419
  - **After the tester picks**: walk that part; when it ends, run
@@ -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",
@@ -81,19 +136,7 @@
81
136
  "id": "real-kinds",
82
137
  "title": "The real kinds in context",
83
138
  "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": [
139
+ },
97
140
  {
98
141
  "id": "check-links",
99
142
  "title": "The check-links skill",
@@ -116,15 +159,69 @@
116
159
  }
117
160
  ]
118
161
  },
162
+ {
163
+ "id": "basic-kickoff",
164
+ "order": 1,
165
+ "title": "The project from zero",
166
+ "status": "active",
167
+ "preflight": "portfolio-init",
168
+ "seed": null,
169
+ "prereq": null,
170
+ "pace": "per-step",
171
+ "track": "basic",
172
+ "chapters": [
173
+ {
174
+ "id": "kickoff",
175
+ "title": "Start the portfolio (sm init on the real skeleton)",
176
+ "est_min": 2
177
+ },
178
+ {
179
+ "id": "manual",
180
+ "title": "The handbook (AGENTS.md) and an entry pointer",
181
+ "est_min": 2
182
+ },
183
+ {
184
+ "id": "first-skill",
185
+ "title": "The first harness skill (content-editor)",
186
+ "est_min": 2
187
+ },
188
+ {
189
+ "id": "real-kinds",
190
+ "title": "The kinds in context",
191
+ "est_min": 2
192
+ },
193
+ {
194
+ "id": "check-links",
195
+ "title": "The link checker",
196
+ "est_min": 3
197
+ },
198
+ {
199
+ "id": "publish",
200
+ "title": "The publish skill references the harness",
201
+ "est_min": 4
202
+ },
203
+ {
204
+ "id": "links",
205
+ "title": "The handbook becomes the hub (references)",
206
+ "est_min": 4
207
+ },
208
+ {
209
+ "id": "confidence",
210
+ "title": "Connector confidence (opacity = certainty)",
211
+ "est_min": 3
212
+ }
213
+ ]
214
+ },
119
215
  {
120
216
  "id": "daily-loop",
121
- "order": 3,
217
+ "order": 2,
122
218
  "title": "The daily loop (add, improve, publish)",
123
219
  "status": "active",
124
220
  "preflight": "seed",
125
221
  "seed": "harness-connected",
126
- "prereq": "connect-harness",
222
+ "prereq": "project-kickoff",
127
223
  "pace": "auto-advance",
224
+ "track": "rich",
128
225
  "chapters": [
129
226
  {
130
227
  "id": "setup",
@@ -158,20 +255,69 @@
158
255
  },
159
256
  {
160
257
  "id": "golive",
161
- "title": "Your portfolio, live next to the graph",
258
+ "title": "Your website, live next to the graph",
259
+ "est_min": 3
260
+ }
261
+ ]
262
+ },
263
+ {
264
+ "id": "basic-daily",
265
+ "order": 2,
266
+ "title": "The daily loop (add, improve, publish)",
267
+ "status": "active",
268
+ "preflight": "seed",
269
+ "seed": "harness-connected",
270
+ "prereq": "basic-kickoff",
271
+ "pace": "auto-advance",
272
+ "track": "basic",
273
+ "chapters": [
274
+ {
275
+ "id": "setup",
276
+ "title": "Make it yours and bring it up",
277
+ "est_min": 5
278
+ },
279
+ {
280
+ "id": "add-page",
281
+ "title": "Add a page with your skill",
282
+ "est_min": 4
283
+ },
284
+ {
285
+ "id": "broken-ref",
286
+ "title": "A rename breaks a link",
287
+ "est_min": 4
288
+ },
289
+ {
290
+ "id": "reserved",
291
+ "title": "A reserved name collides",
292
+ "est_min": 2
293
+ },
294
+ {
295
+ "id": "publish",
296
+ "title": "Ship it: run the publish skill for real",
297
+ "est_min": 4
298
+ },
299
+ {
300
+ "id": "stability",
301
+ "title": "Set a node's stability (and the `.sm` sidecar)",
302
+ "est_min": 3
303
+ },
304
+ {
305
+ "id": "golive",
306
+ "title": "Your website, live next to the graph",
162
307
  "est_min": 3
163
308
  }
164
309
  ]
165
310
  },
166
311
  {
167
312
  "id": "extend",
168
- "order": 4,
313
+ "order": 3,
169
314
  "title": "Extend skill-map for the site",
170
315
  "status": "active",
171
316
  "preflight": "backstage-init",
172
317
  "seed": null,
173
318
  "prereq": null,
174
319
  "pace": "auto-advance",
320
+ "track": "both",
175
321
  "chapters": [
176
322
  {
177
323
  "id": "settings-1-layers",
@@ -232,13 +378,14 @@
232
378
  },
233
379
  {
234
380
  "id": "cli",
235
- "order": 5,
381
+ "order": 4,
236
382
  "title": "The CLI in depth",
237
383
  "status": "active",
238
384
  "preflight": "seed",
239
385
  "seed": "prologue-built",
240
386
  "prereq": "fundamentals",
241
387
  "pace": "auto-advance",
388
+ "track": "both",
242
389
  "chapters": [
243
390
  {
244
391
  "id": "browse",
@@ -269,13 +416,14 @@
269
416
  },
270
417
  {
271
418
  "id": "mcp",
272
- "order": 6,
419
+ "order": 5,
273
420
  "title": "MCP",
274
421
  "status": "planned",
275
422
  "preflight": "seed",
276
423
  "seed": "harness-connected",
277
- "prereq": "connect-harness",
424
+ "prereq": "project-kickoff",
278
425
  "pace": "auto-advance",
426
+ "track": "rich",
279
427
  "chapters": [
280
428
  {
281
429
  "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,8 +59,27 @@ 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
- order: 4
82
+ order: 3
55
83
  title: "Extend skill-map for the site"
56
84
  # Spans three chapter libraries; dispatch by chapter-id prefix:
57
85
  # settings-* -> part-settings.md
@@ -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
@@ -79,13 +108,14 @@ parts:
79
108
  - id: authoring-5-doctor-author ; title: "Catch a manifest mistake with `sm plugins doctor`" ; est_min: 2
80
109
 
81
110
  - id: cli
82
- order: 5
111
+ order: 4
83
112
  title: "The CLI in depth"
84
113
  step_file: part-cli.md
85
114
  pace: auto-advance
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,37 +138,28 @@ 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
114
145
  - id: manual ; title: "The handbook (AGENTS.md) and CLAUDE.md" ; est_min: 2
115
146
  - id: first-agent ; title: "The first harness agent (content-editor)" ; est_min: 2
116
147
  - id: real-kinds ; title: "The real kinds in context" ; est_min: 2
117
-
118
- - id: connect-harness
119
- order: 2
120
- title: "Connect the harness"
121
- step_file: part-connect-harness.md
122
- pace: auto-advance
123
- preflight: seed
124
- seed: harness-built # fast-forward to here if project-kickoff is not done
125
- prereq: project-kickoff
126
- status: active
127
- chapters:
128
148
  - id: check-links ; title: "The check-links skill" ; est_min: 2
129
149
  - id: publish ; title: "The /publish command invokes the skill" ; est_min: 3
130
150
  - id: links ; title: "Mentions (@) and references between assets" ; est_min: 3
131
151
  - id: confidence ; title: "Connector confidence (opacity = certainty)" ; est_min: 2
132
152
 
133
153
  - id: daily-loop
134
- order: 3
154
+ order: 2
135
155
  title: "The daily loop (add, improve, publish)" # the campaign finale
136
156
  step_file: part-daily-loop.md
137
157
  pace: auto-advance
138
158
  preflight: seed
139
- seed: harness-connected # fast-forward to here if the earlier parts are not done
140
- prereq: connect-harness
159
+ seed: harness-connected # fast-forward to here if project-kickoff is not done
160
+ prereq: project-kickoff
141
161
  fixture: portfolio # reuses the wired harness; lays the pretty site (style.css + pages) as taught steps
162
+ track: rich # agent-driven page add + reserved command; basic track has its own counterpart
142
163
  status: active
143
164
  chapters:
144
165
  - id: setup ; title: "Make it yours and bring it up" ; est_min: 5
@@ -147,17 +168,62 @@ parts:
147
168
  - id: reserved ; title: "A reserved name collides" ; est_min: 2
148
169
  - id: publish ; title: "Ship it: run /publish for real" ; est_min: 4
149
170
  - id: stability ; title: "Set a node's stability (and the `.sm` sidecar)" ; est_min: 3
150
- - id: golive ; title: "Your portfolio, live next to the graph" ; est_min: 3
171
+ - id: golive ; title: "Your website, live next to the graph" ; est_min: 3
172
+
173
+ # ----- the basic-track campaign (open-standard family: agent-skills / antigravity) -----
174
+ # Mirrors the rich campaign arc with skill + markdown only, connected by
175
+ # markdown references. Same fixtures (portfolio / harness) laid under the
176
+ # basic provider, which renders the agent/command nodes as skills.
177
+
178
+ - id: basic-kickoff
179
+ order: 1
180
+ title: "The project from zero"
181
+ step_file: part-basic-kickoff.md
182
+ pace: per-step
183
+ preflight: portfolio-init
184
+ fixture: portfolio
185
+ track: basic
186
+ status: active
187
+ chapters:
188
+ - id: kickoff ; title: "Start the portfolio (sm init on the real skeleton)" ; est_min: 2
189
+ - id: manual ; title: "The handbook (AGENTS.md) and an entry pointer" ; est_min: 2
190
+ - id: first-skill ; title: "The first harness skill (content-editor)" ; est_min: 2
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
196
+
197
+ - id: basic-daily
198
+ order: 2
199
+ title: "The daily loop (add, improve, publish)"
200
+ step_file: part-basic-daily.md
201
+ pace: auto-advance
202
+ preflight: seed
203
+ seed: harness-connected
204
+ prereq: basic-kickoff
205
+ fixture: portfolio
206
+ track: basic
207
+ status: active
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
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
214
+ - id: stability ; title: "Set a node's stability (and the `.sm` sidecar)" ; est_min: 3
215
+ - id: golive ; title: "Your website, live next to the graph" ; est_min: 3
151
216
 
152
217
  # ----- parked: MCP returns later as its own iteration (body kept in part-mcp.md) -----
153
218
  - id: mcp
154
- order: 6
219
+ order: 5
155
220
  title: "MCP"
156
221
  step_file: part-mcp.md
157
222
  pace: auto-advance
158
223
  preflight: seed
159
224
  seed: harness-connected
160
- prereq: connect-harness
225
+ prereq: project-kickoff
226
+ track: rich # MCP tool declaration sits on an agent/command body
161
227
  status: planned # temporarily disabled, hidden from the menu. Body exists; re-enable when MCP returns.
162
228
  chapters:
163
229
  - id: mcp-node ; title: "content-editor declares an MCP tool; the mcp:// node appears" ; est_min: 3
@@ -38,10 +38,10 @@ fixtures-data/
38
38
  |---|---|---|
39
39
  | `universal` | `.skillmapignore`, `findings.md` | pre-flight |
40
40
  | `prologue` | the seven Part 0 demo nodes | Part 0 (progressive, `--only`), `prologue-built` seed |
41
- | `portfolio` | Express skeleton, handbook, `content-editor`, `docs/STYLE` + `DEPLOY` | Part 1 (`--only` boot, chapters lay the rest), `harness-*` seeds |
42
- | `harness` | `check-links` skill, `publish` command | Part 2 chapters, `harness-connected` seed |
43
- | `master` | `master-agent`, `master-skill`, `notes/ideas` | Part 4 `backstage-init` |
44
- | `cli-external` | `link-validation/hijoA` + `hijoB` | Part 5 `reference-paths` |
41
+ | `portfolio` | Express skeleton, handbook, `content-editor`, `docs/STYLE` + `DEPLOY` | Part 1 (`--only` boot, chapters lay the rest), `harness-connected` seed |
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` |
45
45
 
46
46
  ## Edits (append fragments)
47
47
 
@@ -62,9 +62,8 @@ entered out of order.
62
62
 
63
63
  | Seed | Lays | Edits | Drops |
64
64
  |---|---|---|---|
65
- | `prologue-built` (Part 5) | `prologue` | `todo-connectors` | `notes/private-credentials.md` |
66
- | `harness-built` (Part 2) | `portfolio` | , | , |
67
- | `harness-connected` (Part 3) | `portfolio` + `harness` | `agents-hub`, `content-editor-style` | , |
65
+ | `prologue-built` (Part 4) | `prologue` | `todo-connectors` | `notes/private-credentials.md` |
66
+ | `harness-connected` (Part 2) | `portfolio` + `harness` | `agents-hub`, `content-editor-style` | , |
68
67
 
69
68
  ## Footprints (what `clear` and `wipe` remove)
70
69