@skill-map/cli 0.66.0 → 0.68.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/dist/cli/tutorial/sm-tutorial/SKILL.md +16 -8
  2. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/agents-hub/providers/agent-skills/en/agents-hub.md +2 -0
  3. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/agents-hub/providers/agent-skills/es/agents-hub.md +2 -0
  4. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/content-editor-style/providers/agent-skills/en/content-editor-style.md +1 -0
  5. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/content-editor-style/providers/agent-skills/es/content-editor-style.md +1 -0
  6. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/providers/agent-skills/en/todo-bullet-guideline.md +1 -0
  7. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/providers/agent-skills/en/todo-bullet-guideline2.md +1 -0
  8. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/providers/agent-skills/en/todo-bullet-skill.md +1 -0
  9. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/providers/agent-skills/es/todo-bullet-guideline.md +1 -0
  10. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/providers/agent-skills/es/todo-bullet-guideline2.md +1 -0
  11. package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/providers/agent-skills/es/todo-bullet-skill.md +1 -0
  12. package/dist/cli/tutorial/sm-tutorial/fixtures-data/manifest.json +9 -1
  13. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/harness/providers/agent-skills/en/__PROVIDER__/skills/publish/SKILL.md +15 -0
  14. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/harness/providers/agent-skills/es/__PROVIDER__/skills/publish/SKILL.md +16 -0
  15. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/harness/providers/codex/en/__PROVIDER__/skills/publish/SKILL.md +15 -0
  16. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/harness/providers/codex/es/__PROVIDER__/skills/publish/SKILL.md +16 -0
  17. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/master/providers/agent-skills/en/__PROVIDER__/skills/master-agent/SKILL.md +13 -0
  18. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/master/providers/agent-skills/es/__PROVIDER__/skills/master-agent/SKILL.md +14 -0
  19. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/master/providers/codex/en/.codex/agents/master-agent.toml +10 -0
  20. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/master/providers/codex/es/.codex/agents/master-agent.toml +10 -0
  21. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/providers/agent-skills/en/AGENTS.md +7 -0
  22. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/providers/agent-skills/en/__PROVIDER__/skills/content-editor/SKILL.md +20 -0
  23. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/providers/agent-skills/es/AGENTS.md +7 -0
  24. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/providers/agent-skills/es/__PROVIDER__/skills/content-editor/SKILL.md +20 -0
  25. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/providers/agent-skills/shared/CLAUDE.md +1 -0
  26. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/providers/codex/en/.codex/agents/content-editor.toml +19 -0
  27. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/providers/codex/es/.codex/agents/content-editor.toml +19 -0
  28. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/providers/codex/en/.codex/agents/demo-agent.toml +13 -0
  29. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/providers/codex/en/__PROVIDER__/skills/demo-command/SKILL.md +11 -0
  30. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/providers/codex/es/.codex/agents/demo-agent.toml +13 -0
  31. package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/providers/codex/es/__PROVIDER__/skills/demo-command/SKILL.md +12 -0
  32. package/dist/cli/tutorial/sm-tutorial/references/_core.md +101 -48
  33. package/dist/cli/tutorial/sm-tutorial/references/_manifest.json +174 -0
  34. package/dist/cli/tutorial/sm-tutorial/references/_manifest.yml +90 -0
  35. package/dist/cli/tutorial/sm-tutorial/references/part-basic-connect.md +166 -0
  36. package/dist/cli/tutorial/sm-tutorial/references/part-basic-daily.md +267 -0
  37. package/dist/cli/tutorial/sm-tutorial/references/part-basic-fundamentals.md +350 -0
  38. package/dist/cli/tutorial/sm-tutorial/references/part-basic-kickoff.md +140 -0
  39. package/dist/cli/tutorial/sm-tutorial/references/part-connect-harness.md +6 -4
  40. package/dist/cli/tutorial/sm-tutorial/references/part-daily-loop.md +21 -26
  41. package/dist/cli/tutorial/sm-tutorial/references/part-fundamentals.md +10 -5
  42. package/dist/cli/tutorial/sm-tutorial/references/part-mcp.md +3 -6
  43. package/dist/cli/tutorial/sm-tutorial/references/part-project-kickoff.md +29 -14
  44. package/dist/cli/tutorial/sm-tutorial/references/part-settings.md +17 -13
  45. package/dist/cli/tutorial/sm-tutorial/scripts/fixtures.js +85 -22
  46. package/dist/cli/tutorial/sm-tutorial/scripts/lib/paths.js +74 -4
  47. package/dist/cli/tutorial/sm-tutorial/scripts/state.js +22 -6
  48. package/dist/cli.js +527 -251
  49. package/dist/conformance/index.js +42 -2
  50. package/dist/index.js +43 -30
  51. package/dist/kernel/index.d.ts +28 -5
  52. package/dist/kernel/index.js +43 -30
  53. package/dist/ui/chunk-3ANNEMV4.js +499 -0
  54. package/dist/ui/chunk-3GDWM5VM.js +2 -0
  55. package/dist/ui/{chunk-5BJGO7GH.js → chunk-3U4QZKU2.js} +4 -4
  56. package/dist/ui/chunk-3ZAHOYQ7.js +1 -0
  57. package/dist/ui/chunk-4F53HBGG.js +1845 -0
  58. package/dist/ui/{chunk-56CBK7LB.js → chunk-6FGV5O5J.js} +1 -1
  59. package/dist/ui/chunk-7WMT2LX4.js +1 -0
  60. package/dist/ui/chunk-BJUBDHJR.js +3 -0
  61. package/dist/ui/{chunk-276RLZR4.js → chunk-BSIR3ADF.js} +14 -14
  62. package/dist/ui/{chunk-FC22ZJQZ.js → chunk-CG25RHMO.js} +1 -1
  63. package/dist/ui/chunk-EFSC6SOL.js +3 -0
  64. package/dist/ui/chunk-EJVWTBMV.js +4 -0
  65. package/dist/ui/chunk-EZI3BXQN.js +1 -0
  66. package/dist/ui/{chunk-JZ2YF7EL.js → chunk-GUPPOK7U.js} +8 -8
  67. package/dist/ui/{chunk-CJURGJTN.js → chunk-HLALESGR.js} +1 -1
  68. package/dist/ui/chunk-I3I4KHR5.js +2 -0
  69. package/dist/ui/{chunk-BOVJVOLH.js → chunk-I6ED2OW7.js} +1 -1
  70. package/dist/ui/chunk-JKPG5PO7.js +375 -0
  71. package/dist/ui/chunk-KHDWXSGR.js +1 -0
  72. package/dist/ui/{chunk-HEK4PH5A.js → chunk-KMHXNOFZ.js} +1 -1
  73. package/dist/ui/chunk-KWT7E2RJ.js +16 -0
  74. package/dist/ui/{chunk-WHZVGOS3.js → chunk-MQSU6EFZ.js} +1 -1
  75. package/dist/ui/{chunk-43S72FTV.js → chunk-OGEE252A.js} +1 -1
  76. package/dist/ui/{chunk-J4J42HJ4.js → chunk-PU5OP5RN.js} +1 -1
  77. package/dist/ui/{chunk-UTRZTB6V.js → chunk-QVG7J2MP.js} +1 -1
  78. package/dist/ui/chunk-TQBXK5JN.js +1 -0
  79. package/dist/ui/chunk-Z7SOKILO.js +2 -0
  80. package/dist/ui/{chunk-WCABR6TI.js → chunk-ZRJ5ZCFR.js} +1 -1
  81. package/dist/ui/index.html +2 -2
  82. package/dist/ui/main-ZYRIR6DB.js +4 -0
  83. package/dist/ui/styles-VEGETYWD.css +1 -0
  84. package/package.json +17 -18
  85. package/dist/ui/chunk-34ZZDYNQ.js +0 -1
  86. package/dist/ui/chunk-44VNNUSQ.js +0 -2
  87. package/dist/ui/chunk-4SG4352Z.js +0 -7
  88. package/dist/ui/chunk-5ITZXW3A.js +0 -1
  89. package/dist/ui/chunk-7ANZW2OI.js +0 -499
  90. package/dist/ui/chunk-BJ6X6WBO.js +0 -4
  91. package/dist/ui/chunk-CZSLV6YD.js +0 -1
  92. package/dist/ui/chunk-DLYJHLJX.js +0 -2
  93. package/dist/ui/chunk-LGFABCIA.js +0 -16
  94. package/dist/ui/chunk-LPDD2DHE.js +0 -369
  95. package/dist/ui/chunk-MSKP5A4B.js +0 -3
  96. package/dist/ui/chunk-P3SNMV4X.js +0 -2
  97. package/dist/ui/chunk-S4S5ZMXJ.js +0 -3
  98. package/dist/ui/chunk-VHEFRMK3.js +0 -1
  99. package/dist/ui/chunk-X6TRIDBI.js +0 -1845
  100. package/dist/ui/main-NCNZHLLJ.js +0 -4
  101. package/dist/ui/styles-I4ULXD3V.css +0 -1
  102. /package/dist/ui/{chunk-Y2Z26SRI.js → chunk-5RNLC6V4.js} +0 -0
@@ -242,12 +242,18 @@ All commands below are backstage (silent); fill `<provider>` and
242
242
  `<lang>` from `tutorial.{provider,lang}`. The fixture scripts resolve
243
243
  the `__PROVIDER__` token and skip kinds the provider does not claim.
244
244
 
245
- - **`taught-init`** (Part 0 `fundamentals`): the prologue reveals its
246
- fixture progressively, so on entry lay ONLY the boot node, just
247
- before the tester's `sm init` in the `init` chapter:
245
+ - **`taught-init`** (Part 0 `fundamentals` rich / `basic-fundamentals`
246
+ basic): the prologue reveals its fixture progressively, so on entry
247
+ lay ONLY the boot node, just before the tester's `sm init` in the
248
+ `init` chapter. The boot node is the lens's first authored kind, an
249
+ `agent` on the rich track, a `skill` on the basic track (where the
250
+ agent kind folds away):
248
251
 
249
252
  ```bash
253
+ # rich track (claude / codex)
250
254
  node .claude/skills/sm-tutorial/scripts/fixtures.js lay prologue --only "__PROVIDER__/agents/demo-agent.md" --provider <provider> --lang <lang>
255
+ # basic track (agent-skills / antigravity)
256
+ node .claude/skills/sm-tutorial/scripts/fixtures.js lay prologue --only "__PROVIDER__/skills/demo-skill/SKILL.md" --provider <provider> --lang <lang>
251
257
  ```
252
258
 
253
259
  The universal `.skillmapignore` is already on disk, so the first
@@ -304,11 +310,13 @@ the `__PROVIDER__` token and skip kinds the provider does not claim.
304
310
  2. Seed: `fixtures.js seed <harness-built|harness-connected> --provider <provider> --lang <lang>`
305
311
  (`harness-built` for `connect-harness`, `harness-connected` for
306
312
  `daily-loop`).
307
- 3. Provision the lens: the seeded portfolio has a root `AGENTS.md`
308
- (the `codex`/Codex marker) next to `.claude/`, but `codex` is
309
- experimental (ships disabled), so auto-detect ignores it and a plain `sm init`
310
- resolves the `claude` lens with no prompt. Run `sm init`, then
311
- `sm scan`. (If `.skill-map/` already exists, just `sm scan`.)
313
+ 3. Provision the lens: the seeded portfolio carries the scaffold
314
+ marker (`.claude/` on the rich track, `.agents/` on the basic
315
+ track), so a plain `sm init` resolves the matching lens with no
316
+ prompt. (The root `AGENTS.md` is the vendor-neutral agents.md file,
317
+ NOT a marker, so it never forces an ambiguous prompt.) Run `sm
318
+ init`, then `sm scan`. (If `.skill-map/` already exists, just
319
+ `sm scan`.)
312
320
  4. Mark the skipped predecessors: `state.js set-part <predecessor> skipped`
313
321
  for each (they stay in the menu). Then emit exactly ONE
314
322
  tester-facing line:
@@ -0,0 +1,2 @@
1
+ - When a page needs writing or fixing, hand it to the [content-editor](.agents/skills/content-editor/SKILL.md).
2
+ - When the site is ready to go out, run [publish](.agents/skills/publish/SKILL.md).
@@ -0,0 +1,2 @@
1
+ - Cuando una página necesita escribirse o arreglarse, pasásela al [content-editor](.agents/skills/content-editor/SKILL.md).
2
+ - Cuando el sitio esté listo para salir, corré [publish](.agents/skills/publish/SKILL.md).
@@ -0,0 +1 @@
1
+ Every page follows the [style guide](../../../docs/STYLE.md).
@@ -0,0 +1 @@
1
+ Cada página sigue la [guía de estilo](../../../docs/STYLE.md).
@@ -0,0 +1 @@
1
+ - [ ] Follow the [demo-guideline](demo-guideline) when the conventions change.
@@ -0,0 +1 @@
1
+ - [ ] Follow the [demo-guideline2](demo-guideline2.md) for the rest.
@@ -0,0 +1 @@
1
+ - [ ] See the [demo-skill](../.agents/skills/demo-skill/SKILL.md) for the steps.
@@ -0,0 +1 @@
1
+ - [ ] Seguí la [demo-guideline](demo-guideline) cuando cambien las convenciones.
@@ -0,0 +1 @@
1
+ - [ ] Seguí la [demo-guideline2](demo-guideline2.md) para el resto.
@@ -0,0 +1 @@
1
+ - [ ] Mirá la [demo-skill](../.agents/skills/demo-skill/SKILL.md) para los pasos.
@@ -7,8 +7,10 @@
7
7
  "footprints": {
8
8
  "prologue": [
9
9
  "__PROVIDER__/agents/demo-agent.md",
10
+ ".codex/agents/demo-agent.toml",
10
11
  "__PROVIDER__/skills/demo-skill",
11
12
  "__PROVIDER__/commands/demo-command.md",
13
+ "__PROVIDER__/skills/demo-command",
12
14
  "notes/todo.md",
13
15
  "notes/demo-guideline.md",
14
16
  "notes/demo-guideline2.md",
@@ -28,12 +30,18 @@
28
30
  "docs/DEPLOY.md",
29
31
  "docs/DEPLOYMENT.md",
30
32
  "__PROVIDER__/agents/content-editor.md",
33
+ ".codex/agents/content-editor.toml",
34
+ "__PROVIDER__/skills/content-editor",
31
35
  "__PROVIDER__/skills/check-links",
32
36
  "__PROVIDER__/commands/publish.md",
33
- "__PROVIDER__/commands/new-page.md"
37
+ "__PROVIDER__/skills/publish",
38
+ "__PROVIDER__/commands/new-page.md",
39
+ "__PROVIDER__/skills/new-page"
34
40
  ],
35
41
  "master": [
36
42
  "__PROVIDER__/agents/master-agent.md",
43
+ ".codex/agents/master-agent.toml",
44
+ "__PROVIDER__/skills/master-agent",
37
45
  "__PROVIDER__/skills/master-skill",
38
46
  "notes/ideas.md"
39
47
  ],
@@ -0,0 +1,15 @@
1
+ ---
2
+ name: publish
3
+ description: |
4
+ Publishes the portfolio: runs the link check, hands off to the
5
+ content editor for any last fixes, then follows the deploy runbook.
6
+ ---
7
+
8
+ # publish
9
+
10
+ The one skill you run when the site is ready to go out.
11
+
12
+ ## Steps
13
+ 1. Run the [check-links](../check-links/SKILL.md) skill on the pages in public/. If it reports broken links, stop and fix them first.
14
+ 2. If a page needs a content fix, hand the change to [content-editor](../content-editor/SKILL.md).
15
+ 3. Follow the [deploy runbook](../../../docs/DEPLOY.md): regenerate pages, run the link check, start the server.
@@ -0,0 +1,16 @@
1
+ ---
2
+ name: publish
3
+ description: |
4
+ Publica el portfolio: corre el chequeo de enlaces, le pasa al
5
+ content editor los últimos arreglos, y luego sigue el runbook de
6
+ despliegue.
7
+ ---
8
+
9
+ # publish
10
+
11
+ La única skill que corres cuando el sitio está listo para salir.
12
+
13
+ ## Pasos
14
+ 1. Corre la skill [check-links](../check-links/SKILL.md) sobre las páginas en public/. Si reporta enlaces rotos, frena y arréglalos primero.
15
+ 2. Si una página necesita un arreglo de contenido, pasale el cambio a [content-editor](../content-editor/SKILL.md).
16
+ 3. Sigue el [runbook de despliegue](../../../docs/DEPLOY.md): regenera las páginas, corre el chequeo de enlaces, inicia el servidor.
@@ -0,0 +1,15 @@
1
+ ---
2
+ name: publish
3
+ description: |
4
+ Publishes the portfolio: runs the link check, hands off to the
5
+ content editor for any last fixes, then follows the deploy runbook.
6
+ ---
7
+
8
+ # publish
9
+
10
+ The one skill you run when the site is ready to go out.
11
+
12
+ ## Steps
13
+ 1. Run /check-links on the pages in public/. If it reports broken links, stop and fix them first.
14
+ 2. If a page needs a content fix, brief @content-editor with the change.
15
+ 3. Follow the [deploy runbook](../../../docs/DEPLOY.md): regenerate pages, run the link check, start the server.
@@ -0,0 +1,16 @@
1
+ ---
2
+ name: publish
3
+ description: |
4
+ Publica el portfolio: corre el chequeo de enlaces, le pasa al
5
+ content editor los últimos arreglos, y luego sigue el runbook de
6
+ despliegue.
7
+ ---
8
+
9
+ # publish
10
+
11
+ La única skill que corres cuando el sitio está listo para salir.
12
+
13
+ ## Pasos
14
+ 1. Corre /check-links sobre las páginas en public/. Si reporta enlaces rotos, frena y arréglalos primero.
15
+ 2. Si una página necesita un arreglo de contenido, dale el cambio a @content-editor.
16
+ 3. Sigue el [runbook de despliegue](../../../docs/DEPLOY.md): regenera las páginas, corre el chequeo de enlaces, inicia el servidor.
@@ -0,0 +1,13 @@
1
+ ---
2
+ name: master-agent
3
+ description: |
4
+ Example skill used by the advanced tutorial. Declares a couple of
5
+ tools so the `core/tools-counter` extractor emits a count.
6
+ allowed-tools: Read Bash Edit
7
+ ---
8
+
9
+ # master-agent
10
+
11
+ Walks the master-skill outputs and reports findings. Used as the
12
+ target node when we exercise extractors, analyzers, and the
13
+ plugin-authoring flow.
@@ -0,0 +1,14 @@
1
+ ---
2
+ name: master-agent
3
+ description: |
4
+ Skill de ejemplo que usa el tutorial avanzado. Declara un par de
5
+ herramientas para que el extractor `core/tools-counter` emita un
6
+ conteo.
7
+ allowed-tools: Read Bash Edit
8
+ ---
9
+
10
+ # master-agent
11
+
12
+ Recorre las salidas de master-skill y reporta hallazgos. Se usa como
13
+ el nodo objetivo cuando ejercitamos extractors, analyzers y el flujo
14
+ de autoría de plugins.
@@ -0,0 +1,10 @@
1
+ name = "master-agent"
2
+ description = "Example agent used by the advanced tutorial. The target node when we exercise extractors, analyzers, and the plugin-authoring flow."
3
+ model = "gpt-5-codex"
4
+ developer_instructions = """
5
+ # master-agent
6
+
7
+ Walks the master-skill outputs and reports findings. Used as the
8
+ target node when we exercise extractors, analyzers, and the
9
+ plugin-authoring flow.
10
+ """
@@ -0,0 +1,10 @@
1
+ name = "master-agent"
2
+ description = "Agente de ejemplo que usa el tutorial avanzado. Es el nodo objetivo cuando ejercitamos extractors, analyzers y el flujo de autoría de plugins."
3
+ model = "gpt-5-codex"
4
+ developer_instructions = """
5
+ # master-agent
6
+
7
+ Recorre las salidas de master-skill y reporta hallazgos. Se usa como
8
+ el nodo objetivo cuando ejercitamos extractors, analyzers y el flujo
9
+ de autoría de plugins.
10
+ """
@@ -0,0 +1,7 @@
1
+ # Portfolio handbook
2
+
3
+ A small static portfolio site, served by Express (`server.js`). The
4
+ `.agents/skills/` harness maintains it: a content-editor skill writes
5
+ the pages, a check-links skill checks the links, a publish skill ships
6
+ them. The conventions live in the style guide; the deploy steps in the
7
+ deploy runbook.
@@ -0,0 +1,20 @@
1
+ ---
2
+ name: content-editor
3
+ description: |
4
+ Writes and edits the portfolio's pages. Reads a brief, follows the
5
+ style guide, and emits the HTML into public/.
6
+ allowed-tools: Read Write
7
+ ---
8
+
9
+ # content-editor
10
+
11
+ Turns a short brief into a finished portfolio page.
12
+
13
+ ## How to write a page
14
+ 1. Read the style guide and the shared stylesheet in public/.
15
+ 2. Write one HTML file under public/, named after the page (a projects page becomes `public/projects.html`).
16
+ 3. Start from `<!doctype html>`, link the stylesheet with `<link rel="stylesheet" href="/style.css">`, and set a `<title>`.
17
+ 4. Use one `<h1>`, group sections under `<h2>`, and reuse the shared header, nav, and footer so every page matches.
18
+ 5. Add a link back to Home, and link the new page from the home nav.
19
+
20
+ Rules: plain static HTML, no framework, no client JS, one page per file. If a page needs an image, use a free placeholder from https://placekittens.com/ (e.g. `https://placekittens.com/400/300`) so the `<img>` never points at a missing file.
@@ -0,0 +1,7 @@
1
+ # Manual del portfolio
2
+
3
+ Un sitio de portfolio estático y chico, servido por Express
4
+ (`server.js`). El harness en `.agents/skills/` lo mantiene: una skill
5
+ content-editor escribe las páginas, una skill check-links revisa los
6
+ enlaces, una skill publish las publica. Las convenciones viven en la
7
+ guía de estilo; los pasos de despliegue en el runbook de despliegue.
@@ -0,0 +1,20 @@
1
+ ---
2
+ name: content-editor
3
+ description: |
4
+ Escribe y edita las páginas del portfolio. Lee un brief, sigue la
5
+ guía de estilo y emite el HTML en public/.
6
+ allowed-tools: Read Write
7
+ ---
8
+
9
+ # content-editor
10
+
11
+ Convierte un brief corto en una página de portfolio terminada.
12
+
13
+ ## Cómo escribir una página
14
+ 1. Lee la guía de estilo y la hoja de estilos compartida en public/.
15
+ 2. Escribe un archivo HTML en public/, nombrado según la página (una página de proyectos pasa a ser `public/projects.html`).
16
+ 3. Empieza desde `<!doctype html>`, enlaza la hoja de estilos con `<link rel="stylesheet" href="/style.css">` y define un `<title>`.
17
+ 4. Usa un solo `<h1>`, agrupa las secciones bajo `<h2>` y reutiliza el header, la nav y el footer compartidos para que todas las páginas coincidan.
18
+ 5. Agrega un enlace de vuelta a Home, y enlaza la nueva página desde la nav de inicio.
19
+
20
+ Reglas: HTML estático plano, sin framework, sin JS de cliente, una página por archivo. Si una página necesita una imagen, usa un placeholder gratuito de https://placekittens.com/ (por ejemplo `https://placekittens.com/400/300`) para que el `<img>` nunca apunte a un archivo inexistente.
@@ -0,0 +1,19 @@
1
+ name = "content-editor"
2
+ description = "Writes and edits the portfolio's pages. Reads a brief, follows the style guide, and emits the HTML into public/."
3
+ model = "gpt-5-codex"
4
+ developer_instructions = """
5
+ # content-editor
6
+
7
+ Turns a short brief into a finished portfolio page.
8
+
9
+ ## How to write a page
10
+ 1. Read the style guide and the shared stylesheet in public/.
11
+ 2. Write one HTML file under public/, named after the page (a projects page becomes `public/projects.html`).
12
+ 3. Start from `<!doctype html>`, link the stylesheet with `<link rel="stylesheet" href="/style.css">`, and set a `<title>`.
13
+ 4. Use one `<h1>`, group sections under `<h2>`, and reuse the shared header, nav, and footer so every page matches.
14
+ 5. Add a link back to Home, and link the new page from the home nav.
15
+
16
+ Rules: plain static HTML, no framework, no client JS, one page per file.
17
+
18
+ Every page follows the [style guide](../../docs/STYLE.md).
19
+ """
@@ -0,0 +1,19 @@
1
+ name = "content-editor"
2
+ description = "Escribe y edita las páginas del portfolio. Lee un brief, sigue la guía de estilo y emite el HTML en public/."
3
+ model = "gpt-5-codex"
4
+ developer_instructions = """
5
+ # content-editor
6
+
7
+ Convierte un brief corto en una página de portfolio terminada.
8
+
9
+ ## Cómo escribir una página
10
+ 1. Lee la guía de estilo y la hoja de estilos compartida en public/.
11
+ 2. Escribe un archivo HTML en public/, nombrado según la página (una página de proyectos pasa a ser `public/projects.html`).
12
+ 3. Empieza desde `<!doctype html>`, enlaza la hoja de estilos con `<link rel="stylesheet" href="/style.css">` y define un `<title>`.
13
+ 4. Usa un solo `<h1>`, agrupa las secciones bajo `<h2>` y reutiliza el header, la nav y el footer compartidos para que todas las páginas coincidan.
14
+ 5. Agrega un enlace de vuelta a Home, y enlaza la nueva página desde la nav de inicio.
15
+
16
+ Reglas: HTML estático plano, sin framework, sin JS de cliente, una página por archivo.
17
+
18
+ Cada página sigue la [guía de estilo](../../docs/STYLE.md).
19
+ """
@@ -0,0 +1,13 @@
1
+ name = "demo-agent"
2
+ description = "Example agent that handles read and shell tasks. Solo node at boot; gets connected to the rest of the demo fixture during the Live UI step."
3
+ model = "gpt-5-codex"
4
+ developer_instructions = """
5
+ # demo-agent
6
+
7
+ Processes inputs and logs every action to stderr. Will be wired up
8
+ to the rest of the demo fixture later in the walkthrough.
9
+
10
+ Rules:
11
+ - Never run destructive commands without confirmation.
12
+ - Log every action to stderr.
13
+ """
@@ -0,0 +1,11 @@
1
+ ---
2
+ name: demo-command
3
+ description: |
4
+ Example skill that wraps the demo-skill. On Codex the prologue's
5
+ command-kind node renders as a skill (Codex has no command kind).
6
+ ---
7
+
8
+ # demo-command
9
+
10
+ Quick entry point for running the demo flow on a target file.
11
+ Connectors land in the next sub-step.
@@ -0,0 +1,13 @@
1
+ name = "demo-agent"
2
+ description = "Agente de ejemplo que maneja tareas de lectura y shell. Nodo solo al arranque; se conecta al resto del fixture demo durante el paso de UI en vivo."
3
+ model = "gpt-5-codex"
4
+ developer_instructions = """
5
+ # demo-agent
6
+
7
+ Procesa entradas y registra cada acción en stderr. Se conectará al
8
+ resto del fixture demo más adelante en el recorrido.
9
+
10
+ Reglas:
11
+ - Nunca corras comandos destructivos sin confirmación.
12
+ - Registrá cada acción en stderr.
13
+ """
@@ -0,0 +1,12 @@
1
+ ---
2
+ name: demo-command
3
+ description: |
4
+ Skill de ejemplo que envuelve a demo-skill. En Codex el nodo de
5
+ kind command del prólogo se renderiza como skill (Codex no tiene
6
+ kind command).
7
+ ---
8
+
9
+ # demo-command
10
+
11
+ Punto de entrada rápido para correr el flujo demo sobre un archivo.
12
+ Los conectores llegan en el próximo sub-paso.
@@ -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