@zigrivers/scaffold 3.29.0 → 3.31.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/content/guides/AUTHORING.md +146 -0
- package/content/guides/cli/index.html +1855 -0
- package/content/guides/cli/index.md +206 -0
- package/content/guides/concepts/index.html +1970 -0
- package/content/guides/concepts/index.md +347 -0
- package/content/guides/dashboard/index.html +1913 -0
- package/content/guides/dashboard/index.md +264 -0
- package/content/guides/index.html +368 -15
- package/content/guides/install/.diagrams/diagram-0.svg +1 -0
- package/content/guides/install/.diagrams/manifest.json +3 -0
- package/content/guides/install/index.html +1653 -0
- package/content/guides/install/index.md +186 -0
- package/content/guides/knowledge/.diagrams/diagram-0.svg +1 -0
- package/content/guides/knowledge/.diagrams/manifest.json +3 -0
- package/content/guides/knowledge/index.html +1765 -0
- package/content/guides/knowledge/index.md +209 -0
- package/content/guides/knowledge-freshness/.diagrams/diagram-0.svg +1 -0
- package/content/guides/knowledge-freshness/.diagrams/manifest.json +3 -0
- package/content/guides/knowledge-freshness/index.html +2795 -0
- package/content/guides/knowledge-freshness/index.md +893 -0
- package/content/guides/mmr/index.html +407 -36
- package/content/guides/mmr/index.md +39 -16
- package/content/guides/multi-agent/.diagrams/diagram-0.svg +1 -0
- package/content/guides/multi-agent/.diagrams/manifest.json +3 -0
- package/content/guides/multi-agent/index.html +1715 -0
- package/content/guides/multi-agent/index.md +243 -0
- package/content/guides/observability/.diagrams/diagram-0.svg +1 -0
- package/content/guides/observability/.diagrams/diagram-1.svg +1 -0
- package/content/guides/observability/.diagrams/diagram-2.svg +1 -0
- package/content/guides/observability/.diagrams/diagram-3.svg +1 -0
- package/content/guides/observability/.diagrams/manifest.json +6 -0
- package/content/guides/observability/index.html +3257 -0
- package/content/guides/observability/index.md +1097 -0
- package/content/guides/pipeline/.diagrams/diagram-0.svg +1 -0
- package/content/guides/pipeline/.diagrams/diagram-1.svg +1 -0
- package/content/guides/pipeline/.diagrams/manifest.json +4 -0
- package/content/guides/pipeline/index.html +1973 -0
- package/content/guides/pipeline/index.md +387 -0
- package/content/guides/review-workflow/.diagrams/diagram-0.svg +1 -0
- package/content/guides/review-workflow/.diagrams/diagram-1.svg +1 -0
- package/content/guides/review-workflow/.diagrams/manifest.json +4 -0
- package/content/guides/review-workflow/index.html +1790 -0
- package/content/guides/review-workflow/index.md +248 -0
- package/dist/guides/build.d.ts +1 -1
- package/dist/guides/build.d.ts.map +1 -1
- package/dist/guides/build.js +21 -9
- package/dist/guides/build.js.map +1 -1
- package/dist/guides/build.test.js +47 -0
- package/dist/guides/build.test.js.map +1 -1
- package/dist/guides/chrome.d.ts.map +1 -1
- package/dist/guides/chrome.js +83 -12
- package/dist/guides/chrome.js.map +1 -1
- package/dist/guides/dashboard-theme.css +8 -0
- package/dist/guides/directives-cite.test.d.ts +2 -0
- package/dist/guides/directives-cite.test.d.ts.map +1 -0
- package/dist/guides/directives-cite.test.js +26 -0
- package/dist/guides/directives-cite.test.js.map +1 -0
- package/dist/guides/directives-tabs.test.js +47 -0
- package/dist/guides/directives-tabs.test.js.map +1 -1
- package/dist/guides/directives.d.ts +1 -0
- package/dist/guides/directives.d.ts.map +1 -1
- package/dist/guides/directives.js +38 -0
- package/dist/guides/directives.js.map +1 -1
- package/dist/guides/guides.css +268 -0
- package/dist/guides/index-page.d.ts.map +1 -1
- package/dist/guides/index-page.js +41 -8
- package/dist/guides/index-page.js.map +1 -1
- package/dist/guides/links.d.ts +14 -0
- package/dist/guides/links.d.ts.map +1 -0
- package/dist/guides/links.js +56 -0
- package/dist/guides/links.js.map +1 -0
- package/dist/guides/links.test.d.ts +2 -0
- package/dist/guides/links.test.d.ts.map +1 -0
- package/dist/guides/links.test.js +72 -0
- package/dist/guides/links.test.js.map +1 -0
- package/dist/guides/render.d.ts +1 -0
- package/dist/guides/render.d.ts.map +1 -1
- package/dist/guides/render.js +1 -1
- package/dist/guides/render.js.map +1 -1
- package/dist/guides/sanitize.d.ts.map +1 -1
- package/dist/guides/sanitize.js +5 -0
- package/dist/guides/sanitize.js.map +1 -1
- package/dist/guides/template.d.ts.map +1 -1
- package/dist/guides/template.js +7 -2
- package/dist/guides/template.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Install, Update & Adopt
|
|
3
|
+
topic: install
|
|
4
|
+
description: Installing via npm/Homebrew/plugin, keeping current, and adopting scaffold into a new or existing project
|
|
5
|
+
category: reference
|
|
6
|
+
order: 25
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Overview
|
|
10
|
+
|
|
11
|
+
Scaffold ships as one tool with two install surfaces: the **`scaffold` CLI**
|
|
12
|
+
(distributed on npm as `@zigrivers/scaffold` and via Homebrew) and an optional
|
|
13
|
+
**Claude Code plugin** that auto-activates the runner and pipeline-reference
|
|
14
|
+
skills. The CLI is the core; the plugin only adds interactive guidance on top of
|
|
15
|
+
it. The published npm package exposes the single `scaffold` binary
|
|
16
|
+
(:cite[package.json:37]) and bundles the compiled CLI plus the pipeline content,
|
|
17
|
+
knowledge entries, and skills (:cite[package.json:27]).
|
|
18
|
+
|
|
19
|
+
This guide is for **users** installing, updating, and bootstrapping projects.
|
|
20
|
+
Maintainers releasing Scaffold itself follow a separate flow in
|
|
21
|
+
`docs/architecture/operations-runbook.md` :cite[docs/architecture/operations-runbook.md:326]{mode=advisory}.
|
|
22
|
+
|
|
23
|
+
:::callout{type=note}
|
|
24
|
+
**Prerequisite — Node.js 18.17+.** The CLI requires Node.js `>=18.17.0`
|
|
25
|
+
(:cite[package.json:34]). The Homebrew formula installs and manages Node as a
|
|
26
|
+
dependency, so you don't install Node separately; the npm install uses your
|
|
27
|
+
system Node.
|
|
28
|
+
:::
|
|
29
|
+
|
|
30
|
+
## Installing
|
|
31
|
+
|
|
32
|
+
Pick one of the three surfaces below. The npm and Homebrew tabs install the CLI;
|
|
33
|
+
the plugin tab adds the optional Claude Code skills on top.
|
|
34
|
+
|
|
35
|
+
::::tabs
|
|
36
|
+
:::tab{title="npm"}
|
|
37
|
+
```bash
|
|
38
|
+
npm install -g @zigrivers/scaffold
|
|
39
|
+
```
|
|
40
|
+
Verify with `scaffold version`. This is the recommended path — it uses your
|
|
41
|
+
system Node and updates with `npm update -g`.
|
|
42
|
+
:::
|
|
43
|
+
:::tab{title="Homebrew"}
|
|
44
|
+
```bash
|
|
45
|
+
brew tap zigrivers/scaffold
|
|
46
|
+
brew install scaffold
|
|
47
|
+
```
|
|
48
|
+
The formula installs and manages Node as a dependency, so no separate Node
|
|
49
|
+
install is needed. Verify with `scaffold version`.
|
|
50
|
+
:::
|
|
51
|
+
:::tab{title="Claude Code plugin"}
|
|
52
|
+
Inside a Claude Code session:
|
|
53
|
+
```text
|
|
54
|
+
/plugin marketplace add zigrivers/scaffold
|
|
55
|
+
/plugin install scaffold@zigrivers-scaffold
|
|
56
|
+
```
|
|
57
|
+
This is **optional** and complements the CLI — it auto-activates the Scaffold
|
|
58
|
+
Runner and pipeline-reference skills for interactive guidance. Everything the
|
|
59
|
+
plugin does is also reachable via `scaffold run <step>`. CLI-only users don't
|
|
60
|
+
need it: `scaffold init` installs the skills automatically and later CLI
|
|
61
|
+
commands keep them current.
|
|
62
|
+
:::
|
|
63
|
+
::::
|
|
64
|
+
|
|
65
|
+
## Keeping current
|
|
66
|
+
|
|
67
|
+
Check what you have and whether a newer release exists with `scaffold version`
|
|
68
|
+
(or `scaffold update --check-only`); both query the npm registry for the latest
|
|
69
|
+
`@zigrivers/scaffold` (:cite[src/cli/commands/version.ts:93]). `scaffold update`
|
|
70
|
+
detects how you installed and prints the right upgrade command rather than
|
|
71
|
+
running the install for you — Homebrew installs map to `brew upgrade scaffold`
|
|
72
|
+
(:cite[src/cli/commands/update.ts:47]), npm-global installs to
|
|
73
|
+
`npm update -g @zigrivers/scaffold` (:cite[src/cli/commands/update.ts:51]), and
|
|
74
|
+
anything else falls back to `npx @zigrivers/scaffold@latest`
|
|
75
|
+
(:cite[src/cli/commands/update.ts:55]).
|
|
76
|
+
|
|
77
|
+
The Homebrew command it prints is exactly `brew upgrade scaffold` — it does
|
|
78
|
+
**not** include the `brew update` prefix. Homebrew users must prepend it
|
|
79
|
+
themselves and run `brew update && brew upgrade scaffold`, or the upgrade can
|
|
80
|
+
silently no-op against a stale tap cache (see the danger callout below).
|
|
81
|
+
|
|
82
|
+
Run the upgrade for your channel:
|
|
83
|
+
|
|
84
|
+
::::tabs
|
|
85
|
+
:::tab{title="npm"}
|
|
86
|
+
```bash
|
|
87
|
+
npm update -g @zigrivers/scaffold
|
|
88
|
+
```
|
|
89
|
+
:::
|
|
90
|
+
:::tab{title="Homebrew"}
|
|
91
|
+
```bash
|
|
92
|
+
brew update && brew upgrade scaffold
|
|
93
|
+
```
|
|
94
|
+
:::
|
|
95
|
+
:::tab{title="Claude Code plugin"}
|
|
96
|
+
```text
|
|
97
|
+
/plugin marketplace update zigrivers-scaffold
|
|
98
|
+
```
|
|
99
|
+
:::
|
|
100
|
+
::::
|
|
101
|
+
|
|
102
|
+
:::callout{type=danger}
|
|
103
|
+
**Homebrew: run `brew update` *before* `brew upgrade`.** `brew outdated` and
|
|
104
|
+
`brew upgrade` both read from the local tap cache. Without a preceding
|
|
105
|
+
`brew update`, the cache stays stale and a freshly-published release reports
|
|
106
|
+
"already installed" / nothing-outdated even though a newer formula is live on
|
|
107
|
+
GitHub. Always upgrade with `brew update && brew upgrade scaffold`
|
|
108
|
+
:cite[docs/architecture/operations-runbook.md:326]{mode=advisory}.
|
|
109
|
+
:::
|
|
110
|
+
|
|
111
|
+
After upgrading the CLI, run `scaffold status` inside any existing project. The
|
|
112
|
+
state manager auto-migrates old step keys, drops retired steps, and normalizes
|
|
113
|
+
artifact paths — no manual editing of `.scaffold/state.json` is needed.
|
|
114
|
+
|
|
115
|
+
## Starting fresh vs. adopting
|
|
116
|
+
|
|
117
|
+
Both `scaffold init` and `scaffold adopt` operate on the current project
|
|
118
|
+
directory. Use **`init`** to set up a project from scratch and **`adopt`** to
|
|
119
|
+
bootstrap pipeline state from documentation you already have.
|
|
120
|
+
|
|
121
|
+
```mermaid
|
|
122
|
+
flowchart TD
|
|
123
|
+
A[New or existing project] --> B{Have matching docs<br/>PRD, tech-stack, etc.?}
|
|
124
|
+
B -->|No / brand new| C["scaffold init<br/>wizard + config + skills"]
|
|
125
|
+
B -->|Yes, already written| D["scaffold init, then<br/>scaffold adopt"]
|
|
126
|
+
C --> E[Run the pipeline]
|
|
127
|
+
D --> E
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### `scaffold init`
|
|
131
|
+
|
|
132
|
+
`scaffold init` initializes Scaffold for the current project
|
|
133
|
+
(:cite[src/cli/commands/init.ts:152]): it runs a wizard, writes `.scaffold/`
|
|
134
|
+
config and state, and installs the skills. The wizard detects whether the
|
|
135
|
+
directory is brand new or already has code and suggests a methodology preset
|
|
136
|
+
(`mvp`, `deep`, or `custom`) accordingly. To re-initialize a project that
|
|
137
|
+
already has a `.scaffold/` directory, pass `--force` — it backs up the existing
|
|
138
|
+
state before reinitializing (:cite[src/cli/commands/init.ts:157]).
|
|
139
|
+
|
|
140
|
+
### `scaffold adopt`
|
|
141
|
+
|
|
142
|
+
`scaffold adopt` adopts an existing project into Scaffold
|
|
143
|
+
(:cite[src/cli/commands/adopt.ts:168]). It classifies the project as
|
|
144
|
+
`greenfield`, `brownfield`, or `v1-migration`
|
|
145
|
+
(:cite[src/project/adopt.ts:72]), discovers which pipeline outputs (PRD,
|
|
146
|
+
tech-stack, coding-standards, etc.) you already have on disk, and marks the
|
|
147
|
+
corresponding steps complete so you don't re-run work you've already done.
|
|
148
|
+
Preview the changes first with `--dry-run`, which reports what it would do
|
|
149
|
+
without writing anything (:cite[src/cli/commands/adopt.ts:173]).
|
|
150
|
+
|
|
151
|
+
The usual sequence for an existing codebase: `scaffold init` (create the config
|
|
152
|
+
and state), then `scaffold adopt` (backfill state from existing docs), then pick
|
|
153
|
+
up the pipeline at the first incomplete step.
|
|
154
|
+
|
|
155
|
+
## Troubleshooting
|
|
156
|
+
|
|
157
|
+
:::callout{type=tip}
|
|
158
|
+
**`scaffold: command not found` after npm install.** Your global npm `bin`
|
|
159
|
+
directory isn't on `PATH`. Find it with `echo "$(npm prefix -g)/bin"` (the
|
|
160
|
+
binaries live in the `bin` subdirectory of `npm prefix -g`) and add that
|
|
161
|
+
directory to your shell `PATH`, or reinstall with a prefix that's already on
|
|
162
|
+
`PATH`.
|
|
163
|
+
:::
|
|
164
|
+
|
|
165
|
+
- **Homebrew says "already installed" after a release.** You skipped
|
|
166
|
+
`brew update`. Run `brew update && brew upgrade scaffold` (see the danger
|
|
167
|
+
callout above).
|
|
168
|
+
- **Wrong version reported.** Run `scaffold version` to see the installed
|
|
169
|
+
version, Node version, platform, and the latest registry version side by
|
|
170
|
+
side. If two installs collide (e.g. both npm-global and Homebrew), remove one.
|
|
171
|
+
- **Node too old.** The CLI needs Node 18.17+ (:cite[package.json:34]). Upgrade
|
|
172
|
+
Node, or use the Homebrew install, which installs and manages Node as a
|
|
173
|
+
dependency.
|
|
174
|
+
- **`scaffold update` only prints a command.** That's intentional — it never
|
|
175
|
+
runs installs for you. Copy the printed upgrade command for your channel and
|
|
176
|
+
run it yourself.
|
|
177
|
+
- **Existing project behaves oddly after upgrade.** Run `scaffold status` to
|
|
178
|
+
trigger automatic state migration before anything else.
|
|
179
|
+
|
|
180
|
+
## See also
|
|
181
|
+
|
|
182
|
+
- [Pipeline reference](../pipeline/index.md){mode=advisory} — what the steps are
|
|
183
|
+
and the order they run in.
|
|
184
|
+
- [CLI reference](../cli/index.md){mode=advisory} — every `scaffold` subcommand.
|
|
185
|
+
- [Multi-agent workflow](../multi-agent/index.md){mode=advisory} — running the
|
|
186
|
+
pipeline across parallel worktrees.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg id="my-svg" width="100%" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="flowchart" style="max-width: 830.078px; background-color: transparent;" viewBox="0 0 830.078125 566.5999755859375" role="graphics-document document" aria-roledescription="flowchart-v2"><style>#my-svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#000000;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#my-svg .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#my-svg .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#my-svg .error-icon{fill:#552222;}#my-svg .error-text{fill:#552222;stroke:#552222;}#my-svg .edge-thickness-normal{stroke-width:1px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-thickness-invisible{stroke-width:0;fill:none;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:#666;stroke:#666;}#my-svg .marker.cross{stroke:#666;}#my-svg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#my-svg p{margin:0;}#my-svg .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#000000;}#my-svg .cluster-label text{fill:#333;}#my-svg .cluster-label span{color:#333;}#my-svg .cluster-label span p{background-color:transparent;}#my-svg .label text,#my-svg span{fill:#000000;color:#000000;}#my-svg .node rect,#my-svg .node circle,#my-svg .node ellipse,#my-svg .node polygon,#my-svg .node path{fill:#eee;stroke:#999;stroke-width:1px;}#my-svg .rough-node .label text,#my-svg .node .label text,#my-svg .image-shape .label,#my-svg .icon-shape .label{text-anchor:middle;}#my-svg .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#my-svg .rough-node .label,#my-svg .node .label,#my-svg .image-shape .label,#my-svg .icon-shape .label{text-align:center;}#my-svg .node.clickable{cursor:pointer;}#my-svg .root .anchor path{fill:#666!important;stroke-width:0;stroke:#666;}#my-svg .arrowheadPath{fill:#333333;}#my-svg .edgePath .path{stroke:#666;stroke-width:1px;}#my-svg .flowchart-link{stroke:#666;fill:none;}#my-svg .edgeLabel{background-color:white;text-align:center;}#my-svg .edgeLabel p{background-color:white;}#my-svg .edgeLabel rect{opacity:0.5;background-color:white;fill:white;}#my-svg .labelBkg{background-color:rgba(255, 255, 255, 0.5);}#my-svg .cluster rect{fill:hsl(0, 0%, 98.9215686275%);stroke:#707070;stroke-width:1px;}#my-svg .cluster text{fill:#333;}#my-svg .cluster span{color:#333;}#my-svg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(-160, 0%, 93.3333333333%);border:1px solid #707070;border-radius:2px;pointer-events:none;z-index:100;}#my-svg .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#000000;}#my-svg rect.text{fill:none;stroke-width:0;}#my-svg .icon-shape,#my-svg .image-shape{background-color:white;text-align:center;}#my-svg .icon-shape p,#my-svg .image-shape p{background-color:white;padding:2px;}#my-svg .icon-shape .label rect,#my-svg .image-shape .label rect{opacity:0.5;background-color:white;fill:white;}#my-svg .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#my-svg .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#my-svg .node .neo-node{stroke:#999;}#my-svg [data-look="neo"].node rect,#my-svg [data-look="neo"].cluster rect,#my-svg [data-look="neo"].node polygon{stroke:url(#my-svg-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#my-svg [data-look="neo"].node path{stroke:url(#my-svg-gradient);stroke-width:1px;}#my-svg [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#my-svg [data-look="neo"].node .neo-line path{stroke:#999;filter:none;}#my-svg [data-look="neo"].node circle{stroke:url(#my-svg-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#my-svg [data-look="neo"].node circle .state-start{fill:#000000;}#my-svg [data-look="neo"].icon-shape .icon{fill:url(#my-svg-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#my-svg [data-look="neo"].icon-shape .icon-neo path{stroke:url(#my-svg-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#my-svg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style><g><marker id="my-svg_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointEnd-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="11.5" refY="7" markerUnits="userSpaceOnUse" markerWidth="10.5" markerHeight="14" orient="auto"><path d="M 0 0 L 11.5 7 L 0 14 z" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointStart-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="1" refY="7" markerUnits="userSpaceOnUse" markerWidth="11.5" markerHeight="14" orient="auto"><polygon points="0,7 11.5,14 11.5,0" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleEnd-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refY="5" refX="12.25" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleStart-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-2" refY="5" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossEnd-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="17.7" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5;"/></marker><marker id="my-svg_flowchart-v2-crossStart-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="-3.5" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5; stroke-dasharray: 1, 0;"/></marker><g class="root"><g class="clusters"/><g class="edgePaths"><path d="M129.453,92.2L129.453,96.367C129.453,100.533,129.453,108.867,156.34,117.64C183.227,126.413,237.002,135.626,263.889,140.232L290.776,144.839" id="my-svg-L_STEP_SELECT_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_STEP_SELECT_0" data-points="W3sieCI6MTI5LjQ1MzEyNSwieSI6OTIuMTk5OTk2OTQ4MjQyMTl9LHsieCI6MTI5LjQ1MzEyNSwieSI6MTE3LjE5OTk5Njk0ODI0MjE5fSx7IngiOjI5NC43MTg3NSwieSI6MTQ1LjUxNDM5MzE0MDk4NDZ9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M418.375,92.2L418.375,96.367C418.375,100.533,418.375,108.867,418.375,116.533C418.375,124.2,418.375,131.2,418.375,134.7L418.375,138.2" id="my-svg-L_OVERLAY_SELECT_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_OVERLAY_SELECT_0" data-points="W3sieCI6NDE4LjM3NSwieSI6OTIuMTk5OTk2OTQ4MjQyMTl9LHsieCI6NDE4LjM3NSwieSI6MTE3LjE5OTk5Njk0ODI0MjE5fSx7IngiOjQxOC4zNzUsInkiOjE0Mi4xOTk5OTY5NDgyNDIyfV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M418.375,191.2L418.375,195.367C418.375,199.533,418.375,207.867,418.375,215.533C418.375,223.2,418.375,230.2,418.375,233.7L418.375,237.2" id="my-svg-L_SELECT_RENDER_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_SELECT_RENDER_0" data-points="W3sieCI6NDE4LjM3NSwieSI6MTkxLjE5OTk5Njk0ODI0MjJ9LHsieCI6NDE4LjM3NSwieSI6MjE2LjE5OTk5Njk0ODI0MjJ9LHsieCI6NDE4LjM3NSwieSI6MjQxLjE5OTk5Njk0ODI0MjJ9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M703.961,92.2L703.961,96.367C703.961,100.533,703.961,108.867,677.63,117.597C651.298,126.328,598.635,135.456,572.304,140.02L545.972,144.584" id="my-svg-L_INDEX_SELECT_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_INDEX_SELECT_0" data-points="W3sieCI6NzAzLjk2MDkzNzUsInkiOjkyLjE5OTk5Njk0ODI0MjE5fSx7IngiOjcwMy45NjA5Mzc1LCJ5IjoxMTcuMTk5OTk2OTQ4MjQyMTl9LHsieCI6NTQyLjAzMTI1LCJ5IjoxNDUuMjY2OTIzNDk3Mjc3OX1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M418.375,325.4L418.375,329.567C418.375,333.733,418.375,342.067,418.375,349.733C418.375,357.4,418.375,364.4,418.375,367.9L418.375,371.4" id="my-svg-L_RENDER_TAIL_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_RENDER_TAIL_0" data-points="W3sieCI6NDE4LjM3NSwieSI6MzI1LjM5OTk5Mzg5NjQ4NDR9LHsieCI6NDE4LjM3NSwieSI6MzUwLjM5OTk5Mzg5NjQ4NDR9LHsieCI6NDE4LjM3NSwieSI6Mzc1LjM5OTk5Mzg5NjQ4NDR9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M418.375,442L418.375,446.167C418.375,450.333,418.375,458.667,418.375,466.333C418.375,474,418.375,481,418.375,484.5L418.375,488" id="my-svg-L_TAIL_OUT_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_TAIL_OUT_0" data-points="W3sieCI6NDE4LjM3NSwieSI6NDQxLjk5OTk5MjM3MDYwNTQ3fSx7IngiOjQxOC4zNzUsInkiOjQ2Ni45OTk5OTIzNzA2MDU0N30seyJ4Ijo0MTguMzc1LCJ5Ijo0OTEuOTk5OTkyMzcwNjA1NDd9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/></g><g class="edgeLabels"><g class="edgeLabel"><g class="label" data-id="L_STEP_SELECT_0" transform="translate(0, 0)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"/></text></g></g><g><rect class="background" style="stroke: none"/></g><g class="edgeLabel"><g class="label" data-id="L_OVERLAY_SELECT_0" transform="translate(0, 0)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"/></text></g></g><g><rect class="background" style="stroke: none"/></g><g class="edgeLabel"><g class="label" data-id="L_SELECT_RENDER_0" transform="translate(0, 0)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"/></text></g></g><g><rect class="background" style="stroke: none"/></g><g class="edgeLabel"><g class="label" data-id="L_INDEX_SELECT_0" transform="translate(0, 0)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"/></text></g></g><g><rect class="background" style="stroke: none"/></g><g class="edgeLabel"><g class="label" data-id="L_RENDER_TAIL_0" transform="translate(0, 0)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"/></text></g></g><g><rect class="background" style="stroke: none"/></g><g class="edgeLabel"><g class="label" data-id="L_TAIL_OUT_0" transform="translate(0, 0)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"/></text></g></g><g><rect class="background" style="stroke: none"/></g></g><g class="nodes"><g class="node default" id="my-svg-flowchart-STEP-0" data-look="classic" transform="translate(129.453125, 50.099998474121094)"><rect class="basic label-container" style="" x="-121.453125" y="-42.099998474121094" width="242.90625" height="84.19999694824219"/><g class="label" style="" transform="translate(0, -27.099998474121094)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">pipeline</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> step</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">frontmatter:</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="2.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">knowledge-base:</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> [names]</tspan></tspan></text></g></g></g><g class="node default" id="my-svg-flowchart-SELECT-1" data-look="classic" transform="translate(418.375, 166.6999969482422)"><rect class="basic label-container" style="" x="-123.65625" y="-24.5" width="247.3125" height="49"/><g class="label" style="" transform="translate(0, -9.5)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">loadEntries(index,</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> names)</tspan></tspan></text></g></g></g><g class="node default" id="my-svg-flowchart-OVERLAY-2" data-look="classic" transform="translate(418.375, 50.099998474121094)"><rect class="basic label-container" style="" x="-117.46875" y="-42.099998474121094" width="234.9375" height="84.19999694824219"/><g class="label" style="" transform="translate(0, -27.099998474121094)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">resolved</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">overlay.knowledge[step]</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="2.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">(or</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> step</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> frontmatter)</tspan></tspan></text></g></g></g><g class="node default" id="my-svg-flowchart-RENDER-5" data-look="classic" transform="translate(418.375, 283.2999954223633)"><rect class="basic label-container" style="" x="-129.078125" y="-42.099998474121094" width="258.15625" height="84.19999694824219"/><g class="label" style="" transform="translate(0, -27.099998474121094)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">buildKnowledgeBaseSection</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">##</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> name:</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> description</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> +</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="2.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">body</tspan></tspan></text></g></g></g><g class="node default" id="my-svg-flowchart-INDEX-6" data-look="classic" transform="translate(703.9609375, 50.099998474121094)"><rect class="basic label-container" style="" x="-118.1171875" y="-42.099998474121094" width="236.234375" height="84.19999694824219"/><g class="label" style="" transform="translate(0, -27.099998474121094)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">buildIndexWithOverrides</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">global</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> +</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="2.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">.scaffold/knowledge</tspan></tspan></text></g></g></g><g class="node default" id="my-svg-flowchart-TAIL-9" data-look="classic" transform="translate(418.375, 408.6999931335449)"><rect class="basic label-container" style="" x="-101.4140625" y="-33.29999923706055" width="202.828125" height="66.5999984741211"/><g class="label" style="" transform="translate(0, -18.299999237060547)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">renderGapSignalTail</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">(unless</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> QUIET)</tspan></tspan></text></g></g></g><g class="node default" id="my-svg-flowchart-OUT-11" data-look="classic" transform="translate(418.375, 525.299991607666)"><rect class="basic label-container" style="" x="-119.25" y="-33.29999923706055" width="238.5" height="66.5999984741211"/><g class="label" style="" transform="translate(0, -18.299999237060547)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Knowledge</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> Base</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> section</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">in</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> the</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> assembled</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> prompt</tspan></tspan></text></g></g></g></g></g></g><defs><filter id="my-svg-drop-shadow" height="130%" width="130%"><feDropShadow dx="4" dy="4" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"/></filter></defs><defs><filter id="my-svg-drop-shadow-small" height="150%" width="150%"><feDropShadow dx="2" dy="2" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"/></filter></defs><linearGradient id="my-svg-gradient" gradientUnits="objectBoundingBox" x1="0%" y1="0%" x2="100%" y2="0%"><stop offset="0%" stop-color="hsl(0, 0%, 83.3333333333%)" stop-opacity="1"/><stop offset="100%" stop-color="hsl(0, 0%, 88.9215686275%)" stop-opacity="1"/></linearGradient></svg>
|