@skill-map/cli 0.68.0 → 0.69.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-tutorial/SKILL.md +14 -15
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/manifest.json +0 -3
- package/dist/cli/tutorial/sm-tutorial/references/_core.md +15 -6
- package/dist/cli/tutorial/sm-tutorial/references/_manifest.json +93 -119
- package/dist/cli/tutorial/sm-tutorial/references/_manifest.yml +46 -70
- package/dist/cli/tutorial/sm-tutorial/references/fixtures.md +5 -6
- package/dist/cli/tutorial/sm-tutorial/references/part-authoring.md +23 -6
- package/dist/cli/tutorial/sm-tutorial/references/part-basic-daily.md +98 -76
- package/dist/cli/tutorial/sm-tutorial/references/part-basic-fundamentals.md +21 -20
- package/dist/cli/tutorial/sm-tutorial/references/part-basic-kickoff.md +151 -6
- package/dist/cli/tutorial/sm-tutorial/references/part-cli.md +1 -1
- package/dist/cli/tutorial/sm-tutorial/references/part-daily-loop.md +114 -100
- package/dist/cli/tutorial/sm-tutorial/references/part-fundamentals.md +27 -31
- package/dist/cli/tutorial/sm-tutorial/references/part-project-kickoff.md +171 -14
- package/dist/cli/tutorial/sm-tutorial/scripts/state.js +4 -4
- package/dist/cli.js +708 -334
- package/dist/conformance/index.js +3 -3
- package/dist/index.js +11 -10
- package/dist/kernel/index.d.ts +27 -17
- package/dist/kernel/index.js +11 -10
- package/dist/migrations/001_initial.sql +7 -3
- package/dist/ui/chunk-E7GLGHVY.js +1 -0
- package/dist/ui/chunk-RLRSNHYG.js +3 -0
- package/dist/ui/{chunk-4F53HBGG.js → chunk-RRRXQNG6.js} +1 -1
- package/dist/ui/{chunk-3GDWM5VM.js → chunk-SI4MGFOW.js} +1 -1
- package/dist/ui/index.html +1 -1
- package/dist/ui/{main-ZYRIR6DB.js → main-23NGLEUB.js} +3 -3
- package/migrations/001_initial.sql +7 -3
- package/package.json +2 -2
- package/dist/cli/tutorial/sm-tutorial/references/part-basic-connect.md +0 -166
- package/dist/cli/tutorial/sm-tutorial/references/part-connect-harness.md +0 -175
- package/dist/ui/chunk-BJUBDHJR.js +0 -3
- package/dist/ui/chunk-PU5OP5RN.js +0 -1
- /package/dist/ui/{chunk-KMHXNOFZ.js → chunk-SXSNTF26.js} +0 -0
|
@@ -53,11 +53,11 @@ parts:
|
|
|
53
53
|
- id: init ; title: "Your first node (sm init, sm, the UI)" ; est_min: 2
|
|
54
54
|
- id: kinds ; title: "The other kinds appear" ; est_min: 1
|
|
55
55
|
- id: first-edit ; title: "Your first edit (the watcher reacts)" ; est_min: 1
|
|
56
|
-
- id: connectors ; title: "The connectors light up" ; est_min:
|
|
56
|
+
- id: connectors ; title: "The connectors light up" ; est_min: 1
|
|
57
57
|
- id: inspector ; title: "The inspector and connections" ; est_min: 1
|
|
58
|
-
- id: edit-link ; title: "Edit a link, the topology changes" ; est_min:
|
|
59
|
-
- id: workspace ; title: "Navigate the workspace (files, search, isolate)" ; est_min:
|
|
60
|
-
- id: ignore ; title: "Silence a file via .skillmapignore" ; est_min:
|
|
58
|
+
- id: edit-link ; title: "Edit a link, the topology changes" ; est_min: 2
|
|
59
|
+
- id: workspace ; title: "Navigate the workspace (files, search, isolate)" ; est_min: 1
|
|
60
|
+
- id: ignore ; title: "Silence a file via .skillmapignore" ; est_min: 1
|
|
61
61
|
|
|
62
62
|
- id: basic-fundamentals
|
|
63
63
|
order: 0
|
|
@@ -72,15 +72,15 @@ parts:
|
|
|
72
72
|
- id: init ; title: "Your first node (sm init, sm, the UI)" ; est_min: 2
|
|
73
73
|
- id: kinds ; title: "Skills and notes appear" ; est_min: 1
|
|
74
74
|
- id: first-edit ; title: "Your first edit (the watcher reacts)" ; est_min: 1
|
|
75
|
-
- id: connectors ; title: "Connect with references (markdown links)" ; est_min:
|
|
75
|
+
- id: connectors ; title: "Connect with references (markdown links)" ; est_min: 1
|
|
76
76
|
- id: inspector ; title: "The inspector and connections" ; est_min: 1
|
|
77
|
-
- id: edit-link ; title: "Edit a link, the topology changes" ; est_min:
|
|
78
|
-
- id: workspace ; title: "Navigate the workspace (files, search, isolate)" ; est_min:
|
|
79
|
-
- id: ignore ; title: "Silence a file via .skillmapignore" ; est_min:
|
|
77
|
+
- id: edit-link ; title: "Edit a link, the topology changes" ; est_min: 2
|
|
78
|
+
- id: workspace ; title: "Navigate the workspace (files, search, isolate)" ; est_min: 1
|
|
79
|
+
- id: ignore ; title: "Silence a file via .skillmapignore" ; est_min: 1
|
|
80
80
|
|
|
81
81
|
- id: extend
|
|
82
82
|
order: 4
|
|
83
|
-
title: "Extend skill-map
|
|
83
|
+
title: "Extend skill-map with plugins"
|
|
84
84
|
# Spans three chapter libraries; dispatch by chapter-id prefix:
|
|
85
85
|
# settings-* -> part-settings.md
|
|
86
86
|
# tour-* -> part-plugins.md
|
|
@@ -97,10 +97,10 @@ parts:
|
|
|
97
97
|
chapters:
|
|
98
98
|
- id: settings-1-layers ; title: "The config layers and `sm config list`" ; est_min: 3
|
|
99
99
|
- id: settings-2-resolve ; title: "Read, resolve, and set a value with `sm config`" ; est_min: 3
|
|
100
|
-
- id: settings-3-lens ; title: "The active provider lens (`activeProvider`)" ; est_min:
|
|
101
|
-
- id: tour-1-intro ; title: "How plugins work" ; est_min:
|
|
102
|
-
- id: tour-2-kinds ; title: "The six extension kinds" ; est_min:
|
|
103
|
-
- id: tour-3-explore ; title: "Explore one extension up close" ; est_min:
|
|
100
|
+
- id: settings-3-lens ; title: "The active provider lens (`activeProvider`)" ; est_min: 3
|
|
101
|
+
- id: tour-1-intro ; title: "How plugins work" ; est_min: 3
|
|
102
|
+
- id: tour-2-kinds ; title: "The six extension kinds" ; est_min: 4
|
|
103
|
+
- id: tour-3-explore ; title: "Explore one extension up close" ; est_min: 3
|
|
104
104
|
- id: authoring-1-scaffold ; title: "`sm plugins create extractor demo-highlight`" ; est_min: 2
|
|
105
105
|
- id: authoring-2-anatomy ; title: "Tour the scaffold (plugin.json + stubs + README)" ; est_min: 3
|
|
106
106
|
- id: authoring-3-edit-setting ; title: "Edit a setting (string-list) and observe it in the UI" ; est_min: 3
|
|
@@ -108,8 +108,8 @@ parts:
|
|
|
108
108
|
- id: authoring-5-doctor-author ; title: "Catch a manifest mistake with `sm plugins doctor`" ; est_min: 2
|
|
109
109
|
|
|
110
110
|
- id: cli
|
|
111
|
-
order:
|
|
112
|
-
title: "The CLI
|
|
111
|
+
order: 3
|
|
112
|
+
title: "The CLI for you and your agent"
|
|
113
113
|
step_file: part-cli.md
|
|
114
114
|
pace: auto-advance
|
|
115
115
|
preflight: seed # self-seeds the Part 0 demo fixture
|
|
@@ -118,11 +118,11 @@ parts:
|
|
|
118
118
|
track: both # CLI verbs are lens-agnostic; prose notes lens-specific node counts
|
|
119
119
|
status: active
|
|
120
120
|
chapters:
|
|
121
|
-
- id: browse ; title: "list / show / check" ; est_min:
|
|
122
|
-
- id: graph-export ; title: "graph / export (query, formatters)" ; est_min:
|
|
123
|
-
- id: issues ; title: "Issues and broken refs (--analyzers, --json)" ; est_min:
|
|
121
|
+
- id: browse ; title: "list / show / check" ; est_min: 2
|
|
122
|
+
- id: graph-export ; title: "graph / export (query, formatters)" ; est_min: 2
|
|
123
|
+
- id: issues ; title: "Issues and broken refs (--analyzers, --json)" ; est_min: 2
|
|
124
124
|
- id: annotations ; title: "Annotations and the .sm consent prompt" ; est_min: 3
|
|
125
|
-
- id: reference-paths ; title: "Validate links to folders outside the scan scope" ; est_min:
|
|
125
|
+
- id: reference-paths ; title: "Validate links to folders outside the scan scope" ; est_min: 3
|
|
126
126
|
|
|
127
127
|
# ----- the portfolio campaign (the spine's real project) -----
|
|
128
128
|
# Each part builds on the prior one's accumulated harness. Run in
|
|
@@ -133,7 +133,7 @@ parts:
|
|
|
133
133
|
|
|
134
134
|
- id: project-kickoff
|
|
135
135
|
order: 1
|
|
136
|
-
title: "The
|
|
136
|
+
title: "The harness from zero"
|
|
137
137
|
step_file: part-project-kickoff.md
|
|
138
138
|
pace: per-step
|
|
139
139
|
preflight: portfolio-init # lays the Express skeleton + AGENTS.md; clears the prologue demo fixture if present
|
|
@@ -144,43 +144,31 @@ parts:
|
|
|
144
144
|
- id: kickoff ; title: "Start the portfolio (sm init on the real skeleton)" ; est_min: 2
|
|
145
145
|
- id: manual ; title: "The handbook (AGENTS.md) and CLAUDE.md" ; est_min: 2
|
|
146
146
|
- id: first-agent ; title: "The first harness agent (content-editor)" ; est_min: 2
|
|
147
|
-
- id: real-kinds ; title: "The real kinds in context" ; est_min:
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
title: "Connect the harness"
|
|
152
|
-
step_file: part-connect-harness.md
|
|
153
|
-
pace: auto-advance
|
|
154
|
-
preflight: seed
|
|
155
|
-
seed: harness-built # fast-forward to here if project-kickoff is not done
|
|
156
|
-
prereq: project-kickoff
|
|
157
|
-
track: rich # /publish command + @mentions; basic track connects via references
|
|
158
|
-
status: active
|
|
159
|
-
chapters:
|
|
160
|
-
- id: check-links ; title: "The check-links skill" ; est_min: 2
|
|
161
|
-
- id: publish ; title: "The /publish command invokes the skill" ; est_min: 3
|
|
162
|
-
- id: links ; title: "Mentions (@) and references between assets" ; est_min: 3
|
|
147
|
+
- id: real-kinds ; title: "The real kinds in context" ; est_min: 1
|
|
148
|
+
- id: check-links ; title: "The check-links skill" ; est_min: 1
|
|
149
|
+
- id: publish ; title: "The /publish command invokes the skill" ; est_min: 2
|
|
150
|
+
- id: links ; title: "Mentions (@) and references between assets" ; est_min: 2
|
|
163
151
|
- id: confidence ; title: "Connector confidence (opacity = certainty)" ; est_min: 2
|
|
164
152
|
|
|
165
153
|
- id: daily-loop
|
|
166
|
-
order:
|
|
154
|
+
order: 2
|
|
167
155
|
title: "The daily loop (add, improve, publish)" # the campaign finale
|
|
168
156
|
step_file: part-daily-loop.md
|
|
169
157
|
pace: auto-advance
|
|
170
158
|
preflight: seed
|
|
171
|
-
seed: harness-connected # fast-forward to here if
|
|
172
|
-
prereq:
|
|
159
|
+
seed: harness-connected # fast-forward to here if project-kickoff is not done
|
|
160
|
+
prereq: project-kickoff
|
|
173
161
|
fixture: portfolio # reuses the wired harness; lays the pretty site (style.css + pages) as taught steps
|
|
174
162
|
track: rich # agent-driven page add + reserved command; basic track has its own counterpart
|
|
175
163
|
status: active
|
|
176
164
|
chapters:
|
|
177
|
-
- id: setup ; title: "Make it yours and bring it up" ; est_min:
|
|
178
|
-
- id: add-page ; title: "Add a page with your agent" ; est_min:
|
|
179
|
-
- id: broken-ref ; title: "A rename breaks a link" ; est_min:
|
|
165
|
+
- id: setup ; title: "Make it yours and bring it up" ; est_min: 4
|
|
166
|
+
- id: add-page ; title: "Add a page with your agent" ; est_min: 3
|
|
167
|
+
- id: broken-ref ; title: "A rename breaks a link" ; est_min: 3
|
|
180
168
|
- id: reserved ; title: "A reserved name collides" ; est_min: 2
|
|
181
|
-
- id: publish ; title: "Ship it: run /publish for real" ; est_min:
|
|
169
|
+
- id: publish ; title: "Ship it: run /publish for real" ; est_min: 3
|
|
182
170
|
- id: stability ; title: "Set a node's stability (and the `.sm` sidecar)" ; est_min: 3
|
|
183
|
-
- id: golive ; title: "Your
|
|
171
|
+
- id: golive ; title: "Your website, live next to the graph" ; est_min: 3
|
|
184
172
|
|
|
185
173
|
# ----- the basic-track campaign (open-standard family: agent-skills / antigravity) -----
|
|
186
174
|
# Mirrors the rich campaign arc with skill + markdown only, connected by
|
|
@@ -189,7 +177,7 @@ parts:
|
|
|
189
177
|
|
|
190
178
|
- id: basic-kickoff
|
|
191
179
|
order: 1
|
|
192
|
-
title: "The
|
|
180
|
+
title: "The harness from zero"
|
|
193
181
|
step_file: part-basic-kickoff.md
|
|
194
182
|
pace: per-step
|
|
195
183
|
preflight: portfolio-init
|
|
@@ -201,52 +189,40 @@ parts:
|
|
|
201
189
|
- id: manual ; title: "The handbook (AGENTS.md) and an entry pointer" ; est_min: 2
|
|
202
190
|
- id: first-skill ; title: "The first harness skill (content-editor)" ; est_min: 2
|
|
203
191
|
- id: real-kinds ; title: "The kinds in context" ; est_min: 2
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
step_file: part-basic-connect.md
|
|
209
|
-
pace: auto-advance
|
|
210
|
-
preflight: seed
|
|
211
|
-
seed: harness-built
|
|
212
|
-
prereq: basic-kickoff
|
|
213
|
-
track: basic
|
|
214
|
-
status: active
|
|
215
|
-
chapters:
|
|
216
|
-
- id: check-links ; title: "The link checker" ; est_min: 3
|
|
217
|
-
- id: publish ; title: "The publish skill references the harness" ; est_min: 4
|
|
218
|
-
- id: links ; title: "The handbook becomes the hub (references)" ; est_min: 4
|
|
219
|
-
- id: confidence ; title: "Connector confidence (opacity = certainty)" ; est_min: 3
|
|
192
|
+
- id: check-links ; title: "The link checker" ; est_min: 2
|
|
193
|
+
- id: publish ; title: "The publish skill references the harness" ; est_min: 3
|
|
194
|
+
- id: links ; title: "The handbook becomes the hub (references)" ; est_min: 3
|
|
195
|
+
- id: confidence ; title: "Connector confidence (opacity = certainty)" ; est_min: 2
|
|
220
196
|
|
|
221
197
|
- id: basic-daily
|
|
222
|
-
order:
|
|
198
|
+
order: 2
|
|
223
199
|
title: "The daily loop (add, improve, publish)"
|
|
224
200
|
step_file: part-basic-daily.md
|
|
225
201
|
pace: auto-advance
|
|
226
202
|
preflight: seed
|
|
227
203
|
seed: harness-connected
|
|
228
|
-
prereq: basic-
|
|
204
|
+
prereq: basic-kickoff
|
|
229
205
|
fixture: portfolio
|
|
230
206
|
track: basic
|
|
231
207
|
status: active
|
|
232
208
|
chapters:
|
|
233
|
-
- id: setup ; title: "Make it yours and bring it up" ; est_min:
|
|
234
|
-
- id: add-page ; title: "Add a page with your skill" ; est_min:
|
|
235
|
-
- id: broken-ref ; title: "A rename breaks a link" ; est_min:
|
|
209
|
+
- id: setup ; title: "Make it yours and bring it up" ; est_min: 4
|
|
210
|
+
- id: add-page ; title: "Add a page with your skill" ; est_min: 3
|
|
211
|
+
- id: broken-ref ; title: "A rename breaks a link" ; est_min: 3
|
|
236
212
|
- id: reserved ; title: "A reserved name collides" ; est_min: 2
|
|
237
|
-
- id: publish ; title: "Ship it: run the publish skill for real" ; est_min:
|
|
213
|
+
- id: publish ; title: "Ship it: run the publish skill for real" ; est_min: 3
|
|
238
214
|
- id: stability ; title: "Set a node's stability (and the `.sm` sidecar)" ; est_min: 3
|
|
239
|
-
- id: golive ; title: "Your
|
|
215
|
+
- id: golive ; title: "Your website, live next to the graph" ; est_min: 3
|
|
240
216
|
|
|
241
217
|
# ----- parked: MCP returns later as its own iteration (body kept in part-mcp.md) -----
|
|
242
218
|
- id: mcp
|
|
243
|
-
order:
|
|
219
|
+
order: 5
|
|
244
220
|
title: "MCP"
|
|
245
221
|
step_file: part-mcp.md
|
|
246
222
|
pace: auto-advance
|
|
247
223
|
preflight: seed
|
|
248
224
|
seed: harness-connected
|
|
249
|
-
prereq:
|
|
225
|
+
prereq: project-kickoff
|
|
250
226
|
track: rich # MCP tool declaration sits on an agent/command body
|
|
251
227
|
status: planned # temporarily disabled, hidden from the menu. Body exists; re-enable when MCP returns.
|
|
252
228
|
chapters:
|
|
@@ -38,10 +38,10 @@ fixtures-data/
|
|
|
38
38
|
|---|---|---|
|
|
39
39
|
| `universal` | `.skillmapignore`, `findings.md` | pre-flight |
|
|
40
40
|
| `prologue` | the seven Part 0 demo nodes | Part 0 (progressive, `--only`), `prologue-built` seed |
|
|
41
|
-
| `portfolio` | Express skeleton, handbook, `content-editor`, `docs/STYLE` + `DEPLOY` | Part 1 (`--only` boot, chapters lay the rest), `harness
|
|
42
|
-
| `harness` | `check-links` skill, `publish` command | Part
|
|
41
|
+
| `portfolio` | Express skeleton, handbook, `content-editor`, `docs/STYLE` + `DEPLOY` | Part 1 (`--only` boot, chapters lay the rest), `harness-connected` seed |
|
|
42
|
+
| `harness` | `check-links` skill, `publish` command | Part 1 connect chapters, `harness-connected` seed |
|
|
43
43
|
| `master` | `master-agent`, `master-skill`, `notes/ideas` | Part 4 `backstage-init` |
|
|
44
|
-
| `cli-external` | `link-validation/hijoA` + `hijoB` | Part
|
|
44
|
+
| `cli-external` | `link-validation/hijoA` + `hijoB` | Part 3 `reference-paths` |
|
|
45
45
|
|
|
46
46
|
## Edits (append fragments)
|
|
47
47
|
|
|
@@ -62,9 +62,8 @@ entered out of order.
|
|
|
62
62
|
|
|
63
63
|
| Seed | Lays | Edits | Drops |
|
|
64
64
|
|---|---|---|---|
|
|
65
|
-
| `prologue-built` (Part
|
|
66
|
-
| `harness-
|
|
67
|
-
| `harness-connected` (Part 3) | `portfolio` + `harness` | `agents-hub`, `content-editor-style` | , |
|
|
65
|
+
| `prologue-built` (Part 3) | `prologue` | `todo-connectors` | `notes/private-credentials.md` |
|
|
66
|
+
| `harness-connected` (Part 2) | `portfolio` + `harness` | `agents-hub`, `content-editor-style` | , |
|
|
68
67
|
|
|
69
68
|
## Footprints (what `clear` and `wipe` remove)
|
|
70
69
|
|
|
@@ -41,6 +41,7 @@ Created /<cwd>/.skill-map/plugins/demo-highlight
|
|
|
41
41
|
Next:
|
|
42
42
|
- Edit extractors/demo-highlight-extractor/index.js
|
|
43
43
|
- Run sm plugins doctor to confirm it loads
|
|
44
|
+
- Run sm plugins trust demo-highlight to let its code run (project-local plugins are untrusted until you allow them)
|
|
44
45
|
- sm plugins slots list: browse slots and input-types
|
|
45
46
|
```
|
|
46
47
|
|
|
@@ -48,6 +49,28 @@ Next:
|
|
|
48
49
|
slashes, no uppercase. `demo-highlight` is fine, `demo/highlight`
|
|
49
50
|
or `Demo-Highlight` are rejected.
|
|
50
51
|
|
|
52
|
+
**Trust it before it can run.** A project-local plugin you just dropped
|
|
53
|
+
into `.skill-map/plugins/` is discovered but its code does NOT run until
|
|
54
|
+
you trust it on this machine, a security gate so cloning a repo never
|
|
55
|
+
auto-executes its plugins behind your back. The plugin is yours (you just
|
|
56
|
+
wrote it), so grant trust now; the next chapters need it to run. Tell the
|
|
57
|
+
tester:
|
|
58
|
+
|
|
59
|
+
> One more step before your plugin can run. skill-map found it but will
|
|
60
|
+
> not execute its code until you **trust** it, your local consent that
|
|
61
|
+
> this code may run on your machine. It is yours, so trust it:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
sm plugins trust demo-highlight
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
> Two separate ideas, on purpose: **enable** says "this plugin is part of
|
|
68
|
+
> the project" (shared, lives in the config), **trust** says "I let it run
|
|
69
|
+
> on this machine" (local, never travels in a commit). A scaffolded plugin
|
|
70
|
+
> is enabled by default, so trusting it is all it needs to run. You can
|
|
71
|
+
> revoke later with `sm plugins untrust demo-highlight`, or use the
|
|
72
|
+
> per-plugin Trust control in the Settings UI.
|
|
73
|
+
|
|
51
74
|
Mark `authoring-1-scaffold: done`.
|
|
52
75
|
|
|
53
76
|
## Step `authoring-2-anatomy` - tour the scaffold (~3 min)
|
|
@@ -162,12 +185,6 @@ the browser, click `notes/ideas`, and find the chip in the card's
|
|
|
162
185
|
**left footer** (it also shows in the inspector). It reads
|
|
163
186
|
`🔍 kw 3`, one match per keyword.
|
|
164
187
|
|
|
165
|
-
> Heads up: editing only the fixture (`notes/ideas.md`) updates
|
|
166
|
-
> live through the watcher, but it recounts with the OLD keyword
|
|
167
|
-
> set, so the chip would read `🔍 kw 2`. The new `XXX` keyword
|
|
168
|
-
> lives in the plugin, and the plugin is read at boot, that is why
|
|
169
|
-
> restarting `sm` is the step that takes the count to 3.
|
|
170
|
-
|
|
171
188
|
> Three matches. The setting flowed from the extension's `settings`
|
|
172
189
|
> through `ctx.settings.keywords` into the extractor, the extractor
|
|
173
190
|
> counted them, the kernel persisted the contribution, and the UI
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Part
|
|
1
|
+
# Part 2 (basic track): The daily loop (step library, `daily-loop`)
|
|
2
2
|
|
|
3
3
|
The campaign's payoff and finale, basic track. The tester operates the harness
|
|
4
4
|
they built the way they would on any normal day, **for real**. Three acts:
|
|
@@ -35,13 +35,14 @@ has NO `sm scan` / `sm check` steps: the watcher re-scans on every save.
|
|
|
35
35
|
## Chapter `setup` - Make it yours and bring it up (~5 min)
|
|
36
36
|
|
|
37
37
|
**Context**: the harness is wired. Now put it to work on a real day. First make
|
|
38
|
-
the site yours
|
|
38
|
+
the site yours, about whatever you like, then serve it. The HTML and
|
|
39
39
|
CSS are Layer 2 (the harness's output); skill-map maps the harness (Layer 1, the
|
|
40
40
|
`.md` files), so the site landing on disk does NOT move the graph.
|
|
41
41
|
|
|
42
42
|
**Preparation**:
|
|
43
|
-
1. Ask the tester
|
|
44
|
-
|
|
43
|
+
1. Ask the tester the two questions straight, with no "before we build, let's
|
|
44
|
+
make it yours" lead-in: what the site should be called and one line about what
|
|
45
|
+
it is for. If they do not care, offer defaults ("My Portfolio"
|
|
45
46
|
/ "Small, sturdy things on the web"). Persist both with
|
|
46
47
|
`node .claude/skills/sm-tutorial/scripts/state.js set-identity --name "<name>" --tagline "<tagline>"`.
|
|
47
48
|
2. Backstage, `Write` `public/style.css`, `public/index.html`, and
|
|
@@ -69,10 +70,6 @@ node server.js
|
|
|
69
70
|
> Open `http://localhost:3000`: there is your site, named after you. Click
|
|
70
71
|
> **About** and back to **Home**.
|
|
71
72
|
>
|
|
72
|
-
> Now glance at the Map: it did not move. What you watched grow is your harness
|
|
73
|
-
> (Layer 1, the `.md` files and their references). The pages and stylesheet are
|
|
74
|
-
> Layer 2, what the harness produces. Two layers, one project.
|
|
75
|
-
>
|
|
76
73
|
> Does the site load and look clean?
|
|
77
74
|
|
|
78
75
|
Wait for confirmation. If `node server.js` reports `Cannot find module
|
|
@@ -81,11 +78,6 @@ Wait for confirmation. If `node server.js` reports `Cannot find module
|
|
|
81
78
|
|
|
82
79
|
## Chapter `add-page` - Add a page with your skill (~4 min)
|
|
83
80
|
|
|
84
|
-
**Context**: the daily move. You want a new page, so you ask your
|
|
85
|
-
`content-editor` to write it, the first time it runs **for real**. It reads
|
|
86
|
-
`docs/STYLE.md` and the shared stylesheet and writes a new page into `public/`.
|
|
87
|
-
The graph does not move (HTML is Layer 2).
|
|
88
|
-
|
|
89
81
|
Tell the tester:
|
|
90
82
|
|
|
91
83
|
> Your turn to delegate, the way you would on a real day. Tell me what page to
|
|
@@ -109,6 +101,9 @@ inside the `> ` blockquote):
|
|
|
109
101
|
> output; the harness on the canvas is Layer 1. Your nodes are not a diagram,
|
|
110
102
|
> they are runnable, and you just ran one.
|
|
111
103
|
>
|
|
104
|
+
> If the new page is not showing, refresh the browser with F5, the site does
|
|
105
|
+
> not reload on its own.
|
|
106
|
+
>
|
|
112
107
|
> See the new page on the site, and the Map unchanged?
|
|
113
108
|
|
|
114
109
|
Wait for confirmation. Mark `add-page`: done. Auto-advance to `broken-ref`.
|
|
@@ -119,13 +114,17 @@ Wait for confirmation. Mark `add-page`: done. Auto-advance to `broken-ref`.
|
|
|
119
114
|
|
|
120
115
|
## Chapter `broken-ref` - A rename breaks a link (~4 min)
|
|
121
116
|
|
|
122
|
-
**Context**:
|
|
123
|
-
|
|
124
|
-
|
|
117
|
+
**Context**: the daily safety net, and where skill-map earns its keep: rename and
|
|
118
|
+
move things freely, and skill-map shows you exactly what you forgot to update
|
|
119
|
+
before it ships broken.
|
|
125
120
|
|
|
126
121
|
**Preparation**: none (the tester drives). Everything is watched live.
|
|
127
122
|
|
|
128
|
-
Tell the tester to rename the deploy runbook
|
|
123
|
+
Tell the tester to free the third terminal, then rename the deploy runbook
|
|
124
|
+
themselves (their file):
|
|
125
|
+
|
|
126
|
+
> In your **third terminal** (the one running `node server.js`), press
|
|
127
|
+
> **Ctrl+C** to stop the site server, then rename the deploy runbook there:
|
|
129
128
|
|
|
130
129
|
```bash
|
|
131
130
|
mv docs/DEPLOY.md docs/DEPLOYMENT.md
|
|
@@ -141,9 +140,7 @@ mv docs/DEPLOY.md docs/DEPLOYMENT.md
|
|
|
141
140
|
> and point the deploy-runbook link at `docs/DEPLOYMENT.md` (the new name). Save.
|
|
142
141
|
>
|
|
143
142
|
> Watch the **Map** again: the arrow snaps back, solid, and the red marker
|
|
144
|
-
> clears, all live.
|
|
145
|
-
> and skill-map shows you exactly what you forgot to update before it ships
|
|
146
|
-
> broken.
|
|
143
|
+
> clears, all live.
|
|
147
144
|
>
|
|
148
145
|
> Did the broken marker appear and then clear?
|
|
149
146
|
|
|
@@ -152,40 +149,35 @@ Wait for confirmation. The harness MUST be clean again before Act C. Mark
|
|
|
152
149
|
|
|
153
150
|
## Chapter `reserved` - A reserved name collides (~2 min)
|
|
154
151
|
|
|
155
|
-
**
|
|
156
|
-
`config`, a name the agent runtime already owns for its own built-in slash verb.
|
|
157
|
-
skill-map warns you before the runtime silently ignores your skill.
|
|
158
|
-
|
|
159
|
-
**Preparation**: `Write` `<provider_dir>/config/SKILL.md`:
|
|
152
|
+
**Preparation**: `Write` `<provider_dir>/model/SKILL.md`:
|
|
160
153
|
```markdown
|
|
161
154
|
---
|
|
162
|
-
name:
|
|
155
|
+
name: model
|
|
163
156
|
description: |
|
|
164
157
|
Scaffolds a new empty page in public/ from the shared template.
|
|
165
158
|
---
|
|
166
159
|
|
|
167
|
-
#
|
|
160
|
+
# model
|
|
168
161
|
|
|
169
162
|
Creates a blank page so you can start writing.
|
|
170
163
|
```
|
|
171
164
|
|
|
172
165
|
The watcher picks up the new skill. Tell the tester:
|
|
173
166
|
|
|
174
|
-
> I added a skill named `
|
|
167
|
+
> I added a skill named `model`. Watch the **Map**: the new `model` skill node
|
|
175
168
|
> appears, but flagged with a **warning** marker. Open its inspector: it reads
|
|
176
|
-
> `name-reserved`, `
|
|
177
|
-
> (like `help`, `clear`, `
|
|
169
|
+
> `name-reserved`, `model` shadows one of the agent runtime's own built-in verbs
|
|
170
|
+
> (like `help`, `clear`, `config`), so the runtime would silently ignore your
|
|
178
171
|
> skill, it never runs. The fix is a name the runtime does not own.
|
|
179
172
|
>
|
|
180
|
-
> Rename it to `new-page`: first rename the folder `<provider_dir>/
|
|
173
|
+
> Rename it to `new-page`: first rename the folder `<provider_dir>/model/` to
|
|
181
174
|
> `<provider_dir>/new-page/`. Then open `new-page/SKILL.md` and, at the top where
|
|
182
|
-
> the frontmatter says `name:
|
|
183
|
-
> the H1 to `# new-page`. Save.
|
|
175
|
+
> the frontmatter says `name: model`, change it to `name: new-page`. Save.
|
|
184
176
|
>
|
|
185
177
|
> Watch the **Map** again: the warning clears and the node is now `new-page`, all
|
|
186
|
-
> live.
|
|
187
|
-
>
|
|
188
|
-
>
|
|
178
|
+
> live. What cleared it was changing `frontmatter.name` (which for a skill must
|
|
179
|
+
> match its folder, so you renamed both). Now `new-page` is yours and the runtime
|
|
180
|
+
> will run it.
|
|
189
181
|
>
|
|
190
182
|
> Did the warning clear after the rename?
|
|
191
183
|
|
|
@@ -197,66 +189,96 @@ Wait for confirmation. Mark `reserved`: done. Auto-advance to `publish`.
|
|
|
197
189
|
|
|
198
190
|
## Chapter `publish` - Ship it: run the publish skill for real (~4 min)
|
|
199
191
|
|
|
200
|
-
**Context**: the
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
deploy runbook. Same Layer 1 / Layer 2 split, the pages are output, so the Map
|
|
204
|
-
stays put while the pipeline runs.
|
|
192
|
+
**Context**: the publish flow only earns its keep when something is actually
|
|
193
|
+
wrong, so first you plant a real bug in the site, then watch the publish skill
|
|
194
|
+
catch and fix it for real.
|
|
205
195
|
|
|
206
|
-
**Preparation**: make sure the pages exist (`index`, `about`, `projects`).
|
|
207
|
-
the tester asks to publish, **execute the publish flow for real** by following
|
|
208
|
-
`<provider_dir>/publish/SKILL.md`: run the `check-links` logic over every `.html`
|
|
209
|
-
under `public/` (does each internal `href` resolve to a file that exists?); if
|
|
210
|
-
any link is broken, hand it to the `content-editor` and re-run; then walk the
|
|
211
|
-
deploy runbook. Do not role-play it.
|
|
196
|
+
**Preparation**: make sure the pages exist (`index`, `about`, `projects`).
|
|
212
197
|
|
|
213
|
-
|
|
198
|
+
This chapter has two beats: the tester breaks a link in the HTML first, then runs
|
|
199
|
+
the publish skill so `check-links` catches the break. The split is required, the
|
|
200
|
+
publish run cannot demonstrate the catch until the break is in place.
|
|
201
|
+
|
|
202
|
+
**Beat 1, plant the bug (the tester breaks the HTML, their file).** Tell the
|
|
203
|
+
tester:
|
|
204
|
+
|
|
205
|
+
> Before we ship, let's break something on purpose. Open `public/index.html` in
|
|
206
|
+
> your editor and find the **About** link in the top nav:
|
|
207
|
+
>
|
|
208
|
+
> ```html
|
|
209
|
+
> <a href="/about.html">About</a>
|
|
210
|
+
> ```
|
|
211
|
+
>
|
|
212
|
+
> Change the target to a typo that points at a page that does not exist, then
|
|
213
|
+
> save:
|
|
214
|
+
>
|
|
215
|
+
> ```html
|
|
216
|
+
> <a href="/abuot.html">About</a>
|
|
217
|
+
> ```
|
|
218
|
+
>
|
|
219
|
+
> Now watch the **Map**. Nothing happens: no arrow moves, no red marker. Back in
|
|
220
|
+
> the `broken-ref` chapter, breaking a link between your `.md` files lit up the
|
|
221
|
+
> graph the instant you saved. This break is invisible to it, and that is
|
|
222
|
+
> correct: skill-map maps your **harness** (the `.md` files, Layer 1), not the
|
|
223
|
+
> HTML pages it produces (Layer 2, your `public/` folder, which is even in
|
|
224
|
+
> `.skillmapignore`). A broken link inside your actual site never shows on the
|
|
225
|
+
> graph. The one thing that catches it is your `check-links` skill, which is
|
|
226
|
+
> exactly what the publish skill runs as its first step.
|
|
227
|
+
>
|
|
228
|
+
> Saved the typo, and the Map stayed unchanged?
|
|
229
|
+
|
|
230
|
+
Wait for confirmation. The Map MUST stay unchanged; if a marker appeared they
|
|
231
|
+
edited a `.md` by mistake, point them back at `public/index.html`.
|
|
214
232
|
|
|
215
|
-
|
|
216
|
-
> real: I follow its steps, run the link check across your pages, fix anything
|
|
217
|
-
> through the `content-editor`, and walk the deploy runbook, exactly what the
|
|
218
|
-
> skill says to do.
|
|
233
|
+
**Beat 2, run the publish skill for real.** Tell the tester:
|
|
219
234
|
|
|
220
|
-
|
|
221
|
-
|
|
235
|
+
> Now ship it. Tell me to publish and I'll run your `publish` skill for real,
|
|
236
|
+
> exactly as written. (You can read the skill anytime by clicking the `publish`
|
|
237
|
+
> node on the Map, then opening its **Body** section.)
|
|
238
|
+
|
|
239
|
+
When the tester asks to publish, **execute the publish flow for real** by
|
|
240
|
+
following `<provider_dir>/publish/SKILL.md`: run the `check-links` logic over
|
|
241
|
+
every `.html` under `public/` (does each internal `href` resolve to a file that
|
|
242
|
+
exists?), which now finds the planted typo; per step 2, hand it to the
|
|
243
|
+
`content-editor` to fix (point the link back at `/about.html`), re-run the check
|
|
244
|
+
until it is clean, then walk the deploy runbook. Do not role-play it; `Read`
|
|
245
|
+
`public/index.html` before and after the fix so the report is honest.
|
|
246
|
+
|
|
247
|
+
After running the flow, report what actually happened:
|
|
222
248
|
|
|
223
249
|
> Here is what just ran, for real:
|
|
224
250
|
>
|
|
225
251
|
> - **check-links** walked every page under `public/` and followed each internal
|
|
226
|
-
> link.
|
|
227
|
-
>
|
|
252
|
+
> link. It caught **1 broken link**: `/abuot.html` on `index.html`, the typo
|
|
253
|
+
> you planted. The graph never flagged it, but the skill did, because the skill
|
|
254
|
+
> reads your real pages.
|
|
255
|
+
> - **step 2 kicked in**: I handed it to your `content-editor` to fix. It pointed
|
|
256
|
+
> the link back at `/about.html`, and a re-run of **check-links** came back
|
|
257
|
+
> clean: 0 broken links.
|
|
228
258
|
> - the **deploy runbook** (`docs/DEPLOYMENT.md`) lists the ship steps:
|
|
229
|
-
> regenerate the pages (done), run the link check (done), start the
|
|
230
|
-
> (next chapter).
|
|
259
|
+
> regenerate the pages (done), run the link check (done, now clean), start the
|
|
260
|
+
> server (next chapter).
|
|
231
261
|
>
|
|
232
|
-
>
|
|
233
|
-
>
|
|
234
|
-
>
|
|
235
|
-
> The link check came back clean and `publish` is wired correctly across your
|
|
236
|
-
> pages. Shall we continue?
|
|
262
|
+
> That is the whole point of the harness: you broke the site, the graph stayed
|
|
263
|
+
> quiet because the HTML is its output and not its map, and your own publish
|
|
264
|
+
> skill caught the break and fixed it before it shipped. Shall we continue?
|
|
237
265
|
|
|
238
|
-
Wait for confirmation.
|
|
266
|
+
Wait for confirmation. The site MUST be clean again (the typo fixed) before
|
|
267
|
+
`golive`. Mark `publish`: done. Auto-advance to `stability`.
|
|
239
268
|
|
|
240
269
|
## Chapter `stability` - Set a node's stability (and the `.sm` sidecar) (~3 min)
|
|
241
270
|
|
|
242
|
-
**Context**: real maintenance includes marking how mature each piece is. skill-map
|
|
243
|
-
lets you tag a node's **stability** from the inspector. That is skill-map's own
|
|
244
|
-
metadata, so it lands in a co-located **`.sm` sidecar** next to the file (the
|
|
245
|
-
vendor file stays untouched), and the first `.sm` write asks for your consent.
|
|
246
|
-
|
|
247
271
|
This chapter is lens-agnostic: follow the `stability` chapter in the rich
|
|
248
|
-
daily-loop (`part-daily-loop.md`) verbatim,
|
|
249
|
-
|
|
250
|
-
|
|
272
|
+
daily-loop (`part-daily-loop.md`) verbatim, setting the `AGENTS` handbook node's
|
|
273
|
+
stability from the inspector, confirming the consent dialog, and watching the
|
|
274
|
+
stability badge plus the `AGENTS.sm` sidecar appear. Nothing here depends on the
|
|
251
275
|
lens.
|
|
252
276
|
|
|
253
277
|
Mark `stability`: done. Auto-advance to `golive`.
|
|
254
278
|
|
|
255
|
-
## Chapter `golive` - Your
|
|
279
|
+
## Chapter `golive` - Your website, live next to the graph (~3 min)
|
|
256
280
|
|
|
257
|
-
|
|
258
|
-
ending with the running portfolio on one side and the full harness graph on the
|
|
259
|
-
other. Lens-agnostic: follow the `golive` chapter in the rich daily-loop
|
|
281
|
+
Lens-agnostic: follow the `golive` chapter in the rich daily-loop
|
|
260
282
|
(`part-daily-loop.md`) verbatim (the serve commands and the closing congratulation
|
|
261
283
|
are identical), except when you name the harness pieces on the graph, say "the
|
|
262
284
|
handbook, the content-editor, the style guide, the publish skill, the link
|