@skill-map/cli 0.60.4 → 0.61.1
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/SKILL.md +161 -266
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/agents-hub/en/agents-hub.md +2 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/agents-hub/es/agents-hub.md +2 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/content-editor-style/en/content-editor-style.md +1 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/content-editor-style/es/content-editor-style.md +1 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/en/todo-bullet-agent.md +1 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/en/todo-bullet-command.md +1 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/en/todo-bullet-guideline.md +1 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/en/todo-bullet-guideline2.md +1 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/en/todo-bullet-skill.md +1 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/es/todo-bullet-agent.md +1 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/es/todo-bullet-command.md +1 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/es/todo-bullet-guideline.md +1 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/es/todo-bullet-guideline2.md +1 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/edits/todo-connectors/es/todo-bullet-skill.md +1 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/manifest.json +85 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/cli-external/en/link-validation/hijoA/note-with-external-link.md +10 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/cli-external/en/link-validation/hijoB/spec.md +11 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/cli-external/es/link-validation/hijoA/note-with-external-link.md +10 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/cli-external/es/link-validation/hijoB/spec.md +11 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/harness/en/__PROVIDER__/commands/publish.md +15 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/harness/en/__PROVIDER__/skills/check-links/SKILL.md +16 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/harness/es/__PROVIDER__/commands/publish.md +16 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/harness/es/__PROVIDER__/skills/check-links/SKILL.md +17 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/master/en/__PROVIDER__/agents/master-agent.md +14 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/master/en/__PROVIDER__/skills/master-skill/SKILL.md +18 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/master/en/notes/ideas.md +11 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/master/es/__PROVIDER__/agents/master-agent.md +15 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/master/es/__PROVIDER__/skills/master-skill/SKILL.md +18 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/master/es/notes/ideas.md +11 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/en/AGENTS.md +6 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/en/__PROVIDER__/agents/content-editor.md +21 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/en/docs/DEPLOY.md +11 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/en/docs/STYLE.md +20 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/en/public/index.html +5 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/es/AGENTS.md +7 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/es/__PROVIDER__/agents/content-editor.md +21 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/es/docs/DEPLOY.md +12 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/es/docs/STYLE.md +21 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/es/public/index.html +5 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/shared/CLAUDE.md +1 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/shared/package.json +6 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/portfolio/shared/server.js +11 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/en/__PROVIDER__/agents/demo-agent.md +16 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/en/__PROVIDER__/commands/demo-command.md +11 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/en/__PROVIDER__/skills/demo-skill/SKILL.md +16 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/en/notes/demo-guideline.md +16 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/en/notes/demo-guideline2.md +12 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/en/notes/private-credentials.md +11 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/en/notes/todo.md +9 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/es/__PROVIDER__/agents/demo-agent.md +16 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/es/__PROVIDER__/commands/demo-command.md +11 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/es/__PROVIDER__/skills/demo-skill/SKILL.md +16 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/es/notes/demo-guideline.md +16 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/es/notes/demo-guideline2.md +13 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/es/notes/private-credentials.md +11 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/prologue/es/notes/todo.md +9 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/universal/en/findings.md +10 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/universal/es/findings.md +10 -0
- package/dist/cli/tutorial/sm-tutorial/fixtures-data/sets/universal/shared/.skillmapignore +28 -0
- package/dist/cli/tutorial/sm-tutorial/references/_core.md +60 -40
- package/dist/cli/tutorial/sm-tutorial/references/_manifest.json +304 -0
- package/dist/cli/tutorial/sm-tutorial/references/_manifest.yml +4 -5
- package/dist/cli/tutorial/sm-tutorial/references/fixtures.md +93 -271
- package/dist/cli/tutorial/sm-tutorial/references/part-authoring.md +1 -2
- package/dist/cli/tutorial/sm-tutorial/references/part-cli.md +7 -30
- package/dist/cli/tutorial/sm-tutorial/references/part-connect-harness.md +21 -40
- package/dist/cli/tutorial/sm-tutorial/references/part-daily-loop.md +107 -194
- package/dist/cli/tutorial/sm-tutorial/references/part-fundamentals.md +58 -143
- package/dist/cli/tutorial/sm-tutorial/references/part-plugins.md +2 -3
- package/dist/cli/tutorial/sm-tutorial/references/part-project-kickoff.md +22 -69
- package/dist/cli/tutorial/sm-tutorial/scripts/fixtures.js +238 -0
- package/dist/cli/tutorial/sm-tutorial/scripts/lib/args.js +29 -0
- package/dist/cli/tutorial/sm-tutorial/scripts/lib/fixtures-manifest.js +32 -0
- package/dist/cli/tutorial/sm-tutorial/scripts/lib/io.js +37 -0
- package/dist/cli/tutorial/sm-tutorial/scripts/lib/manifest.js +24 -0
- package/dist/cli/tutorial/sm-tutorial/scripts/lib/paths.js +68 -0
- package/dist/cli/tutorial/sm-tutorial/scripts/state.js +262 -0
- package/dist/cli.js +7 -8
- package/dist/index.js +6 -4
- package/dist/kernel/index.js +6 -4
- package/dist/ui/chunk-DG3EAGXB.js +3 -0
- package/dist/ui/index.html +1 -1
- package/dist/ui/{main-VJJVD754.js → main-32BO6UKY.js} +1 -1
- package/package.json +5 -3
- package/dist/ui/chunk-DDDCORVR.js +0 -3
|
@@ -1,277 +1,99 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Fixtures and state: the data + script model
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
its content lives in `SKILL.md` (§Fixture and state templates) and
|
|
9
|
-
`part-fundamentals.md`, and the `prologue-built` seed snapshot below
|
|
10
|
-
just points at those. Read the set for the part being entered.
|
|
3
|
+
The tutorial no longer embeds fixture content in prose or hand-edits
|
|
4
|
+
the state file. **Content lives in `fixtures-data/` and is laid by
|
|
5
|
+
`scripts/fixtures.js`; progress lives in `tutorial-state.json` and is
|
|
6
|
+
owned by `scripts/state.js`.** This file is the reference for that
|
|
7
|
+
model; the per-chapter invocations live in each `part-*.md`.
|
|
11
8
|
|
|
12
|
-
|
|
13
|
-
title (`# publish`), never the slash form (`# /publish`). The `slash`
|
|
14
|
-
extractor reads a `/name` token anywhere in the body, the H1 included,
|
|
15
|
-
as an `invoke`, so `# /publish` makes the command invoke itself and
|
|
16
|
-
`sm check` emits a spurious `core/link-self-loop` the tester has no
|
|
17
|
-
context for. Holds for every command fixture wherever it is defined
|
|
18
|
-
(today: the prologue `demo-command`, the `publish` command, and the
|
|
19
|
-
`reserved` chapter's `init`).
|
|
20
|
-
|
|
21
|
-
## Master fixture (Part 4): layout (per provider)
|
|
22
|
-
|
|
23
|
-
Per §Provider detection in `SKILL.md`, the `<provider_dir>`
|
|
24
|
-
placeholder resolves to `.claude/` or `.agents/skills/` depending
|
|
25
|
-
on the detected runtime (Google's Antigravity CLI, which replaced
|
|
26
|
-
Gemini CLI on 2026-05-19, adopted the same open standard as
|
|
27
|
-
`agent-skills`, so both share the `.agents/skills/` layout). Drop
|
|
28
|
-
any file whose kind is not in the provider's supported set: on
|
|
29
|
-
`agent-skills` / Antigravity only the skill + note are valid;
|
|
30
|
-
on `claude` (default) all three apply.
|
|
31
|
-
|
|
32
|
-
Canonical layout (substitute `<provider_dir>` per detection):
|
|
33
|
-
|
|
34
|
-
```
|
|
35
|
-
<cwd>/
|
|
36
|
-
├── <provider_dir>/
|
|
37
|
-
│ ├── agents/ (claude only)
|
|
38
|
-
│ │ └── master-agent.md
|
|
39
|
-
│ └── skills/ (both providers)
|
|
40
|
-
│ └── master-skill/
|
|
41
|
-
│ └── SKILL.md
|
|
42
|
-
├── notes/
|
|
43
|
-
│ └── ideas.md
|
|
44
|
-
└── findings.md
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
On `agent-skills` the `agents/` subtree is omitted (the provider
|
|
48
|
-
does not claim that kind); the skill lives at
|
|
49
|
-
`.agents/skills/master-skill/SKILL.md`.
|
|
50
|
-
|
|
51
|
-
Translate the natural-language prose (descriptions, body text,
|
|
52
|
-
list items) to the tester's language. Keep paths, frontmatter
|
|
53
|
-
keys, identifiers, and link targets in English.
|
|
54
|
-
|
|
55
|
-
## File: `.claude/agents/master-agent.md` (kind: agent)
|
|
56
|
-
|
|
57
|
-
```markdown
|
|
58
|
-
---
|
|
59
|
-
name: master-agent
|
|
60
|
-
description: |
|
|
61
|
-
Example agent used by the advanced tutorial. Has a couple of
|
|
62
|
-
tools so the `core/tools-counter` extractor emits a count.
|
|
63
|
-
tools: [Read, Bash, Edit]
|
|
64
|
-
model: sonnet
|
|
65
|
-
---
|
|
66
|
-
|
|
67
|
-
# master-agent
|
|
68
|
-
|
|
69
|
-
Walks the master-skill outputs and reports findings. Used as the
|
|
70
|
-
target node when we exercise extractors, analyzers, and the
|
|
71
|
-
plugin-authoring flow.
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
## File: `.claude/skills/master-skill/SKILL.md` (kind: skill)
|
|
75
|
-
|
|
76
|
-
```markdown
|
|
77
|
-
---
|
|
78
|
-
name: master-skill
|
|
79
|
-
description: |
|
|
80
|
-
Example skill paired with the master-agent for the advanced
|
|
81
|
-
tutorial. Links to the agent so extractors and analyzers have
|
|
82
|
-
something to chew on.
|
|
83
|
-
---
|
|
84
|
-
|
|
85
|
-
# master-skill
|
|
86
|
-
|
|
87
|
-
Hands heavy work over to the
|
|
88
|
-
[master-agent](../../agents/master-agent.md) and emits a Markdown
|
|
89
|
-
report.
|
|
90
|
-
|
|
91
|
-
## Steps
|
|
92
|
-
1. Read the `target`.
|
|
93
|
-
2. Validate the frontmatter.
|
|
94
|
-
3. Delegate to the agent.
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
## File: `notes/ideas.md` (kind: markdown)
|
|
98
|
-
|
|
99
|
-
```markdown
|
|
100
|
-
---
|
|
101
|
-
name: Ideas backlog
|
|
102
|
-
description: |
|
|
103
|
-
Free-form notes for the advanced tutorial. Demonstrates the
|
|
104
|
-
catch-all markdown kind alongside the agent and skill.
|
|
105
|
-
---
|
|
106
|
-
|
|
107
|
-
# Ideas
|
|
108
|
-
|
|
109
|
-
- [ ] Compare extractor outputs side by side.
|
|
110
|
-
- [ ] Sketch a tiny plugin that surfaces a counter on the agent.
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
## File: `findings.md`
|
|
114
|
-
|
|
115
|
-
```markdown
|
|
116
|
-
# Findings
|
|
117
|
-
|
|
118
|
-
If you spot anything weird during the tutorial, log it here.
|
|
119
|
-
|
|
120
|
-
Per finding:
|
|
121
|
-
- **Chapter**: <id>
|
|
122
|
-
- **Command**: `sm ...`
|
|
123
|
-
- **Expected**: ...
|
|
124
|
-
- **Got**: ...
|
|
125
|
-
- **Notes**: ...
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
## Portfolio fixture (Part 1, `portfolio-init`)
|
|
129
|
-
|
|
130
|
-
Laid backstage before the tester's `sm init` in Part 1. The Express
|
|
131
|
-
skeleton (`server.js`, `package.json`, `public/index.html`) is plain
|
|
132
|
-
scaffolding, not `.md`, so the scan ignores it; it makes the project
|
|
133
|
-
real and runnable (the daily loop, Part 3, runs and ships it). The one boot node is the
|
|
134
|
-
handbook `AGENTS.md`. On `agent-skills` / Antigravity (no `agent`
|
|
135
|
-
kind) the harness still works: the agent member is created as a skill
|
|
136
|
-
in a later chapter.
|
|
137
|
-
|
|
138
|
-
Layout:
|
|
9
|
+
## Data layout (`fixtures-data/`)
|
|
139
10
|
|
|
140
11
|
```
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
└── package.json
|
|
12
|
+
fixtures-data/
|
|
13
|
+
manifest.json sets, footprints, edits, seeds, providerToken, langs
|
|
14
|
+
sets/<set>/
|
|
15
|
+
shared/ lang-invariant files (code: server.js, package.json, CLAUDE.md)
|
|
16
|
+
en/ es/ one tree per language (files with translatable prose)
|
|
17
|
+
edits/<edit-id>/
|
|
18
|
+
en/ es/ append fragments (one file per fragment)
|
|
149
19
|
```
|
|
150
20
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
`
|
|
170
|
-
|
|
171
|
-
docs
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
laying the snapshot below, then `sm init` (if `.skill-map/` is missing) +
|
|
231
|
-
`sm scan`. These are **checklists, not content**: each row names a file
|
|
232
|
-
and the chapter that holds its canonical content. Lay each file by
|
|
233
|
-
copying the content from the named chapter (substitute `<provider_dir>`
|
|
234
|
-
and skip provider-unsupported kinds per `_core.md`); an `EDIT` row is
|
|
235
|
-
applied on top of the file an earlier row laid. Keep these lists in
|
|
236
|
-
sync only when a harness FILE is added or removed, the file CONTENT
|
|
237
|
-
lives in the chapters, so editing a chapter needs no change here.
|
|
238
|
-
|
|
239
|
-
### Seed snapshot: `harness-built` (start of Part 2)
|
|
240
|
-
|
|
241
|
-
The portfolio skeleton plus the harness members Part 1 created, before
|
|
242
|
-
any cross-links:
|
|
243
|
-
|
|
244
|
-
1. `AGENTS.md`, `server.js`, `package.json`, `public/index.html`, and
|
|
245
|
-
the portfolio `.skillmapignore` additions <- the `## Portfolio
|
|
246
|
-
fixture` section above.
|
|
247
|
-
2. `CLAUDE.md` (`@AGENTS.md`) <- part-project-kickoff.md, chapter `manual`.
|
|
248
|
-
3. `<provider_dir>/agents/content-editor.md` <- part-project-kickoff.md, chapter `first-agent`.
|
|
249
|
-
4. `docs/STYLE.md` and `docs/DEPLOY.md` <- part-project-kickoff.md, chapter `real-kinds`.
|
|
250
|
-
|
|
251
|
-
### Seed snapshot: `harness-connected` (start of the daily-loop part)
|
|
252
|
-
|
|
253
|
-
Everything in `harness-built`, PLUS the Part 2 wiring:
|
|
254
|
-
|
|
255
|
-
5. `<provider_dir>/skills/check-links/SKILL.md` <- part-connect-harness.md, chapter `check-links`.
|
|
256
|
-
6. `<provider_dir>/commands/publish.md` <- part-connect-harness.md, chapter `publish`.
|
|
257
|
-
7. EDIT `AGENTS.md`: append the two hub bullets (mention `@content-editor`, invoke `/publish`) <- part-connect-harness.md, chapter `links`.
|
|
258
|
-
8. EDIT `<provider_dir>/agents/content-editor.md`: add the `[style guide](../../docs/STYLE.md)` line <- part-connect-harness.md, chapter `links`.
|
|
259
|
-
|
|
260
|
-
After laying a campaign snapshot the map matches the state a tester would
|
|
261
|
-
have at the END of the part just before the one being entered.
|
|
262
|
-
|
|
263
|
-
### Seed snapshot: `prologue-built` (Part 5 `cli`)
|
|
264
|
-
|
|
265
|
-
NOT cumulative and NOT the portfolio: this is the **Part 0 demo
|
|
266
|
-
fixture**, the six standalone demo nodes with `notes/todo` wired as the
|
|
267
|
-
hub, the state at the end of the prologue's connector chapters: five hub
|
|
268
|
-
links, one of them (`@demo-guideline`, a bare mention that resolves to no
|
|
269
|
-
agent) a deliberate broken reference that `sm check` reports as a single
|
|
270
|
-
`reference-broken` error. Part 5 only reads it. Because it is a different
|
|
271
|
-
fixture from the portfolio, entry first resets any portfolio on disk
|
|
272
|
-
(see SKILL.md §Entering a part, the `cli` case).
|
|
273
|
-
|
|
274
|
-
1. `<provider_dir>/agents/demo-agent.md` <- SKILL.md §Fixture and state templates. (The `.skillmapignore` is universal, already on disk from pre-flight; the snapshot does not lay it.)
|
|
275
|
-
2. `<provider_dir>/skills/demo-skill/SKILL.md`, `<provider_dir>/commands/demo-command.md`, `notes/todo.md`, `notes/demo-guideline.md`, `notes/demo-guideline2.md` <- part-fundamentals.md, chapter `kinds`.
|
|
276
|
-
3. EDIT `notes/todo.md`: wire the hub bullets pointing at the five other nodes <- part-fundamentals.md, chapter `connectors`.
|
|
277
|
-
|
|
21
|
+
- **`__PROVIDER__`** is a literal path segment in the data tree (e.g.
|
|
22
|
+
`sets/prologue/en/__PROVIDER__/agents/demo-agent.md`). The script
|
|
23
|
+
resolves it per provider: `.claude/agents/…` on claude,
|
|
24
|
+
`.agents/skills/…` on agent-skills (where the `skills/` segment
|
|
25
|
+
collapses, since that layout has no `agents`/`commands` dirs). Only
|
|
26
|
+
the PATH is resolved; file CONTENT is laid verbatim.
|
|
27
|
+
- **Kind** is derived from the path (`__PROVIDER__/agents|commands|skills`
|
|
28
|
+
→ agent/command/skill, else markdown); files whose kind the provider
|
|
29
|
+
does not claim are skipped automatically.
|
|
30
|
+
- **Language**: pass `--lang en|es`. A missing language tier for a set
|
|
31
|
+
falls back to the default (`en`). Translate prose (descriptions,
|
|
32
|
+
body, list items, anchor text); keep paths, frontmatter keys, node
|
|
33
|
+
identifiers, link targets, and code in English.
|
|
34
|
+
|
|
35
|
+
## Sets
|
|
36
|
+
|
|
37
|
+
| Set | What it lays | Used by |
|
|
38
|
+
|---|---|---|
|
|
39
|
+
| `universal` | `.skillmapignore`, `findings.md` | pre-flight |
|
|
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-*` seeds |
|
|
42
|
+
| `harness` | `check-links` skill, `publish` command | Part 2 chapters, `harness-connected` seed |
|
|
43
|
+
| `master` | `master-agent`, `master-skill`, `notes/ideas` | Part 4 `backstage-init` |
|
|
44
|
+
| `cli-external` | `link-validation/hijoA` + `hijoB` | Part 5 `reference-paths` |
|
|
45
|
+
|
|
46
|
+
## Edits (append fragments)
|
|
47
|
+
|
|
48
|
+
`edit <id>` appends fragment files to a target (after a one-time
|
|
49
|
+
`prefix`). A `requiresKind` on a fragment (or on the edit's target
|
|
50
|
+
kind) drops it on a provider that does not claim that kind.
|
|
51
|
+
|
|
52
|
+
| Edit | Target | Fragments |
|
|
53
|
+
|---|---|---|
|
|
54
|
+
| `todo-connectors` | `notes/todo.md` | five hub bullets (agent / command / skill gated by kind) |
|
|
55
|
+
| `agents-hub` | `AGENTS.md` | the two handbook hub bullets |
|
|
56
|
+
| `content-editor-style` | `<provider_dir>/agents/content-editor.md` | the style-guide reference line (agent target, so skipped on agent-skills) |
|
|
57
|
+
|
|
58
|
+
## Seeds (fast-forward snapshots)
|
|
59
|
+
|
|
60
|
+
`seed <id>` composes sets + edits + drops to fast-forward into a part
|
|
61
|
+
entered out of order.
|
|
62
|
+
|
|
63
|
+
| Seed | Lays | Edits | Drops |
|
|
64
|
+
|---|---|---|---|
|
|
65
|
+
| `prologue-built` (Part 5) | `prologue` | `todo-connectors` | `notes/private-credentials.md` |
|
|
66
|
+
| `harness-built` (Part 2) | `portfolio` | , | , |
|
|
67
|
+
| `harness-connected` (Part 3) | `portfolio` + `harness` | `agents-hub`, `content-editor-style` | , |
|
|
68
|
+
|
|
69
|
+
## Footprints (what `clear` and `wipe` remove)
|
|
70
|
+
|
|
71
|
+
`manifest.json#footprints` lists the full on-disk reach of each
|
|
72
|
+
fixture, INCLUDING files a part's later chapters add (the daily loop's
|
|
73
|
+
`public/style.css` + generated pages, the renamed `new-page` command,
|
|
74
|
+
`AGENTS.sm`; the portfolio's `DEPLOYMENT.md` rename). `fixtures.js clear <footprint>` (part-entry resets) and
|
|
75
|
+
`state.js wipe` (start-over) both read it, so the per-fixture path list
|
|
76
|
+
lives in ONE place. Add or drop a harness file there.
|
|
77
|
+
|
|
78
|
+
## Changing a fixture
|
|
79
|
+
|
|
80
|
+
Edit the data file under `fixtures-data/`; the chapter that teaches it
|
|
81
|
+
reads the same file (the agent lays it with `fixtures.js`, or shows it
|
|
82
|
+
to the tester with `fixtures.js cat <set> --file <relpath>`). There is
|
|
83
|
+
no second copy to keep in sync. After any change, rebuild
|
|
84
|
+
(`pnpm --filter @skill-map/cli build`) so the byte-for-byte payload
|
|
85
|
+
test sees the new bytes.
|
|
86
|
+
|
|
87
|
+
## Authoring notes (still apply)
|
|
88
|
+
|
|
89
|
+
- **A `command` node's H1 is a plain title (`# publish`), never the
|
|
90
|
+
slash form (`# /publish`).** The `slash` extractor reads a `/name`
|
|
91
|
+
token anywhere in the body (the H1 included) as an `invoke`, so
|
|
92
|
+
`# /publish` makes the command invoke itself and `sm check` emits a
|
|
93
|
+
spurious `core/link-self-loop`. Holds for every command fixture
|
|
94
|
+
(`demo-command`, `publish`, the daily-loop `init`).
|
|
95
|
+
- **No backtick-wrapped relative `.md` paths in `AGENTS.md`'s body.**
|
|
96
|
+
`core/backtick-path` turns a `` `docs/STYLE.md` `` in a code span
|
|
97
|
+
into a `points` link; at kickoff (before `docs/` exists) that lands
|
|
98
|
+
as a broken reference and breaks the "one lonely node" beat. Name
|
|
99
|
+
the docs in prose, never as backticked paths.
|
|
@@ -282,5 +282,4 @@ Mark `authoring-6-upgrade: done`.
|
|
|
282
282
|
>
|
|
283
283
|
> Anything weird worth logging? If not, back to the menu.
|
|
284
284
|
|
|
285
|
-
Mark the
|
|
286
|
-
the matching harness task, return to the menu in `SKILL.md`.
|
|
285
|
+
Mark the chapters done (rule #4) and return to the menu in `SKILL.md`.
|
|
@@ -92,7 +92,13 @@ Mark `annotations`: done.
|
|
|
92
92
|
|
|
93
93
|
**Context**: until now the map saw only files inside the cwd. In real projects a repo often links to files in a sibling repo (a specs project, a sibling package in a monorepo). Skill-map only scans from its cwd downwards, so a link to `../sibling/file.md` shows up as broken. The fix is to declare the external folders in `scan.referencePaths`, which lets the `reference-broken` analyzer validate path-style links against those extra roots **without indexing their files as nodes**. The folders are checked, not walked as part of the map.
|
|
94
94
|
|
|
95
|
-
**Setup (you, silent)**:
|
|
95
|
+
**Setup (you, silent)**: lay the fixture under the tutorial cwd so both sub-projects are siblings of each other but children of the tutorial root (its content + translation live in `fixtures-data/`). No confirmation beat needed, the tester learns about the files in the next message. Backstage (silent):
|
|
96
|
+
|
|
97
|
+
```
|
|
98
|
+
node .claude/skills/sm-tutorial/scripts/fixtures.js lay cli-external --provider <provider> --lang <lang>
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
The fixture lays:
|
|
96
102
|
|
|
97
103
|
```
|
|
98
104
|
link-validation/
|
|
@@ -102,35 +108,6 @@ link-validation/
|
|
|
102
108
|
└── spec.md ← the real target file
|
|
103
109
|
```
|
|
104
110
|
|
|
105
|
-
`link-validation/hijoA/note-with-external-link.md`:
|
|
106
|
-
```markdown
|
|
107
|
-
---
|
|
108
|
-
name: note-with-external-link
|
|
109
|
-
description: |
|
|
110
|
-
Demo note that links out to a sibling project (hijoB) sitting
|
|
111
|
-
next to this one. Used to teach scan.referencePaths.
|
|
112
|
-
---
|
|
113
|
-
|
|
114
|
-
# Note with external link
|
|
115
|
-
|
|
116
|
-
See the [spec](../hijoB/spec.md) for the agreed format.
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
`link-validation/hijoB/spec.md`:
|
|
120
|
-
```markdown
|
|
121
|
-
---
|
|
122
|
-
name: spec
|
|
123
|
-
description: |
|
|
124
|
-
Target of the cross-folder link. Lives outside hijoA's scan
|
|
125
|
-
scope on purpose: that is precisely what scan.referencePaths
|
|
126
|
-
is designed to bridge.
|
|
127
|
-
---
|
|
128
|
-
|
|
129
|
-
# External spec
|
|
130
|
-
|
|
131
|
-
Anything that hijoA points at lives here.
|
|
132
|
-
```
|
|
133
|
-
|
|
134
111
|
Once the files are in place, tell the tester:
|
|
135
112
|
|
|
136
113
|
> I just dropped two sibling folders inside the tutorial cwd:
|
|
@@ -6,25 +6,12 @@ This is the wiring part. Part 1 grew a small set of standalone nodes around the
|
|
|
6
6
|
|
|
7
7
|
**Context**: the harness needs a guard that runs before publishing: a skill that walks every page and checks the internal links resolve. We only create it here (its first standalone `skill` node); the `publish` command in the next chapter is what invokes it.
|
|
8
8
|
|
|
9
|
-
`
|
|
9
|
+
Lay the `check-links` skill (its content + translation live in
|
|
10
|
+
`fixtures-data/`; this kind exists on every provider, so no skip).
|
|
11
|
+
Backstage (silent):
|
|
10
12
|
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
name: check-links
|
|
14
|
-
description: |
|
|
15
|
-
Validates the portfolio's internal links before publishing. Walks
|
|
16
|
-
every generated page and reports any link whose target is missing.
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
# check-links
|
|
20
|
-
|
|
21
|
-
The last gate before the site goes out.
|
|
22
|
-
|
|
23
|
-
## Steps
|
|
24
|
-
1. List every HTML file under `public/`.
|
|
25
|
-
2. For each page, collect its internal links (every `href` to `/` or to a `.html` file).
|
|
26
|
-
3. Check the target exists under `public/` (treat `/` as `public/index.html`).
|
|
27
|
-
4. Report any link whose target is missing; if none, report "0 broken links".
|
|
13
|
+
```
|
|
14
|
+
node .claude/skills/sm-tutorial/scripts/fixtures.js lay harness --only "__PROVIDER__/skills/check-links/SKILL.md" --provider <provider> --lang <lang>
|
|
28
15
|
```
|
|
29
16
|
|
|
30
17
|
Tell the tester:
|
|
@@ -45,7 +32,7 @@ Wait for confirmation. Mark `check-links`: done.
|
|
|
45
32
|
|
|
46
33
|
On `agent-skills` / Antigravity there is no `command` kind, so skip this whole chapter and fold its purpose into the prose of the next one.
|
|
47
34
|
|
|
48
|
-
Tell the tester to create the file themselves (it is their project's file, Inviolable rule #2). Substitute `<provider_dir>` per `_core.md` in the path you give them.
|
|
35
|
+
Tell the tester to create the file themselves (it is their project's file, Inviolable rule #2). Substitute `<provider_dir>` per `_core.md` in the path you give them. Backstage, get the content: `node .claude/skills/sm-tutorial/scripts/fixtures.js cat harness --file "__PROVIDER__/commands/publish.md" --provider <provider> --lang <lang>`, then render it as a **top-level fenced code block**: at column 0, NOT inside the `> ` blockquote and with NO leading indentation, so the tester's copy keeps every line flush left. The frontmatter fences (`---`) MUST land on column 0. If the block is rendered (or pasted) indented, the opening and closing `---` shift off column 0, the YAML never parses, and the `publish` node loads body-only without its `name` / `description` (`sm check` then warns `frontmatter-malformed`). Present the block below exactly as written.
|
|
49
36
|
|
|
50
37
|
> Create `.claude/commands/publish.md` with exactly this content (the first line is `---`, nothing before it):
|
|
51
38
|
|
|
@@ -91,25 +78,20 @@ Continue the tester message:
|
|
|
91
78
|
>
|
|
92
79
|
> Did the three arrows appear?
|
|
93
80
|
|
|
94
|
-
Wait for confirmation. You MAY use `Read` on the file afterwards to verify it landed. Mark `publish`: done.
|
|
81
|
+
Wait for confirmation. You MAY use `Read` on the file afterwards to verify it landed, in particular that the opening and closing `---` are flush at column 0. If a later `sm check` flags `frontmatter-malformed` on `publish.md`, the fences got indented on paste: have the tester re-align every line flush left (strip the leading spaces so `---` is at column 0), then the next scan reads it clean. Mark `publish`: done.
|
|
95
82
|
|
|
96
83
|
## Chapter `links` - The handbook becomes the hub (~4 min)
|
|
97
84
|
|
|
98
85
|
**Context**: the handbook (`AGENTS.md`) has been a lonely node since Part 1. Here it becomes the hub: we add two bullets so it mentions the content editor and invokes the publish command. We also give the content editor a reference to the style guide it follows. Several connectors land, and we recap the three link kinds and which syntax produced each.
|
|
99
86
|
|
|
100
|
-
Apply both edits
|
|
87
|
+
Apply both edits (their content + translation live in `fixtures-data/`).
|
|
88
|
+
The first appends the two hub bullets to `AGENTS.md`; the second adds
|
|
89
|
+
the style-guide reference line to the content-editor (an agent target,
|
|
90
|
+
so it folds away on `agent-skills`). Backstage (silent):
|
|
101
91
|
|
|
102
|
-
**Edit `AGENTS.md`**: append these two bullets at the end of the body (substitute `<provider_dir>` only in prose, the link tokens below stay as written):
|
|
103
|
-
|
|
104
|
-
```markdown
|
|
105
|
-
- When a page needs writing or fixing, brief @content-editor.
|
|
106
|
-
- When the site is ready to go out, run /publish.
|
|
107
92
|
```
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
```markdown
|
|
112
|
-
Every page follows the [style guide](../../docs/STYLE.md).
|
|
93
|
+
node .claude/skills/sm-tutorial/scripts/fixtures.js edit agents-hub --provider <provider> --lang <lang>
|
|
94
|
+
node .claude/skills/sm-tutorial/scripts/fixtures.js edit content-editor-style --provider <provider> --lang <lang>
|
|
113
95
|
```
|
|
114
96
|
|
|
115
97
|
Tell the tester:
|
|
@@ -140,7 +122,7 @@ Wait for confirmation. You MAY use `Read` on the two files afterwards to verify
|
|
|
140
122
|
|
|
141
123
|
## Chapter `confidence` - How sure is each link (~3 min)
|
|
142
124
|
|
|
143
|
-
**Context**: skill-map records how sure it is of every connection and shows that as opacity. In this harness every link resolves to a real node, so they all read solid (1.00); the broken-reference case is the one the tester met in the prologue (the
|
|
125
|
+
**Context**: skill-map records how sure it is of every connection and shows that as opacity. In this harness every link resolves to a real node, so they all read solid (1.00); the broken-reference case is the one the tester met in the prologue (the `@demo-guideline` reference skill-map could not resolve, drawn as no arrow and flagged `reference-broken` at 0.50, then resolved by hand with `.md`). Here we open the Inspector on a real harness node, read the all-solid numbers, and point back to that prologue contrast. Mirrors the prologue's connectors beat on the portfolio.
|
|
144
126
|
|
|
145
127
|
No file edits in this chapter, pure observation on the graph the tester just built.
|
|
146
128
|
|
|
@@ -165,14 +147,13 @@ Tell the tester:
|
|
|
165
147
|
>
|
|
166
148
|
> Your whole harness reads solid because every link lands on a real
|
|
167
149
|
> node, that is what a clean, fully wired graph looks like. So what
|
|
168
|
-
> does a link that does NOT resolve look like? You
|
|
169
|
-
> prologue: `@demo-guideline` was a
|
|
170
|
-
>
|
|
171
|
-
> it
|
|
172
|
-
>
|
|
173
|
-
>
|
|
174
|
-
>
|
|
175
|
-
> real file and drew a solid arrow at **1.00**.
|
|
150
|
+
> does a link that does NOT resolve look like? You met one back in the
|
|
151
|
+
> prologue: `@demo-guideline` was a reference skill-map could not
|
|
152
|
+
> resolve, it had nothing to land on, so skill-map drew no arrow and
|
|
153
|
+
> flagged it as a **broken reference**, its confidence knocked down to
|
|
154
|
+
> **0.50** by the broken penalty. The fix was one character: adding
|
|
155
|
+
> `.md` (`@demo-guideline.md`) turned it into a file reference to the
|
|
156
|
+
> real `demo-guideline.md`, and it drew a solid arrow at **1.00**.
|
|
176
157
|
>
|
|
177
158
|
> So confidence here is really about resolution: **1.00** for a link
|
|
178
159
|
> that lands on a real node, **0.50** for one flagged broken. There is
|