@design-intelligence/ghost 0.23.0 → 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 (137) 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 +82 -19
  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.js +18 -8
  21. package/dist/commands/pull-command.js.map +1 -1
  22. package/dist/commands/pulse-command.js +6 -6
  23. package/dist/commands/pulse-command.js.map +1 -1
  24. package/dist/commands/review-command.js +7 -7
  25. package/dist/commands/review-command.js.map +1 -1
  26. package/dist/commands/skill-command.js +2 -2
  27. package/dist/fingerprint.d.ts +2 -1
  28. package/dist/fingerprint.d.ts.map +1 -1
  29. package/dist/fingerprint.js +1 -0
  30. package/dist/fingerprint.js.map +1 -1
  31. package/dist/ghost-core/catalog/assemble.d.ts.map +1 -1
  32. package/dist/ghost-core/catalog/assemble.js +2 -1
  33. package/dist/ghost-core/catalog/assemble.js.map +1 -1
  34. package/dist/ghost-core/catalog/menu.d.ts +6 -4
  35. package/dist/ghost-core/catalog/menu.d.ts.map +1 -1
  36. package/dist/ghost-core/catalog/menu.js +1 -0
  37. package/dist/ghost-core/catalog/menu.js.map +1 -1
  38. package/dist/ghost-core/catalog/types.d.ts +4 -2
  39. package/dist/ghost-core/catalog/types.d.ts.map +1 -1
  40. package/dist/ghost-core/check/index.d.ts +1 -1
  41. package/dist/ghost-core/check/index.js +1 -1
  42. package/dist/ghost-core/check/lint.d.ts +2 -2
  43. package/dist/ghost-core/check/lint.js +2 -2
  44. package/dist/ghost-core/check/load.d.ts +1 -1
  45. package/dist/ghost-core/check/load.js +3 -3
  46. package/dist/ghost-core/check/types.d.ts +3 -3
  47. package/dist/ghost-core/index.d.ts +9 -3
  48. package/dist/ghost-core/index.d.ts.map +1 -1
  49. package/dist/ghost-core/index.js +6 -2
  50. package/dist/ghost-core/index.js.map +1 -1
  51. package/dist/ghost-core/markdown.d.ts +1 -1
  52. package/dist/ghost-core/markdown.js +1 -1
  53. package/dist/ghost-core/node/index.d.ts +1 -1
  54. package/dist/ghost-core/node/index.d.ts.map +1 -1
  55. package/dist/ghost-core/node/index.js +1 -1
  56. package/dist/ghost-core/node/index.js.map +1 -1
  57. package/dist/ghost-core/node/schema.js +1 -1
  58. package/dist/ghost-core/node/steering.d.ts +1 -0
  59. package/dist/ghost-core/node/steering.d.ts.map +1 -1
  60. package/dist/ghost-core/node/steering.js +4 -1
  61. package/dist/ghost-core/node/steering.js.map +1 -1
  62. package/dist/ghost-core/node/types.d.ts +4 -5
  63. package/dist/ghost-core/node/types.d.ts.map +1 -1
  64. package/dist/ghost-core/package-manifest.d.ts +23 -13
  65. package/dist/ghost-core/package-manifest.d.ts.map +1 -1
  66. package/dist/ghost-core/package-manifest.js +20 -7
  67. package/dist/ghost-core/package-manifest.js.map +1 -1
  68. package/dist/ghost-core/skill-bundle-loader.d.ts +1 -1
  69. package/dist/ghost-core/skill-bundle-loader.js +1 -1
  70. package/dist/index.d.ts +3 -1
  71. package/dist/index.d.ts.map +1 -1
  72. package/dist/index.js +3 -1
  73. package/dist/index.js.map +1 -1
  74. package/dist/init-payloads/median/cliche.median.md +6 -6
  75. package/dist/init-payloads/median/median-tells.md +1 -1
  76. package/dist/init-payloads/skeleton/brand.md +4 -3
  77. package/dist/init-payloads/skeleton/glossary.md +1 -1
  78. package/dist/init-payloads/vessel-light/anti-goal.median.md +6 -6
  79. package/dist/init-payloads/vessel-light/checks/motion-restraint.md +1 -1
  80. package/dist/init-payloads/vessel-light/manifest.yml +1 -1
  81. package/dist/init-payloads/vessel-light/materials/ref/composition.form.html +2 -2
  82. package/dist/init-payloads/vessel-light/materials/ref/composition.overlay.html +3 -3
  83. package/dist/package.d.ts +7 -0
  84. package/dist/package.d.ts.map +1 -0
  85. package/dist/package.js +4 -0
  86. package/dist/package.js.map +1 -0
  87. package/dist/review/resolve.js +1 -1
  88. package/dist/review/resolve.js.map +1 -1
  89. package/dist/review/review-packet.d.ts +5 -3
  90. package/dist/review/review-packet.d.ts.map +1 -1
  91. package/dist/review/review-packet.js +12 -11
  92. package/dist/review/review-packet.js.map +1 -1
  93. package/dist/scan/constants.d.ts +6 -2
  94. package/dist/scan/constants.d.ts.map +1 -1
  95. package/dist/scan/constants.js +8 -4
  96. package/dist/scan/constants.js.map +1 -1
  97. package/dist/scan/file-kind.d.ts +1 -1
  98. package/dist/scan/file-kind.d.ts.map +1 -1
  99. package/dist/scan/file-kind.js +11 -11
  100. package/dist/scan/file-kind.js.map +1 -1
  101. package/dist/scan/fingerprint-package-lint.d.ts +3 -1
  102. package/dist/scan/fingerprint-package-lint.d.ts.map +1 -1
  103. package/dist/scan/fingerprint-package-lint.js +14 -12
  104. package/dist/scan/fingerprint-package-lint.js.map +1 -1
  105. package/dist/scan/fingerprint-package-loader.d.ts +7 -3
  106. package/dist/scan/fingerprint-package-loader.d.ts.map +1 -1
  107. package/dist/scan/fingerprint-package-loader.js +10 -6
  108. package/dist/scan/fingerprint-package-loader.js.map +1 -1
  109. package/dist/scan/fingerprint-package.d.ts +30 -14
  110. package/dist/scan/fingerprint-package.d.ts.map +1 -1
  111. package/dist/scan/fingerprint-package.js +17 -9
  112. package/dist/scan/fingerprint-package.js.map +1 -1
  113. package/dist/scan/index.d.ts +3 -1
  114. package/dist/scan/index.d.ts.map +1 -1
  115. package/dist/scan/index.js +3 -1
  116. package/dist/scan/index.js.map +1 -1
  117. package/dist/scan/tarball.d.ts +2 -2
  118. package/dist/scan/tarball.js +3 -3
  119. package/dist/scan/tarball.js.map +1 -1
  120. package/dist/scan/templates.d.ts +1 -1
  121. package/dist/scan/templates.d.ts.map +1 -1
  122. package/dist/scan/templates.js +15 -11
  123. package/dist/scan/templates.js.map +1 -1
  124. package/dist/skill-bundle/SKILL.md +39 -31
  125. package/dist/skill-bundle/references/adapting-a-starter.md +11 -11
  126. package/dist/skill-bundle/references/authoring-scenarios.md +33 -30
  127. package/dist/skill-bundle/references/blocks.md +19 -20
  128. package/dist/skill-bundle/references/brief.md +13 -11
  129. package/dist/skill-bundle/references/capture.md +65 -37
  130. package/dist/skill-bundle/references/concrete-tiers.md +7 -7
  131. package/dist/skill-bundle/references/distill.md +204 -0
  132. package/dist/skill-bundle/references/making.md +113 -0
  133. package/dist/skill-bundle/references/recall.md +11 -7
  134. package/dist/skill-bundle/references/schema.md +16 -12
  135. package/dist/skill-bundle/references/self-check.md +12 -12
  136. package/dist/skill-bundle/references/steering-audit.md +19 -9
  137. package/package.json +7 -3
@@ -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
@@ -1,26 +1,26 @@
1
1
  ---
2
2
  name: capture
3
- description: Author repo-local Ghost brand fingerprints as a flat set of prose nodes.
3
+ description: Author repo-local ghost packages as a flat set of prose nodes.
4
4
  handoffs:
5
5
  - label: Inspect the package
6
6
  command: ghost validate
7
- prompt: Does this fingerprint package validate, and what is absent?
7
+ prompt: Does this ghost package validate, and what is absent?
8
8
  ---
9
9
 
10
- # Recipe: Author Ghost Fingerprint
10
+ # Recipe: Author ghost Package
11
11
 
12
- **Goal:** record durable brand truths in `.ghost/` as a flat set of prose
12
+ **Goal:** record durable brand guidance in `.ghost/` as a flat set of prose
13
13
  **nodes**. If a change is uncommitted, it is draft work. If it is checked in,
14
- Ghost treats the fingerprint package as canonical.
14
+ ghost treats the `.ghost/` package as canonical.
15
15
 
16
16
  ```text
17
17
  .ghost/
18
18
  manifest.yml # schema + id
19
19
  glossary.md # the kind vocabulary + what each kind means
20
- principle.trust.md # a brand truth of kind `principle`
20
+ principle.trust.md # guidance of kind `principle`
21
21
  pattern.invoice.md # a pattern with an optional ## Skeleton
22
22
  anti-goal.generic.md # a review-critical replacement rule
23
- voice.md # a brand truth without a kind
23
+ voice.md # guidance without a kind
24
24
  ```
25
25
 
26
26
  A **node** is a markdown file: a `description`, optional `materials`, and a
@@ -68,6 +68,30 @@ The annotation is load-bearing. A bare sample teaches form; the annotation
68
68
  teaches which features of the form are intentional, which stops an agent from
69
69
  copying incidental details.
70
70
 
71
+ An exemplar should identify eight things in prose:
72
+
73
+ 1. the rendered artifact the agent should inspect;
74
+ 2. the implementation, fixture, or source that produced it;
75
+ 3. what is intentional and load-bearing;
76
+ 4. what is incidental and should change with task facts;
77
+ 5. the observable conditions where it applies;
78
+ 6. the content, viewport, or state conditions that challenge or break it;
79
+ 7. the current materials it demonstrates;
80
+ 8. provenance, owner, review date, or compatibility signal when freshness
81
+ matters.
82
+
83
+ Put locators in `materials`: render, implementation, assets, source, or external
84
+ reference. Put interpretation in the body. Ownership and freshness also live in
85
+ prose, the exemplar artifact, or a repo-owned system; they are not structured
86
+ `materials` metadata.
87
+
88
+ A rendered exemplar proves one solution under stated conditions. It is not a
89
+ universal visual target. Provide one exemplar for each distinct,
90
+ composition-critical surface shape that earns one, and say which details may be
91
+ reused. If unrelated tasks start converging on the same composition, section
92
+ order, or decoration, tighten applicability, add a shape-appropriate exemplar,
93
+ or remove the exemplar.
94
+
71
95
  Protect exact voice artifacts the same way. A real on-brand error message
72
96
  out-steers a paragraph about error-message voice:
73
97
 
@@ -177,21 +201,25 @@ Near the moment of payment, reduce felt risk. Proximity of reassurance to the
177
201
  action beats completeness...
178
202
  ```
179
203
 
180
- - **`description`** is how an agent finds the node: a one-line "what this is and
181
- when to gather it." `ghost gather` emits the menu of id, kind, description,
182
- concrete coverage, and material count; the agent matches the ask against it.
204
+ - **`description`** is how an agent finds the node: a compact retrieval payload
205
+ naming what the node governs, the observable condition under which it applies,
206
+ and what it contributes when useful. `ghost gather` emits id, kind,
207
+ description, concrete coverage, payload labels, and material count; the agent matches the ask
208
+ against applicability.
183
209
  - **Kind is the filename prefix** and must be a kind the glossary declares. A
184
210
  bare name (`voice.md`) has no kind.
185
- - **Altitude lives in the prose.** State a universal truth plainly; give a
186
- narrower truth its **condition** — the situation it applies in — in the prose.
187
- Never file a truth by destination (`for-emails.md`).
211
+ - **Altitude lives in the prose.** State universal guidance plainly; give a
212
+ narrower guidance a **condition** — the situation it applies in — in the prose
213
+ and usually in the description. Do not use broad universal imperatives unless
214
+ universal retrieval is intended. Never file a node by destination
215
+ (`for-emails.md`).
188
216
  - **Concreteness is derived.** A node carries concrete material when it has
189
217
  `materials`, a substantial fenced example, or a `## Skeleton`. You do not
190
218
  declare a separate type.
191
219
 
192
220
  ## What a node body answers
193
221
 
194
- While drafting, ask three questions of every truth — *why* (the stance), *with
222
+ While drafting, ask three questions of every node — *why* (the stance), *with
195
223
  what* (the materials), and *how it is assembled* (the patterns). These are
196
224
  drafting prompts, never frontmatter keys, node types, or required sections, and
197
225
  a node may answer only one. Each answer lands as a steering dimension the
@@ -200,15 +228,15 @@ machinery already scores:
200
228
  - **why** lands as stance prose — read first in `ghost pull`, weakest at
201
229
  moving output form on its own; it is the yardstick every later selection is
202
230
  measured against.
203
- - **with what** lands as `materials` and concreteness — drives pull ordering
204
- and `ghost review` matching. See [blocks.md](blocks.md) for authoring
231
+ - **with what** lands as `materials` and concreteness — affects pull packet
232
+ order and `ghost review` matching. See [blocks.md](blocks.md) for authoring
205
233
  material-backed nodes.
206
234
  - **how it is assembled** lands as patterns and `## Skeleton` sections — the
207
235
  strongest steering; Skeleton fences are extracted and emitted dead last so
208
236
  generation starts from them.
209
237
 
210
- Keep a node **purpose-coherent**: one truth, any length. Split only when it is
211
- genuinely a different truth.
238
+ Keep a node **purpose-coherent**: one coherent decision, any length. Split only when it
239
+ contains a separate decision with different applicability.
212
240
 
213
241
  ## Node prose stances
214
242
 
@@ -228,7 +256,7 @@ Two carve-outs come first, because they invert ordinary prose advice:
228
256
  Everywhere else:
229
257
 
230
258
  - **No aspirational abstractions.** "We value clarity and trust" steers
231
- nothing. Name the decision the truth forces: what gets picked when two goods
259
+ nothing. Name the decision the guidance forces: what gets picked when two goods
232
260
  compete, and what gets given up.
233
261
  - **Descriptions must discriminate.** Read the description alone. If it also
234
262
  fits a competitor's brand, it is retrieval-dead; rewrite it until it could
@@ -239,7 +267,7 @@ Everywhere else:
239
267
  - **Ban brand-deck filler.** "Elevate," "delight," "seamless," "best-in-class,"
240
268
  "empower." When a brand doc supplies these words, they are testimony to
241
269
  distill, never prose to keep.
242
- - **Settle the altitude on purpose.** Every truth is either claimed universal
270
+ - **Settle the altitude on purpose.** Every node is either claimed universal
243
271
  or given its condition in the prose. A node body that does neither was never
244
272
  curated for altitude; ask the human which it is.
245
273
 
@@ -262,12 +290,12 @@ in curation still decides what becomes canonical.
262
290
 
263
291
  ## Author through steering jobs
264
292
 
265
- The steering jobs are questions, not mandatory fields. Encode the truth in the
293
+ The steering jobs are questions, not mandatory fields. Encode the guidance in the
266
294
  strongest form that fixes the observed failure.
267
295
 
268
296
  | If the agent keeps... | Author... |
269
297
  | --- | --- |
270
- | missing the truth | sharper `description`; move universal truth to the cover |
298
+ | missing the guidance | sharper `description`; move universal guidance to the cover |
271
299
  | inventing values | `asset.*` node with materials and exact names |
272
300
  | producing generic output | `anti-goal.*` replacement plus annotated `exemplar.*` |
273
301
  | choosing the wrong structure | `pattern.*` with bound/open and a `## Skeleton` |
@@ -278,11 +306,11 @@ strongest form that fixes the observed failure.
278
306
 
279
307
  A `concept.*` node holds a one-time creative move — a launch hook, a
280
308
  campaign idea, a specific non-median leap the corpus would not have produced
281
- by recombining its other truths. Scope it explicitly to the task or surface
309
+ by recombining its other guidance. Scope it explicitly to the task or surface
282
310
  it was written for, keep it distinct from invariants, and do not generalize
283
311
  it into permanent brand law. If it proves reusable later, promote it into an
284
312
  exemplar or pattern deliberately; do not let a one-off default into durable
285
- truth by accumulation.
313
+ guidance through accumulation.
286
314
 
287
315
  Ask while authoring:
288
316
 
@@ -301,7 +329,7 @@ Ask while authoring:
301
329
 
302
330
  Decide which posture fits before scaffolding. Follow
303
331
  [authoring-scenarios.md](authoring-scenarios.md) when setting up or substantially
304
- revising a fingerprint. Human intent anchors the truths; what the human says and
332
+ revising a ghost package. Human intent anchors the guidance; what the human says and
305
333
  shows — words, images, links, exemplars — is the evidence; agent synthesis is
306
334
  draft work until a human curates it and Git review accepts it.
307
335
 
@@ -316,12 +344,12 @@ ghost validate
316
344
 
317
345
  `ghost init` seeds the skeleton starter: the manifest, a starter
318
346
  `glossary.md`, a `brand.md` cover, foundation chapters with open questions, and
319
- the model cliche floor. Replace open questions with real product truth before
347
+ the model cliche floor. Replace open questions with real product guidance before
320
348
  using it to steer generation. Use `ghost init --template minimal` for a
321
349
  manifest, glossary, cover, and cliche floor.
322
350
 
323
351
  Write the manifest-declared cover as the human-curated front door:
324
- non-negotiables that apply to every task, what the fingerprint covers, and any
352
+ non-negotiables that apply to every task, what the package covers, and any
325
353
  stricter silence posture. `ghost gather` inlines it before the menu, so anything
326
354
  that must never be missed belongs there.
327
355
 
@@ -336,7 +364,7 @@ feed-back only; they are never gathered.
336
364
 
337
365
  Declare the kinds you will use in `glossary.md` — the frontmatter `kinds` list
338
366
  plus a `#` section per kind explaining its meaning and normative weight. Kinds
339
- are your choice; Ghost ships no fixed vocabulary. A node's filename prefix must
367
+ are your choice; ghost ships no fixed vocabulary. A node's filename prefix must
340
368
  match a declared kind (or the node has no kind).
341
369
 
342
370
  The glossary is a dictionary of every term with defined meaning in the corpus.
@@ -349,17 +377,17 @@ hygiene, not over-structure.
349
377
  Elicit the brand from the human, not from a codebase. Interview for stance,
350
378
  audience, anti-goals, and exemplars; ask for the material they can show —
351
379
  screenshots, links, exemplar products, brand docs, copy they love or hate. Treat
352
- every artifact as testimony to curate, never truth to copy verbatim. Repo-bound
353
- reality can be recorded as `materials` on the node whose prose explains its
354
- purpose.
380
+ every artifact as evidence to curate, never guidance to copy verbatim. When
381
+ supplied artifacts are the starting point or must be reconciled with existing
382
+ guidance, follow [distill.md](distill.md). Repo-bound reality can be recorded as
383
+ `materials` on the node whose prose explains its purpose.
355
384
 
356
385
  ### 5. Write sparse nodes
357
386
 
358
- Add the smallest useful set of nodes, each a purpose-coherent prose truth
387
+ Add the smallest useful set of nodes, each carrying purpose-coherent prose guidance
359
388
  answering why, with what, or how it is assembled, named `<kind>.<slug>.md` or a
360
389
  bare slug. Draft only what the
361
- human said or showed. State conditions as situations in the prose. Prefer a few
362
- high-confidence truths over a noisy catalog. Hold each draft to the node prose
390
+ human said or showed. State conditions as situations in the prose. Prefer a small amount of focused, well-grounded guidance over a noisy catalog. Hold each draft to the node prose
363
391
  stances and score it before curation; a node below the gate returns to the
364
392
  interview. Ask the human to keep, soften,
365
393
  reject, or re-title important claims before treating draft nodes as durable.
@@ -377,12 +405,12 @@ Undeclared kind prefixes and malformed Skeleton sections are warnings.
377
405
  ## Never
378
406
 
379
407
  - Never describe any file outside `.ghost/` as canonical package input.
380
- - Never derive a brand truth from repo code alone; what a codebase repeats may
381
- be legacy, not stance. Use repo paths as `materials` only when the prose truth
408
+ - Never derive brand guidance from repo code alone; what a codebase repeats may
409
+ be legacy, not stance. Use repo paths as `materials` only when the prose guidance
382
410
  has been curated.
383
411
  - Never draft a node the human neither said nor showed.
384
412
  - Never invent a hierarchy, inheritance, or cross-node edges — the package is
385
413
  flat.
386
- - Never file a truth by destination; state its condition in the prose.
414
+ - Never file a node by destination; state its condition in the prose.
387
415
  - Never ship a blacklist-only anti-goal; state the replacement and enforce the
388
416
  hard line in review.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: concrete-tiers
3
- description: Decide which concrete code tiers a fingerprint carries — tokens, skeletons, components, exemplars — and justify every absence.
3
+ description: Decide which concrete code tiers a ghost package carries — tokens, skeletons, components, exemplars — and justify every absence.
4
4
  handoffs:
5
5
  - label: Audit what the package carries today
6
6
  command: ghost gather
@@ -10,10 +10,10 @@ handoffs:
10
10
  # Recipe: Choose The Concrete Code Tiers
11
11
 
12
12
  **Goal:** decide, deliberately, which tiers of concrete code material a
13
- fingerprint carries — and be able to say why any tier is absent. Absence
13
+ package carries — and be able to say why any tier is absent. Absence
14
14
  should be a decision, not a default.
15
15
 
16
- Prose states a truth; concrete code makes it the cheapest continuation. A
16
+ Prose states guidance; concrete code makes it the cheapest continuation. A
17
17
  package can carry code at four tiers, and each does a different job during
18
18
  generation:
19
19
 
@@ -30,7 +30,7 @@ Two properties decide whether a tier steers, and they are not the same thing:
30
30
  skeleton one block, an exemplar one whole surface.
31
31
  - **Delivery** — whether the material is guaranteed to reach the agent.
32
32
  Skeleton blocks live in node bodies, so `ghost pull` delivers them with the
33
- truth. Files behind `materials:` locators reach only agents that spend a
33
+ guidance. Files behind `materials:` locators reach only agents that spend a
34
34
  turn reading them. A tier the agent never sees contributes nothing;
35
35
  presence in the package is not presence in context.
36
36
 
@@ -57,15 +57,15 @@ The other three tiers are earned by the package's shape:
57
57
 
58
58
  ## Every tier is a copy that can drift
59
59
 
60
- Each tier repeats the token truth, and a stale copy steers harder than the
60
+ Each tier repeats the token decision, and a stale copy steers harder than the
61
61
  prose that corrects it. A hardcoded value in an exemplar where a token
62
62
  exists is a lie waiting for a rename. Before adding a tier, accept its
63
63
  maintenance bill; after any token change, sweep every tier for stranded
64
64
  literals.
65
65
 
66
- A tier can also fight the package's stance. A package whose truth is
66
+ A tier can also fight the package's stance. A package whose guidance is
67
67
  "compose each surface fresh from the tokens" contradicts itself by shipping
68
- a component kit; a package whose truth is "compose from the grammar, the
68
+ a component kit; a package whose guidance is "compose from the grammar, the
69
69
  refs are examples not a framework" hardens toward template convergence if
70
70
  every pattern carries a mandatory skeleton. When a tier and the stance
71
71
  conflict, the stance wins — that absence is the package expressing itself.