@skill-map/cli 0.53.4 → 0.53.5

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.
@@ -113,7 +113,7 @@ Wait for confirmation. Mark `analyzers`: done.
113
113
 
114
114
  ## Chapter `orphans` - A page nobody links to (~3 min)
115
115
 
116
- **Context**: a different kind of loose end. A node can be perfectly valid and still be an orphan: nothing in the harness links to it. We create a draft page that no one references, and `sm orphans` finds it. The point is to separate three ideas the tester now has names for: orphan (nothing points at it) vs broken-ref (a link with no target) vs issue (a rule violation).
116
+ **Context**: a different kind of loose end. A node can be perfectly valid and still be an orphan: nothing in the harness links to it. We create a draft page that no one references; it lands on the **Map** as a floating dot, and `sm show` confirms it has no incoming links. The point is to separate three ideas the tester now has names for: orphan (nothing points at it) vs broken-ref (a link with no target) vs issue (a rule violation). Note: orphan-ness is a property of the graph (visible on the Map / inspector), there is no `sm check` analyzer for it. The separate `sm orphans` verb is unrelated, it surfaces history stranded by a rename, not unlinked pages, so do NOT use it here.
117
117
 
118
118
  `Write` `docs/draft.md` (markdown kind), a half-finished page nobody has wired up yet:
119
119
 
@@ -138,19 +138,28 @@ Tell the tester:
138
138
  > I dropped a new note into your project, `docs/draft.md`, a
139
139
  > half-finished page. Look at the **Map**: it shows up as a floating
140
140
  > dot with no arrows touching it. Nothing in your harness links to it,
141
- > which makes it an **orphan**.
141
+ > which makes it an **orphan**. Click the dot, the inspector shows no
142
+ > connections in or out.
143
+ >
144
+ > You can confirm the same thing from the CLI:
142
145
  >
143
146
  > ```bash
144
- > sm orphans
147
+ > sm show docs/draft.md
145
148
  > ```
146
149
  >
147
- > `sm orphans` lists exactly that: nodes nothing points at. It is
148
- > worth keeping three ideas apart, because they are easy to confuse:
150
+ > It prints the node's details, and there is **no "Links in"
151
+ > section**, nothing references it. That absence is exactly what
152
+ > "orphan" means here.
153
+ >
154
+ > It is worth keeping three ideas apart, because they are easy to
155
+ > confuse:
149
156
  >
150
157
  > - **orphan**: a real, valid node that simply has no incoming link
151
- > (your `docs/draft`). Not an error, just unreferenced.
158
+ > (your `docs/draft`). Not an error, just unreferenced, and visible
159
+ > on the Map as a floating dot.
152
160
  > - **broken-ref**: a link whose target file does not exist (the one
153
- > you triggered by renaming the runbook). That is a real issue.
161
+ > you triggered by renaming the runbook). That is a real issue
162
+ > `sm check` reports.
154
163
  > - **issue**: any rule violation `sm check` reports (broken-ref is
155
164
  > one family; name-reserved, self-loop and the rest are others).
156
165
  >
@@ -159,7 +168,14 @@ Tell the tester:
159
168
  > reachable from anywhere. When you link to it later, it stops being
160
169
  > an orphan.
161
170
  >
162
- > Did `sm orphans` list `docs/draft`?
171
+ > (Heads up: there is also an `sm orphans` command, but it is a
172
+ > different tool. It tracks history left stranded when you rename a
173
+ > file that had tracked state, not pages with no links, so it will
174
+ > not list `docs/draft`. Running it here prints "no orphan issues",
175
+ > which is correct.)
176
+ >
177
+ > Did `docs/draft` land as a floating dot, with `sm show` confirming
178
+ > no links in?
163
179
 
164
180
  Wait for confirmation. Mark `orphans`: done.
165
181
 
@@ -266,36 +282,4 @@ sm sidecar annotate AGENTS.md
266
282
  >
267
283
  > Did the prompt appear, and does `AGENTS.sm` exist now?
268
284
 
269
- Wait for confirmation. You MAY use `Read` on `AGENTS.sm` to verify it landed. Mark `sidecar`: done.
270
-
271
- ## Chapter `versions` - Bump a version, read its history (~3 min)
272
-
273
- **Context**: now that the consent is granted, the day-to-day versioning verbs go through silently. `sm bump` increments a node's frontmatter version and appends a record to its `.sm` companion; `sm history` reads that trail back. We bump the content editor and read its history. Same consent gate as the previous chapter, already satisfied.
274
-
275
- This is a CLI beat, the tester runs everything (substitute `<provider_dir>` in the path per `_core.md`):
276
-
277
- ```bash
278
- sm bump content-editor
279
- sm history content-editor
280
- ```
281
-
282
- > `sm bump <node>` is the everyday versioning verb: it nudges the
283
- > `version` field in the node's frontmatter up by one and appends an
284
- > entry to that node's `.sm` companion file, recording that the bump
285
- > happened. Because you already granted consent in the last chapter,
286
- > it runs without prompting (the `.sm` write is pre-authorized for
287
- > this checkout).
288
- >
289
- > `sm history <node>` reads that trail back: it prints the version
290
- > entries skill-map has recorded for the content editor, so you can
291
- > see how it has changed over time. Right after one bump you will see
292
- > the single entry the bump just wrote.
293
- >
294
- > The two verbs are a pair: `sm bump` writes a version checkpoint into
295
- > the companion file, `sm history` reads the checkpoints back out.
296
- > Your `.md` body never gets cluttered with this, it all lives in the
297
- > `.sm` alongside it.
298
- >
299
- > Does `sm history` show the bump you just made?
300
-
301
- Wait for confirmation. Mark `versions`: done. Last chapter of the part: apply §Closing a part (the close names the part by its title and routes back to the menu).
285
+ Wait for confirmation. You MAY use `Read` on `AGENTS.sm` to verify it landed. Mark `sidecar`: done. Last chapter of the part: apply §Closing a part (the close names the part by its title and routes back to the menu).
@@ -1,10 +1,10 @@
1
- # Part 5: MCP (step library, `mcp-*` ids)
1
+ # Part 8: MCP (step library, `mcp-*` ids)
2
2
 
3
- This is a chapter apart, the one just before the finale. Pace
4
- `auto-advance`, preflight `reuse` (it builds straight on the
5
- connected portfolio harness from the earlier parts, same cwd, same
6
- live `sm` session). One chapter only. Shared conventions live in
7
- `_core.md`.
3
+ This is a chapter apart, a standalone appendix that comes last in the
4
+ book. Pace `auto-advance`, preflight `seed` (`harness-connected`, so it
5
+ fast-forwards onto the connected portfolio harness whether the campaign
6
+ was just run in this directory or you jumped straight here). One chapter
7
+ only. Shared conventions live in `_core.md`.
8
8
 
9
9
  ## Chapter `mcp-node` - The agent reaches for an MCP tool (~3 min)
10
10
 
@@ -1,4 +1,4 @@
1
- # Part 7 (b): Extend skill-map - plugins (step library, `tour-*` ids)
1
+ # Part 6 (b): Extend skill-map - plugins (step library, `tour-*` ids)
2
2
 
3
3
  Guided tour of the **built-in plugins** that ship with `sm`. Three
4
4
  steps: a quick mental model of what plugins are plus a peek at
@@ -5,7 +5,7 @@ starts an actual project: a tiny personal **portfolio website**,
5
5
  fully static, served by a ~15-line Express server, plus the
6
6
  `.claude/` **harness** that maintains it. skill-map maps the harness
7
7
  (the `.md` assets and how they reference each other); the site itself
8
- is plain HTML the harness produces (Part 3 runs it, Part 6 ships it).
8
+ is plain HTML the harness produces (Part 3 runs it, Part 5 ships it).
9
9
  `pace: per-step`, `preflight: portfolio-init`. Shared
10
10
  conventions live in `_core.md`.
11
11
 
@@ -54,8 +54,9 @@ Wait for confirmation. Mark `kickoff`: done.
54
54
 
55
55
  **Context**: the dogfood beat. Real Claude Code projects keep a
56
56
  `CLAUDE.md` that just points at `AGENTS.md` (this very repo does).
57
- That one-line pointer is a real `mentions` link, the tester's first
58
- connector on the real project.
57
+ That one-line pointer is a real `references` link (the `.md` extension
58
+ makes `@AGENTS.md` a file pointer, not a bare mention), the tester's
59
+ first connector on the real project.
59
60
 
60
61
  Tell the tester to create the file themselves (it is their project's
61
62
  file, Inviolable rule #2):
@@ -68,10 +69,13 @@ file, Inviolable rule #2):
68
69
  > ```
69
70
  >
70
71
  > Save it. Watch the map: a new `CLAUDE.md` node appears, with a
71
- > `mentions` connector pointing at `AGENTS.md`. The `@name` token is
72
- > the same mention syntax from the prologue, now doing real work: it
73
- > tells anyone (and skill-map) that `CLAUDE.md` defers to the
74
- > handbook. This is exactly how this tool's own repo is wired.
72
+ > `references` connector pointing at `AGENTS.md`, solid at 1.00.
73
+ > Because `@AGENTS.md` carries the `.md` extension, skill-map reads it
74
+ > as a file pointer (the same `@name.md` reference you met in the
75
+ > prologue, not a bare mention), and since the handbook is right there
76
+ > the link resolves with full confidence. It tells anyone (and
77
+ > skill-map) that `CLAUDE.md` defers to the handbook. This is exactly
78
+ > how this tool's own repo is wired.
75
79
  >
76
80
  > Did the connector light up?
77
81
 
@@ -1,11 +1,12 @@
1
- # Part 3: Run the harness (your site, live) (step library, `generate` + `serve`)
1
+ # Part 3: Run the harness (your site, live) (step library, `generate` + `serve` + `editor-live`)
2
2
 
3
3
  The first payoff: the harness you built and wired in the earlier parts
4
4
  finally does its job and you see a real site running, without waiting
5
5
  for the finale. Pace `auto-advance`, preflight `seed` (`harness-connected`,
6
- so a tester can jump straight here). Two chapters, in order:
7
- `generate` (the agent writes the HTML pages) then `serve` (the tester
8
- runs the site and sees it next to the graph). This is a deliberately
6
+ so a tester can jump straight here). Three chapters: `generate` (the
7
+ agent writes the HTML pages), `serve` (the tester runs the site next to
8
+ the graph), then an optional `editor-live` (the tester lets the real
9
+ `content-editor` agent write a posts page). This is a deliberately
9
10
  simple, working pass: maintenance, MCP and the full publish pipeline
10
11
  come in the parts after it. Shared conventions live in `_core.md`.
11
12
 
@@ -149,7 +150,32 @@ stop the server with Ctrl+C and the edge case for ports applies the
149
150
  same as elsewhere. Remind them they can leave the server running or
150
151
  stop it with Ctrl+C; either way the next parts do not need it.
151
152
 
152
- Mark `serve`: done. Last chapter of the part: apply §Closing a part
153
- (the close names the part by its title and routes back to the menu;
154
- this is a mid-campaign payoff, NOT the campaign finale, so do not
155
- sign the campaign off here).
153
+ Mark `serve`: done. Auto-advance to the optional `editor-live` chapter.
154
+
155
+ ## Chapter `editor-live` - Let the content-editor agent write a posts page for real (optional) (~3 min)
156
+
157
+ **Context**: optional payoff, and the first time the tester runs a harness member for real instead of playing it. In `generate` the tester (as the agent) wrote the HTML by hand; here the actual `content-editor` agent does the job. The tester asks for a new **posts** page, the tutorial invokes the agent, and a real `public/posts.html` lands, proof that the nodes on the map are runnable, not just a diagram. The Layer-1 / Layer-2 split still holds: the new HTML does NOT move the graph (HTML is not `.md`). Fully skippable; run it or skip it, the part closes either way.
158
+
159
+ On `agent-skills` / Antigravity the `content-editor` member is a **skill**, not an `agent`; invoke it as a skill and keep everything else identical.
160
+
161
+ This chapter is OPTIONAL and the tester opts in. Offer it; if they skip, go straight to the part close below.
162
+
163
+ Tell the tester:
164
+
165
+ > Optional last beat, and the fun one: so far you have *played* the
166
+ > `content-editor` yourself. Want to see it run for real? Ask me to add
167
+ > a **posts** page with your agent, for example: "use the
168
+ > content-editor agent to add a posts page". I'll invoke the real
169
+ > `content-editor` in your project; it reads its own rules and the
170
+ > style guide, then writes a new static page into `public/`.
171
+ >
172
+ > Watch two things: the new page lands in `public/` (and shows on the
173
+ > live site when you open it), and the **Map does NOT move**, same
174
+ > Layer-1 / Layer-2 split as before, the agent's HTML output is not
175
+ > part of the harness graph.
176
+ >
177
+ > Or just tell me to skip it and we'll wrap up this part.
178
+
179
+ If the tester opts in: invoke the project's `content-editor` (the `<provider_dir>/agents/content-editor.md` agent, or the skill on `agent-skills`) via the Task tool to write ONE new static page `public/posts.html`, following the agent's own rules and `docs/STYLE.md` (plain HTML, no framework, no client JS, one page per file, a nav link back to Home), holding two or three short sample posts (a heading plus a sentence or two each). Do NOT edit `public/index.html` or any `.md` harness file, and do NOT edit the agent definition. If the subagent is not invocable in the tester's setup, act as the `content-editor` yourself following the same rules so the beat still lands. Then tell the tester to open `http://localhost:3000/posts.html` (refresh and navigate there), confirm the posts page is live and links back home, and confirm the **Map stayed still**.
180
+
181
+ Wait for confirmation (ran it or skipped). Mark `editor-live`: done. Last chapter of the part: apply §Closing a part (the close names the part by its title and routes back to the menu; this is a mid-campaign payoff, NOT the campaign finale, so do not sign the campaign off here).
@@ -1,6 +1,6 @@
1
- # Part 7 (a): Extend skill-map - settings (step library, `settings-*` ids)
1
+ # Part 6 (a): Extend skill-map - settings (step library, `settings-*` ids)
2
2
 
3
- Step bodies for the settings chapters of Part 7 (config layers, the
3
+ Step bodies for the settings chapters of Part 6 (config layers, the
4
4
  `sm config` verbs, the active provider lens), plus the shared step
5
5
  `settings-6-contributions` that the plugin-authoring chapters reuse.
6
6
  The SKILL.md orchestrator dispatches each `settings-*` chapter id
package/dist/cli.js CHANGED
@@ -1,6 +1,6 @@
1
1
  // cli/entry.ts
2
2
 
3
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="888d57e8-17f0-5013-89d1-f60f3ef2828b")}catch(e){}}();
3
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="ab2725f4-cc31-54b9-b0c4-0d9778b2143e")}catch(e){}}();
4
4
  import { existsSync as existsSync33 } from "fs";
5
5
  import { Builtins, Cli as Cli2 } from "clipanion";
6
6
 
@@ -246,7 +246,7 @@ function bucketByKind(kind, instance, bag) {
246
246
  // package.json
247
247
  var package_default = {
248
248
  name: "@skill-map/cli",
249
- version: "0.53.4",
249
+ version: "0.53.5",
250
250
  description: "skill-map reference implementation \u2014 kernel + CLI + adapters.",
251
251
  license: "MIT",
252
252
  type: "module",
@@ -30251,4 +30251,4 @@ function resolveBareDefault() {
30251
30251
  process.exit(ExitCode.Error);
30252
30252
  }
30253
30253
  //# sourceMappingURL=cli.js.map
30254
- //# debugId=888d57e8-17f0-5013-89d1-f60f3ef2828b
30254
+ //# debugId=ab2725f4-cc31-54b9-b0c4-0d9778b2143e
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  // kernel/i18n/registry.texts.ts
2
2
 
3
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="66543317-554b-53e5-b2d4-5ed32dfdc81a")}catch(e){}}();
3
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="47677efe-5ea6-5c32-bc68-24254a2513dd")}catch(e){}}();
4
4
  var REGISTRY_TEXTS = {
5
5
  duplicateExtension: "Extension already registered: {{kind}}:{{qualifiedId}}",
6
6
  unknownKind: "Unknown extension kind: {{kind}}",
@@ -102,7 +102,7 @@ import { Tiktoken as Tiktoken2 } from "js-tiktoken/lite";
102
102
  // package.json
103
103
  var package_default = {
104
104
  name: "@skill-map/cli",
105
- version: "0.53.4",
105
+ version: "0.53.5",
106
106
  description: "skill-map reference implementation \u2014 kernel + CLI + adapters.",
107
107
  license: "MIT",
108
108
  type: "module",
@@ -3632,4 +3632,4 @@ export {
3632
3632
  runScanWithRenames
3633
3633
  };
3634
3634
  //# sourceMappingURL=index.js.map
3635
- //# debugId=66543317-554b-53e5-b2d4-5ed32dfdc81a
3635
+ //# debugId=47677efe-5ea6-5c32-bc68-24254a2513dd
@@ -1,6 +1,6 @@
1
1
  // kernel/i18n/registry.texts.ts
2
2
 
3
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="3034c153-d87d-57ef-9e51-8770d99ad465")}catch(e){}}();
3
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="e395a3a8-34ff-5d90-ae21-95ad61f53649")}catch(e){}}();
4
4
  var REGISTRY_TEXTS = {
5
5
  duplicateExtension: "Extension already registered: {{kind}}:{{qualifiedId}}",
6
6
  unknownKind: "Unknown extension kind: {{kind}}",
@@ -102,7 +102,7 @@ import { Tiktoken as Tiktoken2 } from "js-tiktoken/lite";
102
102
  // package.json
103
103
  var package_default = {
104
104
  name: "@skill-map/cli",
105
- version: "0.53.4",
105
+ version: "0.53.5",
106
106
  description: "skill-map reference implementation \u2014 kernel + CLI + adapters.",
107
107
  license: "MIT",
108
108
  type: "module",
@@ -3632,4 +3632,4 @@ export {
3632
3632
  runScanWithRenames
3633
3633
  };
3634
3634
  //# sourceMappingURL=index.js.map
3635
- //# debugId=3034c153-d87d-57ef-9e51-8770d99ad465
3635
+ //# debugId=e395a3a8-34ff-5d90-ae21-95ad61f53649