@skill-map/cli 0.60.3 → 0.61.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/README.md +1 -1
- package/dist/cli/tutorial/sm-tutorial/SKILL.md +149 -263
- 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 +87 -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 +18 -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 +18 -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 +55 -40
- package/dist/cli/tutorial/sm-tutorial/references/_manifest.json +309 -0
- package/dist/cli/tutorial/sm-tutorial/references/_manifest.yml +1 -1
- package/dist/cli/tutorial/sm-tutorial/references/fixtures.md +94 -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 +12 -30
- package/dist/cli/tutorial/sm-tutorial/references/part-daily-loop.md +6 -4
- package/dist/cli/tutorial/sm-tutorial/references/part-fundamentals.md +14 -116
- package/dist/cli/tutorial/sm-tutorial/references/part-plugins.md +2 -3
- package/dist/cli/tutorial/sm-tutorial/references/part-project-kickoff.md +13 -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-FDBHGLTW.js +3 -0
- package/dist/ui/index.html +1 -1
- package/dist/ui/{main-HAPQJZOA.js → main-5GMGTLYQ.js} +1 -1
- package/package.json +5 -3
- package/dist/ui/chunk-HOIHEE6W.js +0 -3
|
@@ -1,277 +1,100 @@
|
|
|
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
|
-
|
|
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
|
+
`docs/draft.md`, `public/style.css` + generated pages, the renamed
|
|
74
|
+
`new-page` command, `AGENTS.sm`; the portfolio's `DEPLOYMENT.md`
|
|
75
|
+
rename). `fixtures.js clear <footprint>` (part-entry resets) and
|
|
76
|
+
`state.js wipe` (start-over) both read it, so the per-fixture path list
|
|
77
|
+
lives in ONE place. Add or drop a harness file there.
|
|
78
|
+
|
|
79
|
+
## Changing a fixture
|
|
80
|
+
|
|
81
|
+
Edit the data file under `fixtures-data/`; the chapter that teaches it
|
|
82
|
+
reads the same file (the agent lays it with `fixtures.js`, or shows it
|
|
83
|
+
to the tester with `fixtures.js cat <set> --file <relpath>`). There is
|
|
84
|
+
no second copy to keep in sync. After any change, rebuild
|
|
85
|
+
(`pnpm --filter @skill-map/cli build`) so the byte-for-byte payload
|
|
86
|
+
test sees the new bytes.
|
|
87
|
+
|
|
88
|
+
## Authoring notes (still apply)
|
|
89
|
+
|
|
90
|
+
- **A `command` node's H1 is a plain title (`# publish`), never the
|
|
91
|
+
slash form (`# /publish`).** The `slash` extractor reads a `/name`
|
|
92
|
+
token anywhere in the body (the H1 included) as an `invoke`, so
|
|
93
|
+
`# /publish` makes the command invoke itself and `sm check` emits a
|
|
94
|
+
spurious `core/link-self-loop`. Holds for every command fixture
|
|
95
|
+
(`demo-command`, `publish`, the daily-loop `init`).
|
|
96
|
+
- **No backtick-wrapped relative `.md` paths in `AGENTS.md`'s body.**
|
|
97
|
+
`core/backtick-path` turns a `` `docs/STYLE.md` `` in a code span
|
|
98
|
+
into a `points` link; at kickoff (before `docs/` exists) that lands
|
|
99
|
+
as a broken reference and breaks the "one lonely node" beat. Name
|
|
100
|
+
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. The frontmatter fence (`---`) MUST sit on column 0 with no leading spaces: present the block below exactly as written, and if the tester pastes it indented, have them strip the leading whitespace. An indented `---` does not parse as YAML, so the `publish` node would land without its `name` or `description`.
|
|
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 in the fenced block the tester copies. The frontmatter fence (`---`) MUST sit on column 0 with no leading spaces: present the block below exactly as written, and if the tester pastes it indented, have them strip the leading whitespace. An indented `---` does not parse as YAML, so the `publish` node would land without its `name` or `description`.
|
|
49
36
|
|
|
50
37
|
> Create `.claude/commands/publish.md` with exactly this content (the first line is `---`, nothing before it):
|
|
51
38
|
|
|
@@ -97,19 +84,14 @@ Wait for confirmation. You MAY use `Read` on the file afterwards to verify it la
|
|
|
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:
|
|
@@ -14,8 +14,9 @@ substitution, the `> ` rendering rule, the per-step cycle, §Closing a part,
|
|
|
14
14
|
**The site is the tester's.** The `setup` chapter asks who it is for and builds
|
|
15
15
|
it around that answer. Identity lives in Layer 2 (the HTML / CSS under
|
|
16
16
|
`public/`), which skill-map does not map, so the graph stays identical no matter
|
|
17
|
-
what the tester names their portfolio. Persist the answer
|
|
18
|
-
|
|
17
|
+
what the tester names their portfolio. Persist the answer with
|
|
18
|
+
`state.js set-identity --name "<name>" --tagline "<tagline>"` (it records
|
|
19
|
+
`tester.site_identity` in `tutorial-state.json`).
|
|
19
20
|
|
|
20
21
|
**Provider note (read once).** Substitute `.claude/` with the detected
|
|
21
22
|
`<provider_dir>`. On `agent-skills` / Antigravity the `content-editor` is a
|
|
@@ -49,8 +50,9 @@ correct, not a bug.
|
|
|
49
50
|
1. Ask the tester, in one short exchange: what the site should be called (their
|
|
50
51
|
name or a title) and one line about what it is for. Keep it light; if they do
|
|
51
52
|
not care, offer defaults ("My Portfolio" / "Small, sturdy things on the
|
|
52
|
-
web").
|
|
53
|
-
|
|
53
|
+
web"). Persist both with
|
|
54
|
+
`node .claude/skills/sm-tutorial/scripts/state.js set-identity --name "<name>" --tagline "<tagline>"`
|
|
55
|
+
(it writes `tester.site_identity` into `tutorial-state.json`).
|
|
54
56
|
2. Backstage, `Write` `public/style.css` exactly as below (Layer 2, ignored by
|
|
55
57
|
the scan; one stylesheet shared by every page).
|
|
56
58
|
3. `Write` `public/index.html` and `public/about.html` from the templates below,
|