@skill-map/cli 0.53.5 → 0.54.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 +4 -2
- package/dist/cli/tutorial/sm-tutorial/references/_core.md +33 -7
- package/dist/cli/tutorial/sm-tutorial/references/_manifest.yml +1 -1
- package/dist/cli/tutorial/sm-tutorial/references/fixtures.md +0 -16
- package/dist/cli/tutorial/sm-tutorial/references/part-cli.md +8 -32
- package/dist/cli/tutorial/sm-tutorial/references/part-connect-harness.md +1 -16
- package/dist/cli/tutorial/sm-tutorial/references/part-fundamentals.md +4 -22
- package/dist/cli/tutorial/sm-tutorial/references/part-live-site.md +3 -3
- package/dist/cli/tutorial/sm-tutorial/references/part-maintain.md +17 -18
- package/dist/cli/tutorial/sm-tutorial/references/part-project-kickoff.md +0 -2
- package/dist/cli.js +459 -241
- package/dist/index.js +5 -5
- package/dist/kernel/index.d.ts +30 -3
- package/dist/kernel/index.js +5 -5
- package/dist/migrations/001_initial.sql +1 -1
- package/dist/ui/{chunk-7OJPO3XD.js → chunk-BUNPMGDX.js} +16 -15
- package/dist/ui/{chunk-NBXEOYS4.js → chunk-CXTU4HQV.js} +1 -1
- package/dist/ui/chunk-DSNBKMYU.js +2 -0
- package/dist/ui/chunk-MVRQGDZJ.js +123 -0
- package/dist/ui/index.html +2 -2
- package/dist/ui/{main-QLIHFXBC.js → main-HP3MOLI2.js} +3 -3
- package/dist/ui/{styles-L6FZYH7X.css → styles-4SNVM34O.css} +1 -1
- package/migrations/001_initial.sql +1 -1
- package/package.json +2 -2
- package/dist/ui/chunk-HWQTV6ZL.js +0 -2
- package/dist/ui/chunk-MWDBZ2BE.js +0 -123
|
@@ -42,8 +42,10 @@ prefix when a part spans several files: `settings-*` →
|
|
|
42
42
|
`part-authoring.md`).
|
|
43
43
|
|
|
44
44
|
> For the tester this is a single guided session, never a course
|
|
45
|
-
> catalogue.
|
|
46
|
-
>
|
|
45
|
+
> catalogue. Refer to a chapter by its tester-facing `section.chapter`
|
|
46
|
+
> number plus its friendly title (`_core.md` §Numbering); never expose
|
|
47
|
+
> the internal `order` index ("Part 6", off by one from the menu), a
|
|
48
|
+
> raw "chapter id", or tour jargon ("the settings tour").
|
|
47
49
|
|
|
48
50
|
## Pre-flight (run once, silent on success)
|
|
49
51
|
|
|
@@ -8,9 +8,32 @@ library assumes it. Do NOT restate these rules inside a part file.
|
|
|
8
8
|
The tutorial is **one book**: an ordered sequence of **chapters
|
|
9
9
|
grouped in parts**, listed in `_manifest.yml`. A chapter is the
|
|
10
10
|
minimal unit (1 to a few steps). For the tester it is a single
|
|
11
|
-
guided session, never a "course catalogue"
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
guided session, never a "course catalogue": refer to a chapter by its
|
|
12
|
+
tester-facing `section.chapter` number (§Numbering) plus its friendly
|
|
13
|
+
title, never by a raw "chapter id" or tour jargon ("the settings
|
|
14
|
+
tour"). The menu uses friendly titles; once they pick, you just walk
|
|
15
|
+
that path.
|
|
16
|
+
|
|
17
|
+
## Numbering (the `section.chapter` scheme)
|
|
18
|
+
|
|
19
|
+
Two numbering systems coexist; keep them apart:
|
|
20
|
+
|
|
21
|
+
- **Internal (authoring only)**: the `order` field in `_manifest.yml`
|
|
22
|
+
and the `# Part N` file headers, 0-based (Part 0 the prologue …
|
|
23
|
+
Part 8 the MCP appendix). Use it in `**Context**:` blocks and author
|
|
24
|
+
notes; NEVER say it to the tester, it is off by one from what they
|
|
25
|
+
see.
|
|
26
|
+
- **Tester-facing (`S.N`)**: every part is a **section** numbered by
|
|
27
|
+
its 1-based position in the menu (section `1` is the prologue), and
|
|
28
|
+
every chapter inside it carries a `section.chapter` number like a
|
|
29
|
+
semver minor, resetting per section: section `5`'s chapters are
|
|
30
|
+
`5.1`, `5.2`, … This `S.N` form is the ONLY number you say out loud;
|
|
31
|
+
it matches the menu number the tester picked.
|
|
32
|
+
|
|
33
|
+
So the third chapter of section 5 announces as `5.3`, and the
|
|
34
|
+
prologue's first chapter is `1.1`. The numbers are derived at render
|
|
35
|
+
time from the menu order and the chapter's position in its part,
|
|
36
|
+
nothing is stored in the manifest.
|
|
14
37
|
|
|
15
38
|
## Tone
|
|
16
39
|
|
|
@@ -263,10 +286,12 @@ Never call `TaskCreate` / `TaskUpdate` (Inviolable rule #4).
|
|
|
263
286
|
|
|
264
287
|
For every chapter:
|
|
265
288
|
|
|
266
|
-
1. **Announcement**: "Capítulo N: `<title>`. ~M min." then a blank
|
|
289
|
+
1. **Announcement**: "Capítulo S.N: `<title>`. ~M min." then a blank
|
|
267
290
|
line, then (optionally) one sentence of context on its own
|
|
268
|
-
paragraph. `
|
|
269
|
-
|
|
291
|
+
paragraph. `S` is the section number (the part's 1-based menu
|
|
292
|
+
position) and `N` is the 1-based index of the chapter inside that
|
|
293
|
+
part, resetting per part (§Numbering), so section 5's third chapter
|
|
294
|
+
announces as `Capítulo 5.3`. The context paragraph renders ONLY when
|
|
270
295
|
the source has a `**Context**:` field; if omitted, announce the
|
|
271
296
|
title alone. The title comes from the chapter's `title` in
|
|
272
297
|
`_manifest.yml` (translated per §Tone), not the internal id.
|
|
@@ -339,7 +364,8 @@ and go straight to §Final wrap-up.
|
|
|
339
364
|
|
|
340
365
|
Render the menu numbered and formatted (NOT a bare list), translated
|
|
341
366
|
to the tester's language. A one-line intro, then per part a **bold
|
|
342
|
-
numbered title line** (number + title + `(~M min)
|
|
367
|
+
numbered title line** (the section number + title + `(~M min)`, that
|
|
368
|
+
number is the `S` major in the chapter `S.N` scheme, §Numbering) as plain prose,
|
|
343
369
|
immediately followed by a single-level `> ` blockquote one-line
|
|
344
370
|
description (what the part covers, derived from its title + chapters).
|
|
345
371
|
A **completed part** keeps its plain title (NO `✓` on the title line)
|
|
@@ -62,8 +62,6 @@ description: |
|
|
|
62
62
|
tools so the `core/tools-counter` extractor emits a count.
|
|
63
63
|
tools: [Read, Bash, Edit]
|
|
64
64
|
model: sonnet
|
|
65
|
-
metadata:
|
|
66
|
-
version: "1.0.0"
|
|
67
65
|
---
|
|
68
66
|
|
|
69
67
|
# master-agent
|
|
@@ -82,17 +80,6 @@ description: |
|
|
|
82
80
|
Example skill paired with the master-agent for the advanced
|
|
83
81
|
tutorial. Links to the agent so extractors and analyzers have
|
|
84
82
|
something to chew on.
|
|
85
|
-
inputs:
|
|
86
|
-
- name: target
|
|
87
|
-
type: path
|
|
88
|
-
description: File to process.
|
|
89
|
-
required: true
|
|
90
|
-
outputs:
|
|
91
|
-
- name: report
|
|
92
|
-
type: string
|
|
93
|
-
description: Markdown summary.
|
|
94
|
-
metadata:
|
|
95
|
-
version: "1.0.0"
|
|
96
83
|
---
|
|
97
84
|
|
|
98
85
|
# master-skill
|
|
@@ -115,9 +102,6 @@ name: Ideas backlog
|
|
|
115
102
|
description: |
|
|
116
103
|
Free-form notes for the advanced tutorial. Demonstrates the
|
|
117
104
|
catch-all markdown kind alongside the agent and skill.
|
|
118
|
-
tags: [notes, master]
|
|
119
|
-
metadata:
|
|
120
|
-
version: "1.0.0"
|
|
121
105
|
---
|
|
122
106
|
|
|
123
107
|
# Ideas
|
|
@@ -63,50 +63,28 @@ sm check --json
|
|
|
63
63
|
|
|
64
64
|
Expected: the error surfaces the dangling link from `notes/todo.md` to the non-existent `missing-page.md`. The `--analyzers` filter lets you focus on a single issue type; `--json` emits the structured payload (useful for CI / scripting). When done, the tester can leave the bullet in place or delete it, the rest of the deep-dive doesn't depend on it.
|
|
65
65
|
|
|
66
|
-
If the tester asks about `sm orphans` vs `sm check`:
|
|
67
|
-
|
|
68
|
-
- `sm check` reports broken-refs and other rule-driven issues
|
|
69
|
-
(the deterministic catalog).
|
|
70
|
-
- `sm orphans` is a **different scope**: auto-rename / orphan-node
|
|
71
|
-
detection (a node whose file disappeared, or a candidate rename
|
|
72
|
-
the kernel is still unsure about). Our fixture doesn't produce
|
|
73
|
-
orphans of that kind, so `sm orphans` will print "No orphan /
|
|
74
|
-
auto-rename issues", that's expected, not a bug.
|
|
75
|
-
|
|
76
66
|
Mark `issues`: done.
|
|
77
67
|
|
|
78
68
|
## Chapter `annotations` - Annotations and the .sm consent prompt (~3 min)
|
|
79
69
|
|
|
80
|
-
**Context**:
|
|
70
|
+
**Context**: skill-map keeps each tracked `.md`'s metadata (version, history, tags, annotations) in a sibling **`.sm` companion file** so the `.md` stays clean, and the first time it writes one in a project it asks for consent (remembered in the gitignored `settings.local.json`). The Maintain part walks that consent flow in full; this chapter does not re-teach it. The CLI focus here is what Maintain does not cover: the **three sidecar verbs** and the `--yes` non-interactive switch. A tester who jumped straight here gets a one-line refresher in the demo below.
|
|
81
71
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
We'll demonstrate by creating an empty annotation scaffold for `notes/todo.md`. **Reset any prior consent state first** so the prompt actually appears (an earlier step may have flipped the flag without you noticing, in which case `sm sidecar annotate` would skip straight past the prompt and the lesson would not land):
|
|
72
|
+
Create a scaffold for `notes/todo.md` so there is a `.sm` on disk to talk about. **Reset any prior consent state first** so the prompt appears (an earlier step may have flipped the flag, in which case the verb skips straight past it):
|
|
85
73
|
|
|
86
74
|
```bash
|
|
87
75
|
rm -f notes/todo.sm .skill-map/settings.local.json
|
|
88
76
|
sm sidecar annotate notes/todo.md
|
|
89
77
|
```
|
|
90
78
|
|
|
91
|
-
Expected: a short explanation
|
|
92
|
-
|
|
93
|
-
```bash
|
|
94
|
-
cat notes/todo.sm
|
|
95
|
-
cat .skill-map/settings.local.json
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
**Why the prompt?** The choice is **per-user, per-project**: stored in the gitignored `settings.local.json` so each contributor consents independently and nothing about the choice travels via the repo. Once accepted, the flag stays set and skill-map will never ask again on this checkout (the next `sm sidecar annotate` or `sm bump` goes through silently). On a CI / non-interactive session, pass `--yes` to grant up-front.
|
|
79
|
+
Expected: a short explanation, then a `[Y/n]` prompt (capital Y = default Yes, just hit Enter). After accepting, `notes/todo.sm` appears with an `identity:` block plus an empty `annotations: {}`, and `.skill-map/settings.local.json` records `{ "allowEditSmFiles": true }` so it never asks again on this checkout (the choice is per-user, per-project, gitignored).
|
|
99
80
|
|
|
100
|
-
|
|
81
|
+
The part the CLI adds on top, the three sidecar verbs (all share that same consent gate):
|
|
101
82
|
|
|
102
|
-
- `sm sidecar annotate
|
|
103
|
-
|
|
104
|
-
- `sm
|
|
105
|
-
sidecar's version and refreshes its hashes, same consent gate.
|
|
106
|
-
- `sm sidecar refresh <node>` is the hash-only update (no version
|
|
107
|
-
bump).
|
|
83
|
+
- `sm sidecar annotate <node>` is the scaffold verb you just ran (creates a fresh `.sm`).
|
|
84
|
+
- `sm bump <node>` is the day-to-day verb: it increments the sidecar's version and refreshes its hashes.
|
|
85
|
+
- `sm sidecar refresh <node>` is the hash-only update (no version bump).
|
|
108
86
|
|
|
109
|
-
|
|
87
|
+
And for automation: a CI / non-interactive session has no one to answer the `[Y/n]`, so pass `--yes` to grant consent up front (`sm sidecar annotate <node> --yes`).
|
|
110
88
|
|
|
111
89
|
Mark `annotations`: done.
|
|
112
90
|
|
|
@@ -131,7 +109,6 @@ name: note-with-external-link
|
|
|
131
109
|
description: |
|
|
132
110
|
Demo note that links out to a sibling project (hijoB) sitting
|
|
133
111
|
next to this one. Used to teach scan.referencePaths.
|
|
134
|
-
tags: [demo, link-validation]
|
|
135
112
|
---
|
|
136
113
|
|
|
137
114
|
# Note with external link
|
|
@@ -147,7 +124,6 @@ description: |
|
|
|
147
124
|
Target of the cross-folder link. Lives outside hijoA's scan
|
|
148
125
|
scope on purpose: that is precisely what scan.referencePaths
|
|
149
126
|
is designed to bridge.
|
|
150
|
-
tags: [demo, link-validation]
|
|
151
127
|
---
|
|
152
128
|
|
|
153
129
|
# External spec
|
|
@@ -14,15 +14,6 @@ name: check-links
|
|
|
14
14
|
description: |
|
|
15
15
|
Validates the portfolio's internal links before publishing. Walks
|
|
16
16
|
every generated page and reports any link whose target is missing.
|
|
17
|
-
inputs:
|
|
18
|
-
- name: root
|
|
19
|
-
type: path
|
|
20
|
-
description: Folder of generated pages to check.
|
|
21
|
-
required: true
|
|
22
|
-
outputs:
|
|
23
|
-
- name: report
|
|
24
|
-
type: string
|
|
25
|
-
description: List of broken links, empty when all resolve.
|
|
26
17
|
---
|
|
27
18
|
|
|
28
19
|
# check-links
|
|
@@ -55,7 +46,7 @@ Wait for confirmation. Mark `check-links`: done.
|
|
|
55
46
|
|
|
56
47
|
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.
|
|
57
48
|
|
|
58
|
-
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
|
|
49
|
+
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`.
|
|
59
50
|
|
|
60
51
|
> Create `.claude/commands/publish.md` with exactly this content (the first line is `---`, nothing before it):
|
|
61
52
|
|
|
@@ -65,12 +56,6 @@ name: publish
|
|
|
65
56
|
description: |
|
|
66
57
|
Publishes the portfolio: runs the link check, hands off to the
|
|
67
58
|
content editor for any last fixes, then follows the deploy runbook.
|
|
68
|
-
shortcut: "ctrl+alt+p"
|
|
69
|
-
args:
|
|
70
|
-
- name: root
|
|
71
|
-
type: path
|
|
72
|
-
description: Folder of generated pages to publish.
|
|
73
|
-
required: true
|
|
74
59
|
---
|
|
75
60
|
|
|
76
61
|
# publish
|
|
@@ -43,15 +43,6 @@ Create these five files (with `Write`), exactly in this order. Per §Provider de
|
|
|
43
43
|
description: |
|
|
44
44
|
Example skill that walks a file and returns a Markdown report.
|
|
45
45
|
Showcases the `skill` kind in the demo map.
|
|
46
|
-
inputs:
|
|
47
|
-
- name: target
|
|
48
|
-
type: path
|
|
49
|
-
description: File to process.
|
|
50
|
-
required: true
|
|
51
|
-
outputs:
|
|
52
|
-
- name: report
|
|
53
|
-
type: string
|
|
54
|
-
description: Markdown summary.
|
|
55
46
|
---
|
|
56
47
|
|
|
57
48
|
# demo-skill
|
|
@@ -70,20 +61,14 @@ Create these five files (with `Write`), exactly in this order. Per §Provider de
|
|
|
70
61
|
---
|
|
71
62
|
name: demo-command
|
|
72
63
|
description: |
|
|
73
|
-
Example slash
|
|
74
|
-
|
|
75
|
-
shortcut: "ctrl+alt+d"
|
|
76
|
-
args:
|
|
77
|
-
- name: target
|
|
78
|
-
type: path
|
|
79
|
-
description: File the command will hand off to the skill.
|
|
80
|
-
required: true
|
|
64
|
+
Example slash command that wraps the demo-skill. Showcases the
|
|
65
|
+
`command` kind.
|
|
81
66
|
---
|
|
82
67
|
|
|
83
68
|
# demo-command
|
|
84
69
|
|
|
85
|
-
Quick
|
|
86
|
-
|
|
70
|
+
Quick entry point for running the demo flow on a target file.
|
|
71
|
+
Connectors land in the next sub-step.
|
|
87
72
|
```
|
|
88
73
|
|
|
89
74
|
3. `notes/todo.md`, classified as `kind: markdown` today
|
|
@@ -96,7 +81,6 @@ Create these five files (with `Write`), exactly in this order. Per §Provider de
|
|
|
96
81
|
Live list of things to review in the demo. Will become the
|
|
97
82
|
hub that points to the rest of the fixture in the next
|
|
98
83
|
sub-step.
|
|
99
|
-
tags: [notes, demo]
|
|
100
84
|
---
|
|
101
85
|
|
|
102
86
|
# Pending
|
|
@@ -112,7 +96,6 @@ Create these five files (with `Write`), exactly in this order. Per §Provider de
|
|
|
112
96
|
Static reference notes the rest of the demo points at. The hub
|
|
113
97
|
reaches it with a bare `@`-mention, which stays a faint guess
|
|
114
98
|
(0.50) because it can't resolve to a known entity.
|
|
115
|
-
tags: [notes, demo]
|
|
116
99
|
---
|
|
117
100
|
|
|
118
101
|
# Demo Guideline
|
|
@@ -135,7 +118,6 @@ Create these five files (with `Write`), exactly in this order. Per §Provider de
|
|
|
135
118
|
Sibling of demo-guideline. The hub reaches it with an
|
|
136
119
|
`@`-mention that carries the `.md` extension, so the link
|
|
137
120
|
resolves to this file and lands certain (1.00).
|
|
138
|
-
tags: [notes, demo]
|
|
139
121
|
---
|
|
140
122
|
|
|
141
123
|
# Demo Guideline 2
|
|
@@ -80,8 +80,8 @@ Tell the tester:
|
|
|
80
80
|
>
|
|
81
81
|
> **Step 2, brief the editor** (`@content-editor`). The check found
|
|
82
82
|
> nothing to fix, so there is no brief to hand off this time, that is
|
|
83
|
-
> the happy path. (
|
|
84
|
-
> step earns its keep.)
|
|
83
|
+
> the happy path. (Maintaining the harness is where a link actually
|
|
84
|
+
> breaks, and that is where this step earns its keep.)
|
|
85
85
|
>
|
|
86
86
|
> **Step 3, follow the deploy runbook** (`docs/DEPLOY.md`). It lists:
|
|
87
87
|
> generate the pages (done), run the link check (done), start the
|
|
@@ -122,7 +122,7 @@ Tell the tester:
|
|
|
122
122
|
> Last step, the fun one. In your terminal, run these two commands:
|
|
123
123
|
>
|
|
124
124
|
> `npm install` downloads the one small library the server needs
|
|
125
|
-
> (Express). If you already ran it
|
|
125
|
+
> (Express). If you already ran it earlier it just confirms it is
|
|
126
126
|
> there. Then `node server.js` starts the server; it prints a line
|
|
127
127
|
> like `Listening on http://localhost:3000`.
|
|
128
128
|
>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Part 4: Maintain the
|
|
1
|
+
# Part 4: Maintain the harness (step library, `maintain`)
|
|
2
2
|
|
|
3
3
|
This is the upkeep part. The harness from Part 2 is wired and clean; real projects drift, links break, drafts pile up, names collide. Here the tester breaks something on purpose and fixes it, meets the analyzer catalogue that catches those problems, finds an orphan nobody links to, clears a reserved-name warning, and learns the `.sm` companion files that carry the tool's bookkeeping. `pace: auto-advance` (walk straight into the next chapter once one is marked done), `preflight: seed` (it builds on the portfolio harness from Parts 1 and 2, reusing the accumulated state when its predecessors are done, no fresh fixture of its own). Shared conventions (tone, provider detection / substitution, the `> ` rendering rule, the per-step cycle) live in `_core.md`; do not restate them here.
|
|
4
4
|
|
|
@@ -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; 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
|
|
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 run it or bring it up with the tester here.
|
|
117
117
|
|
|
118
118
|
`Write` `docs/draft.md` (markdown kind), a half-finished page nobody has wired up yet:
|
|
119
119
|
|
|
@@ -123,7 +123,6 @@ name: draft
|
|
|
123
123
|
description: |
|
|
124
124
|
Half-finished page nobody links to yet. Here to show what an
|
|
125
125
|
orphan looks like: a valid node with no incoming connectors.
|
|
126
|
-
tags: [docs, portfolio, draft]
|
|
127
126
|
---
|
|
128
127
|
|
|
129
128
|
# Draft page
|
|
@@ -163,16 +162,12 @@ Tell the tester:
|
|
|
163
162
|
> - **issue**: any rule violation `sm check` reports (broken-ref is
|
|
164
163
|
> one family; name-reserved, self-loop and the rest are others).
|
|
165
164
|
>
|
|
166
|
-
> An orphan is not automatically a problem
|
|
167
|
-
> up yet
|
|
168
|
-
>
|
|
169
|
-
>
|
|
170
|
-
>
|
|
171
|
-
>
|
|
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.)
|
|
165
|
+
> An orphan is not automatically a problem. Sometimes it is a draft you
|
|
166
|
+
> have not wired up yet; sometimes it is a node you deliberately keep on
|
|
167
|
+
> its own, isolated on purpose, and that is just as valid. skill-map is
|
|
168
|
+
> only pointing out that the page is not reachable from anywhere, not
|
|
169
|
+
> telling you to fix it: if you link to it later it stops being an
|
|
170
|
+
> orphan, and if you never do, that was your call, not an error.
|
|
176
171
|
>
|
|
177
172
|
> Did `docs/draft` land as a floating dot, with `sm show` confirming
|
|
178
173
|
> no links in?
|
|
@@ -191,11 +186,6 @@ name: init
|
|
|
191
186
|
description: |
|
|
192
187
|
Bootstraps a fresh portfolio scaffold. Named init on purpose, to
|
|
193
188
|
collide with the runtime built-in and trigger name-reserved.
|
|
194
|
-
args:
|
|
195
|
-
- name: target
|
|
196
|
-
type: path
|
|
197
|
-
description: Folder to scaffold into.
|
|
198
|
-
required: true
|
|
199
189
|
---
|
|
200
190
|
|
|
201
191
|
# init
|
|
@@ -280,6 +270,15 @@ sm sidecar annotate AGENTS.md
|
|
|
280
270
|
> layer (gitignored), so each contributor consents on their own
|
|
281
271
|
> checkout and the choice never travels through git.
|
|
282
272
|
>
|
|
273
|
+
> **Tip:** that `.sm` is also where the inspector gets a node's
|
|
274
|
+
> **Metadata**. With the live `sm` still running, click the `AGENTS`
|
|
275
|
+
> node on the **Map**: the inspector now shows a **Metadata** section
|
|
276
|
+
> that was not there before you created the companion file. It reads
|
|
277
|
+
> straight from `AGENTS.sm`, so a node with no `.sm` has no Metadata
|
|
278
|
+
> section at all. For now it reads **never bumped**, because you only
|
|
279
|
+
> scaffolded the file; once you start running `sm bump AGENTS.md` that
|
|
280
|
+
> panel fills in **Created** and **Last bumped**.
|
|
281
|
+
>
|
|
283
282
|
> Did the prompt appear, and does `AGENTS.sm` exist now?
|
|
284
283
|
|
|
285
284
|
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).
|
|
@@ -139,7 +139,6 @@ runbook), so Part 4's maintenance beats have something to point at.
|
|
|
139
139
|
name: style-guide
|
|
140
140
|
description: |
|
|
141
141
|
Writing and markup conventions every portfolio page follows.
|
|
142
|
-
tags: [docs, portfolio]
|
|
143
142
|
---
|
|
144
143
|
|
|
145
144
|
# Style guide
|
|
@@ -155,7 +154,6 @@ tags: [docs, portfolio]
|
|
|
155
154
|
name: deploy-runbook
|
|
156
155
|
description: |
|
|
157
156
|
How the portfolio gets published once the pages are written.
|
|
158
|
-
tags: [docs, portfolio]
|
|
159
157
|
---
|
|
160
158
|
|
|
161
159
|
# Deploy runbook
|