@skill-map/cli 0.68.0 → 0.69.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist/cli/tutorial/sm-tutorial/SKILL.md +14 -15
  2. package/dist/cli/tutorial/sm-tutorial/fixtures-data/manifest.json +0 -3
  3. package/dist/cli/tutorial/sm-tutorial/references/_core.md +15 -6
  4. package/dist/cli/tutorial/sm-tutorial/references/_manifest.json +93 -119
  5. package/dist/cli/tutorial/sm-tutorial/references/_manifest.yml +46 -70
  6. package/dist/cli/tutorial/sm-tutorial/references/fixtures.md +5 -6
  7. package/dist/cli/tutorial/sm-tutorial/references/part-authoring.md +23 -6
  8. package/dist/cli/tutorial/sm-tutorial/references/part-basic-daily.md +98 -76
  9. package/dist/cli/tutorial/sm-tutorial/references/part-basic-fundamentals.md +21 -20
  10. package/dist/cli/tutorial/sm-tutorial/references/part-basic-kickoff.md +151 -6
  11. package/dist/cli/tutorial/sm-tutorial/references/part-cli.md +1 -1
  12. package/dist/cli/tutorial/sm-tutorial/references/part-daily-loop.md +114 -100
  13. package/dist/cli/tutorial/sm-tutorial/references/part-fundamentals.md +27 -31
  14. package/dist/cli/tutorial/sm-tutorial/references/part-project-kickoff.md +171 -14
  15. package/dist/cli/tutorial/sm-tutorial/scripts/state.js +4 -4
  16. package/dist/cli.js +708 -334
  17. package/dist/conformance/index.js +3 -3
  18. package/dist/index.js +11 -10
  19. package/dist/kernel/index.d.ts +27 -17
  20. package/dist/kernel/index.js +11 -10
  21. package/dist/migrations/001_initial.sql +7 -3
  22. package/dist/ui/chunk-E7GLGHVY.js +1 -0
  23. package/dist/ui/chunk-RLRSNHYG.js +3 -0
  24. package/dist/ui/{chunk-4F53HBGG.js → chunk-RRRXQNG6.js} +1 -1
  25. package/dist/ui/{chunk-3GDWM5VM.js → chunk-SI4MGFOW.js} +1 -1
  26. package/dist/ui/index.html +1 -1
  27. package/dist/ui/{main-ZYRIR6DB.js → main-23NGLEUB.js} +3 -3
  28. package/migrations/001_initial.sql +7 -3
  29. package/package.json +2 -2
  30. package/dist/cli/tutorial/sm-tutorial/references/part-basic-connect.md +0 -166
  31. package/dist/cli/tutorial/sm-tutorial/references/part-connect-harness.md +0 -175
  32. package/dist/ui/chunk-BJUBDHJR.js +0 -3
  33. package/dist/ui/chunk-PU5OP5RN.js +0 -1
  34. /package/dist/ui/{chunk-KMHXNOFZ.js → chunk-SXSNTF26.js} +0 -0
@@ -5,7 +5,7 @@ The live-UI prologue: the tester runs `sm init`, opens the browser, and watches
5
5
  **Codex deltas (rich track).** When `tutorial.provider == codex` the lay commands are unchanged (the `--only` ids match the Codex overlay), but the on-disk shapes differ; substitute in the tester-facing prose:
6
6
 
7
7
  - `init`: the boot node `demo-agent` is a **TOML agent** at `.codex/agents/demo-agent.toml`.
8
- - `kinds`: the node list reads `.codex/agents/demo-agent.toml` (agent), `.agents/skills/demo-command/SKILL.md` (Codex has no `command`, so this node is a **skill**), `.agents/skills/demo-skill/SKILL.md` (skill), and the `notes/*.md`. Name the kinds as agent + skill + markdown.
8
+ - `kinds`: the node list reads `.codex/agents/demo-agent.toml` (agent), `.agents/skills/demo-command/SKILL.md` (skill), `.agents/skills/demo-skill/SKILL.md` (skill), and the `notes/*.md`. Name the kinds as agent + skill + markdown (two new kinds this step: skill + markdown). Present `demo-command` as a plain skill: do NOT tell the tester it "is a command" or narrate any command-to-skill substitution. Codex has no `command` kind, so on this track `demo-command` is simply one of the two skills, nothing to explain.
9
9
  - `first-edit`: the description to edit lives in `.codex/agents/demo-agent.toml` (the `description = "…"` TOML field, not YAML frontmatter).
10
10
  - `connectors` onward: identical, the `@`/`/` bullets resolve the same on Codex; only the `ignore` chapter's directory tree shows `.codex/agents/` + `.agents/skills/` instead of `.claude/`.
11
11
 
@@ -152,14 +152,10 @@ Tell the tester:
152
152
  > (That is also why `@demo-agent` drew fine: an `@name` mention
153
153
  > resolves when an agent by that name really exists.)
154
154
  >
155
- > One word on solidity: skill-map draws each connector's
156
- > **confidence** as opacity, and every arrow you see here is fully
157
- > solid (1.00) because each one lands on a real node. The faint,
158
- > partial case shows up later in the campaign; for now the rule is
159
- > simple, a reference
160
- > that resolves draws a solid arrow, a reference that points at
161
- > nothing is not drawn at all and gets flagged instead. The exact
162
- > per-link numbers live in the inspector, next chapter.
155
+ > 💡 Tip: if all these changes left the nodes crowded together, the
156
+ > map toolbar has a **Re-arrange layout** button: it tidies the
157
+ > layout so everything reads better. If you've moved nodes by hand it
158
+ > asks for confirmation first, otherwise it just re-arranges.
163
159
  >
164
160
  > Confirm when you see the four arrows plus the broken-reference
165
161
  > marker on the hub. If an arrow is missing, refresh the browser and
@@ -171,12 +167,6 @@ Expected: four drawn arrows plus one `core/reference-broken` error on `notes/tod
171
167
 
172
168
  The canvas only draws the resolved arrows; the full per-link breakdown, including the broken one that never drew, lives in the Inspector. Open it on the hub so the tester registers the surface before the `edit-link` chapter changes topology.
173
169
 
174
- > 💡 Tip: if all these changes left the nodes crowded together, the
175
- > map toolbar has a **Re-arrange layout** button (tooltip "Re-arrange
176
- > the visible nodes"): it tidies the layout so everything reads
177
- > better. If you've moved nodes by hand it asks for confirmation
178
- > first, otherwise it just re-arranges.
179
- >
180
170
  > 🆕 Open the Inspector for **Demo TODO list** (click the node on
181
171
  > the map). Find the **Connections** section: it has two sections,
182
172
  > **Outgoing** and **Incoming**.
@@ -187,7 +177,7 @@ The canvas only draws the resolved arrows; the full per-link breakdown, includin
187
177
  > confidence: the numeric value. Here you'll see the contrast, the
188
178
  > `references` to `demo-guideline2` reads `1.00` (resolved), while the
189
179
  > `mentions` to `demo-guideline` reads `0.50` and is marked broken,
190
- > that 0.5 is the broken-reference penalty, not a "halfway sure".
180
+ > that 0.5 is the broken-reference penalty, it's a "half sure".
191
181
  >
192
182
  > Now open the Inspector for a couple of the nodes to read their
193
183
  > Incoming count. The four resolved nodes (`demo-agent`,
@@ -196,6 +186,11 @@ The canvas only draws the resolved arrows; the full per-link breakdown, includin
196
186
  > mention never landed on it, so nothing points in. Five outgoing
197
187
  > links on the hub, but only four of them reach a node.
198
188
  >
189
+ > 💡 Tip: skill-map draws each connector's **confidence** as opacity.
190
+ > Every arrow here is solid (1.00) because it lands on a real node; a
191
+ > reference that points at nothing is flagged instead of drawn. The
192
+ > fainter, partial case shows up later in the campaign.
193
+ >
199
194
  > Let me know when you see it.
200
195
 
201
196
  Mark `inspector`: done.
@@ -252,18 +247,20 @@ action itself.
252
247
  > Tell me when the tree is open.
253
248
 
254
249
  > At the top of that sidebar there's a search box (placeholder
255
- > `Search…`). Type `guideline`. Watch both halves at once: the tree
256
- > narrows down to the two guideline nodes (`demo-guideline` and
257
- > `demo-guideline2`) and the **Map** drops every node except those
258
- > two. The search matches a node's name, path,
259
- > or description, and filters live as you type, no Enter needed.
250
+ > `Search…`). Type `guideline`. Watch the tree narrow down to the
251
+ > two guideline nodes (`demo-guideline` and `demo-guideline2`). The
252
+ > search matches a node's name, path, or description, and filters
253
+ > live as you type, no Enter needed. The **Map** stays put: by
254
+ > default the search filters only the files list, not the map (the
255
+ > tip below changes that).
260
256
  >
261
- > Now clear the box. All six nodes come back, in both the tree and
262
- > the Map. Confirm you saw it filter and then restore.
257
+ > Now clear the box. All six nodes come back in the tree. Confirm you
258
+ > saw it filter and then restore.
263
259
 
264
- > Last one. In the tree, find the **Demo TODO list** row: at its
265
- > right edge there's a small **sitemap** icon (its tooltip reads
266
- > "Isolate this node and its direct links on the map"). Click it.
260
+ > Last one. In the tree, find the `notes/todo` row (the **Demo TODO
261
+ > list** hub, the tree labels rows by file name): at its right edge
262
+ > there's a small **sitemap** icon (its tooltip reads "Isolate this
263
+ > node and its direct links on the map"). Click it.
267
264
  >
268
265
  > The Map collapses to **Demo TODO list** plus only the nodes it
269
266
  > draws an arrow to (`demo-command`, `demo-skill`,
@@ -276,10 +273,9 @@ action itself.
276
273
  >
277
274
  > 💡 Tip: remember the search box from a moment ago? The map-icon
278
275
  > button right next to it controls whether the search also filters
279
- > the **Map**. It's on by default, that's why the **Map** narrowed
280
- > along with the tree when you searched `guideline`. Click it to
281
- > switch to filtering only the files list, leaving the map's layout
282
- > in place.
276
+ > the **Map**. It's off by default, which is why the **Map** stayed
277
+ > put while only the tree narrowed when you searched `guideline`.
278
+ > Click it on if you want a search to filter the map too.
283
279
  >
284
280
  > Did the map isolate and then restore?
285
281
 
@@ -317,7 +313,7 @@ Give the tester a mental map of the folder so they know where the file lives, th
317
313
  │ └── skills/
318
314
  │ ├── demo-skill/SKILL.md
319
315
  │ └── sm-tutorial/SKILL.md ← the tutorial you loaded
320
- ├── .skill-map/ ← project DB + settings (managed)
316
+ ├── .skill-map/ ← project DB + settings
321
317
  ├── .skillmapignore ← the file we're about to edit
322
318
  └── notes/
323
319
  ├── todo.md
@@ -1,13 +1,17 @@
1
- # Part 1: The project from zero (step library, `kickoff-*` ids)
1
+ # Part 1: The harness from zero (step library, `kickoff-*` ids)
2
2
 
3
3
  The campaign turns real here. After the abstract prologue, the tester
4
4
  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 (the daily loop, Part 3, runs and ships it).
9
- `pace: per-step`, `preflight: portfolio-init`. Shared
10
- conventions live in `_core.md`.
8
+ is plain HTML the harness produces (the daily loop, Part 2, runs and ships it).
9
+ This part runs end to end: it boots the project and grows its harness
10
+ members (the `kickoff` to `real-kinds` chapters), then wires them into a
11
+ connected graph, a link checker, a publish command, the handbook turned
12
+ hub, and a close-up on connector confidence (the `check-links` to
13
+ `confidence` chapters). `pace: per-step`, `preflight: portfolio-init`.
14
+ Shared conventions live in `_core.md`.
11
15
 
12
16
  The orchestrator's `portfolio-init` pre-flight (backstage, silent)
13
17
  has already laid the bare project skeleton before the tester runs
@@ -33,7 +37,9 @@ The chapters grow the harness from there.
33
37
  - `real-kinds`: Codex's kinds are `agent` (TOML) + `skill` + `markdown`, there is
34
38
  no `command`. Lay only `docs/DEPLOY.md` here (STYLE landed in `first-agent`),
35
39
  and name the kinds as agent + skill + markdown (the skill + the publish piece
36
- arrive in Part 2 as skills).
40
+ arrive later in this part as skills).
41
+ - `publish`: Codex has no `command` kind, so the tester creates a **skill** at `.agents/skills/publish/SKILL.md` instead of `.claude/commands/publish.md`. The body is the Codex one (same `/check-links` + `@content-editor` + deploy reference); fetch it with `fixtures.js cat harness --file "__PROVIDER__/skills/publish/SKILL.md" --provider codex --lang <lang>`. Tell the tester they are creating a `skill` (one node, three connectors); present it plainly as a skill, with no mention of a command or a substitution (per _core.md §Rendering the rich book on Codex, silent substitution). The fixture lays no `publish` for codex in this chapter (the tester authors it), so the `cat` is the source.
42
+ - `links`: the `content-editor-style` reference is baked into the Codex content-editor's TOML (`developer_instructions`) at lay time, so the `edit content-editor-style` step is a no-op on Codex, the `content-editor -> docs/STYLE.md` arrow is already drawn from earlier in this part. Run only `edit agents-hub` and narrate the two `AGENTS.md` arrows; mention the style-guide arrow as already present.
37
43
 
38
44
  ## Chapter `kickoff` - Start the portfolio (~2 min)
39
45
 
@@ -106,8 +112,7 @@ then render it in the fenced block the tester copies:
106
112
  > as a file pointer (the same `@name.md` reference you met in the
107
113
  > prologue), and since the handbook is right there
108
114
  > the link resolves with full confidence. It tells anyone (and
109
- > skill-map) that `CLAUDE.md` defers to the handbook. This is exactly
110
- > how this tool's own repo is wired.
115
+ > skill-map) that `CLAUDE.md` defers to the handbook.
111
116
  >
112
117
  > Did the connector light up?
113
118
 
@@ -126,8 +131,8 @@ Tell the tester:
126
131
 
127
132
  > I added the first real member of your harness: an agent called
128
133
  > `content-editor` (its job is to write the site's pages). A new
129
- > `agent` node appeared on the map. Right now it stands alone; in the
130
- > next part we wire it to the handbook and the style guide.
134
+ > `agent` node appeared on the map. Right now it stands alone; later in
135
+ > this part we wire it to the handbook and the style guide.
131
136
  >
132
137
  > 💡 Tip: I create these harness files for you. If you'd like to see
133
138
  > what's inside, open `<provider_dir>/agents/content-editor.md` in your
@@ -162,14 +167,166 @@ Tell the tester:
162
167
  > - **agent**: `content-editor` (does work on your behalf).
163
168
  > - **markdown**: `AGENTS.md`, `CLAUDE.md`, the two docs (plain notes
164
169
  > and manuals).
165
- > - **skill** and **command**: you add these (the link checker and
166
- > the publish command) in a later part.
170
+ > - **skill** and **command**: you add these later in this part (the
171
+ > link checker and the publish command).
167
172
  >
168
173
  > Your handbook now has a real harness around it: a `content-editor`
169
174
  > agent plus its docs, all on the map.
170
175
  >
171
176
  > See the agent and the docs in the map?
172
177
 
173
- Wait for confirmation. Mark `real-kinds`: done. Last chapter of the
174
- part: apply §Closing a part (the close names the part by its title and
175
- routes back to the menu; do NOT lead into the next part from here).
178
+ Wait for confirmation. Mark `real-kinds`: done.
179
+
180
+ ## Chapter `check-links` - The link checker (~3 min)
181
+
182
+ **Context**: the harness needs a guard that runs before publishing, a skill that checks the site's internal links resolve before it ships. We only create the `skill` node here; the `publish` command in the next chapter is its caller.
183
+
184
+ Lay the `check-links` skill (its content + translation live in
185
+ `fixtures-data/`; this kind exists on every provider, so no skip).
186
+ Backstage (silent):
187
+
188
+ ```
189
+ node .claude/skills/sm-tutorial/scripts/fixtures.js lay harness --only "__PROVIDER__/skills/check-links/SKILL.md" --provider <provider> --lang <lang>
190
+ ```
191
+
192
+ Tell the tester:
193
+
194
+ > So I added that guard: a skill called `check-links`. A new `skill`
195
+ > node appeared on the **Map**, alone for now; the next chapter gives
196
+ > it a caller.
197
+ >
198
+ > See the new skill node?
199
+
200
+ Wait for confirmation. Mark `check-links`: done.
201
+
202
+ ## Chapter `publish` - The publish command (~4 min)
203
+
204
+ **Context**: this is the chapter where the graph comes alive. The `/publish` command ties three pieces together in one body: it invokes the link checker, mentions the content editor, and references the deploy runbook. Three connectors light up from a single new node, one per link syntax.
205
+
206
+ 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.
207
+
208
+ > Create `.claude/commands/publish.md` with exactly this content (the first line is `---`, nothing before it):
209
+
210
+ ```markdown
211
+ ---
212
+ name: publish
213
+ description: |
214
+ Publishes the portfolio: runs the link check, hands off to the
215
+ content editor for any last fixes, then follows the deploy runbook.
216
+ ---
217
+
218
+ # publish
219
+
220
+ The one command you run when the site is ready to go out.
221
+
222
+ ## Steps
223
+ 1. Run /check-links on the pages in public/. If it reports broken links, stop and fix them first.
224
+ 2. If a page needs a content fix, brief @content-editor with the change.
225
+ 3. Follow the [deploy runbook](../../docs/DEPLOY.md): regenerate pages, run the link check, start the server.
226
+ ```
227
+
228
+ Continue the tester message:
229
+
230
+ > Save it. Watch the **Map**: **three** new arrows light up at once
231
+ > from the new `publish` node, and each one is a different colour
232
+ > because each one is a different kind of link:
233
+ >
234
+ > - `publish -> check-links` (kind: `invokes`), from the `/check-links`
235
+ > token in the body.
236
+ > - `publish -> content-editor` (kind: `mentions`), from the
237
+ > `@content-editor` token.
238
+ > - `publish -> docs/DEPLOY.md` (kind: `references`), from the
239
+ > `[deploy runbook](../../docs/DEPLOY.md)` markdown link.
240
+ >
241
+ > One node, three connectors, three link kinds. The harness is
242
+ > starting to look like a real graph.
243
+ >
244
+ > 💡 Tip: to tidy every node into a clean layout, click the
245
+ > **Re-arrange layout** button in the map toolbar. Handy whenever the
246
+ > graph starts to look crowded.
247
+ >
248
+ > Did the three arrows appear?
249
+
250
+ 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.
251
+
252
+ ## Chapter `links` - The handbook becomes the hub (~4 min)
253
+
254
+ **Context**: the handbook (`AGENTS.md`) has been a lonely node since the start of this part. 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.
255
+
256
+ Apply both edits (their content + translation live in `fixtures-data/`).
257
+ The first appends the two hub bullets to `AGENTS.md`; the second adds
258
+ the style-guide reference line to the content-editor. Backstage (silent):
259
+
260
+ ```
261
+ node .claude/skills/sm-tutorial/scripts/fixtures.js edit agents-hub --provider <provider> --lang <lang>
262
+ node .claude/skills/sm-tutorial/scripts/fixtures.js edit content-editor-style --provider <provider> --lang <lang>
263
+ ```
264
+
265
+ Tell the tester:
266
+
267
+ > Two edits, and the **Map** fills in. Your handbook (`AGENTS.md`) is
268
+ > now the hub: it points at the content editor and at the publish
269
+ > command. And the content editor now reaches the style guide it
270
+ > follows. New arrows:
271
+ >
272
+ > - `AGENTS.md -> content-editor` (kind: `mentions`), from `@content-editor`.
273
+ > - `AGENTS.md -> /publish` (kind: `invokes`), from `/publish`.
274
+ > - `content-editor -> docs/STYLE.md` (kind: `references`), from the
275
+ > `[style guide](../../docs/STYLE.md)` markdown link.
276
+ >
277
+ > Here is the whole recap of the three link kinds, one per syntax:
278
+ >
279
+ > - an `@handle` token is always a **mention**.
280
+ > - a `/slash` token is always an **invoke**.
281
+ > - a `[text](path.md)` markdown link is always a **reference**.
282
+ >
283
+ > The kind comes purely from how you wrote it. Your harness is wired
284
+ > end to end now: the handbook reaches the work, the work reaches the
285
+ > docs, and `/publish` pulls the whole publish flow together.
286
+ >
287
+ > Did the new arrows light up?
288
+
289
+ Wait for confirmation. You MAY use `Read` on the two files afterwards to verify the edits landed before moving on. Mark `links`: done.
290
+
291
+ ## Chapter `confidence` - How sure is each link (~3 min)
292
+
293
+ No file edits in this chapter, pure observation on the graph the tester just built.
294
+
295
+ Tell the tester:
296
+
297
+ > Last beat of this part: how sure is skill-map about each connection?
298
+ > It records a **confidence** for every link and draws it as opacity:
299
+ > a link that resolves to a real node is solid (**1.00**), a link that
300
+ > does not lands fainter, so a glance at the **Map** separates the
301
+ > solid wiring from the problem links.
302
+ >
303
+ > Open the Inspector for the `publish` node (click it on the **Map**).
304
+ > Scroll down to the **Connections** panel and read the **Outgoing**
305
+ > rows. Each row shows the link kind and a confidence badge, and here
306
+ > every one reads **1.00**:
307
+ >
308
+ > - `publish -> docs/DEPLOY.md` (`references`) is a markdown link to a
309
+ > file that exists on disk, so skill-map is certain.
310
+ > - `publish -> content-editor` (`mentions`) resolves to the real
311
+ > content-editor agent, and `publish -> check-links` (`invokes`)
312
+ > resolves to the real check-links skill, so both are certain too.
313
+ >
314
+ > Your whole harness reads solid because every link lands on a real
315
+ > node, that is what a clean, fully wired graph looks like. So what
316
+ > does a link that does NOT resolve look like? You met one back in the
317
+ > prologue: `@demo-guideline` was a reference skill-map could not
318
+ > resolve, it had nothing to land on, so skill-map drew no arrow and
319
+ > flagged it as a **broken reference**, its confidence knocked down to
320
+ > **0.50** by the broken penalty. The fix was one character: adding
321
+ > `.md` (`@demo-guideline.md`) turned it into a file reference to the
322
+ > real `demo-guideline.md`, and it drew a solid arrow at **1.00**.
323
+ >
324
+ > **IMPORTANT:** why does confidence matter? It mirrors how the runtime itself
325
+ > resolves a reference: a deterministic name-and-path lookup, no guessing
326
+ > and no scanning the tree for a file under some other extension. That is
327
+ > cheaper and it does not fail, so the agent spends fewer tokens and less
328
+ > time, the same reason a clean, well-named harness is worth keeping.
329
+ >
330
+ > Do you see every badge reading 1.00 in the Inspector?
331
+
332
+ Wait for confirmation. Mark `confidence`: done. Last chapter of the part: apply §Closing a part (the close names the part by its title and routes back to the menu; do NOT lead into the next part from here).
@@ -236,8 +236,8 @@ function computeWipePaths(state) {
236
236
  // provider), so either part's presence means that fixture is on disk.
237
237
  if (has('fundamentals') || has('basic-fundamentals')) addFootprint('prologue');
238
238
  if (
239
- has('project-kickoff') || has('connect-harness') || has('daily-loop')
240
- || has('basic-kickoff') || has('basic-connect') || has('basic-daily')
239
+ has('project-kickoff') || has('daily-loop')
240
+ || has('basic-kickoff') || has('basic-daily')
241
241
  ) addFootprint('portfolio');
242
242
  if (has('extend')) addFootprint('master');
243
243
  // `cli` seeds the prologue demo fixture plus its external-ref demo.
@@ -274,5 +274,5 @@ function main() {
274
274
  }
275
275
 
276
276
  main();
277
- !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]="803fceb9-f545-5f51-8f46-4db3cba6abcf")}catch(e){}}();
278
- //# debugId=803fceb9-f545-5f51-8f46-4db3cba6abcf
277
+ !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]="3ef90c0e-0700-5a7b-a25f-c47aa19fd567")}catch(e){}}();
278
+ //# debugId=3ef90c0e-0700-5a7b-a25f-c47aa19fd567