@skill-map/cli 0.43.0 → 0.44.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.
- package/dist/cli/tutorial/sm-master/SKILL.md +7 -9
- package/dist/cli/tutorial/sm-master/references/fixture-templates.md +1 -1
- package/dist/cli/tutorial/sm-master/references/tour-plugins.md +10 -9
- package/dist/cli/tutorial/sm-master/references/tour-settings.md +4 -4
- package/dist/cli/tutorial/sm-tutorial/SKILL.md +216 -299
- package/dist/cli.js +736 -221
- package/dist/cli.js.map +1 -1
- package/dist/index.js +21 -15
- package/dist/index.js.map +1 -1
- package/dist/kernel/index.d.ts +8 -6
- package/dist/kernel/index.js +21 -15
- package/dist/kernel/index.js.map +1 -1
- package/dist/ui/chunk-27WQPOXP.js +1 -0
- package/dist/ui/{chunk-DZBSELHN.js → chunk-43S72FTV.js} +1 -1
- package/dist/ui/chunk-555ST76V.js +1 -0
- package/dist/ui/{chunk-JPYAASHN.js → chunk-5AD5ZV4I.js} +3 -3
- package/dist/ui/{chunk-CFJBTDAA.js → chunk-5ITZXW3A.js} +1 -1
- package/dist/ui/chunk-A7PRWMQD.js +1021 -0
- package/dist/ui/chunk-DL5EA245.js +123 -0
- package/dist/ui/chunk-F7I6KMHX.js +1 -0
- package/dist/ui/{chunk-77J7XU3Y.js → chunk-I5AX4U2N.js} +28 -28
- package/dist/ui/chunk-IUZRAD7S.js +1 -0
- package/dist/ui/{chunk-XOHD5XWA.js → chunk-IYM26L3O.js} +1 -1
- package/dist/ui/{chunk-SBCO7ZSP.js → chunk-LGFABCIA.js} +1 -1
- package/dist/ui/{chunk-IUDL3NDH.js → chunk-MFLFIA7C.js} +1 -1
- package/dist/ui/chunk-MS6B7344.js +315 -0
- package/dist/ui/chunk-P3SNMV4X.js +2 -0
- package/dist/ui/chunk-PZQHB7GS.js +4 -0
- package/dist/ui/chunk-QDUSFOBE.js +1 -0
- package/dist/ui/{chunk-YCR3XCIW.js → chunk-QNTAOR2L.js} +5 -5
- package/dist/ui/{chunk-CR3AANNX.js → chunk-S4S5ZMXJ.js} +1 -1
- package/dist/ui/{chunk-5WJRN3LD.js → chunk-T3IVIRRJ.js} +1 -1
- package/dist/ui/{chunk-HP375T2O.js → chunk-VGPYYAVI.js} +1 -1
- package/dist/ui/chunk-X227ITGS.js +499 -0
- package/dist/ui/index.html +1 -1
- package/dist/ui/main-O3CWFYKV.js +3 -0
- package/package.json +10 -9
- package/dist/ui/chunk-2IF446BS.js +0 -1
- package/dist/ui/chunk-DIKPNZUZ.js +0 -315
- package/dist/ui/chunk-KGCJINI6.js +0 -1
- package/dist/ui/chunk-PPE3P2JD.js +0 -1
- package/dist/ui/chunk-UOCACZLI.js +0 -123
- package/dist/ui/chunk-YL6SWAFJ.js +0 -1024
- package/dist/ui/main-VHFB7Q2D.js +0 -3
- /package/dist/ui/{chunk-C2YUQODZ.js → chunk-4SG4352Z.js} +0 -0
- /package/dist/ui/{chunk-VB56BUGO.js → chunk-WCABR6TI.js} +0 -0
|
@@ -30,7 +30,7 @@ optional second phase (~20-30 min) covering the rest of the CLI.
|
|
|
30
30
|
> "short path", "long path", "route", "phase 1" / "phase 2", or
|
|
31
31
|
> "let's start the short one" in messages to the tester. The internal
|
|
32
32
|
> split exists so YOU know what comes next; for the tester you only
|
|
33
|
-
> talk about the current step and, at the end of step
|
|
33
|
+
> talk about the current step and, at the end of step 9 (wrap-up),
|
|
34
34
|
> offer "if you want, we can keep going deeper" without labelling it.
|
|
35
35
|
|
|
36
36
|
## Tone
|
|
@@ -177,7 +177,7 @@ optional second phase (~20-30 min) covering the rest of the CLI.
|
|
|
177
177
|
calls for a change to `.skillmapignore`,
|
|
178
178
|
`.skill-map/settings.json`,
|
|
179
179
|
`.skill-map/settings.local.json`, or `.gitignore` AS PART
|
|
180
|
-
OF A LESSON (e.g. Step
|
|
180
|
+
OF A LESSON (e.g. Step 8 hides a private node by appending
|
|
181
181
|
a pattern), you describe the edit in a tester-facing
|
|
182
182
|
message and the tester applies it in their own editor. The pedagogical point
|
|
183
183
|
is that those files belong to the user, they need to
|
|
@@ -204,7 +204,7 @@ optional second phase (~20-30 min) covering the rest of the CLI.
|
|
|
204
204
|
command blocks assume the second terminal is anchored to the
|
|
205
205
|
tutorial folder.
|
|
206
206
|
11. **Never skip the level question when entering the deep-dive.**
|
|
207
|
-
The level drives modulation of every Step
|
|
207
|
+
The level drives modulation of every Step 10+ instruction.
|
|
208
208
|
|
|
209
209
|
## Provider detection
|
|
210
210
|
|
|
@@ -214,7 +214,7 @@ its own on-disk convention:
|
|
|
214
214
|
| Provider | Base dir | Kinds it claims | Detect via env var(s) |
|
|
215
215
|
|----------------|-----------------------|--------------------------------|------------------------------------------------|
|
|
216
216
|
| `claude` | `.claude/` | `agent`, `command`, `skill` | `CLAUDECODE=1` OR `AI_AGENT` starts with `claude-code` |
|
|
217
|
-
| `antigravity` | none (metadata-only) | none
|
|
217
|
+
| `antigravity` | none (metadata-only) | none, Antigravity adopted the open standard, skills land under `.agents/skills/` and route through `agent-skills` | no formal env detection yet; Antigravity CLI replaced Gemini CLI on 2026-05-19 and reuses the open-standard layout, so detection collapses into the `agent-skills` row |
|
|
218
218
|
| `openai` | `.codex/` | `agent` (`.codex/agents/*.toml`) | no formal env detection yet; the OpenAI Codex CLI does not host this tutorial today (this SKILL.md lives under `.claude/skills/`), so the row is informational. Add when `.codex/skills/<name>/SKILL.md` mirroring lands. |
|
|
219
219
|
| `agent-skills` | `.agents/skills/` | `skill` only (vendor-neutral, also the on-disk home for Antigravity skills) | no formal env yet; treat as opt-in if the tester says so |
|
|
220
220
|
|
|
@@ -288,7 +288,9 @@ user content, they're internal infrastructure of the skill itself):
|
|
|
288
288
|
when the harness starts, has nothing to do with the tester.
|
|
289
289
|
Ignore whether it exists or not.
|
|
290
290
|
- `SKILL.md`: a loose copy of the skill.
|
|
291
|
-
- `sm-tutorial.md`:
|
|
291
|
+
- `sm-tutorial.md`: legacy loose copy from older `sm tutorial`
|
|
292
|
+
runs; today the verb scaffolds `.claude/skills/sm-tutorial/`
|
|
293
|
+
(already covered by the `.claude` entry above).
|
|
292
294
|
- `tutorial-state.yml`: resume mode (see §Resume / restart).
|
|
293
295
|
|
|
294
296
|
The whitelist is **internal**: do NOT enumerate it to the tester.
|
|
@@ -348,7 +350,7 @@ Do not advance until the tester confirms they're in an empty dir.
|
|
|
348
350
|
3. Even when the cwd looks filter-empty, `<provider_dir>/` may
|
|
349
351
|
already contain `.md` files from a previous tutorial run, an
|
|
350
352
|
experimental hook, or any other agent runtime. `sm scan` will
|
|
351
|
-
pick them up as
|
|
353
|
+
pick them up as nodes in the map and break the "exactly one node"
|
|
352
354
|
promise of Step 2 (and the running node count of every
|
|
353
355
|
subsequent step). Run, substituting `<provider_dir>` for the
|
|
354
356
|
detected base dir:
|
|
@@ -368,7 +370,7 @@ Do not advance until the tester confirms they're in an empty dir.
|
|
|
368
370
|
> <paste the find output verbatim>
|
|
369
371
|
> ```
|
|
370
372
|
>
|
|
371
|
-
> Those will register as
|
|
373
|
+
> Those will register as nodes in the map the moment `sm scan` runs,
|
|
372
374
|
> which means the tutorial's "exactly one node" assertion in Step
|
|
373
375
|
> 2 (and every running count after it) won't match what you see.
|
|
374
376
|
> Two ways out:
|
|
@@ -424,7 +426,7 @@ information. Only break the silence if something actually fails.
|
|
|
424
426
|
|
|
425
427
|
If `sm` isn't installed, tell the tester:
|
|
426
428
|
|
|
427
|
-
> You don't have `sm` yet. You'll need Node
|
|
429
|
+
> You don't have `sm` yet. You'll need Node 24+ and then run
|
|
428
430
|
> `npm install -g @skill-map/cli`. Tell me "ready" when it
|
|
429
431
|
> finishes.
|
|
430
432
|
|
|
@@ -447,7 +449,7 @@ later when they're relevant. Keep it to a single short sentence:
|
|
|
447
449
|
Then proceed straight to the writes below, no pause, no "ready?"
|
|
448
450
|
prompt.
|
|
449
451
|
|
|
450
|
-
The tutorial builds the
|
|
452
|
+
The tutorial builds the map **progressively** across Steps 2-6
|
|
451
453
|
(the live UI block). Right now, in pre-flight, you only create
|
|
452
454
|
**one file**: a single agent, so the tester's first look at the
|
|
453
455
|
UI shows exactly one node. The other three nodes (skill, command,
|
|
@@ -554,10 +556,10 @@ tutorial-state.yml
|
|
|
554
556
|
export.*
|
|
555
557
|
dump.sql
|
|
556
558
|
|
|
557
|
-
# Step
|
|
559
|
+
# Step 15 spawns a self-contained sub-project under link-validation/hijoA
|
|
558
560
|
# with its own .skill-map/. Excluded here so that, if the tester
|
|
559
|
-
# relaunches `sm` from the tutorial root after Step
|
|
560
|
-
# project does not leak into the main demo
|
|
561
|
+
# relaunches `sm` from the tutorial root after Step 15, the nested
|
|
562
|
+
# project does not leak into the main demo map.
|
|
561
563
|
link-validation/
|
|
562
564
|
```
|
|
563
565
|
|
|
@@ -597,40 +599,43 @@ short_steps:
|
|
|
597
599
|
- id: "5-live-connectors"
|
|
598
600
|
title: "⭐ Live UI: the connectors light up"
|
|
599
601
|
status: "pending"
|
|
600
|
-
- id: "6-live-
|
|
602
|
+
- id: "6-live-inspector"
|
|
603
|
+
title: "⭐ Live UI: the Inspector and linked nodes"
|
|
604
|
+
status: "pending"
|
|
605
|
+
- id: "7-live-edit"
|
|
606
|
+
title: "⭐ Live UI: edit a link and watch the topology change"
|
|
607
|
+
status: "pending"
|
|
608
|
+
- id: "8-live-ignore"
|
|
601
609
|
title: "⭐ Live UI: silence via .skillmapignore"
|
|
602
610
|
status: "pending"
|
|
603
|
-
- id: "
|
|
611
|
+
- id: "9-handoff"
|
|
604
612
|
title: "Wrap-up of the demo and offer to keep going"
|
|
605
613
|
status: "pending"
|
|
606
614
|
long_steps:
|
|
607
|
-
- id: "
|
|
608
|
-
title: "Tester edits live (extends the UI demo)"
|
|
609
|
-
status: "pending"
|
|
610
|
-
- id: "9-cli-browse"
|
|
615
|
+
- id: "10-cli-browse"
|
|
611
616
|
title: "Browse CLI: list / show / check"
|
|
612
617
|
status: "pending"
|
|
613
618
|
verbs: ["sm list", "sm show", "sm check"]
|
|
614
|
-
- id: "
|
|
619
|
+
- id: "11-ascii"
|
|
615
620
|
title: "ASCII: graph + export"
|
|
616
621
|
status: "pending"
|
|
617
622
|
verbs: ["sm graph", "sm export"]
|
|
618
|
-
- id: "
|
|
623
|
+
- id: "12-issues"
|
|
619
624
|
title: "Issues: broken refs"
|
|
620
625
|
status: "pending"
|
|
621
626
|
verbs: ["sm check", "sm check --analyzers reference-broken",
|
|
622
627
|
"sm check --json"]
|
|
623
|
-
- id: "
|
|
628
|
+
- id: "13-plugins"
|
|
624
629
|
title: "Plugins"
|
|
625
630
|
status: "pending"
|
|
626
631
|
verbs: ["sm plugins list", "sm plugins show",
|
|
627
632
|
"sm plugins doctor", "sm plugins enable",
|
|
628
633
|
"sm plugins disable"]
|
|
629
|
-
- id: "
|
|
634
|
+
- id: "14-annotations"
|
|
630
635
|
title: "Annotations and the .sm consent prompt"
|
|
631
636
|
status: "pending"
|
|
632
637
|
verbs: ["sm sidecar annotate"]
|
|
633
|
-
- id: "
|
|
638
|
+
- id: "15-reference-paths"
|
|
634
639
|
title: "Validate links to folders outside the scan scope"
|
|
635
640
|
status: "pending"
|
|
636
641
|
verbs: ["sm config set scan.referencePaths", "sm scan", "sm check"]
|
|
@@ -725,8 +730,8 @@ of `sm serve` with all defaults; the moment you need any flag
|
|
|
725
730
|
you write `sm serve --flag ...` explicitly). One process, one
|
|
726
731
|
terminal: it boots the server, scans the `.md` files, detects
|
|
727
732
|
changes, and pushes events over WebSocket to the live UI. The next
|
|
728
|
-
|
|
729
|
-
it here and keep it alive through Step
|
|
733
|
+
seven steps (2-8) all run against the same `sm` session, you boot
|
|
734
|
+
it here and keep it alive through Step 8.
|
|
730
735
|
|
|
731
736
|
**Command** (one terminal):
|
|
732
737
|
|
|
@@ -738,8 +743,8 @@ Before launching, ask the tester to set up a **side-by-side view** so
|
|
|
738
743
|
they can watch the magic happen without alt-tabbing every step.
|
|
739
744
|
Tell the tester:
|
|
740
745
|
|
|
741
|
-
> Now arrange your screen so the **browser** (where the
|
|
742
|
-
>
|
|
746
|
+
> Now arrange your screen so the **browser** (where the **Map**
|
|
747
|
+
> updates in real time) and **this chat** are both visible at once
|
|
743
748
|
>, typical layout is browser on the left half, chat on the right
|
|
744
749
|
> (or any split that lets you see both). The terminal running
|
|
745
750
|
> `sm` can stay off to the side; it just prints scan progress
|
|
@@ -759,15 +764,16 @@ truth (it logs the bound `http://host:port` after listen):
|
|
|
759
764
|
|
|
760
765
|
Wait for confirmation that the page loaded. Then tell the tester:
|
|
761
766
|
|
|
762
|
-
> You'll see exactly **one node** in the
|
|
763
|
-
> `agent`). That's our starting point.
|
|
767
|
+
> You'll see exactly **one node** in the **Map**: `demo-agent`
|
|
768
|
+
> (kind `agent`). That's our starting point.
|
|
764
769
|
>
|
|
765
|
-
> Walk the
|
|
766
|
-
> 1. **
|
|
767
|
-
> 2. **
|
|
768
|
-
>
|
|
769
|
-
>
|
|
770
|
-
>
|
|
770
|
+
> Walk the two views before we go on:
|
|
771
|
+
> 1. **Map**: the single agent node on the canvas.
|
|
772
|
+
> 2. **Files**: one row, with path / kind / metadata.
|
|
773
|
+
>
|
|
774
|
+
> Then, back in **Map**, click the node: the **Inspector** panel
|
|
775
|
+
> slides out with its frontmatter (the YAML block at the top of
|
|
776
|
+
> every `.md`, between the two `---` lines) and its links.
|
|
771
777
|
>
|
|
772
778
|
> Did the node show up?
|
|
773
779
|
|
|
@@ -797,7 +803,7 @@ list shown to the tester in the sample below accordingly:
|
|
|
797
803
|
name: demo-skill
|
|
798
804
|
description: |
|
|
799
805
|
Example skill that walks a file and returns a Markdown report.
|
|
800
|
-
Showcases the `skill` kind in the demo
|
|
806
|
+
Showcases the `skill` kind in the demo map.
|
|
801
807
|
inputs:
|
|
802
808
|
- name: target
|
|
803
809
|
type: path
|
|
@@ -908,7 +914,7 @@ Up to here you've been watching the agent write files. Now hand
|
|
|
908
914
|
the keyboard over: the lesson is that the watcher reacts to
|
|
909
915
|
**any** `.md` edit under the cwd, not just to files the agent
|
|
910
916
|
authors. After this beat, the tester has the muscle memory for
|
|
911
|
-
"save →
|
|
917
|
+
"save → map updates", which Step 8 (`.skillmapignore`) reuses
|
|
912
918
|
verbatim.
|
|
913
919
|
|
|
914
920
|
Tell the tester:
|
|
@@ -919,10 +925,10 @@ Tell the tester:
|
|
|
919
925
|
> the field you'll edit next, so leave the card open and the
|
|
920
926
|
> change will be obvious.
|
|
921
927
|
>
|
|
922
|
-
> ⚠ Heads-up: the inspector header shows a
|
|
923
|
-
> (Bump
|
|
924
|
-
> them write files to your project and we cover that
|
|
925
|
-
> deliberately in step
|
|
928
|
+
> ⚠ Heads-up: the inspector header shows a couple of action
|
|
929
|
+
> buttons (**Bump version**, **Refresh body**). **Don't click
|
|
930
|
+
> them yet**, they write files to your project and we cover that
|
|
931
|
+
> flow deliberately in step 14. For now, just look.
|
|
926
932
|
>
|
|
927
933
|
> Now open `.claude/agents/demo-agent.md` in your editor of
|
|
928
934
|
> choice. In the **frontmatter** at the top of the file, change
|
|
@@ -943,13 +949,6 @@ rule #1) before moving on. Mark `4-live-edit: done`.
|
|
|
943
949
|
|
|
944
950
|
### Step 5: Live UI: the connectors light up (~2 min)
|
|
945
951
|
|
|
946
|
-
Two beats. Beat 1 wires up the connectors (the arrows and their
|
|
947
|
-
kinds). Beat 2 calls out the per-node ↑/↓ chips that the same hub
|
|
948
|
-
edit lit up on every card. Each beat gets its own confirm so the
|
|
949
|
-
tester slows down on each surface instead of conflating them.
|
|
950
|
-
|
|
951
|
-
**Beat 1, connectors (the arrows themselves).**
|
|
952
|
-
|
|
953
952
|
You edit `notes/todo.md` so it becomes the **hub** that points
|
|
954
953
|
to each of the other four nodes. Each bullet uses a syntax that
|
|
955
954
|
maps to a specific **link kind**:
|
|
@@ -996,50 +995,76 @@ Tell the tester:
|
|
|
996
995
|
> colours on the canvas (the two `invokes` share a colour, as you
|
|
997
996
|
> would expect).
|
|
998
997
|
>
|
|
999
|
-
>
|
|
998
|
+
> Observa también que los conectores tienen distinta transparencia.
|
|
1000
999
|
> Skill-map estima qué tan seguro está de cada conexión: un
|
|
1001
1000
|
> `[text](file.md)` que apunta a un archivo concreto (1.00 de
|
|
1002
1001
|
> confianza, ahora que el target existe) se ve sólido, mientras que
|
|
1003
1002
|
> un `@handle` que no resuelve a ningún nodo se queda en 0.5
|
|
1004
1003
|
> (ambiguo) y se ve translúcido. La opacidad cuenta esa historia de
|
|
1005
|
-
> un vistazo: cuanto más sólido, más confiable es la inferencia
|
|
1006
|
-
>
|
|
1004
|
+
> un vistazo: cuanto más sólido, más confiable es la inferencia.
|
|
1005
|
+
>
|
|
1006
|
+
> Confirma. Si falta algún conector, refresca el browser y avísame.
|
|
1007
|
+
|
|
1008
|
+
After the tester confirms the connectors, drop this tip:
|
|
1009
|
+
|
|
1010
|
+
> 💡 Tip: si tras tantos cambios los nodos quedaron amontonados, en
|
|
1011
|
+
> la barra de herramientas del mapa tienes el botón **Reset
|
|
1012
|
+
> layout**: reorganiza todo con el auto-layout para que se vea
|
|
1013
|
+
> mejor. Te pide confirmación porque descarta las posiciones que
|
|
1014
|
+
> hayas movido a mano.
|
|
1015
|
+
|
|
1016
|
+
If a connector is missing, do not advance, the next step inspects
|
|
1017
|
+
the same hub edit. Mark `5-live-connectors: done`.
|
|
1018
|
+
|
|
1019
|
+
### Step 6: Live UI: the Inspector and linked nodes (~1 min)
|
|
1020
|
+
|
|
1021
|
+
The connector opacity tells the confidence story at a glance; the
|
|
1022
|
+
exact per-link breakdown lives in the Inspector. Open it on the hub
|
|
1023
|
+
so the tester registers the surface before Step 7 changes topology.
|
|
1024
|
+
|
|
1025
|
+
> 🆕 Abre el Inspector de `notes/todo` (clic en el nodo en el
|
|
1026
|
+
> mapa). Baja hasta el panel **Linked nodes**: tiene dos secciones,
|
|
1027
|
+
> **Outgoing** e **Incoming**. `notes/todo` lista 4 enlaces en
|
|
1028
|
+
> Outgoing (es el hub que apunta a cuatro nodos) y 0 en Incoming;
|
|
1029
|
+
> si abres el Inspector de cualquiera de los cuatro nodos
|
|
1030
|
+
> apuntados, ves 1 en Incoming. Cada fila muestra el tipo del
|
|
1031
|
+
> enlace (`mentions`, `invokes`, `references`) y una etiqueta con
|
|
1032
|
+
> su confianza: el valor numérico (`1.00`, `0.50`, …).
|
|
1007
1033
|
>
|
|
1008
|
-
>
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
>
|
|
1023
|
-
>
|
|
1024
|
-
>
|
|
1025
|
-
> (es el hub que apunta a cuatro nodos), y los cuatro nodos
|
|
1026
|
-
> apuntados muestran 1↑ cada uno. Pasale el mouse a una chip y se
|
|
1027
|
-
> abre un tooltip con el desglose por kind (`mentions`, `invokes`,
|
|
1028
|
-
> `references`). Es la misma info que el grafo, resumida en la
|
|
1029
|
-
> card por si trabajás desde la list view.
|
|
1034
|
+
> Confírmame cuando lo veas.
|
|
1035
|
+
|
|
1036
|
+
Wait for confirmation. Mark `6-live-inspector: done`.
|
|
1037
|
+
|
|
1038
|
+
### Step 7: Live UI: edit a link and watch the topology change (~3 min)
|
|
1039
|
+
|
|
1040
|
+
**Context**: Step 4 had the tester edit a scalar (`description`)
|
|
1041
|
+
and watch the inspector card refresh. Step 7 raises the bar: edit
|
|
1042
|
+
a Markdown link and watch the MAP TOPOLOGY change (a connector
|
|
1043
|
+
disappears). Same watcher, different surface.
|
|
1044
|
+
|
|
1045
|
+
The server has been live since Step 2, leave it running; this step
|
|
1046
|
+
and the next one (`.skillmapignore`) both reuse it.
|
|
1047
|
+
|
|
1048
|
+
> Your turn. Edit `notes/todo.md` with your editor of choice and
|
|
1049
|
+
> delete the bullet that contains `@demo-agent`. Save. Watch the
|
|
1050
|
+
> UI.
|
|
1030
1051
|
>
|
|
1031
|
-
>
|
|
1052
|
+
> Expected: the `notes/todo → demo-agent` connector (kind:
|
|
1053
|
+
> `mentions`) disappears in real time. The two nodes stay in the
|
|
1054
|
+
> **Map**; only the edge goes.
|
|
1032
1055
|
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1056
|
+
You verify by reading `notes/todo.md` to confirm the change was
|
|
1057
|
+
applied. (On `agent-skills`, where the `@demo-agent` bullet was
|
|
1058
|
+
never created in Step 5, ask the tester to remove the only bullet
|
|
1059
|
+
they did add and watch THAT connector vanish, the lesson is the
|
|
1060
|
+
same.) Once they confirm, leave the server running, the next step
|
|
1061
|
+
reuses it. Mark `7-live-edit: done`.
|
|
1037
1062
|
|
|
1038
|
-
### Step
|
|
1063
|
+
### Step 8: Live UI: silence a private file via `.skillmapignore` (~2 min)
|
|
1039
1064
|
|
|
1040
1065
|
Steps 2-5 showed the watcher picking up new files and edits (yours
|
|
1041
|
-
and theirs). Step
|
|
1042
|
-
want in the
|
|
1066
|
+
and theirs). Step 8 flips the direction: a file the tester DOES NOT
|
|
1067
|
+
want in the map (a draft, a scratch file, a secret) gets hidden by
|
|
1043
1068
|
a single line in `.skillmapignore`. Same live mechanism, no restart.
|
|
1044
1069
|
|
|
1045
1070
|
`sm init` already wrote a starter `.skillmapignore` at the scope
|
|
@@ -1047,15 +1072,15 @@ root. The flow has three beats:
|
|
|
1047
1072
|
|
|
1048
1073
|
**Beat 1, you create one new fixture file (the agent does this).**
|
|
1049
1074
|
|
|
1050
|
-
`Write` `notes/private-credentials.md`, kind `
|
|
1051
|
-
file the tester would never want surfacing publicly:
|
|
1075
|
+
`Write` `notes/private-credentials.md`, kind `markdown`, simulates
|
|
1076
|
+
a file the tester would never want surfacing publicly:
|
|
1052
1077
|
|
|
1053
1078
|
```markdown
|
|
1054
1079
|
---
|
|
1055
1080
|
name: private-credentials
|
|
1056
1081
|
description: |
|
|
1057
1082
|
Personal API tokens, exists in the repo but should not show
|
|
1058
|
-
up in
|
|
1083
|
+
up in skill-map's map. Demonstrates the .skillmapignore
|
|
1059
1084
|
flow.
|
|
1060
1085
|
---
|
|
1061
1086
|
|
|
@@ -1064,7 +1089,7 @@ description: |
|
|
|
1064
1089
|
API_TOKEN: example-not-real
|
|
1065
1090
|
```
|
|
1066
1091
|
|
|
1067
|
-
Confirm the file appears in the
|
|
1092
|
+
Confirm the file appears in the map as a sixth node
|
|
1068
1093
|
(`notes/private-credentials`). The watcher sees it like any
|
|
1069
1094
|
other `.md`, that's the point of the demo.
|
|
1070
1095
|
|
|
@@ -1084,14 +1109,15 @@ sees what their cwd holds:
|
|
|
1084
1109
|
├── .claude/
|
|
1085
1110
|
│ ├── agents/demo-agent.md
|
|
1086
1111
|
│ ├── commands/demo-command.md
|
|
1087
|
-
│ └── skills/
|
|
1112
|
+
│ └── skills/
|
|
1113
|
+
│ ├── demo-skill/SKILL.md
|
|
1114
|
+
│ └── sm-tutorial/SKILL.md ← the tutorial you loaded
|
|
1088
1115
|
├── .skill-map/ ← project DB + settings (managed)
|
|
1089
1116
|
├── .skillmapignore ← the file we're about to edit
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
└── sm-tutorial.md ← the tutorial file you loaded
|
|
1117
|
+
└── notes/
|
|
1118
|
+
├── todo.md
|
|
1119
|
+
├── demo-guideline.md
|
|
1120
|
+
└── private-credentials.md ← what we want to hide
|
|
1095
1121
|
```
|
|
1096
1122
|
|
|
1097
1123
|
> The `.skillmapignore` at the root is the file we'll touch
|
|
@@ -1118,7 +1144,7 @@ your `Edit` tool. Tell the tester to do it from their editor:
|
|
|
1118
1144
|
>
|
|
1119
1145
|
> Watch the browser when you save. The
|
|
1120
1146
|
> `notes/private-credentials` node should disappear from the
|
|
1121
|
-
>
|
|
1147
|
+
> **Map** in real time, without restarting anything. Six nodes
|
|
1122
1148
|
> back to five.
|
|
1123
1149
|
>
|
|
1124
1150
|
> Did the node vanish?
|
|
@@ -1129,80 +1155,42 @@ verify the appended pattern landed correctly (in case
|
|
|
1129
1155
|
allowed. Once confirmed, ask them to stop the server with
|
|
1130
1156
|
**Ctrl+C** in the terminal before continuing.
|
|
1131
1157
|
|
|
1132
|
-
Mark `
|
|
1158
|
+
Mark `8-live-ignore: done`.
|
|
1159
|
+
|
|
1160
|
+
### Step 9: Wrap-up of the demo and offer to keep going (30 s)
|
|
1133
1161
|
|
|
1134
|
-
|
|
1162
|
+
Keep this short: one closing line, then a single decision. Do NOT
|
|
1163
|
+
dump feature notes here (no `.sm` files, multi-provider, active
|
|
1164
|
+
provider, or safety-net asides; those land in their own steps or in
|
|
1165
|
+
day-to-day use). One closing line, then ask.
|
|
1166
|
+
|
|
1167
|
+
Closing line (tester-facing):
|
|
1135
1168
|
|
|
1136
1169
|
> All set! That's the heart of skill-map: you edit a `.md` and the
|
|
1137
|
-
> UI
|
|
1138
|
-
>
|
|
1139
|
-
>
|
|
1140
|
-
> ⚠️ **`.sm` files (heads-up for later)**: every `.md` skill-map
|
|
1141
|
-
> tracks has a sibling `.sm` file (e.g. `demo-agent.sm` next to
|
|
1142
|
-
> `demo-agent.md`) that carries **all of the tool's metadata
|
|
1143
|
-
> about that markdown, so your `.md` stays clean and uncluttered**.
|
|
1144
|
-
> Version, history, tags, annotations, anything that does not
|
|
1145
|
-
> belong in the human-authored body lives in the `.sm`. You write
|
|
1146
|
-
> the `.md` for Claude or for humans, the tool writes the `.sm`.
|
|
1147
|
-
> Each `sm bump` and each `sm sidecar annotate` creates or
|
|
1148
|
-
> refreshes one, so you'll see them often as you use skill-map
|
|
1149
|
-
> day to day. Commit them to git like any other source file.
|
|
1150
|
-
>
|
|
1151
|
-
> 🔀 **Multi-provider**: this demo ran with the
|
|
1152
|
-
> `<provider>` provider (base dir `<provider_dir>`). Skill-map
|
|
1153
|
-
> walks three other built-in conventions with identical mechanics:
|
|
1154
|
-
> the open agent-skills standard (also used by Google's Antigravity
|
|
1155
|
-
> CLI, which retired Gemini CLI in May 2026) lives under
|
|
1156
|
-
> `.agents/skills/` (kind: skill), OpenAI Codex lives under
|
|
1157
|
-
> `.codex/agents/*.toml` (TOML sub-agents), and the `antigravity`
|
|
1158
|
-
> lens is metadata-only (no kinds of its own; selecting it just
|
|
1159
|
-
> tags the project as Antigravity-flavoured). Drop a `.md` (or
|
|
1160
|
-
> `.toml` for Codex) in any of those and the same watcher picks it
|
|
1161
|
-
> up, the same connectors light up, the same rules run.
|
|
1162
|
-
>
|
|
1163
|
-
> 💡 **Tip avanzado (no toques si no querés rescanear)**: en
|
|
1164
|
-
> Settings → Project hay un dropdown **Active provider** que
|
|
1165
|
-
> selecciona qué lente aplica a TODO el grafo (Claude / Antigravity
|
|
1166
|
-
> / Codex / Cursor / agent-skills). Cambiarlo limpia el scan
|
|
1167
|
-
> persistido y rearma el grafo desde cero bajo el nuevo lente, así
|
|
1168
|
-
> que sirve cuando tu proyecto migra de runtime. Por default
|
|
1169
|
-
> skill-map autodetecta el lente correcto al primer scan (en este
|
|
1170
|
-
> caso, `claude` porque hay `.claude/`); si tu repo tiene markers
|
|
1171
|
-
> ambiguos (`.claude/` + `.codex/` al mismo tiempo) `sm scan` te
|
|
1172
|
-
> pregunta cuál usar, o aborta con exit 2 si pasás `--yes` y todavía
|
|
1173
|
-
> está ambiguo. El lente `antigravity` no se auto-detecta (Google
|
|
1174
|
-
> adoptó el open standard sin marker propio); seleccionarlo es
|
|
1175
|
-
> manual.
|
|
1176
|
-
>
|
|
1177
|
-
> 🛡️ **Red de seguridad**: si en algún momento desactivás el bundle
|
|
1178
|
-
> al que apunta el lente activo (por ejemplo `sm plugins disable
|
|
1179
|
-
> claude` con `activeProvider: claude`), el próximo `sm scan` te
|
|
1180
|
-
> avisa con un warning explícito ("the active lens points at a
|
|
1181
|
-
> disabled bundle") y te ofrece los dos arreglos: reactivar el
|
|
1182
|
-
> bundle o cambiar el lente. Lo mismo si la DB local quedó vieja
|
|
1183
|
-
> respecto del binario, el open de SQLite detecta el skew de
|
|
1184
|
-
> versiones y te dice qué correr para refrescarla. Tip: si ves uno
|
|
1185
|
-
> de esos warnings durante el tutorial, NO los ignores, son la
|
|
1186
|
-
> señal de que el grafo no refleja lo que vos esperás.
|
|
1187
|
-
>
|
|
1188
|
-
> If you want, **we can keep going deeper**: I'll walk you through
|
|
1189
|
-
> the CLI verbs and flags (`list`, `graph`, `export`, `orphans`,
|
|
1190
|
-
> `plugins`, `db ops`, etc.). About ~20-30 min more, pausable
|
|
1191
|
-
> whenever.
|
|
1192
|
-
>
|
|
1193
|
-
> 1. **Yes, let's continue**
|
|
1194
|
-
> 2. **No, we wrap here**: give me the summary and tell me how to
|
|
1195
|
-
> delete the dir
|
|
1170
|
+
> UI reflects it instantly. In ~10 minutes you've seen the full
|
|
1171
|
+
> flow.
|
|
1196
1172
|
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1173
|
+
Then ask with the **`AskUserQuestion`** tool (not a numbered list),
|
|
1174
|
+
translating the labels to the tester's language. One question,
|
|
1175
|
+
header `Tutorial`, prompt "Keep going or wrap up here?", two
|
|
1176
|
+
options:
|
|
1177
|
+
|
|
1178
|
+
- **Go deeper**: the rest of the CLI, verbs and flags (`list`,
|
|
1179
|
+
`export`, `plugins`, `db`, ...), about 20-30 min, pausable
|
|
1180
|
+
anytime.
|
|
1181
|
+
- **Wrap up here**: summary plus how to delete the dir.
|
|
1200
1182
|
|
|
1201
|
-
If
|
|
1183
|
+
(If the host lacks `AskUserQuestion`, fall back to a numbered list.)
|
|
1184
|
+
|
|
1185
|
+
On **Go deeper**:
|
|
1202
1186
|
- Mark `route.short.status: done`, `route.long.status: in_progress`.
|
|
1203
|
-
- Move
|
|
1204
|
-
"
|
|
1205
|
-
block
|
|
1187
|
+
- Move to the next phase without announcing it: a short "Dale,
|
|
1188
|
+
seguimos" (tester-language equivalent), then the level question
|
|
1189
|
+
of the next block.
|
|
1190
|
+
|
|
1191
|
+
On **Wrap up here**:
|
|
1192
|
+
- Mark `route.short.status: done`, `route.long.status: declined`.
|
|
1193
|
+
- Generate the final summary (see §Final wrap-up).
|
|
1206
1194
|
|
|
1207
1195
|
---
|
|
1208
1196
|
|
|
@@ -1228,36 +1216,7 @@ Save into `tester.level` and modulate:
|
|
|
1228
1216
|
- **Level 3**: dense blocks, flags included, no explanations of
|
|
1229
1217
|
basic concepts.
|
|
1230
1218
|
|
|
1231
|
-
### Step
|
|
1232
|
-
|
|
1233
|
-
**Context**: Step 4 had the tester edit a scalar (`description`)
|
|
1234
|
-
and watch the inspector card refresh. Step 8 raises the bar: edit
|
|
1235
|
-
a Markdown link and watch the GRAPH TOPOLOGY change (a connector
|
|
1236
|
-
disappears). Same watcher, different surface.
|
|
1237
|
-
|
|
1238
|
-
This step needs the server running. **Check first** before asking
|
|
1239
|
-
them to launch it: many testers leave it running from Step 2 and
|
|
1240
|
-
the demo wraps without an explicit Ctrl+C. Word the prompt as a
|
|
1241
|
-
conditional, e.g. "If the server from Step 2 is still up, leave it,
|
|
1242
|
-
if not, run `sm` again from the tutorial cwd and reopen the
|
|
1243
|
-
browser." Do not just say "start it again", that risks a second
|
|
1244
|
-
process trying to bind the same port and confusing the tester.
|
|
1245
|
-
|
|
1246
|
-
> Your turn. Edit `notes/todo.md` with your editor of choice and
|
|
1247
|
-
> delete the bullet that contains `@demo-agent`. Save. Watch the
|
|
1248
|
-
> UI.
|
|
1249
|
-
>
|
|
1250
|
-
> Expected: the `notes/todo → demo-agent` connector (kind:
|
|
1251
|
-
> `mentions`) disappears in real time. The two nodes stay in the
|
|
1252
|
-
> graph; only the edge goes.
|
|
1253
|
-
|
|
1254
|
-
You verify by reading `notes/todo.md` to confirm the change was
|
|
1255
|
-
applied. (On `agent-skills`, where the `@demo-agent` bullet was
|
|
1256
|
-
never created in Step 5, ask the tester to remove the only bullet
|
|
1257
|
-
they did add and watch THAT connector vanish, the lesson is the
|
|
1258
|
-
same.) Once they confirm, ask them to **Ctrl+C** the server.
|
|
1259
|
-
|
|
1260
|
-
### Step 9: Browse CLI: list / show / check (~3 min)
|
|
1219
|
+
### Step 10: Browse CLI: list / show / check (~3 min)
|
|
1261
1220
|
|
|
1262
1221
|
```bash
|
|
1263
1222
|
sm list
|
|
@@ -1276,9 +1235,9 @@ target of the hub's `references` link). `check` reads the persisted
|
|
|
1276
1235
|
`scan_issues` table, it does NOT re-walk the filesystem. The
|
|
1277
1236
|
fixture is clean (Steps 2-6 captured the latest state before
|
|
1278
1237
|
Ctrl+C), so the verb prints `✓ No issues`. We will plant one in
|
|
1279
|
-
Step
|
|
1238
|
+
Step 12 and watch the rule catch it after a fresh `sm scan`.
|
|
1280
1239
|
|
|
1281
|
-
### Step
|
|
1240
|
+
### Step 11: ASCII: graph + export (~3 min)
|
|
1282
1241
|
|
|
1283
1242
|
```bash
|
|
1284
1243
|
sm graph
|
|
@@ -1296,11 +1255,11 @@ within a key, AND across keys) and a `--format` of `md` or
|
|
|
1296
1255
|
segment, `**` spans segments) so `path=notes/**` cleanly
|
|
1297
1256
|
captures the notes folder regardless of the catch-all kind.
|
|
1298
1257
|
|
|
1299
|
-
### Step
|
|
1258
|
+
### Step 12: Issues: broken refs (~3 min)
|
|
1300
1259
|
|
|
1301
1260
|
`reference-broken` is one of the deterministic rules `sm check` runs.
|
|
1302
1261
|
We'll plant one and watch it surface, that's the easiest way to
|
|
1303
|
-
internalise that it is an **issue** on a node, NOT a
|
|
1262
|
+
internalise that it is an **issue** on a node, NOT a
|
|
1304
1263
|
connector and NOT the same thing as an "orphan".
|
|
1305
1264
|
|
|
1306
1265
|
> ℹ️ `reference-broken` is one of ~16 built-in rules. Others surface
|
|
@@ -1341,7 +1300,7 @@ rest of the deep-dive doesn't depend on it.
|
|
|
1341
1300
|
If the tester asks about `sm orphans` vs `sm check`, see
|
|
1342
1301
|
§Scope clarifications.
|
|
1343
1302
|
|
|
1344
|
-
### Step
|
|
1303
|
+
### Step 13: Plugins (~3 min)
|
|
1345
1304
|
|
|
1346
1305
|
**Context, present plugins to the tester before any command runs.**
|
|
1347
1306
|
This is the official welcome to the plugin world; many testers will
|
|
@@ -1352,15 +1311,13 @@ standard rules):
|
|
|
1352
1311
|
|
|
1353
1312
|
> Plugins are how skill-map gets extended. The kernel ships with a
|
|
1354
1313
|
> small set of built-in plugins out of the box, but anyone can
|
|
1355
|
-
> write their own and drop them into the project
|
|
1356
|
-
> create` scaffolds a manifest and the stubs, so there is no
|
|
1357
|
-
> handwritten boilerplate to start from.
|
|
1314
|
+
> write their own and drop them into the project.
|
|
1358
1315
|
>
|
|
1359
1316
|
> The kernel exposes **six** plugin types you can implement:
|
|
1360
1317
|
>
|
|
1361
1318
|
> - **extractors**: find links and references inside markdown.
|
|
1362
|
-
> - **analyzers**: rules that
|
|
1363
|
-
> - **actions**:
|
|
1319
|
+
> - **analyzers**: rules that detect issues on a node.
|
|
1320
|
+
> - **actions**: operations the user runs on a node.
|
|
1364
1321
|
> - **hooks**: fire on lifecycle events (scan started, finished,
|
|
1365
1322
|
> …).
|
|
1366
1323
|
> - **formatters**: render outputs in different shapes (text,
|
|
@@ -1368,12 +1325,9 @@ standard rules):
|
|
|
1368
1325
|
> - **providers**: declare new node kinds and where to look for
|
|
1369
1326
|
> them.
|
|
1370
1327
|
>
|
|
1371
|
-
> Heads up:
|
|
1372
|
-
>
|
|
1373
|
-
>
|
|
1374
|
-
> change in one is reflected in the other. We'll use the CLI here
|
|
1375
|
-
> because it shows the full surface in a few lines, but knowing
|
|
1376
|
-
> the UI panel exists is useful for day-to-day work.
|
|
1328
|
+
> Heads up: plugins can be managed from the UI as well as the CLI.
|
|
1329
|
+
> We'll use the CLI here because it shows the full surface in a few
|
|
1330
|
+
> lines.
|
|
1377
1331
|
>
|
|
1378
1332
|
> Let's look at what's installed right now.
|
|
1379
1333
|
|
|
@@ -1384,7 +1338,7 @@ sm plugins list
|
|
|
1384
1338
|
sm plugins doctor
|
|
1385
1339
|
sm plugins show core
|
|
1386
1340
|
sm plugins disable core/external-url-counter
|
|
1387
|
-
sm plugins
|
|
1341
|
+
sm plugins show core # confirm it shows as disabled
|
|
1388
1342
|
sm plugins enable core/external-url-counter
|
|
1389
1343
|
```
|
|
1390
1344
|
|
|
@@ -1395,7 +1349,7 @@ behavior, or which id format `disable` / `enable` accept, see
|
|
|
1395
1349
|
If `plugins list` shows zero entries (depends on the build), tell
|
|
1396
1350
|
the tester no plugins are installed yet and offer to skip.
|
|
1397
1351
|
|
|
1398
|
-
### Step
|
|
1352
|
+
### Step 14: Annotations and the `.sm` consent prompt (~3 min)
|
|
1399
1353
|
|
|
1400
1354
|
**Context**: every `.md` skill-map tracks gets a sibling
|
|
1401
1355
|
**companion file** with extension `.sm` that carries **all of
|
|
@@ -1410,8 +1364,9 @@ the project.
|
|
|
1410
1364
|
|
|
1411
1365
|
The first time skill-map wants to write one in a new project it
|
|
1412
1366
|
asks for your consent, it never touches your filesystem without
|
|
1413
|
-
permission. After you say yes, the choice
|
|
1414
|
-
|
|
1367
|
+
permission. After you say yes, the choice is saved to the
|
|
1368
|
+
project's `settings.local.json` (part of your project config,
|
|
1369
|
+
gitignored) and the prompt never appears again.
|
|
1415
1370
|
|
|
1416
1371
|
We'll demonstrate by creating an empty annotation scaffold for
|
|
1417
1372
|
`notes/todo.md`. **Reset any prior consent state first** so the
|
|
@@ -1447,9 +1402,9 @@ goes through silently). On a CI / non-interactive session, pass
|
|
|
1447
1402
|
If the tester asks about `sm bump` vs `sm sidecar annotate` vs
|
|
1448
1403
|
`sm sidecar refresh`, see §Scope clarifications.
|
|
1449
1404
|
|
|
1450
|
-
### Step
|
|
1405
|
+
### Step 15: Validate links to folders outside the scan scope (~4 min)
|
|
1451
1406
|
|
|
1452
|
-
**Context**: until now the
|
|
1407
|
+
**Context**: until now the map saw only files inside the cwd. In
|
|
1453
1408
|
real projects a repo often links to files in a sibling repo (a specs
|
|
1454
1409
|
project, a sibling package in a monorepo). Skill-map only scans from
|
|
1455
1410
|
its cwd downwards, so a link to `../sibling/file.md` shows up as
|
|
@@ -1457,7 +1412,7 @@ broken. The fix is to declare the external folders in
|
|
|
1457
1412
|
`scan.referencePaths`, which lets the `reference-broken` analyzer
|
|
1458
1413
|
validate path-style links against those extra roots **without
|
|
1459
1414
|
indexing their files as nodes**. The folders are checked, not walked
|
|
1460
|
-
as part of the
|
|
1415
|
+
as part of the map.
|
|
1461
1416
|
|
|
1462
1417
|
**Setup (you, silent)**: write the fixture under the tutorial cwd
|
|
1463
1418
|
so both sub-projects are siblings of each other but children of the
|
|
@@ -1529,7 +1484,7 @@ sm init
|
|
|
1529
1484
|
sm check
|
|
1530
1485
|
```
|
|
1531
1486
|
|
|
1532
|
-
> Vas a ver un
|
|
1487
|
+
> Vas a ver un error del analyzer (regla que detecta problemas)
|
|
1533
1488
|
> `reference-broken` apuntando al link `../hijoB/spec.md`. Para
|
|
1534
1489
|
> skill-map ese archivo no existe, porque `hijoB/` queda afuera
|
|
1535
1490
|
> del scope (alcance) que `sm` está escaneando desde `hijoA/`:
|
|
@@ -1539,20 +1494,20 @@ sm check
|
|
|
1539
1494
|
>
|
|
1540
1495
|
> Pásame la salida (o un OK) y seguimos con el fix.
|
|
1541
1496
|
|
|
1542
|
-
Wait for confirmation before showing the fix. Mark the
|
|
1497
|
+
Wait for confirmation before showing the fix. Mark the error
|
|
1543
1498
|
landed as expected; if the tester reports `✓ No issues` instead,
|
|
1544
1499
|
the most likely cause is that they ran `sm check` from the
|
|
1545
1500
|
tutorial root by mistake (the root scan still sees both folders).
|
|
1546
1501
|
Have them re-check that the cwd of their second terminal is
|
|
1547
1502
|
`link-validation/hijoA/` (`pwd`) and rerun.
|
|
1548
1503
|
|
|
1549
|
-
After they confirm the broken-ref
|
|
1504
|
+
After they confirm the broken-ref error, present the fix:
|
|
1550
1505
|
|
|
1551
1506
|
> Para resolver el link sin tener que mover `hijoB/` dentro de
|
|
1552
1507
|
> `hijoA/`, agregas `../hijoB` al setting `scan.referencePaths`.
|
|
1553
1508
|
> Le dice al analyzer "si un link path-style cae acá, valídalo
|
|
1554
1509
|
> también contra estas carpetas extra". Los archivos NO se
|
|
1555
|
-
> agregan al
|
|
1510
|
+
> agregan al mapa (no aparecen como nodos), solo se consultan
|
|
1556
1511
|
> para resolver referencias salientes desde `hijoA/`.
|
|
1557
1512
|
>
|
|
1558
1513
|
> En tu segundo terminal (todavía dentro de `link-validation/hijoA/`):
|
|
@@ -1566,9 +1521,9 @@ sm check
|
|
|
1566
1521
|
> El flag `--yes` confirma el privacy gate (control de privacidad):
|
|
1567
1522
|
> estás autorizando que skill-map lea archivos fuera del project
|
|
1568
1523
|
> root, así que pide tu OK explícito. Sin `--yes` el verb se aborta
|
|
1569
|
-
> y te
|
|
1570
|
-
> debería imprimir `✓ No issues`: el
|
|
1571
|
-
> sigue sin entrar al
|
|
1524
|
+
> y te pide reintentar con `--yes` (no abre un prompt interactivo).
|
|
1525
|
+
> Después del scan, `sm check` debería imprimir `✓ No issues`: el
|
|
1526
|
+
> error desapareció y `hijoB/` sigue sin entrar al mapa como nodo.
|
|
1572
1527
|
>
|
|
1573
1528
|
> Pásame la salida y vemos cómo quedó persistido.
|
|
1574
1529
|
|
|
@@ -1623,18 +1578,10 @@ server. If the `sm` launch fails with a port-in-use error, an old
|
|
|
1623
1578
|
`sm` is still bound to the default port from an earlier step;
|
|
1624
1579
|
follow the §Edge cases recipe (`sm serve --port 4243`).
|
|
1625
1580
|
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
```bash
|
|
1632
|
-
cd ../..
|
|
1633
|
-
```
|
|
1634
|
-
|
|
1635
|
-
> Confirma cuando estés de vuelta.
|
|
1636
|
-
|
|
1637
|
-
Mark `14-reference-paths: done`.
|
|
1581
|
+
The tester is still inside `link-validation/hijoA/` at this point.
|
|
1582
|
+
Do NOT send them back here; the return-to-root `cd ../..` now lives
|
|
1583
|
+
in §Final wrap-up, right before the cleanup line. Mark
|
|
1584
|
+
`15-reference-paths: done`.
|
|
1638
1585
|
|
|
1639
1586
|
---
|
|
1640
1587
|
|
|
@@ -1672,11 +1619,11 @@ Those verbs accept either a **qualified extension id**
|
|
|
1672
1619
|
`<bundle>/<ext-id>` (e.g. `core/external-url-counter`,
|
|
1673
1620
|
`claude/at-directive`) or a **bare bundle id** (e.g. `claude`,
|
|
1674
1621
|
`core`) which the CLI treats as a macro that fans the toggle out
|
|
1675
|
-
across every extension inside the bundle.
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
|
|
1679
|
-
|
|
1622
|
+
across every extension inside the bundle. `plugins show <bundle>`
|
|
1623
|
+
lists each extension as `<kind> <bundle>/<ext-id>` (e.g.
|
|
1624
|
+
`extractor core/external-url-counter`); the leading kind is just a
|
|
1625
|
+
readability column, pass only the `<bundle>/<ext-id>` part to
|
|
1626
|
+
`disable` / `enable`.
|
|
1680
1627
|
|
|
1681
1628
|
Single-extension bundles (`openai`, `antigravity`,
|
|
1682
1629
|
`agent-skills`) flip without prompting because the macro is a
|
|
@@ -1702,7 +1649,7 @@ agent reservations like `general-purpose`), `sm check` surfaces a
|
|
|
1702
1649
|
files that shadow its built-ins, so the warning is not a bug,
|
|
1703
1650
|
it's skill-map telling the operator "Claude will never invoke this
|
|
1704
1651
|
file; pick another name". Incoming links to the shadowed file
|
|
1705
|
-
resolve at confidence `0.1` instead of `1.0`, so the
|
|
1652
|
+
resolve at confidence `0.1` instead of `1.0`, so the **Map** also
|
|
1706
1653
|
visually de-emphasises them. Rename the file and the warning
|
|
1707
1654
|
clears on the next scan.
|
|
1708
1655
|
|
|
@@ -1720,10 +1667,10 @@ clears on the next scan.
|
|
|
1720
1667
|
## Final wrap-up
|
|
1721
1668
|
|
|
1722
1669
|
When everything is done (demo only, or demo + deep-dive), show the
|
|
1723
|
-
closing block
|
|
1724
|
-
|
|
1670
|
+
closing block: a "that's a wrap" line, the sm-master pointer, the
|
|
1671
|
+
return-to-root line (deep-dive only), then a one-line cleanup.
|
|
1725
1672
|
|
|
1726
|
-
> Thanks! That's a wrap.
|
|
1673
|
+
> Thanks! That's a wrap, you went through the whole tutorial.
|
|
1727
1674
|
>
|
|
1728
1675
|
> One more thing before you go: there's a companion skill called
|
|
1729
1676
|
> **sm-master** that picks up where this tutorial leaves off. It's
|
|
@@ -1737,61 +1684,31 @@ sm-master pointer + cleanup):
|
|
|
1737
1684
|
sm tutorial master
|
|
1738
1685
|
```
|
|
1739
1686
|
|
|
1740
|
-
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
**Cleanup, choose ONE of the two paths**. Decide programmatically
|
|
1745
|
-
before showing the closing message: list the cwd (`ls -A <cwd>`)
|
|
1746
|
-
and compare against the set of paths this tutorial owns. If the
|
|
1747
|
-
ONLY entries are tutorial-owned, the cwd looks dedicated and the
|
|
1748
|
-
bulk path is safe. If there are unrelated entries (git repo,
|
|
1749
|
-
unrelated source, the tester's day-to-day work), use the per-file
|
|
1750
|
-
path instead. **Never recommend `rm -rf <cwd>` when the cwd
|
|
1751
|
-
contains any path skill-map did not put there**, the tester might
|
|
1752
|
-
be running the tutorial inside their actual work dir (a frequent
|
|
1753
|
-
finding from real sessions).
|
|
1754
|
-
|
|
1755
|
-
If the cwd is dedicated, render:
|
|
1687
|
+
If the deep-dive ran, the tester's second terminal is still inside
|
|
1688
|
+
`link-validation/hijoA/` from Step 15; send them back to the
|
|
1689
|
+
tutorial root before the cleanup line. **Skip this whole block if
|
|
1690
|
+
they stopped at the demo** (they never left the root).
|
|
1756
1691
|
|
|
1757
|
-
>
|
|
1758
|
-
>
|
|
1759
|
-
> cd ~ && rm -rf <cwd>
|
|
1760
|
-
>
|
|
1761
|
-
> Thanks for testing skill-map!
|
|
1692
|
+
> Last thing, go back to the tutorial root:
|
|
1762
1693
|
|
|
1763
|
-
|
|
1764
|
-
|
|
1765
|
-
|
|
1766
|
-
the "start over" branch below):
|
|
1694
|
+
```bash
|
|
1695
|
+
cd ../..
|
|
1696
|
+
```
|
|
1767
1697
|
|
|
1768
|
-
|
|
1769
|
-
|
|
1770
|
-
|
|
1771
|
-
|
|
1772
|
-
|
|
1773
|
-
|
|
1774
|
-
|
|
1775
|
-
|
|
1776
|
-
>
|
|
1777
|
-
>
|
|
1778
|
-
>
|
|
1779
|
-
>
|
|
1780
|
-
>
|
|
1781
|
-
>
|
|
1782
|
-
> notes/private-credentials.md
|
|
1783
|
-
> link-validation/ (if Step 14 ran)
|
|
1784
|
-
> export.* (if present)
|
|
1785
|
-
> dump.sql (if present)
|
|
1786
|
-
> ```
|
|
1787
|
-
>
|
|
1788
|
-
> Do NOT `rm -rf <provider_dir>/` or `notes/` as directories,
|
|
1789
|
-
> remove only the tutorial-owned files inside in case you have
|
|
1790
|
-
> unrelated files there. `link-validation/` IS safe to remove as
|
|
1791
|
-
> a whole directory, the agent created it from scratch in Step 14
|
|
1792
|
-
> and nothing else lives inside it.
|
|
1793
|
-
>
|
|
1794
|
-
> Thanks for testing skill-map!
|
|
1698
|
+
Then close with the thanks plus a one-line cleanup. **Keep it to a
|
|
1699
|
+
single line, never a file inventory.** Pick the shape from
|
|
1700
|
+
`ls -A <cwd>`: if every entry is tutorial-owned the cwd is
|
|
1701
|
+
dedicated and `rm -rf` is safe; otherwise point only at the
|
|
1702
|
+
tutorial-owned paths. **Never recommend `rm -rf <cwd>` when the
|
|
1703
|
+
cwd holds anything skill-map did not create** (testers often run
|
|
1704
|
+
this inside their real work dir).
|
|
1705
|
+
|
|
1706
|
+
> Thanks for testing skill-map! To clean up: a throwaway dir is
|
|
1707
|
+
> just `cd ~ && rm -rf <cwd>`; if it lives inside your own work,
|
|
1708
|
+
> delete only what the tutorial created (`.skill-map/`, the fixture
|
|
1709
|
+
> `.md` / `.sm` files, and `link-validation/`) and leave the rest.
|
|
1710
|
+
> If anything felt off in any step, tell me and I'll log it in
|
|
1711
|
+
> `findings.md` before you close.
|
|
1795
1712
|
|
|
1796
1713
|
## Resume / restart
|
|
1797
1714
|
|
|
@@ -1800,9 +1717,9 @@ the cwd, start like this (do NOT repeat pre-flight from scratch):
|
|
|
1800
1717
|
|
|
1801
1718
|
> I see you already started the tutorial.
|
|
1802
1719
|
>
|
|
1803
|
-
> You're at step <N> of
|
|
1804
|
-
> (steps 1-
|
|
1805
|
-
>
|
|
1720
|
+
> You're at step <N> of 9 (or "you've already completed the demo
|
|
1721
|
+
> (steps 1-9) and you're on step <M> of 6 of the deep-dive (steps
|
|
1722
|
+
> 10-15)", depending on the yaml state).
|
|
1806
1723
|
>
|
|
1807
1724
|
> 1. **Continue** from where you left off
|
|
1808
1725
|
> 2. **Start over**: wipes all the tutorial content in this dir
|
|
@@ -1841,7 +1758,7 @@ anything**:
|
|
|
1841
1758
|
> notes/todo.md
|
|
1842
1759
|
> notes/demo-guideline.md
|
|
1843
1760
|
> notes/private-credentials.md
|
|
1844
|
-
> link-validation/ (if Step
|
|
1761
|
+
> link-validation/ (if Step 15 ran)
|
|
1845
1762
|
> export.* (if present)
|
|
1846
1763
|
> dump.sql (if present)
|
|
1847
1764
|
> ```
|
|
@@ -1862,12 +1779,12 @@ anything**:
|
|
|
1862
1779
|
`<provider_dir>/skills`), then `notes/` and `<provider_dir>/`,
|
|
1863
1780
|
each one only if empty (silent failure if not). `link-validation/`
|
|
1864
1781
|
IS safe to remove recursively when present, the agent created it
|
|
1865
|
-
from scratch in Step
|
|
1782
|
+
from scratch in Step 15 and nothing else lives inside it. Then
|
|
1866
1783
|
start everything from pre-flight.
|
|
1867
1784
|
|
|
1868
1785
|
## Edge cases
|
|
1869
1786
|
|
|
1870
|
-
- **Tester doesn't have Node
|
|
1787
|
+
- **Tester doesn't have Node 24+** → guide them to `nvm` or
|
|
1871
1788
|
nodejs.org. Don't try to install Node for them.
|
|
1872
1789
|
- **Port 4242 in use** → bare `sm` doesn't accept flags (it's a
|
|
1873
1790
|
shorthand for `sm serve` with defaults). Tell the tester to
|