@skill-map/cli 0.16.2 → 0.16.3
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/README.md +1 -1
- package/dist/cli/tutorial/sm-tutorial.md +143 -109
- package/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/kernel/index.js +1 -1
- package/dist/kernel/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -37,7 +37,7 @@ claude # open Claude Code in the same dir
|
|
|
37
37
|
ejecutá @sm-tutorial.md
|
|
38
38
|
```
|
|
39
39
|
|
|
40
|
-
Claude loads the SKILL.md and runs the demo (~
|
|
40
|
+
Claude loads the SKILL.md and runs the demo (~10 min): fixture, `sm init`, live UI, five sub-steps that show the watcher in action, plus the `.skillmapignore` hide-a-file flow. An optional deep-dive (~30-40 min) covers the rest of the CLI surface (`list`, `graph`, `export`, `check`, `plugins`).
|
|
41
41
|
|
|
42
42
|
The verb `sm tutorial` writes a single self-contained file; the SKILL.md ships inside this package, so no extra install needed.
|
|
43
43
|
|
|
@@ -3,7 +3,7 @@ name: sm-tutorial
|
|
|
3
3
|
description: |
|
|
4
4
|
Interactive tutorial for testing the skill-map CLI and UI. Aimed at
|
|
5
5
|
testers who are downloading the tool for the first time. The flow
|
|
6
|
-
starts with a quick demo (~
|
|
6
|
+
starts with a quick demo (~10 min) that showcases the live UI — the
|
|
7
7
|
tester runs `sm`, opens the browser, and watches the UI update as
|
|
8
8
|
the agent edits `.md` files — and at the end offers an optional
|
|
9
9
|
deep-dive (~30-40 min) covering the rest of the CLI with flags and
|
|
@@ -23,7 +23,7 @@ validated in pre-flight), narrate what you did, show the commands to
|
|
|
23
23
|
type, and wait for the tester to run them and confirm.
|
|
24
24
|
|
|
25
25
|
**Internal structure (do NOT mention this to the tester)**: the tutorial
|
|
26
|
-
has a short first phase (~
|
|
26
|
+
has a short first phase (~10 min) that demonstrates the live UI, and an
|
|
27
27
|
optional second phase (~30-40 min) covering the rest of the CLI.
|
|
28
28
|
|
|
29
29
|
> ⚠️ For the tester this is **a single continuous flow**. Never use
|
|
@@ -142,7 +142,7 @@ optional second phase (~30-40 min) covering the rest of the CLI.
|
|
|
142
142
|
calls for a change to `.skillmapignore`,
|
|
143
143
|
`.skill-map/settings.json`,
|
|
144
144
|
`.skill-map/settings.local.json`, or `.gitignore` AS PART
|
|
145
|
-
OF A
|
|
145
|
+
OF A LESSON (e.g. Step 2.5 hides a
|
|
146
146
|
private node by appending a pattern), you describe the
|
|
147
147
|
edit in a blockquote and the tester applies it in their
|
|
148
148
|
own editor. The pedagogical point is that those files
|
|
@@ -151,28 +151,26 @@ optional second phase (~30-40 min) covering the rest of the CLI.
|
|
|
151
151
|
teach moment defeats the lesson.
|
|
152
152
|
2. **After every command block, stop and wait.** The tester pastes
|
|
153
153
|
the output or replies "OK" / "done". Only then do you advance.
|
|
154
|
-
3. **Persist progress after every step
|
|
154
|
+
3. **Persist progress after every step.** Update
|
|
155
155
|
`tutorial-state.yml` with `done` / `failed` / `skipped` and a
|
|
156
156
|
timestamp.
|
|
157
157
|
4. **If the tester reports anything weird**, offer to record it in
|
|
158
158
|
`findings.md` (in the cwd). Those are the bugs the team will read.
|
|
159
|
-
5. **One
|
|
159
|
+
5. **One step at a time.** Finish, ask if they want to continue, do
|
|
160
160
|
the next one.
|
|
161
161
|
6. **If `tutorial-state.yml` already exists in the cwd** when invoked,
|
|
162
162
|
do not overwrite anything. Read it, show progress, offer to
|
|
163
163
|
*continue* or *start over* (the latter requires explicit
|
|
164
164
|
confirmation and wipes the tutorial content).
|
|
165
|
-
7. **Mirror the tester's language**:
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
bare ` ```bash ` fences (no `> ` prefix) so the tester can copy
|
|
175
|
-
cleanly.
|
|
165
|
+
7. **Mirror the tester's language**: see §Tone for the language rules
|
|
166
|
+
(neutral Spanish — `tú` form, NOT rioplatense — when the tester
|
|
167
|
+
writes in Spanish; plain English otherwise). Fixture human prose
|
|
168
|
+
also follows the tester's language, per the Tone bullet on fixture
|
|
169
|
+
content. Internal instructions in this SKILL.md stay in English
|
|
170
|
+
so any maintainer can read them. Blockquote literals in this
|
|
171
|
+
document are the messages you actually say to the tester —
|
|
172
|
+
translate them on the fly. Code blocks below them stay as bare
|
|
173
|
+
` ```bash ` fences (no `> ` prefix) so the tester can copy cleanly.
|
|
176
174
|
|
|
177
175
|
## Pre-flight
|
|
178
176
|
|
|
@@ -206,13 +204,17 @@ parentheticals or explanations of which items you ignored:
|
|
|
206
204
|
|
|
207
205
|
(or, in Spanish: "Listo, el dir está limpio. Sigamos.")
|
|
208
206
|
|
|
209
|
-
|
|
207
|
+
**Order of checks** (apply in this order — do not skip steps):
|
|
210
208
|
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
209
|
+
1. Look at the **raw** `ls -A` output, before filtering. If
|
|
210
|
+
`tutorial-state.yml` is present → **resume mode**. Skip the
|
|
211
|
+
rest of this section and follow the resume branch (see
|
|
212
|
+
§Resume / restart).
|
|
213
|
+
2. Otherwise, apply the ignored-items filter from the whitelist
|
|
214
|
+
above and inspect what remains:
|
|
215
|
+
- Empty after filtering → fresh dir. **Proceed.**
|
|
216
|
+
- Anything else (files, dotfiles, other dirs) → **stop and
|
|
217
|
+
tell** the tester:
|
|
216
218
|
|
|
217
219
|
> I detected files in here:
|
|
218
220
|
>
|
|
@@ -290,7 +292,7 @@ permissions issue. Suggest `node --version` and walk them through it.
|
|
|
290
292
|
|
|
291
293
|
### 3. Create the initial fixture (one node only)
|
|
292
294
|
|
|
293
|
-
The tutorial builds the graph **progressively** in five
|
|
295
|
+
The tutorial builds the graph **progressively** in five sub-steps during
|
|
294
296
|
Step 2 (Live UI). Right now, in pre-flight, you only create **one
|
|
295
297
|
file** — a single agent — so the tester's first look at the UI
|
|
296
298
|
shows exactly one node. The other four kinds (skill, command, hook,
|
|
@@ -338,7 +340,7 @@ Rules:
|
|
|
338
340
|
If you spot anything weird during the tutorial, log it here.
|
|
339
341
|
|
|
340
342
|
Per finding:
|
|
341
|
-
- **
|
|
343
|
+
- **Step**: <id>
|
|
342
344
|
- **Command**: `sm ...`
|
|
343
345
|
- **Expected**: ...
|
|
344
346
|
- **Got**: ...
|
|
@@ -374,24 +376,24 @@ short_steps:
|
|
|
374
376
|
- id: "3-handoff"
|
|
375
377
|
title: "Wrap-up of the demo and offer to keep going"
|
|
376
378
|
status: "pending"
|
|
377
|
-
|
|
378
|
-
- id: "
|
|
379
|
+
long_steps:
|
|
380
|
+
- id: "4-tester-edits"
|
|
379
381
|
title: "Tester edits live (extends the UI demo)"
|
|
380
382
|
status: "pending"
|
|
381
|
-
- id: "
|
|
383
|
+
- id: "5-cli-browse"
|
|
382
384
|
title: "Browse CLI: list / show / check"
|
|
383
385
|
status: "pending"
|
|
384
386
|
verbs: ["sm list", "sm show", "sm check"]
|
|
385
|
-
- id: "
|
|
387
|
+
- id: "6-ascii"
|
|
386
388
|
title: "ASCII: graph + export"
|
|
387
389
|
status: "pending"
|
|
388
390
|
verbs: ["sm graph", "sm export"]
|
|
389
|
-
- id: "
|
|
390
|
-
title: "Issues
|
|
391
|
+
- id: "7-issues"
|
|
392
|
+
title: "Issues: broken refs"
|
|
391
393
|
status: "pending"
|
|
392
|
-
verbs: ["sm
|
|
393
|
-
"sm
|
|
394
|
-
- id: "
|
|
394
|
+
verbs: ["sm check", "sm check --rules broken-ref",
|
|
395
|
+
"sm check --json"]
|
|
396
|
+
- id: "8-plugins"
|
|
395
397
|
title: "Plugins"
|
|
396
398
|
status: "pending"
|
|
397
399
|
verbs: ["sm plugins list", "sm plugins show",
|
|
@@ -400,9 +402,9 @@ long_stages:
|
|
|
400
402
|
findings_file: "./findings.md"
|
|
401
403
|
```
|
|
402
404
|
|
|
403
|
-
## Per-step
|
|
405
|
+
## Per-step cycle
|
|
404
406
|
|
|
405
|
-
For every step in the
|
|
407
|
+
For every step in the tutorial:
|
|
406
408
|
|
|
407
409
|
1. **Announcement**: "Step N: `<title>`. ~M minutes." One sentence
|
|
408
410
|
of context.
|
|
@@ -421,7 +423,7 @@ to resume (re-invoke the skill from the same dir).
|
|
|
421
423
|
|
|
422
424
|
---
|
|
423
425
|
|
|
424
|
-
## DEMO (~
|
|
426
|
+
## DEMO (~10 min)
|
|
425
427
|
|
|
426
428
|
Always runs. The pedagogical hook is the live UI.
|
|
427
429
|
|
|
@@ -451,7 +453,7 @@ sm-tutorial.md
|
|
|
451
453
|
findings.md
|
|
452
454
|
tutorial-state.yml
|
|
453
455
|
sm-tutorial-report.md
|
|
454
|
-
# tutorial outputs that may land at the root if a
|
|
456
|
+
# tutorial outputs that may land at the root if a step forgets to clean up
|
|
455
457
|
export.*
|
|
456
458
|
dump.sql
|
|
457
459
|
```
|
|
@@ -465,24 +467,24 @@ starts the UI server with the watcher built in. One process, one
|
|
|
465
467
|
terminal: it boots the server, scans the `.md` files, detects
|
|
466
468
|
changes, and pushes events over WebSocket to the live UI.
|
|
467
469
|
|
|
468
|
-
This step has **five
|
|
469
|
-
files while the server stays up — except
|
|
470
|
-
tester takes the keyboard for the first time.
|
|
470
|
+
This step has **five sub-steps** (2.1 through 2.5), each one driven
|
|
471
|
+
by you editing files while the server stays up — except Step 2.3,
|
|
472
|
+
where the tester takes the keyboard for the first time.
|
|
471
473
|
|
|
472
|
-
1. **
|
|
473
|
-
2. **
|
|
474
|
+
1. **Step 2.1 (boot)** — one node alone (the agent).
|
|
475
|
+
2. **Step 2.2 (kinds)** — the four other kinds appear as new nodes,
|
|
474
476
|
still unconnected.
|
|
475
|
-
3. **
|
|
477
|
+
3. **Step 2.3 (your first edit)** — the **tester** edits the
|
|
476
478
|
`description` of the agent's `.md` and watches the card
|
|
477
479
|
refresh in the graph.
|
|
478
|
-
4. **
|
|
480
|
+
4. **Step 2.4 (connectors)** — the connectors light up between all
|
|
479
481
|
five nodes.
|
|
480
|
-
5. **
|
|
482
|
+
5. **Step 2.5 (ignore)** — a private file appears, then disappears
|
|
481
483
|
the moment a pattern is added to `.skillmapignore`.
|
|
482
484
|
|
|
483
485
|
The pedagogical arc: a single dot → a constellation of dots →
|
|
484
486
|
your own edit lands → graph → a graph that respects the user's
|
|
485
|
-
ignore list. Each
|
|
487
|
+
ignore list. Each sub-step stops at a confirm prompt before you do
|
|
486
488
|
the next.
|
|
487
489
|
|
|
488
490
|
**Command** (one terminal):
|
|
@@ -491,26 +493,18 @@ the next.
|
|
|
491
493
|
sm
|
|
492
494
|
```
|
|
493
495
|
|
|
494
|
-
Before
|
|
495
|
-
they can watch the magic happen without alt-tabbing every
|
|
496
|
+
Before Step 2.1, ask the tester to set up a **side-by-side view** so
|
|
497
|
+
they can watch the magic happen without alt-tabbing every sub-step.
|
|
496
498
|
Tell the tester:
|
|
497
499
|
|
|
498
|
-
>
|
|
499
|
-
>
|
|
500
|
-
>
|
|
501
|
-
>
|
|
502
|
-
>
|
|
503
|
-
> 2. **This terminal** — the one where you're talking to me. You'll
|
|
504
|
-
> see me announce each reveal here, then confirm what you see
|
|
505
|
-
> in the browser.
|
|
506
|
-
>
|
|
507
|
-
> The third window — the terminal running `sm` — you can leave
|
|
508
|
-
> minimized or off to the side; it will just print scan progress
|
|
500
|
+
> Now arrange your screen so the **browser** (where the graph will
|
|
501
|
+
> update in real time) and **this chat** are both visible at once
|
|
502
|
+
> — typical layout is browser on the left half, chat on the right
|
|
503
|
+
> (or any split that lets you see both). The terminal running
|
|
504
|
+
> `sm` can stay off to the side; it just prints scan progress
|
|
509
505
|
> lines and you don't need to read them.
|
|
510
506
|
>
|
|
511
|
-
>
|
|
512
|
-
> right half. Or any split that lets you see both at once. Tell
|
|
513
|
-
> me when you're set up and we start.
|
|
507
|
+
> Tell me when you're set up and we start.
|
|
514
508
|
|
|
515
509
|
Wait for confirmation before moving on. Once they're ready, prompt
|
|
516
510
|
them to launch the server and open the link it prints — without
|
|
@@ -524,7 +518,7 @@ truth (it logs the bound `http://host:port` after listen):
|
|
|
524
518
|
|
|
525
519
|
Wait for confirmation that the page loaded.
|
|
526
520
|
|
|
527
|
-
####
|
|
521
|
+
#### Step 2.1 — the lone agent
|
|
528
522
|
|
|
529
523
|
Tell the tester:
|
|
530
524
|
|
|
@@ -542,7 +536,7 @@ Tell the tester:
|
|
|
542
536
|
|
|
543
537
|
Wait for confirmation.
|
|
544
538
|
|
|
545
|
-
####
|
|
539
|
+
#### Step 2.2 — the other four kinds appear (the magic)
|
|
546
540
|
|
|
547
541
|
Leave the browser open and the terminal with `sm` running. You
|
|
548
542
|
create the four missing kinds **without any cross-fixture links**
|
|
@@ -654,13 +648,13 @@ Tell the tester:
|
|
|
654
648
|
|
|
655
649
|
Wait for confirmation.
|
|
656
650
|
|
|
657
|
-
####
|
|
651
|
+
#### Step 2.3 — your first edit
|
|
658
652
|
|
|
659
653
|
Up to here you've been watching the agent write files. Now hand
|
|
660
654
|
the keyboard over: the lesson is that the watcher reacts to
|
|
661
655
|
**any** `.md` edit under the cwd, not just to files the agent
|
|
662
656
|
authors. After this beat, the tester has the muscle memory for
|
|
663
|
-
"save → graph updates", which
|
|
657
|
+
"save → graph updates", which Step 2.5 (`.skillmapignore`) reuses
|
|
664
658
|
verbatim.
|
|
665
659
|
|
|
666
660
|
Tell the tester:
|
|
@@ -672,11 +666,10 @@ Tell the tester:
|
|
|
672
666
|
> change will be obvious.
|
|
673
667
|
>
|
|
674
668
|
> Now open `.claude/agents/demo-agent.md` in your editor of
|
|
675
|
-
> choice. In the **frontmatter**
|
|
676
|
-
> the
|
|
677
|
-
>
|
|
678
|
-
>
|
|
679
|
-
> Save the file.
|
|
669
|
+
> choice. In the **frontmatter** at the top of the file, change
|
|
670
|
+
> the `description:` field to any text you want — the actual
|
|
671
|
+
> content does not matter, just make it different from what's
|
|
672
|
+
> there now. Save the file.
|
|
680
673
|
>
|
|
681
674
|
> Watch the browser. The `demo-agent` card should refresh its
|
|
682
675
|
> description in real time, no reload, no Ctrl+C — same watcher
|
|
@@ -689,7 +682,7 @@ Wait for confirmation. You MAY use `Read` on the file afterwards
|
|
|
689
682
|
to verify the change landed (read-only, allowed under Inviolable
|
|
690
683
|
rule #1) before moving on.
|
|
691
684
|
|
|
692
|
-
####
|
|
685
|
+
#### Step 2.4 — the connectors light up
|
|
693
686
|
|
|
694
687
|
Now you edit the existing files to add the cross-fixture links —
|
|
695
688
|
each one becomes a connector in the graph. Apply with `Edit` (do
|
|
@@ -743,22 +736,22 @@ Tell the tester:
|
|
|
743
736
|
> Confirm. If a connector is missing, refresh the browser and tell
|
|
744
737
|
> me.
|
|
745
738
|
|
|
746
|
-
Wait for confirmation. **Do NOT move on to
|
|
747
|
-
connectors are confirmed visible —
|
|
739
|
+
Wait for confirmation. **Do NOT move on to Step 2.5** until the
|
|
740
|
+
connectors are confirmed visible — Step 2.5 reuses the same live UI
|
|
748
741
|
session.
|
|
749
742
|
|
|
750
|
-
####
|
|
743
|
+
#### Step 2.5 — silence a private file via `.skillmapignore`
|
|
751
744
|
|
|
752
|
-
The first four
|
|
753
|
-
edits (yours and theirs).
|
|
745
|
+
The first four sub-steps showed the watcher picking up new files and
|
|
746
|
+
edits (yours and theirs). Step 2.5 flips the direction: a file the
|
|
754
747
|
tester DOES NOT want
|
|
755
748
|
in the graph (a draft, a scratch file, a secret) gets hidden by a
|
|
756
749
|
single line in `.skillmapignore`. Same live mechanism — no restart.
|
|
757
750
|
|
|
758
751
|
`sm init` already wrote a starter `.skillmapignore` at the scope
|
|
759
|
-
root. The flow has three
|
|
752
|
+
root. The flow has three sub-steps:
|
|
760
753
|
|
|
761
|
-
**
|
|
754
|
+
**Step 2.5.1 — you create one new fixture file (the agent does this).**
|
|
762
755
|
|
|
763
756
|
`Write` `notes/private-credentials.md` — kind `note`, simulates a
|
|
764
757
|
file the tester would never want surfacing publicly:
|
|
@@ -783,7 +776,7 @@ Confirm the file appears in the graph as a sixth node
|
|
|
783
776
|
(`notes/private-credentials`). The watcher sees it like any
|
|
784
777
|
other `.md` — that's the point of the demo.
|
|
785
778
|
|
|
786
|
-
**
|
|
779
|
+
**Step 2.5.2 — you show the project structure (the agent does this).**
|
|
787
780
|
|
|
788
781
|
Before asking the tester to touch `.skillmapignore`, give them a
|
|
789
782
|
mental map of the folder so they know where the file lives and
|
|
@@ -791,8 +784,7 @@ what's around it. Use `Bash` (`ls -la` and `ls -la notes/` if a
|
|
|
791
784
|
deeper view helps) and present the listing inside a blockquote so
|
|
792
785
|
the tester sees what their cwd holds:
|
|
793
786
|
|
|
794
|
-
>
|
|
795
|
-
> ahora mismo:
|
|
787
|
+
> One last step. Here's what your directory looks like right now:
|
|
796
788
|
>
|
|
797
789
|
> ```
|
|
798
790
|
> . ← your cwd
|
|
@@ -817,7 +809,7 @@ Adjust the actual tree shown to whatever `ls -la` returns — the
|
|
|
817
809
|
goal is "tester recognises their own filesystem", not a copy of
|
|
818
810
|
the snippet above.
|
|
819
811
|
|
|
820
|
-
**
|
|
812
|
+
**Step 2.5.3 — the tester edits `.skillmapignore` (NOT the agent).**
|
|
821
813
|
|
|
822
814
|
Per Inviolable rule #1, you DO NOT touch `.skillmapignore` with
|
|
823
815
|
your `Edit` tool. Tell the tester to do it from their editor:
|
|
@@ -854,7 +846,7 @@ Mark `2-ui-live: done`.
|
|
|
854
846
|
### Step 3 — Wrap-up of the demo and offer to keep going (30 s)
|
|
855
847
|
|
|
856
848
|
> All set! That's the heart of skill-map: you edit a `.md` and the
|
|
857
|
-
> UI sees it instantly. In **~
|
|
849
|
+
> UI sees it instantly. In **~10 minutes** you've already seen the
|
|
858
850
|
> full flow.
|
|
859
851
|
>
|
|
860
852
|
> If you want, **we can keep going deeper**: I'll walk you through
|
|
@@ -880,7 +872,7 @@ If they say **1**:
|
|
|
880
872
|
|
|
881
873
|
## DEEP-DIVE (~30-40 min) — opt-in
|
|
882
874
|
|
|
883
|
-
Strictly new
|
|
875
|
+
Strictly new steps. Does not re-expand demo steps.
|
|
884
876
|
|
|
885
877
|
### Level question (one time only, on entry)
|
|
886
878
|
|
|
@@ -900,12 +892,12 @@ Save into `tester.level` and modulate:
|
|
|
900
892
|
- **Level 3**: dense blocks, flags included, no explanations of
|
|
901
893
|
basic concepts.
|
|
902
894
|
|
|
903
|
-
###
|
|
895
|
+
### Step 4 — Tester edits live (~3 min)
|
|
904
896
|
|
|
905
897
|
**Context**: in the demo you edited. Now it's their turn to confirm
|
|
906
898
|
they can do it from their editor.
|
|
907
899
|
|
|
908
|
-
This
|
|
900
|
+
This step needs the server running. **Check first** before asking
|
|
909
901
|
them to launch it: many testers leave it running from Step 2 and
|
|
910
902
|
the demo wraps without an explicit Ctrl+C. Word the prompt as a
|
|
911
903
|
conditional, e.g. "If the server from Step 2 is still up, leave it
|
|
@@ -917,16 +909,14 @@ process trying to bind the same port and confusing the tester.
|
|
|
917
909
|
> editor of choice and remove the line that links to `demo-agent.md`.
|
|
918
910
|
> Save. Watch the UI.
|
|
919
911
|
>
|
|
920
|
-
> Expected: the `demo-skill → demo-agent` connector disappears
|
|
921
|
-
>
|
|
922
|
-
> an orphan (we'll create a similar dangling situation in stage L4
|
|
923
|
-
> to see how `sm check` flags it).
|
|
912
|
+
> Expected: the `demo-skill → demo-agent` connector disappears in
|
|
913
|
+
> real time. The two nodes stay in the graph; only the edge goes.
|
|
924
914
|
|
|
925
915
|
You verify by reading `.claude/skills/demo-skill/SKILL.md` to confirm
|
|
926
916
|
the change was applied. Once they confirm, ask them to **Ctrl+C**
|
|
927
917
|
the server.
|
|
928
918
|
|
|
929
|
-
###
|
|
919
|
+
### Step 5 — Browse CLI: list / show / check (~3 min)
|
|
930
920
|
|
|
931
921
|
```bash
|
|
932
922
|
sm list
|
|
@@ -938,10 +928,10 @@ sm check
|
|
|
938
928
|
|
|
939
929
|
Expected: you see the 5 fixture nodes listed with their kind;
|
|
940
930
|
`check` runs the deterministic rules and reports a clean fixture
|
|
941
|
-
(no issues at this point — we will plant one in
|
|
931
|
+
(no issues at this point — we will plant one in step 7 and watch
|
|
942
932
|
the rule catch it).
|
|
943
933
|
|
|
944
|
-
###
|
|
934
|
+
### Step 6 — ASCII: graph + export (~3 min)
|
|
945
935
|
|
|
946
936
|
```bash
|
|
947
937
|
sm graph
|
|
@@ -954,7 +944,7 @@ ls -la export.*
|
|
|
954
944
|
`graph` draws an ASCII tree. `export` filters and serialises to md
|
|
955
945
|
or json.
|
|
956
946
|
|
|
957
|
-
###
|
|
947
|
+
### Step 7 — Issues: broken refs (~3 min)
|
|
958
948
|
|
|
959
949
|
`broken-ref` is one of the deterministic rules `sm check` runs.
|
|
960
950
|
We'll plant one and watch it surface — that's the easiest way to
|
|
@@ -992,7 +982,7 @@ rest of the deep-dive doesn't depend on it.
|
|
|
992
982
|
> orphans of that kind, so `sm orphans` will print "No orphan /
|
|
993
983
|
> auto-rename issues" — that's expected, not a bug.
|
|
994
984
|
|
|
995
|
-
###
|
|
985
|
+
### Step 8 — Plugins (~3 min)
|
|
996
986
|
|
|
997
987
|
```bash
|
|
998
988
|
sm plugins list
|
|
@@ -1049,8 +1039,8 @@ template:
|
|
|
1049
1039
|
- **Depth reached**: <basic | full>
|
|
1050
1040
|
- **Tester**: level <N> (if applicable)
|
|
1051
1041
|
- **Tutorial directory**: <cwd>
|
|
1052
|
-
- **Steps completed**:
|
|
1053
|
-
- **
|
|
1042
|
+
- **Steps completed**: N / 3 demo + X / 5 deep-dive (if applicable)
|
|
1043
|
+
- **Steps skipped**: Y (if applicable)
|
|
1054
1044
|
- **Total time**: ~<computed from timestamps>
|
|
1055
1045
|
|
|
1056
1046
|
## Environment
|
|
@@ -1088,27 +1078,71 @@ the cwd, start like this (do NOT repeat pre-flight from scratch):
|
|
|
1088
1078
|
|
|
1089
1079
|
> I see you already started the tutorial.
|
|
1090
1080
|
>
|
|
1091
|
-
> You're at step <N> of
|
|
1092
|
-
> steps and you're on
|
|
1093
|
-
> the yaml state).
|
|
1081
|
+
> You're at step <N> of 3 (or "you've already completed the demo
|
|
1082
|
+
> (steps 1-3) and you're on step <M> of 5 of the deep-dive (steps
|
|
1083
|
+
> 4-8)", depending on the yaml state).
|
|
1094
1084
|
>
|
|
1095
1085
|
> 1. **Continue** from where you left off
|
|
1096
1086
|
> 2. **Start over** — wipes all the tutorial content in this dir
|
|
1097
1087
|
> (asks for confirmation)
|
|
1098
1088
|
> 3. **Exit** without touching anything
|
|
1099
1089
|
|
|
1100
|
-
If they pick "start over",
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
`
|
|
1104
|
-
|
|
1105
|
-
|
|
1090
|
+
If they pick "start over", do these checks **before deleting
|
|
1091
|
+
anything**:
|
|
1092
|
+
|
|
1093
|
+
1. Read `tutorial.cwd` from `tutorial-state.yml` and compare with
|
|
1094
|
+
the current `pwd`. If they don't match, **refuse**:
|
|
1095
|
+
|
|
1096
|
+
> This `tutorial-state.yml` was generated for a different
|
|
1097
|
+
> directory (`<saved cwd>`). The current dir is `<pwd>`. I'm
|
|
1098
|
+
> refusing to wipe — your `.claude/`, `notes/`, etc. here are
|
|
1099
|
+
> probably yours, not the tutorial's. Move to `<saved cwd>` and
|
|
1100
|
+
> re-invoke me from there, or delete `tutorial-state.yml` by
|
|
1101
|
+
> hand if you really want to start fresh here.
|
|
1102
|
+
|
|
1103
|
+
2. If the cwd matches, show the tester the exact list of paths
|
|
1104
|
+
you'll delete and ask for an explicit typed confirmation:
|
|
1105
|
+
|
|
1106
|
+
> Start over will delete these paths from `<cwd>`:
|
|
1107
|
+
>
|
|
1108
|
+
> ```
|
|
1109
|
+
> tutorial-state.yml
|
|
1110
|
+
> findings.md
|
|
1111
|
+
> .skillmapignore
|
|
1112
|
+
> .skill-map/
|
|
1113
|
+
> .claude/agents/demo-agent.md
|
|
1114
|
+
> .claude/commands/demo-command.md
|
|
1115
|
+
> .claude/hooks/demo-hook.md
|
|
1116
|
+
> .claude/skills/demo-skill/
|
|
1117
|
+
> notes/todo.md
|
|
1118
|
+
> notes/private-credentials.md
|
|
1119
|
+
> sm-tutorial-report.md (if present)
|
|
1120
|
+
> export.* (if present)
|
|
1121
|
+
> dump.sql (if present)
|
|
1122
|
+
> ```
|
|
1123
|
+
>
|
|
1124
|
+
> Type **`yes, wipe`** (exact text) to confirm. Anything else
|
|
1125
|
+
> cancels.
|
|
1126
|
+
|
|
1127
|
+
3. Only on the literal `yes, wipe` reply, delete those exact paths.
|
|
1128
|
+
Do NOT recursively `rm -rf` `.claude/` or `notes/` as
|
|
1129
|
+
directories — only the specific tutorial-owned files inside, in
|
|
1130
|
+
case the tester has unrelated files there. After deletion, also
|
|
1131
|
+
`rmdir` `.claude/agents`, `.claude/commands`, `.claude/hooks`,
|
|
1132
|
+
`.claude/skills`, `notes/`, and `.claude/` if and only if they
|
|
1133
|
+
are empty (silent failure if not). Then start everything from
|
|
1134
|
+
pre-flight.
|
|
1106
1135
|
|
|
1107
1136
|
## Edge cases
|
|
1108
1137
|
|
|
1109
1138
|
- **Tester doesn't have Node 20+** → guide them to `nvm` or
|
|
1110
1139
|
nodejs.org. Don't try to install Node for them.
|
|
1111
|
-
- **Port 4242 in use** →
|
|
1140
|
+
- **Port 4242 in use** → bare `sm` doesn't accept flags (it's a
|
|
1141
|
+
shorthand for `sm serve` with defaults). Tell the tester to
|
|
1142
|
+
switch verbs: stop the failed `sm`, then run
|
|
1143
|
+
`sm serve --port 4243`. The browser link printed by the server
|
|
1144
|
+
changes accordingly — they should open the new URL, not the
|
|
1145
|
+
default 4242.
|
|
1112
1146
|
- **`sm` doesn't pick up changes on WSL** → known on WSL2 with
|
|
1113
1147
|
files under `/mnt/c/`. Suggest exiting, running `mkdir
|
|
1114
1148
|
~/sm-tutorial && cd ~/sm-tutorial` (Linux-native filesystem), and
|
|
@@ -1123,7 +1157,7 @@ everything from pre-flight.
|
|
|
1123
1157
|
|
|
1124
1158
|
- Run `sm` verbs for the tester (except `sm version` ONCE in
|
|
1125
1159
|
pre-flight).
|
|
1126
|
-
- Advance to the next step
|
|
1160
|
+
- Advance to the next step without confirmation.
|
|
1127
1161
|
- Modify files outside the tutorial cwd.
|
|
1128
1162
|
- Ask them to `cd` outside the tutorial cwd.
|
|
1129
1163
|
- Skip the level question when entering the deep-dive.
|
package/dist/cli.js
CHANGED
|
@@ -7374,7 +7374,7 @@ import { Command as Command8, Option as Option8 } from "clipanion";
|
|
|
7374
7374
|
// package.json
|
|
7375
7375
|
var package_default = {
|
|
7376
7376
|
name: "@skill-map/cli",
|
|
7377
|
-
version: "0.16.
|
|
7377
|
+
version: "0.16.3",
|
|
7378
7378
|
description: "skill-map reference implementation \u2014 kernel + CLI + adapters.",
|
|
7379
7379
|
license: "MIT",
|
|
7380
7380
|
type: "module",
|