@design-intelligence/ghost 0.22.1 → 0.24.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 (146) hide show
  1. package/README.md +35 -29
  2. package/dist/commands/checks-command.js +3 -3
  3. package/dist/commands/checks-command.js.map +1 -1
  4. package/dist/commands/command-discovery.d.ts.map +1 -1
  5. package/dist/commands/command-discovery.js +5 -5
  6. package/dist/commands/command-discovery.js.map +1 -1
  7. package/dist/commands/export-command.d.ts.map +1 -1
  8. package/dist/commands/export-command.js +10 -10
  9. package/dist/commands/export-command.js.map +1 -1
  10. package/dist/commands/fingerprint-commands.d.ts +2 -2
  11. package/dist/commands/fingerprint-commands.d.ts.map +1 -1
  12. package/dist/commands/fingerprint-commands.js +7 -7
  13. package/dist/commands/fingerprint-commands.js.map +1 -1
  14. package/dist/commands/gather-command.d.ts.map +1 -1
  15. package/dist/commands/gather-command.js +86 -20
  16. package/dist/commands/gather-command.js.map +1 -1
  17. package/dist/commands/init-command.d.ts.map +1 -1
  18. package/dist/commands/init-command.js +6 -6
  19. package/dist/commands/init-command.js.map +1 -1
  20. package/dist/commands/pull-command.d.ts.map +1 -1
  21. package/dist/commands/pull-command.js +22 -9
  22. package/dist/commands/pull-command.js.map +1 -1
  23. package/dist/commands/pulse-command.js +6 -6
  24. package/dist/commands/pulse-command.js.map +1 -1
  25. package/dist/commands/review-command.js +7 -7
  26. package/dist/commands/review-command.js.map +1 -1
  27. package/dist/commands/skill-command.js +2 -2
  28. package/dist/fingerprint.d.ts +2 -1
  29. package/dist/fingerprint.d.ts.map +1 -1
  30. package/dist/fingerprint.js +1 -0
  31. package/dist/fingerprint.js.map +1 -1
  32. package/dist/ghost-core/catalog/assemble.d.ts.map +1 -1
  33. package/dist/ghost-core/catalog/assemble.js +2 -1
  34. package/dist/ghost-core/catalog/assemble.js.map +1 -1
  35. package/dist/ghost-core/catalog/menu.d.ts +6 -4
  36. package/dist/ghost-core/catalog/menu.d.ts.map +1 -1
  37. package/dist/ghost-core/catalog/menu.js +1 -0
  38. package/dist/ghost-core/catalog/menu.js.map +1 -1
  39. package/dist/ghost-core/catalog/types.d.ts +4 -2
  40. package/dist/ghost-core/catalog/types.d.ts.map +1 -1
  41. package/dist/ghost-core/check/index.d.ts +1 -1
  42. package/dist/ghost-core/check/index.js +1 -1
  43. package/dist/ghost-core/check/lint.d.ts +2 -2
  44. package/dist/ghost-core/check/lint.js +2 -2
  45. package/dist/ghost-core/check/load.d.ts +1 -1
  46. package/dist/ghost-core/check/load.js +3 -3
  47. package/dist/ghost-core/check/types.d.ts +3 -3
  48. package/dist/ghost-core/index.d.ts +9 -3
  49. package/dist/ghost-core/index.d.ts.map +1 -1
  50. package/dist/ghost-core/index.js +6 -2
  51. package/dist/ghost-core/index.js.map +1 -1
  52. package/dist/ghost-core/markdown.d.ts +1 -1
  53. package/dist/ghost-core/markdown.js +1 -1
  54. package/dist/ghost-core/node/index.d.ts +1 -1
  55. package/dist/ghost-core/node/index.d.ts.map +1 -1
  56. package/dist/ghost-core/node/index.js +1 -1
  57. package/dist/ghost-core/node/index.js.map +1 -1
  58. package/dist/ghost-core/node/schema.js +1 -1
  59. package/dist/ghost-core/node/serialize.d.ts +6 -5
  60. package/dist/ghost-core/node/serialize.d.ts.map +1 -1
  61. package/dist/ghost-core/node/serialize.js +25 -9
  62. package/dist/ghost-core/node/serialize.js.map +1 -1
  63. package/dist/ghost-core/node/steering.d.ts +1 -0
  64. package/dist/ghost-core/node/steering.d.ts.map +1 -1
  65. package/dist/ghost-core/node/steering.js +4 -1
  66. package/dist/ghost-core/node/steering.js.map +1 -1
  67. package/dist/ghost-core/node/types.d.ts +6 -5
  68. package/dist/ghost-core/node/types.d.ts.map +1 -1
  69. package/dist/ghost-core/package-manifest.d.ts +23 -13
  70. package/dist/ghost-core/package-manifest.d.ts.map +1 -1
  71. package/dist/ghost-core/package-manifest.js +20 -7
  72. package/dist/ghost-core/package-manifest.js.map +1 -1
  73. package/dist/ghost-core/skill-bundle-loader.d.ts +1 -1
  74. package/dist/ghost-core/skill-bundle-loader.js +1 -1
  75. package/dist/index.d.ts +3 -1
  76. package/dist/index.d.ts.map +1 -1
  77. package/dist/index.js +3 -1
  78. package/dist/index.js.map +1 -1
  79. package/dist/init-payloads/median/cliche.median.md +6 -6
  80. package/dist/init-payloads/median/median-tells.md +1 -1
  81. package/dist/init-payloads/skeleton/brand.md +4 -3
  82. package/dist/init-payloads/skeleton/glossary.md +1 -1
  83. package/dist/init-payloads/vessel-light/anti-goal.median.md +6 -6
  84. package/dist/init-payloads/vessel-light/checks/motion-restraint.md +1 -1
  85. package/dist/init-payloads/vessel-light/manifest.yml +1 -1
  86. package/dist/init-payloads/vessel-light/materials/ref/composition.form.html +2 -2
  87. package/dist/init-payloads/vessel-light/materials/ref/composition.overlay.html +3 -3
  88. package/dist/observability-events.d.ts +10 -0
  89. package/dist/observability-events.d.ts.map +1 -1
  90. package/dist/observability-events.js +12 -0
  91. package/dist/observability-events.js.map +1 -1
  92. package/dist/package.d.ts +7 -0
  93. package/dist/package.d.ts.map +1 -0
  94. package/dist/package.js +4 -0
  95. package/dist/package.js.map +1 -0
  96. package/dist/review/resolve.js +1 -1
  97. package/dist/review/resolve.js.map +1 -1
  98. package/dist/review/review-packet.d.ts +5 -3
  99. package/dist/review/review-packet.d.ts.map +1 -1
  100. package/dist/review/review-packet.js +12 -11
  101. package/dist/review/review-packet.js.map +1 -1
  102. package/dist/scan/constants.d.ts +6 -2
  103. package/dist/scan/constants.d.ts.map +1 -1
  104. package/dist/scan/constants.js +8 -4
  105. package/dist/scan/constants.js.map +1 -1
  106. package/dist/scan/file-kind.d.ts +1 -1
  107. package/dist/scan/file-kind.d.ts.map +1 -1
  108. package/dist/scan/file-kind.js +11 -11
  109. package/dist/scan/file-kind.js.map +1 -1
  110. package/dist/scan/fingerprint-package-lint.d.ts +3 -1
  111. package/dist/scan/fingerprint-package-lint.d.ts.map +1 -1
  112. package/dist/scan/fingerprint-package-lint.js +14 -12
  113. package/dist/scan/fingerprint-package-lint.js.map +1 -1
  114. package/dist/scan/fingerprint-package-loader.d.ts +7 -3
  115. package/dist/scan/fingerprint-package-loader.d.ts.map +1 -1
  116. package/dist/scan/fingerprint-package-loader.js +10 -6
  117. package/dist/scan/fingerprint-package-loader.js.map +1 -1
  118. package/dist/scan/fingerprint-package.d.ts +30 -14
  119. package/dist/scan/fingerprint-package.d.ts.map +1 -1
  120. package/dist/scan/fingerprint-package.js +17 -9
  121. package/dist/scan/fingerprint-package.js.map +1 -1
  122. package/dist/scan/index.d.ts +3 -1
  123. package/dist/scan/index.d.ts.map +1 -1
  124. package/dist/scan/index.js +3 -1
  125. package/dist/scan/index.js.map +1 -1
  126. package/dist/scan/tarball.d.ts +2 -2
  127. package/dist/scan/tarball.js +3 -3
  128. package/dist/scan/tarball.js.map +1 -1
  129. package/dist/scan/templates.d.ts +1 -1
  130. package/dist/scan/templates.d.ts.map +1 -1
  131. package/dist/scan/templates.js +15 -11
  132. package/dist/scan/templates.js.map +1 -1
  133. package/dist/skill-bundle/SKILL.md +39 -31
  134. package/dist/skill-bundle/references/adapting-a-starter.md +11 -11
  135. package/dist/skill-bundle/references/authoring-scenarios.md +33 -30
  136. package/dist/skill-bundle/references/blocks.md +19 -20
  137. package/dist/skill-bundle/references/brief.md +13 -11
  138. package/dist/skill-bundle/references/capture.md +65 -37
  139. package/dist/skill-bundle/references/concrete-tiers.md +7 -7
  140. package/dist/skill-bundle/references/distill.md +204 -0
  141. package/dist/skill-bundle/references/making.md +113 -0
  142. package/dist/skill-bundle/references/recall.md +11 -7
  143. package/dist/skill-bundle/references/schema.md +16 -12
  144. package/dist/skill-bundle/references/self-check.md +12 -12
  145. package/dist/skill-bundle/references/steering-audit.md +19 -9
  146. package/package.json +7 -3
@@ -1,34 +1,33 @@
1
1
  ---
2
2
  name: ghost
3
- description: Author, validate, consume, and review against a repo-local Ghost fingerprint — the medium-agnostic articulation of a product's brand. Use when the user wants to set up a .ghost fingerprint, write or update brand-truth nodes, gather brand context before generation, or assemble a review packet from Ghost checks.
3
+ description: Author, validate, consume, and review against a repo-local ghost package — the medium-agnostic articulation of a product's brand. Use when the user wants to set up a .ghost package, write or update guidance nodes, gather brand context before generation, or assemble a review packet from ghost checks.
4
4
  license: Apache-2.0
5
5
  metadata:
6
6
  homepage: https://github.com/block/ghost
7
7
  cli: ghost
8
8
  ---
9
9
 
10
- # Ghost — Brand Fingerprints
10
+ # ghost — Brand Guidance Packages
11
11
 
12
- A Ghost fingerprint is the medium-agnostic articulation of a brand: its truths,
13
- its stance, its conditions, and optional pointers to the concrete materials those
14
- truths govern. One brand truth is stated once, at the altitude it is actually
15
- true, and an agent reads the relevant truths before building.
12
+ A ghost package is the medium-agnostic articulation of a brand: its guidance,
13
+ its stance, its conditions, and optional pointers to the concrete materials that
14
+ guidance governs. Each brand decision is stated once, at the broadest level where
15
+ it applies, and an agent reads the relevant guidance before building.
16
16
 
17
17
  ```text
18
18
  .ghost/
19
19
  manifest.yml # schema + id (the package anchor)
20
20
  glossary.md # the author's kind vocabulary
21
21
  materials/ # bundled materials; reserved, never nodes
22
- <kind>.<slug>.md # a brand truth of a declared kind
23
- <slug>.md # a brand truth without a kind
22
+ <kind>.<slug>.md # guidance of a declared kind
23
+ <slug>.md # guidance without a kind
24
24
  checks/ # optional review assertions; never nodes
25
25
  ```
26
26
 
27
27
  ## The model in one breath
28
28
 
29
- - A **node** is a markdown file: `description`, optional `materials`, and a prose
30
- brand truth.
31
- - `materials` is one list of locators for the concrete stuff the truth is about:
29
+ - A **node** is a markdown file: `description`, optional `materials`, and prose brand guidance.
30
+ - `materials` is one list of locators for the concrete stuff the guidance is about:
32
31
  repo-relative paths/globs or absolute HTTPS URLs. `materials/` is reserved for
33
32
  bundled materials; reference living implementations where they already live.
34
33
  Guidance stays in prose.
@@ -55,28 +54,35 @@ true, and an agent reads the relevant truths before building.
55
54
  ghost init # scaffold .ghost/ with the steering starter
56
55
  ghost checks init # opt in to review assertions
57
56
  ghost validate # artifact shape + node/material/check validation
58
- ghost gather <ask> # emit the fingerprint menu for this task
59
- ghost pull <ids> # read selected node bodies and materials
57
+ ghost gather <ask> # emit Available guidance for this task
58
+ ghost pull <ids> # pull selected node bodies and materials
60
59
  ghost review # assemble diff + matched material-backed nodes + checks
61
60
  ghost export # package .ghost/ as a portable brand artifact
62
61
  ghost pulse # summarize local gather/pull events while tuning
63
62
  ```
64
63
 
65
- `gather` does no selection. It emits the menu and you read the ask against it,
66
- then pull the truths you judge relevant. Its header includes a coverage line
67
- total nodes and nodes carrying concrete material so an all-prose
68
- fingerprint is visible before generation.
64
+ `gather` does no selection. It emits the complete, unfiltered, unranked menu
65
+ from the ghost package. You read the ask against descriptions, then
66
+ pull every applicable node and skip inapplicable nodes. Topic overlap alone is
67
+ not applicability. Its header includes a coverage line: total nodes and nodes
68
+ carrying concrete material. `gather` labels materials, substantial fenced
69
+ examples, and Skeletons separately, so an all-prose package is visible
70
+ before generation.
69
71
 
70
72
  Prefer `ghost pull` over reading files directly: it emits the same prose,
71
73
  inlines small local materials by default, turns binary materials into
72
- inspect-pointers, orders the packet for steering (cover when selected, concrete nodes,
73
- prose rules), extracts Skeletons dead last, and appends structured
74
- events to `.ghost/.events` for local tuning.
74
+ inspect-pointers, orders the packet for steering (cover when selected,
75
+ concrete nodes, prose rules), extracts Skeletons dead last, and appends
76
+ structured events to `.ghost/.events` for local tuning.
75
77
 
76
78
  `review` does no grading. It assembles an advisory packet: touched files,
77
79
  matched material-backed nodes, offered checks, probe
78
80
  evidence, coverage gaps, and the diff. The host agent renders findings.
79
81
 
82
+ For visual work, do not stop at generation. Continue through material inspection,
83
+ compact briefing, rendered verification, bounded repair, and grounded review in
84
+ this same host-agent session.
85
+
80
86
  ## CLI verbs
81
87
 
82
88
  | Verb | Purpose |
@@ -84,7 +90,7 @@ evidence, coverage gaps, and the diff. The host agent renders findings.
84
90
  | `ghost init` | Scaffold `.ghost/` with the skeleton starter: manifest, glossary, a `brand.md` cover, foundation chapters, context nodes, and the cliche floor. `--template minimal` writes a smaller cover-led starter. `--with checks` also adds the checks directory. |
85
91
  | `ghost checks init` | Scaffold `.ghost/checks/` with an example review assertion. |
86
92
  | `ghost validate [file-or-dir]` | Validate manifest, nodes, material locators, check references, and glossary kind prefixes. |
87
- | `ghost gather [ask…] [--format json]` | Emit the node menu for selection plus coverage line; log exposed ids. |
93
+ | `ghost gather [ask…] [--format json]` | Emit the complete guidance menu plus coverage line; log exposed ids. |
88
94
  | `ghost pull <id> [<id>…]` | Emit selected nodes' full bodies and materials in steering order; log selected/missed ids. |
89
95
  | `ghost review [--diff <path|->] [--base <ref>] [--format json] [--no-probes]` | Emit an advisory review packet for a diff (requires `.ghost/checks/`). |
90
96
  | `ghost export [--out <path>] [--no-checks] [--strict] [--format json]` | Package `.ghost/` as a portable brand artifact and report which material locators will not travel. |
@@ -101,7 +107,7 @@ from the node body and emits the fences at the end under a begin-from-this banne
101
107
  If a pulled Skeleton matches the task, start the artifact from it verbatim, then
102
108
  fill with task facts.
103
109
 
104
- ## Receiving a fingerprint
110
+ ## Receiving a ghost package
105
111
 
106
112
  Unpack the exported archive, run `ghost validate --package <dir>`, then run
107
113
  `ghost skill install` in the receiving workspace. From there, gather and pull
@@ -109,27 +115,29 @@ against the unpacked package with `--package <dir>`.
109
115
 
110
116
  ## Workflows
111
117
 
112
- - Author or update the fingerprint: follow [references/capture.md](references/capture.md).
118
+ - Author or update the package: follow [references/capture.md](references/capture.md).
119
+ - Distill supplied artifacts into new or existing guidance: follow [references/distill.md](references/distill.md).
113
120
  - Author material-backed nodes: follow [references/blocks.md](references/blocks.md).
114
121
  - Choose which concrete code tiers the package carries: follow [references/concrete-tiers.md](references/concrete-tiers.md).
115
122
  - Choose the right human-agent authoring workflow: follow [references/authoring-scenarios.md](references/authoring-scenarios.md).
116
123
  - Adapt a starter (a body or the skeleton) to your brand: follow [references/adapting-a-starter.md](references/adapting-a-starter.md).
117
- - Gather applicable truths for a task: follow [references/recall.md](references/recall.md).
124
+ - Gather applicable guidance for a task: follow [references/recall.md](references/recall.md).
125
+ - Make a visual artifact end to end: follow [references/making.md](references/making.md).
118
126
  - Shape a pre-generation brief: follow [references/brief.md](references/brief.md).
119
127
  - Probe readiness before generating: follow [references/self-check.md](references/self-check.md).
120
128
  - Audit steering coverage: follow [references/steering-audit.md](references/steering-audit.md).
121
129
  - Understand the package shape: see [references/schema.md](references/schema.md).
122
130
 
123
- Fingerprint authoring is **elicitation, not scanning**. The raw material is what
131
+ ghost package authoring is **elicitation, not scanning**. The raw material is what
124
132
  the human brings and points at: words, images, links, exemplar products, brand
125
133
  docs, copy they love or hate. Repo code can supply material locators and local
126
- conventions, but durable brand truth should be curated by the human.
134
+ conventions, but durable brand guidance should be curated by the human.
127
135
 
128
- ## When the fingerprint is silent
136
+ ## When the package is silent
129
137
 
130
- A silent fingerprint does not require stopping. Proceed from nearby product
138
+ A silent package does not require stopping. Proceed from nearby product
131
139
  surfaces, local conventions, and ordinary reasoning when safe, and label that
132
- reasoning as provisional and non-Ghost-backed unless the fingerprint itself
140
+ reasoning as provisional and non-ghost-backed unless the package itself
133
141
  declares a stricter silence posture (check the cover), which overrides
134
142
  this default. Ask a human before high-risk, irreversible, privacy, security,
135
143
  legal, or brand-defining choices.
@@ -137,7 +145,7 @@ legal, or brand-defining choices.
137
145
  ## Never
138
146
 
139
147
  - Never invent hierarchy, inheritance, or cross-node edges.
140
- - Never file a truth by destination (`for-emails.md`); state its condition in prose.
148
+ - Never file a node by destination (`for-emails.md`); state its condition in prose.
141
149
  - Never put guidance in `materials`; it belongs in the node body.
142
150
  - Never gather checks as generation context.
143
- - Never claim provisional or local-convention reasoning as Ghost-backed.
151
+ - Never claim provisional or local-convention reasoning as ghost-backed.
@@ -1,17 +1,17 @@
1
1
  ---
2
2
  name: adapting-a-starter
3
- description: Transplant a starter fingerprint — a body like vessel-light or the naked skeleton — into your own brand, one procedure from manifest id to regenerated refs.
3
+ description: Transplant a starter ghost package — a body like vessel-light or the naked skeleton — into your own brand, one procedure from manifest id to regenerated refs.
4
4
  handoffs:
5
5
  - label: Validate the adapted package
6
6
  command: ghost validate --format json
7
- prompt: Does the adapted fingerprint validate, and did any pruned rule orphan a check reference?
7
+ prompt: Does the adapted package validate, and did any pruned rule orphan a check reference?
8
8
  ---
9
9
 
10
- # Recipe: Adapt A Starter Fingerprint
10
+ # Recipe: Adapt A Starter Package
11
11
 
12
12
  **Goal:** turn an installed starter — a full body (`ghost init --body
13
13
  vessel-light`) or the naked skeleton (`ghost init`) — into *your* brand's
14
- fingerprint without shipping a self-contradicting package.
14
+ brand guidance without shipping a self-contradicting package.
15
15
 
16
16
  The naked skeleton is factored by what must happen during adaptation:
17
17
 
@@ -26,7 +26,7 @@ The naked skeleton is factored by what must happen during adaptation:
26
26
 
27
27
  Do the steps **in order and in one sitting** where possible. A half-adapted
28
28
  package is worse than an unadapted one: stale refs steer harder than any prose
29
- you rewrote, so stopping before refs and checks are current ships a fingerprint
29
+ you rewrote, so stopping before refs and checks are current ships a package
30
30
  that contradicts itself.
31
31
 
32
32
  ## The procedure
@@ -64,7 +64,7 @@ that contradicts itself.
64
64
  stale ref loses. Rebuild each ref against the new values and chapter answers,
65
65
  keep any annotation headers current, and make each ref demonstrate its closed
66
66
  sets completely. If the starter shipped no refs, generate them now — a
67
- fingerprint with no exemplars steers at half strength.
67
+ package with no exemplars steers at half strength.
68
68
  8. **Rewrite checks and near-miss nodes.** For each answered foundation chapter,
69
69
  name the failure mode one step away from the answer and its replacement. Put
70
70
  pre-generation guidance in nodes and review assertions in `checks/`; never
@@ -81,11 +81,11 @@ Work does not block on adaptation. Before the procedure runs (or midway through
81
81
  it), cite starter content honestly:
82
82
 
83
83
  - Cover scaffolding and unanswered foundation sections: **provisional** — never
84
- plain brand truth.
85
- - Foundation usage rules: **Ghost-backed starter structure** until the human
84
+ plain brand guidance.
85
+ - Foundation usage rules: **ghost-backed starter structure** until the human
86
86
  answers the open sections and edits the misuse lists.
87
- - Surviving median rules: **owner-backed after init** — Ghost stamps this
88
- measured model truth into every initialized package; you own the pruning and
87
+ - Surviving median rules: **owner-backed after init** — ghost stamps this
88
+ measured model behavior into every initialized package; you own the pruning and
89
89
  any adaptation thereafter.
90
90
  - Context nodes: **conditional** — read only when their situation matches, and
91
91
  revisit them after the foundation answers change.
@@ -94,7 +94,7 @@ it), cite starter content honestly:
94
94
 
95
95
  ## Never
96
96
 
97
- - Never leave cover scaffolding in a real fingerprint.
97
+ - Never leave cover scaffolding in a real ghost package.
98
98
  - Never present your provisional value as the brand's answer.
99
99
  - Never leave stale refs alongside new values — regenerate or delete; a stale
100
100
  exemplar outweighs rewritten prose.
@@ -1,19 +1,19 @@
1
1
  ---
2
2
  name: authoring-scenarios
3
- description: Choose the right human-agent workflow for authoring Ghost brand fingerprints.
3
+ description: Choose the right human-agent workflow for authoring ghost packages.
4
4
  handoffs:
5
- - label: Validate the fingerprint
5
+ - label: Validate the package
6
6
  command: ghost validate --format json
7
- prompt: Classify this fingerprint's authoring scenario and confirm the package validates.
7
+ prompt: Classify this package's authoring scenario and confirm the package validates.
8
8
  ---
9
9
 
10
- # Recipe: Collaborative Fingerprint Authoring
10
+ # Recipe: Collaborative Package Authoring
11
11
 
12
- **Goal:** help a human and agent co-author durable brand truths through
12
+ **Goal:** help a human and agent co-author durable brand guidance through
13
13
  conversation — without laundering what a codebase happens to do into what the
14
14
  brand means.
15
15
 
16
- The fingerprint is medium-agnostic and is not derived from a repo. Its raw
16
+ The ghost package is medium-agnostic and is not derived from a repo. Its raw
17
17
  material is **elicitation**: what the human says, shows, and points at — words,
18
18
  screenshots, links, exemplar products, marketing copy, a competitor they define
19
19
  themselves against. Agent synthesis is draft work until the human curates it
@@ -22,15 +22,15 @@ and ordinary Git review accepts it.
22
22
  Repo-bound reality — components, tokens, paths, building blocks — can be
23
23
  recorded as `materials` on the node whose prose explains their purpose. When a
24
24
  conversation surfaces "we have a component for that," treat it as material to
25
- locate and interpret, not as brand truth by itself.
25
+ locate and interpret, not as brand guidance on its own.
26
26
 
27
27
  ## 1. Start With One Repeated Decision
28
28
 
29
- Do not try to fingerprint the whole brand at once. Ask the human for the one
29
+ Do not try to capture the whole brand at once. Ask the human for the one
30
30
  decision whose feedback keeps repeating — the checkout always flagged for
31
31
  trust, the voice always re-toned, the empty state always rewritten — and
32
- capture that one truth as a node first. One high-confidence truth beats an
33
- empty catalog; the fingerprint grows as the next repeated decision shows up.
32
+ capture that one decision as a node first. One well-grounded node beats an
33
+ empty catalog; the package grows as the next repeated decision shows up.
34
34
 
35
35
  The scenario below tunes the authoring *posture* for that first node; it is not
36
36
  a gate to clear before writing anything.
@@ -38,19 +38,22 @@ a gate to clear before writing anything.
38
38
  | Scenario | Default authoring posture |
39
39
  | --- | --- |
40
40
  | Net new brand | Stance-first. Elicit feel, audience, and early anti-goals before anything else exists to point at. |
41
- | Established brand, first fingerprint | Artifact-rich interview. The human can show a lot — shipped surfaces, brand docs, campaigns. Elicit which of it is *intentional*. |
41
+ | Established brand, first ghost package | Artifact-rich interview. The human can show a lot — shipped surfaces, brand docs, campaigns. Elicit which of it is *intentional*. |
42
42
  | Strong opinions, weak articulation | Example-led. The human knows it when they see it: work from exemplars and counter-exemplars ("this feels like us, this never would") toward the stance underneath. |
43
- | Brand doc or design-language deck exists | Distillation. The document is testimony, not truth: pull the claims that actually steer decisions, drop the aspirational filler, and have the human ratify each survivor. |
43
+ | Brand doc or design-language deck exists | Distillation. Treat the document as evidence: pull the claims that actually steer decisions, drop the aspirational filler, and have the human ratify each survivor. |
44
44
  | Rebrand, redesign, migration | Transition-led. Capture current, target, and what must not be lost in between. |
45
- | Fork, white label, tenant variant | Shared base + local divergence. Keep common truths broad; scope divergence with conditions. |
45
+ | Fork, white label, tenant variant | Shared base + local divergence. Keep shared guidance broad; scope divergence with conditions. |
46
46
  | Monorepo or product suite | One contract per package. |
47
47
 
48
+ When supplied artifacts are the starting point or must be reconciled with an
49
+ existing package, follow [distill.md](distill.md).
50
+
48
51
  If more than one applies, start with the broad scenario, then narrow.
49
52
 
50
53
  ## 2. Interview The Human
51
54
 
52
55
  The interview is the engine. Ask only high-leverage questions that change the
53
- fingerprint:
56
+ guidance:
54
57
 
55
58
  - What should this brand feel like, and what should it never become? (The
56
59
  "never become" answers are anti-goal nodes — capture them with the same care
@@ -63,7 +66,7 @@ fingerprint:
63
66
  - What keeps getting flagged in review, re-toned, or rewritten?
64
67
  - Where do trust, density, pacing, accessibility, recovery, or disclosure
65
68
  matter most?
66
- - Which truths are universal, and which only hold under a specific situation?
69
+ - Which guidance is universal, and which guidance holds only under a specific situation?
67
70
 
68
71
  Capture human-authored or human-approved answers as nodes. Do not treat
69
72
  unapproved notes as canonical.
@@ -73,7 +76,7 @@ unapproved notes as canonical.
73
76
  Ask for artifacts and read them closely: screenshots, links, exemplar products,
74
77
  brand docs, marketing copy, past campaigns, a rejected design and why it was
75
78
  rejected. Treat every artifact as *testimony* — evidence of a stance the human
76
- holds — never as truth by itself. A pattern that appears everywhere may be
79
+ holds — never as guidance by itself. A pattern that appears everywhere may be
77
80
  legacy; a pattern that appears once may be the brand at its best. The human
78
81
  says which.
79
82
 
@@ -85,15 +88,15 @@ and enforced in review, not repeated as the model's main example.
85
88
 
86
89
  ## 4. Draft The Nodes
87
90
 
88
- Write the smallest useful set of nodes, each a purpose-coherent prose truth with
91
+ Write the smallest useful set of nodes, each carrying purpose-coherent prose guidance with
89
92
  a one-line `description`, named `<kind>.<slug>.md` (or a bare slug when no kind is present). Ask three questions of each node body: why (the stance), with what
90
93
  (the materials), and how it is assembled (the patterns). These are drafting
91
94
  prompts, not fields.
92
95
 
93
- Draft only what the human said or showed. State universal truths plainly; give
94
- narrower truths a **condition** in the prose — the situation they apply in,
96
+ Draft only what the human said or showed. State universal guidance plainly; give
97
+ narrower guidance a **condition** in the prose — the situation they apply in,
95
98
  never a destination. Label uncertain reasoning as provisional. Prefer a few
96
- high-confidence truths over a broad catalog. Hold draft prose to the node prose
99
+ focused guidance over a broad catalog. Hold draft prose to the node prose
97
100
  stances in [capture.md](capture.md) and score each node against its drafting
98
101
  gate before presenting drafts for curation.
99
102
 
@@ -103,7 +106,7 @@ Before treating draft content as durable, ask the human to classify important
103
106
  claims:
104
107
 
105
108
  - keep as canonical
106
- - soften into guidance
109
+ - soften the guidance
107
110
  - reject as accidental or legacy
108
111
  - move to scratch notes
109
112
  - restate at a broader or narrower altitude (add or drop a condition)
@@ -115,10 +118,10 @@ Two authoring decisions replace any notion of hierarchy:
115
118
  - **Kind** — declare the kind vocabulary in `glossary.md` and name each node
116
119
  `<kind>.<slug>.md` so its normative weight is clear. The glossary defines what
117
120
  each kind means and how strongly it binds. Kinds are your choice;
118
- Ghost ships no fixed vocabulary.
119
- - **Altitude** — state a truth at the level it is actually true. Universal → state
121
+ ghost ships no fixed vocabulary.
122
+ - **Altitude** — state guidance at the level where it applies. Universal → state
120
123
  it plainly. Narrower → name the situation that activates it, in the prose. Never
121
- file a truth by destination (`for-emails.md`); the model reads the condition and
124
+ file a node by destination (`for-emails.md`); the model reads the condition and
122
125
  decides when it applies.
123
126
 
124
127
  ## 7. Validate And Ratify
@@ -137,7 +140,7 @@ edits are drafts; checked-in nodes are canonical.
137
140
  The shapes below teach what steering prose looks like when it works. The
138
141
  examples use **Morrow Ledger**, a fictional bookkeeping product — teaching
139
142
  fiction for this recipe only, never content for a real corpus. Each shape is a
140
- pattern to imitate with the human's real truths.
143
+ pattern to imitate with the human's real guidance.
141
144
 
142
145
  - **Stance as forced choices.** Not adjectives — decisions under pressure:
143
146
  "Clarity beats momentum: write '3 invoices are 14+ days late', not 'Cash
@@ -160,25 +163,25 @@ pattern to imitate with the human's real truths.
160
163
  teaches its accidents as brand.
161
164
  - **Material inventory.** `materials` locates; prose explains meaning:
162
165
  "`src/styles/tokens.css` should define the ink, ledger, amber, and paper
163
- colors." Never duplicate API docs unless the API itself is the brand truth.
166
+ colors." Never duplicate API docs unless the API itself is the brand guidance.
164
167
  - **Decision trace.** A worked tradeoff with the reversal condition: "We chose
165
168
  visible evidence over shorter surfaces… Reverses when the evidence would
166
169
  expose sensitive third-party details — then show the count only." Models
167
170
  imitate reasoning as well as outputs.
168
171
 
169
172
  State the silence posture on the manifest-declared cover, which `gather`
170
- inlines for every task: when the fingerprint is silent, proceed provisionally
173
+ inlines for every task: when the package is silent, proceed provisionally
171
174
  from local conventions only when safe, and ask before brand-defining,
172
175
  irreversible, legal, privacy-sensitive, or high-risk choices.
173
176
 
174
177
  ## Never
175
178
 
176
- - Never derive brand truth from repo code alone; what the codebase repeats may
179
+ - Never derive brand guidance from repo code alone; what the codebase repeats may
177
180
  be legacy, not stance. Use repo paths as `materials` only after the prose
178
- truth has been curated.
181
+ guidance has been curated.
179
182
  - Never draft a node the human neither said nor showed; that is invention
180
183
  wearing the brand's clothes.
181
184
  - Never treat a brand doc, an artifact, or repetition frequency as brand
182
185
  authority; the human ratifies what is intentional.
183
186
  - Never invent a hierarchy, inheritance, or edges — the package is flat.
184
- - Never file a truth by destination; state its condition in the prose.
187
+ - Never file a node by destination; state its condition in the prose.
@@ -1,21 +1,21 @@
1
1
  ---
2
2
  name: blocks
3
- description: Author block and material nodes so an agent can match a fingerprint's stance to concrete building blocks.
3
+ description: Author block and material nodes so an agent can match a ghost package's stance to concrete building blocks.
4
4
  handoffs:
5
5
  - label: List the node menu
6
6
  command: ghost gather
7
- prompt: What materials does this fingerprint document, and what is absent?
7
+ prompt: What materials does this package document, and what is absent?
8
8
  ---
9
9
 
10
10
  # Recipe: Author Block And Material Nodes
11
11
 
12
12
  **Goal:** when you are documenting the **materials** a brand draws from — its
13
13
  building blocks, assets, and reusable pieces — write that prose so an agent can
14
- translate the fingerprint's stance into concrete building blocks without the
15
- fingerprint ever naming a component.
14
+ translate the package's stance into concrete building blocks without the
15
+ guidance ever naming a component.
16
16
 
17
17
  This is opinionated method, not new schema. **"Block node" is shorthand in this
18
- recipe, not a Ghost concept**: it means any node whose truth is a reusable
18
+ recipe, not a ghost concept**: it means any node whose guidance is a reusable
19
19
  building block, whatever kind the author's glossary declares for it (`block`,
20
20
  `asset`, `pattern`, …). A block node is a node like any other: a markdown file
21
21
  with a `description` and a prose body, named `<kind>.<slug>.md` (or a bare
@@ -25,12 +25,11 @@ whatever keeps each node purpose-coherent.
25
25
 
26
26
  ## Where it sits
27
27
 
28
- A fingerprint declares stance. Block and material nodes ground that stance in
29
- concrete materials they are what makes a node **concrete** in gather, pull
30
- ordering, and review matching. A realizing agent **reads** them and matches
31
- against them. Strip every block node and the fingerprint is still valid — it
32
- just gives the agent less to draw on, and prose-only steering is weak steering.
33
- The agent does the matching.
28
+ A ghost package declares stance. Block and material nodes ground that stance in
29
+ concrete material: materials, substantial fenced examples, or Skeletons. A
30
+ realizing agent **reads** them and matches against them. Strip every block node
31
+ and the package is still valid — it just gives the agent less to draw on,
32
+ and prose-only steering is weak steering. The agent does the matching.
34
33
 
35
34
  ## Concreteness is the grounding dial
36
35
 
@@ -51,7 +50,7 @@ Neither is correct. A concrete block node is a deliberate trade, not a leak.
51
50
  the absence of a body is the signal that training priors are acceptable here.
52
51
  When a primitive is itself brand-distinctive (a button whose shape, weight, or
53
52
  focus treatment is a recognizable brand move), its *divergence from the
54
- generic form* is a truth worth a body: state what differs and why, not the
53
+ generic form* is a decision worth a node: state what differs and why, not the
55
54
  full API.
56
55
  - **Anything that encodes a user moment** (confirmation, plan, task, tool,
57
56
  reasoning, sources…) earns **one short prose body**. This is what the method is
@@ -85,15 +84,15 @@ when (use X instead) / never*:
85
84
 
86
85
  Keep props, markup, and API reference out; the body documents purpose, and the
87
86
  implementation beneath it is swappable. Explicit values are the exception when
88
- the value itself is the brand truth — an exact color, a specific corner radius —
87
+ the value itself is the brand guidance — an exact color, a specific corner radius —
89
88
  not a swappable implementation detail.
90
89
 
91
90
  ## How a match runs
92
91
 
93
- The agent reads the fingerprint's stance, `gather`s the menu, ranks candidate
94
- block nodes by description, separates near-neighbors on *not when* and
95
- *never*, and assembles. The realizing surface authors the chosen blocks in its
96
- medium. The fingerprint never named a component; the agent bridged via documented
92
+ The agent reads the package's stance, `gather`s the menu, pulls block nodes
93
+ whose descriptions apply, separates near-neighbors on *not when* and *never*,
94
+ and assembles. The realizing surface authors the chosen blocks in its medium.
95
+ The guidance never named a component; the agent bridged via documented
97
96
  purpose.
98
97
 
99
98
  ## Curation rule
@@ -156,7 +155,7 @@ divergence from the generic form would earn a short body.)
156
155
  ## Materials: bundle brand-owned materials, reference implementations
157
156
 
158
157
  Use the rule of thumb literally. Bundle brand-owned materials: brand-owned artifacts that
159
- should travel with the fingerprint and survive export or refactors — tokens.css,
158
+ should travel with the package and survive export or refactors — tokens.css,
160
159
  motion.json, logo.svg, type materials. Reference implementations: living app
161
160
  code, components, stories, or tests whose home is still the product repo. The
162
161
  `materials` list locates both; the prose says what the material proves.
@@ -174,7 +173,7 @@ prop APIs re-imports implementation opinion and creates a mirror to maintain.
174
173
  of a body is the signal. A brand-distinctive primitive earns a body for its
175
174
  divergence, never for its API.
176
175
  - Never put props, markup, or API reference in a block body; explicit
177
- values belong only when the value itself is the brand truth.
178
- - Never let the fingerprint reference the realizing surface; blocks are read,
176
+ values belong only when the value itself is the brand guidance.
177
+ - Never let the package reference the realizing surface; blocks are read,
179
178
  not addressed.
180
179
  - Never split two blocks that answer the same first question; that is one node.
@@ -1,20 +1,22 @@
1
1
  ---
2
2
  name: brief
3
- description: Build a compact pre-generation packet from pulled Ghost truths.
3
+ description: Build a compact pre-generation packet from pulled ghost guidance.
4
4
  ---
5
5
 
6
- # Recipe: Brief Work From Ghost Fingerprint
6
+ # Recipe: Brief Work From ghost Package
7
7
 
8
8
  A brief is an ephemeral steering packet for the generating pass. It is not a new
9
9
  schema and is never written back into `.ghost/`.
10
10
 
11
11
  1. Run `ghost gather <ask> --format json` and select against descriptions.
12
- 2. The cover is already in context. Pull a small set from the menu: **3–5 nodes
13
- is normal; 10 is a bad selection** unless the task is unusually broad.
14
- 3. Prefer concrete nodes: `materials`, substantial fenced examples, or a
15
- `## Skeleton`. If there is **no concrete material for this surface**, the
16
- readiness ceiling is **Yellow**.
17
- 4. Keep provisional reasoning visibly separate from Ghost-backed claims.
12
+ 2. The cover is already in context and outside selection. Pull every applicable
13
+ node with `ghost pull <id> [<id>…]`; skip nodes whose stated situation does
14
+ not apply. Topic overlap alone is not applicability.
15
+ 3. Note gather payload labels where present: `materials`, substantial fenced
16
+ examples, or a `## Skeleton`. If there is no concrete material for this
17
+ surface, the readiness ceiling is **Yellow**.
18
+ 4. If no node applies, name the package's silence, follow the cover silence
19
+ posture, and keep provisional reasoning separate from ghost-backed claims.
18
20
 
19
21
  ## The packet: five sections only
20
22
 
@@ -34,14 +36,14 @@ Return this shape:
34
36
  - matching pulled Skeleton, or "none pulled"
35
37
 
36
38
  ## Silent / provisional
37
- - what Ghost does not cover and what local evidence carries
39
+ - what ghost does not cover and what local evidence carries
38
40
  ```
39
41
 
40
42
  Rules:
41
43
 
42
44
  - Do not add sections for every kind. Sections dilute instruction weight.
43
- - Treat `ghost pull` ordering as signal: stance first, concrete material next,
44
- prose rules, Skeletons dead last.
45
+ - Treat `ghost pull` ordering as packet structure: stance first, concrete-material
46
+ nodes next, prose rules, Skeletons dead last.
45
47
  - If a pulled Skeleton matches the surface, begin the artifact from it verbatim
46
48
  before filling.
47
49
  - Anti-goals are review-critical: state the positive replacement, not just the