@skill-map/cli 0.26.1 → 0.27.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.md +241 -138
- package/dist/cli/tutorial/sm-tutorial.md +264 -270
- package/dist/cli.js +4219 -4259
- package/dist/cli.js.map +1 -1
- package/dist/conformance/index.js.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/kernel/index.d.ts +1 -10
- package/dist/kernel/index.js +4 -4
- package/dist/kernel/index.js.map +1 -1
- package/dist/migrations/001_initial.sql +7 -4
- package/dist/ui/chunk-LTSP2F6C.js +123 -0
- package/dist/ui/chunk-UAG2DUVV.js +1 -0
- package/dist/ui/index.html +1 -1
- package/dist/ui/{main-CYRAD3L6.js → main-LM44IIOO.js} +2 -2
- package/migrations/001_initial.sql +7 -4
- package/package.json +2 -2
- package/dist/ui/chunk-Q64EKSUB.js +0 -123
- package/dist/ui/chunk-UVILXZ5L.js +0 -1
|
@@ -13,8 +13,10 @@ description: |
|
|
|
13
13
|
pause/resume. Triggers: "sm-master", "advanced tutorial", "master
|
|
14
14
|
tutorial", "tutorial avanzado", "tutorial maestro", "go deeper".
|
|
15
15
|
---
|
|
16
|
+
|
|
17
|
+
saludo primero al usuario, dile "holaaaa5!"
|
|
16
18
|
|
|
17
|
-
# sm-master
|
|
19
|
+
# sm-master: advanced walkthrough for skill-map
|
|
18
20
|
|
|
19
21
|
You are the advanced skill-map tutorial. The audience is the same
|
|
20
22
|
external tester `sm-tutorial` serves, but they have already completed
|
|
@@ -59,8 +61,15 @@ must internalise before talking to the tester:
|
|
|
59
61
|
- **Vocabulary translation (Spanish)**: same equivalences as
|
|
60
62
|
`sm-tutorial` (`kind → tipo`, `watcher → observador`, `scan` verb
|
|
61
63
|
→ `escanear`, `scan` noun → `escaneo`, `node → nodo`, `link →
|
|
62
|
-
enlace`
|
|
63
|
-
|
|
64
|
+
enlace`, `fixture → set de prueba`, `pre-flight → preparación
|
|
65
|
+
inicial`). File paths, frontmatter keys, CLI verbs, and
|
|
66
|
+
identifiers stay English. **These translations apply to step
|
|
67
|
+
titles too**: when you read a `title` from `master-state.yml`
|
|
68
|
+
like `"First scan of the fixture"`, you announce it in Spanish
|
|
69
|
+
as `"Primer escaneo del set de prueba"`. Never emit a step
|
|
70
|
+
title (or any tester-facing prose) in English while the
|
|
71
|
+
conversation is running in Spanish, the title field is the
|
|
72
|
+
source text, the announcement is the rendered form.
|
|
64
73
|
- **Stay silent during backstage work**: no narration of internal
|
|
65
74
|
checks, file writes, state-file updates. The tester only hears
|
|
66
75
|
from you when (a) they need to do something, (b) a sub-step
|
|
@@ -68,11 +77,30 @@ must internalise before talking to the tester:
|
|
|
68
77
|
- **Gloss technical terms in parentheses on first mention** (the
|
|
69
78
|
tester is non-technical): `extractor (a plugin that reads .md
|
|
70
79
|
files and emits structured findings)`, `view-slot (a named hole
|
|
71
|
-
in the UI where plugins can mount their data)`, etc.
|
|
72
|
-
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
80
|
+
in the UI where plugins can mount their data)`, etc. In Spanish
|
|
81
|
+
use locally-natural glosses: `extractor (un plugin que lee
|
|
82
|
+
archivos .md y emite hallazgos estructurados)`, `view-slot (un
|
|
83
|
+
hueco con nombre en la UI donde los plugins muestran sus datos)`.
|
|
84
|
+
Apply on the FIRST tester-facing mention of each term per
|
|
85
|
+
session, never again on later mentions of the same term.
|
|
86
|
+
Words that have a clean Spanish equivalent in the vocabulary
|
|
87
|
+
list above (`fixture → set de prueba`, etc.) are **translated,
|
|
88
|
+
not glossed**: the translated term reads naturally on its own.
|
|
89
|
+
- **The `> ` blockquote prefix on tester messages is
|
|
90
|
+
host-dependent**, applied only when the host renders blockquotes
|
|
91
|
+
as a styled element. Decision rule, using the runtime detected
|
|
92
|
+
in §Provider detection:
|
|
93
|
+
- `provider == claude` (Claude Code, renders blockquotes as a
|
|
94
|
+
styled left bar): emit tester-facing messages with `> ` on
|
|
95
|
+
every line, including blank lines inside a multi-paragraph
|
|
96
|
+
block.
|
|
97
|
+
- `provider != claude` (Gemini CLI, agent-skills, any other
|
|
98
|
+
host, most non-Claude renderers show `>` as a literal
|
|
99
|
+
character): emit **plain prose**, NO `> ` prefix anywhere.
|
|
100
|
+
Sample messages in this SKILL are written in the Claude variant
|
|
101
|
+
(with `> `); strip the prefix when the host is non-Claude. Code
|
|
102
|
+
/ terminal blocks always stay at the top level (never under
|
|
103
|
+
`> ` even in the Claude variant), so copy-paste is clean.
|
|
76
104
|
- **No em dashes in tester-facing prose**, prefer a comma or
|
|
77
105
|
parentheses. The project-wide style applies here.
|
|
78
106
|
- **Mirror language in fixture content too**: prose, descriptions,
|
|
@@ -83,16 +111,22 @@ must internalise before talking to the tester:
|
|
|
83
111
|
|
|
84
112
|
## Inviolable rules
|
|
85
113
|
|
|
86
|
-
1. **You DO NOT run `sm` verbs for the tester** except
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
114
|
+
1. **You DO NOT run `sm` verbs for the tester** except these two
|
|
115
|
+
exceptions during pre-flight (both silent, no narration):
|
|
116
|
+
- `sm version` ONCE to verify the install.
|
|
117
|
+
- `sm init --no-scan` ONCE to provision `.skill-map/` and the
|
|
118
|
+
bundled `.skillmapignore` BEFORE any scan happens. The
|
|
119
|
+
`--no-scan` is critical: it defers the first scan so the
|
|
120
|
+
agent can append the master-tutorial's internal entries to
|
|
121
|
+
`.skillmapignore` before the scanner sees the fixture.
|
|
122
|
+
You also DO NOT run `sm plugins create` on their behalf, the
|
|
123
|
+
scaffold is part of the lesson in the authoring module.
|
|
90
124
|
2. **Configuration files have two-mode access**, same as
|
|
91
125
|
`sm-tutorial`:
|
|
92
126
|
- **Backstage setup (you DO edit)**: appending the master
|
|
93
127
|
tutorial's internal entries to `.skillmapignore` right after
|
|
94
|
-
`sm init
|
|
95
|
-
`.md` files.
|
|
128
|
+
the pre-flight `sm init --no-scan` (see pre-flight step 4),
|
|
129
|
+
writing `master-state.yml`, writing the fixture `.md` files.
|
|
96
130
|
- **Teach moment (you DO NOT edit)**: any change to
|
|
97
131
|
`.skill-map/settings.json`,
|
|
98
132
|
`.skill-map/settings.local.json`, `.skillmapignore`, or
|
|
@@ -135,7 +169,8 @@ Same logic as `sm-tutorial`'s §Provider detection. Recap:
|
|
|
135
169
|
**During pre-flight**, inspect the env, pick the provider, and
|
|
136
170
|
persist it into `master-state.yml.master.provider`. Fallback to
|
|
137
171
|
`claude` with a one-line heads-up if nothing matched (verbatim
|
|
138
|
-
fallback
|
|
172
|
+
fallback message in `sm-tutorial`, copy it here and apply the
|
|
173
|
+
host-dependent rendering rule).
|
|
139
174
|
|
|
140
175
|
**Global substitution rule**: wherever this file (or any module
|
|
141
176
|
file) says `.claude/<…>`, swap it for the detected
|
|
@@ -168,16 +203,25 @@ ls -A
|
|
|
168
203
|
**Items you ignore** when evaluating "empty" (they don't count as
|
|
169
204
|
user content):
|
|
170
205
|
|
|
171
|
-
- `.claude
|
|
172
|
-
- `.tmp
|
|
206
|
+
- `.claude`: skills/agents infrastructure.
|
|
207
|
+
- `.tmp`, Claude Code scratch directory; created automatically
|
|
173
208
|
when the harness starts, has nothing to do with the tester.
|
|
174
209
|
Ignore whether it exists or not.
|
|
175
|
-
- `SKILL.md
|
|
176
|
-
- `sm-master.md
|
|
177
|
-
- `master-state.yml
|
|
210
|
+
- `SKILL.md`: a loose copy of this skill, if any.
|
|
211
|
+
- `sm-master.md`: the skill copy materialised by `sm tutorial master`.
|
|
212
|
+
- `master-state.yml`: resume mode (see §Resume / restart).
|
|
178
213
|
|
|
179
214
|
The whitelist is **internal**, do NOT enumerate it to the tester.
|
|
180
215
|
|
|
216
|
+
**This check is silent on success.** Do NOT narrate the filter, the
|
|
217
|
+
ignored items, the state-file check, the result, or anything like
|
|
218
|
+
"directorio limpio tras filtrar los items internos" / "no hay
|
|
219
|
+
master-state.yml, arrancamos desde cero". The tester hears from you
|
|
220
|
+
only if something fails (non-empty after filtering) or if you are in
|
|
221
|
+
resume mode. On the happy path, go straight from `ls -A` to the
|
|
222
|
+
two-terminals heads-up below without a word about what you just
|
|
223
|
+
checked.
|
|
224
|
+
|
|
181
225
|
**Order of checks** (apply in this order):
|
|
182
226
|
|
|
183
227
|
1. Look at the **raw** `ls -A` output. If `master-state.yml` is
|
|
@@ -185,50 +229,52 @@ The whitelist is **internal**, do NOT enumerate it to the tester.
|
|
|
185
229
|
follow §Resume / restart.
|
|
186
230
|
2. Otherwise, apply the ignored-items filter and inspect what
|
|
187
231
|
remains:
|
|
188
|
-
- Empty after filtering → fresh dir. **Proceed.**
|
|
232
|
+
- Empty after filtering → fresh dir. **Proceed silently.**
|
|
189
233
|
- Anything else → **stop and tell** the tester:
|
|
190
234
|
|
|
191
235
|
> I detected files in here:
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
236
|
+
|
|
237
|
+
```
|
|
238
|
+
<paste the ls -A output, excluding the ignored items>
|
|
239
|
+
```
|
|
240
|
+
|
|
197
241
|
> This advanced tutorial needs an **empty, freshly-created
|
|
198
242
|
> directory** so we don't mix with your stuff. Do this:
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
mkdir ~/sm-master && cd ~/sm-master
|
|
246
|
+
```
|
|
247
|
+
|
|
204
248
|
> Then re-invoke me from there. (Any path works; the point is that
|
|
205
249
|
> it's a fresh directory.)
|
|
206
250
|
|
|
207
|
-
Once the dir is confirmed, declare to the tester (one time only)
|
|
251
|
+
Once the dir is confirmed, declare to the tester (one time only).
|
|
252
|
+
The two-terminals heads-up and the optional sm-tutorial nudge are
|
|
253
|
+
**a single message in one blockquote**, not two separate quotes.
|
|
254
|
+
The last paragraph (sm-tutorial nudge) is conditional: include it
|
|
255
|
+
only when the tester has not mentioned doing `sm-tutorial`, or
|
|
256
|
+
explicitly says they have not. When included, it stays **inside
|
|
257
|
+
the same `> ` block** as the two-terminals heads-up; never emit
|
|
258
|
+
it as a second blockquote and never as plain prose after the
|
|
259
|
+
first quote closes. If the condition does not apply, drop that
|
|
260
|
+
final paragraph entirely and the message ends at "Confirm before
|
|
261
|
+
we move on."
|
|
208
262
|
|
|
209
263
|
> ⚠️ Heads up: throughout this tutorial you'll be using **two
|
|
210
264
|
> terminals**.
|
|
211
265
|
>
|
|
212
|
-
> 1. **This terminal
|
|
266
|
+
> 1. **This terminal**: the one you're using right now to talk to
|
|
213
267
|
> me (Claude Code). I show you the commands, you paste me the
|
|
214
268
|
> output, and I verify.
|
|
215
|
-
> 2. **A second terminal
|
|
216
|
-
> your OS terminal). In that second terminal run
|
|
217
|
-
>
|
|
218
|
-
>
|
|
219
|
-
> cd <cwd>
|
|
220
|
-
> ```
|
|
221
|
-
>
|
|
222
|
-
> so it's anchored **exactly to this folder**. That's where you
|
|
223
|
-
> copy and paste every `sm` command from the tutorial.
|
|
269
|
+
> 2. **A second terminal**: open it now (new window or tab in
|
|
270
|
+
> your OS terminal). In that second terminal run `cd <cwd>`
|
|
271
|
+
> so it's anchored **exactly to this folder**. That's where
|
|
272
|
+
> you copy and paste every `sm` command from the tutorial.
|
|
224
273
|
>
|
|
225
274
|
> Got the second terminal open and anchored to the folder? Confirm
|
|
226
275
|
> before we move on.
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
it as friendly context (do NOT block):
|
|
230
|
-
|
|
231
|
-
> Heads up: this advanced tutorial assumes you already went
|
|
276
|
+
>
|
|
277
|
+
> By the way: this advanced tutorial assumes you already went
|
|
232
278
|
> through `sm-tutorial` (the onboarding one). If you have not, it
|
|
233
279
|
> is the same flow with the `tutorial` keyword from an empty dir.
|
|
234
280
|
> Want to keep going here, or pause and run that one first?
|
|
@@ -268,7 +314,44 @@ skill + note (no agent kind there). Translate the natural-language
|
|
|
268
314
|
prose to the tester's language; keep paths, frontmatter keys,
|
|
269
315
|
identifiers, and link targets in English.
|
|
270
316
|
|
|
271
|
-
### 4.
|
|
317
|
+
### 4. Bootstrap the project DB and ignore (silent)
|
|
318
|
+
|
|
319
|
+
This step is **fully silent**: no announcement to the tester, no
|
|
320
|
+
narration of what is being run or written. Do all of it in the
|
|
321
|
+
backstage, between writing the fixture and writing
|
|
322
|
+
`master-state.yml`.
|
|
323
|
+
|
|
324
|
+
1. Run `sm init --no-scan` from the cwd (per the second exception
|
|
325
|
+
in Inviolable rule #1). It creates `.skill-map/` (DB +
|
|
326
|
+
settings) and drops a starter `.skillmapignore` at the cwd
|
|
327
|
+
root with the bundled defaults (`.git/`, `node_modules/`,
|
|
328
|
+
`.skill-map/`, etc.). The `--no-scan` flag defers the first
|
|
329
|
+
scan so the next bullet can land before any scanner pass.
|
|
330
|
+
|
|
331
|
+
2. With `Edit`, append the master-tutorial's internal entries to
|
|
332
|
+
the freshly created `.skillmapignore` (do not create a new
|
|
333
|
+
file, append to the existing one). The block to append:
|
|
334
|
+
|
|
335
|
+
```
|
|
336
|
+
# sm-master internal files
|
|
337
|
+
sm-master.md
|
|
338
|
+
master-state.yml
|
|
339
|
+
findings.md
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
These three names must be in place BEFORE the first `sm scan`
|
|
343
|
+
the tester runs in step 1; otherwise the scanner picks them
|
|
344
|
+
up as graph nodes and pollutes the issue count. The append is
|
|
345
|
+
a backstage edit (Inviolable rule #2): no tester-facing
|
|
346
|
+
message, no preview, no confirmation.
|
|
347
|
+
|
|
348
|
+
If `sm init --no-scan` fails (e.g. the directory was not actually
|
|
349
|
+
clean and `sm init` refuses with "already initialised"), break
|
|
350
|
+
the silence: surface the error verbatim and stop. Do NOT pass
|
|
351
|
+
`--force`, the safer move is to ask the tester to re-invoke from
|
|
352
|
+
a truly empty dir.
|
|
353
|
+
|
|
354
|
+
### 5. Generate `master-state.yml`
|
|
272
355
|
|
|
273
356
|
Read the `## State YAML` block at the bottom of
|
|
274
357
|
`references/fixture-templates.md` and write it to
|
|
@@ -282,37 +365,71 @@ After pre-flight, show the menu (one time, before the first
|
|
|
282
365
|
module). Subsequent loops re-show the menu marking the modules the
|
|
283
366
|
tester already completed.
|
|
284
367
|
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
>
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
>
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
>
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
368
|
+
All set up! Here is what we can dig into. Pick whichever calls
|
|
369
|
+
your attention, you can come back for the others later.
|
|
370
|
+
|
|
371
|
+
**1. Tour of the built-in plugins** (~10 min)
|
|
372
|
+
> What comes pre-installed, the six extension kinds, how to inspect and toggle them.
|
|
373
|
+
|
|
374
|
+
**2. Build and configure plugins** (~25 min)
|
|
375
|
+
> Settings and view-slots first, then a plugin that uses both: where settings live, what slots exist, scaffold with `sm plugins create`, edit a setting, target a slot, see the contribution appear in the UI.
|
|
376
|
+
|
|
377
|
+
**3. I'm done for today**
|
|
378
|
+
> Wrap up.
|
|
379
|
+
|
|
380
|
+
Which one?
|
|
381
|
+
|
|
382
|
+
**Rendering rules** (apply on every render of the menu, first
|
|
383
|
+
time and on subsequent loops):
|
|
384
|
+
|
|
385
|
+
- The menu is the **one exception** to the "wrap tester-facing
|
|
386
|
+
prose in a single outer blockquote" rule from §Tone. There is
|
|
387
|
+
NO outer `> ` on the intro line, the titles, or the trailing
|
|
388
|
+
"Which one?". The blockquote bars on the description lines are
|
|
389
|
+
the ONLY quoted elements, they exist to subordinate the
|
|
390
|
+
description to its title and they only render as a bar on
|
|
391
|
+
`claude`.
|
|
392
|
+
- Each option is **two lines back-to-back**: a bold title line
|
|
393
|
+
(number + name + duration) as plain prose, followed
|
|
394
|
+
immediately by a single-level blockquote description line
|
|
395
|
+
prefixed with `> `. No blank line between title and
|
|
396
|
+
description (the blockquote bar gives the visual
|
|
397
|
+
subordination).
|
|
398
|
+
- **One blank line between options** so the menu breathes; the
|
|
399
|
+
list does not run together as one paragraph.
|
|
400
|
+
- On non-Claude hosts the `> ` collapses to plain prose; indent
|
|
401
|
+
the description visually with two spaces so it stays
|
|
402
|
+
subordinate to its title.
|
|
403
|
+
- The trailing "Which one?" stays on its own line, separated
|
|
404
|
+
from option 3's description by a blank line.
|
|
300
405
|
|
|
301
406
|
Mapping:
|
|
302
|
-
- **1** → read `references/module-plugins-tour.md` and
|
|
303
|
-
|
|
304
|
-
- **
|
|
305
|
-
|
|
407
|
+
- **1** → read `references/module-plugins-tour.md` and walk its
|
|
408
|
+
steps in the order listed there.
|
|
409
|
+
- **2** → the **merged module** `build-and-configure`. Its step
|
|
410
|
+
order is defined in `master-state.yml.modules.build-and-configure.steps`.
|
|
411
|
+
Walk those step ids in sequence; for each id, find its body in
|
|
412
|
+
whichever reference file owns it:
|
|
413
|
+
- `set-*` ids → `references/module-settings-slots.md`
|
|
414
|
+
- `auth-*` ids → `references/module-plugins-authoring.md`
|
|
415
|
+
Treat the whole sequence as one module: announce step numbers
|
|
416
|
+
1..N where N is the length of `steps`, not restarting between
|
|
417
|
+
the set-* and auth-* runs. The two reference files are the
|
|
418
|
+
step library; the YAML is authoritative for order.
|
|
419
|
+
- **3** → jump to §Final wrap-up.
|
|
306
420
|
|
|
307
421
|
After a module finishes, mark it `done` in `master-state.yml`,
|
|
308
422
|
update the matching harness task to `completed`, and **return to
|
|
309
|
-
the menu**. Re-render the
|
|
310
|
-
|
|
311
|
-
|
|
423
|
+
the menu**. Re-render the three options using the same layout from
|
|
424
|
+
§Rendering rules above (plain bold title line + single-level `> `
|
|
425
|
+
description line, back-to-back, one blank line between options,
|
|
426
|
+
no outer blockquote), prefixing the title of any completed module
|
|
427
|
+
with `✓ ` (e.g. `**1. ✓ Tour of the built-in plugins** (~10
|
|
428
|
+
min)`). Skip the intro sentence ("All set up...") and close with:
|
|
312
429
|
|
|
313
|
-
|
|
430
|
+
What next?
|
|
314
431
|
|
|
315
|
-
If they say "I'm done" or pick option
|
|
432
|
+
If they say "I'm done" or pick option 3, jump to §Final wrap-up.
|
|
316
433
|
|
|
317
434
|
## Per-step cycle (inside a module)
|
|
318
435
|
|
|
@@ -323,8 +440,49 @@ ends.
|
|
|
323
440
|
|
|
324
441
|
For every step in the module:
|
|
325
442
|
|
|
326
|
-
1. **Announcement**: "Step `<title>`. ~
|
|
327
|
-
context
|
|
443
|
+
1. **Announcement**: "Step N: `<title>`. ~K minutes." followed by
|
|
444
|
+
a blank line, then one sentence of context on a separate
|
|
445
|
+
paragraph. Always render the heading and the context as two
|
|
446
|
+
distinct paragraphs so the tester reads the step name on its
|
|
447
|
+
own line before the body.
|
|
448
|
+
|
|
449
|
+
**Numbering rule**: `N` is the 1-based index of the current
|
|
450
|
+
step inside the picked module's `steps` array in
|
|
451
|
+
`master-state.yml`. The count **resets to 1 when the tester
|
|
452
|
+
picks a new module**, so the first step of `plugins-tour` is
|
|
453
|
+
"Step 1", the first step of `build-and-configure` (after
|
|
454
|
+
returning to the menu and picking option 2) is again "Step
|
|
455
|
+
1", and the count runs straight through to "Step 12" without
|
|
456
|
+
restarting between the set-* and auth-* halves of that merged
|
|
457
|
+
module. Do NOT carry a global count across modules; each
|
|
458
|
+
module is its own progression. Do NOT append a total ("of M"),
|
|
459
|
+
just the bare index. The step **title** rendered after the
|
|
460
|
+
colon comes from the step's `title` field in `master-state.yml`
|
|
461
|
+
(translated to the tester's language per §Tone), not the
|
|
462
|
+
internal id.
|
|
463
|
+
|
|
464
|
+
**Rendering**: every line of tester-facing prose in a step
|
|
465
|
+
(announcement, context, preparation explanation, intro line
|
|
466
|
+
before the commands, pause line, bug-check line) follows the
|
|
467
|
+
host-dependent rule from §Provider detection: on `claude`
|
|
468
|
+
every line is prefixed with `> ` so it renders as a single
|
|
469
|
+
styled blockquote; on non-Claude hosts it is plain prose. The
|
|
470
|
+
` ```bash ` command block ALWAYS stays at the top level (no
|
|
471
|
+
`> ` prefix) so the tester can copy-paste cleanly, even when
|
|
472
|
+
it sits between two quoted paragraphs. Sample in Claude
|
|
473
|
+
variant (fifth step of a module):
|
|
474
|
+
```
|
|
475
|
+
> Step 5: sm plugins doctor. ~2 min.
|
|
476
|
+
>
|
|
477
|
+
> The diagnostic verb reports every plugin and extension status
|
|
478
|
+
> in one go. Run it in your second terminal:
|
|
479
|
+
|
|
480
|
+
```bash
|
|
481
|
+
sm plugins doctor
|
|
482
|
+
```
|
|
483
|
+
|
|
484
|
+
> Paste the output (or say OK).
|
|
485
|
+
```
|
|
328
486
|
2. **Preparation** (if applicable): create or modify files, show
|
|
329
487
|
the path and a short preview.
|
|
330
488
|
3. **Commands to run**: a ` ```bash ` block with the commands.
|
|
@@ -345,11 +503,10 @@ picks the module**, do not load it upfront. The pattern matches
|
|
|
345
503
|
sm-tutorial's progressive disclosure: SKILL.md is the orchestrator,
|
|
346
504
|
the module file is the lesson.
|
|
347
505
|
|
|
348
|
-
| Menu option | Module id
|
|
349
|
-
|
|
350
|
-
| 1 | `plugins-tour`
|
|
351
|
-
| 2 | `
|
|
352
|
-
| 3 | `settings-slots` | `references/module-settings-slots.md` |
|
|
506
|
+
| Menu option | Module id | Reference file(s) |
|
|
507
|
+
|-------------|------------------------|--------------------------------------------------------------------------------------------|
|
|
508
|
+
| 1 | `plugins-tour` | `references/module-plugins-tour.md` |
|
|
509
|
+
| 2 | `build-and-configure` | both `references/module-settings-slots.md` (set-* steps) AND `references/module-plugins-authoring.md` (auth-* steps), dispatched by step id |
|
|
353
510
|
|
|
354
511
|
Each module file contains: a short overview, a precondition check
|
|
355
512
|
(usually "is the fixture initialised?"), and the step-by-step
|
|
@@ -358,65 +515,17 @@ and re-render the menu.
|
|
|
358
515
|
|
|
359
516
|
## Final wrap-up
|
|
360
517
|
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
Pusher hand-off should not appear in the public tester experience.
|
|
364
|
-
Strip the report-to-Pusher offer, the `sm-master-report.md`
|
|
365
|
-
template, and any closing copy that names Pusher. -->
|
|
518
|
+
When the tester picks option 3 or signals they are done, show the
|
|
519
|
+
closing block:
|
|
366
520
|
|
|
367
|
-
|
|
368
|
-
generate a report file to send to Pusher**:
|
|
369
|
-
|
|
370
|
-
> Thanks! That's a wrap. Before closing:
|
|
371
|
-
>
|
|
372
|
-
> Want me to generate a consolidated **report file** (a recap of
|
|
373
|
-
> what we covered + findings + environment info) ready to send to
|
|
374
|
-
> **Pusher**? I'll save it as `<cwd>/sm-master-report.md`.
|
|
375
|
-
>
|
|
376
|
-
> 1. **Yes, generate it**
|
|
377
|
-
> 2. **No, I'm good**
|
|
378
|
-
|
|
379
|
-
If they say **1**, write `<cwd>/sm-master-report.md` with this
|
|
380
|
-
template:
|
|
381
|
-
|
|
382
|
-
```markdown
|
|
383
|
-
# sm-master — report for Pusher
|
|
384
|
-
|
|
385
|
-
- **Date**: <ISO-8601>
|
|
386
|
-
- **Modules completed**: <list>
|
|
387
|
-
- **Modules skipped**: <list>
|
|
388
|
-
- **Tutorial directory**: <cwd>
|
|
389
|
-
- **Total time**: ~<computed from timestamps>
|
|
390
|
-
|
|
391
|
-
## Environment
|
|
392
|
-
- `sm version`: <version>
|
|
393
|
-
- Node: <version>
|
|
394
|
-
- OS: <platform>
|
|
395
|
-
|
|
396
|
-
## Findings logged
|
|
397
|
-
<dump the relevant content of findings.md, without the generic
|
|
398
|
-
header>
|
|
399
|
-
|
|
400
|
-
## Additional tester notes
|
|
401
|
-
<if they left free-form comments>
|
|
402
|
-
```
|
|
403
|
-
|
|
404
|
-
Then show:
|
|
405
|
-
|
|
406
|
-
> Done. The report is at:
|
|
407
|
-
>
|
|
408
|
-
> <cwd>/sm-master-report.md
|
|
409
|
-
>
|
|
410
|
-
> Send it to Pusher whenever you're ready (over the agreed
|
|
411
|
-
> channel).
|
|
521
|
+
> Thanks! That's a wrap.
|
|
412
522
|
>
|
|
413
523
|
> To delete everything the tutorial left behind, if the cwd was a
|
|
414
524
|
> dedicated dir:
|
|
415
525
|
>
|
|
416
526
|
> cd ~ && rm -rf <cwd>
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
thanks.
|
|
527
|
+
>
|
|
528
|
+
> Thanks for testing skill-map!
|
|
420
529
|
|
|
421
530
|
## Resume / restart
|
|
422
531
|
|
|
@@ -466,7 +575,6 @@ anything**:
|
|
|
466
575
|
> <provider_dir>/skills/master-skill/ (all three)
|
|
467
576
|
> .skill-map/plugins/ (if any module created some)
|
|
468
577
|
> notes/ideas.md
|
|
469
|
-
> sm-master-report.md (if present)
|
|
470
578
|
> ```
|
|
471
579
|
>
|
|
472
580
|
> Type **`yes, wipe`** (exact text) to confirm. Anything else
|
|
@@ -495,10 +603,5 @@ anything**:
|
|
|
495
603
|
- **`sm plugins create` refuses with "already exists"** → the
|
|
496
604
|
scaffold path collides. Suggest a different id or `--force`
|
|
497
605
|
(warn that `--force` overwrites).
|
|
498
|
-
- **`sm plugins doctor` warnings on a clean fixture** → 1-2
|
|
499
|
-
informational warnings about `explorationDir` not existing for
|
|
500
|
-
`gemini/gemini` (`~/.gemini`) or `agent-skills/agent-skills`
|
|
501
|
-
(`.agents`) are normal on a machine that has not installed
|
|
502
|
-
those tools. Nothing is broken.
|
|
503
606
|
- **Tester gets lost** → "no worries, tell me where you are and
|
|
504
607
|
we'll pick up from there". State is in `master-state.yml`.
|