@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.
- package/README.md +35 -29
- package/dist/commands/checks-command.js +3 -3
- package/dist/commands/checks-command.js.map +1 -1
- package/dist/commands/command-discovery.d.ts.map +1 -1
- package/dist/commands/command-discovery.js +5 -5
- package/dist/commands/command-discovery.js.map +1 -1
- package/dist/commands/export-command.d.ts.map +1 -1
- package/dist/commands/export-command.js +10 -10
- package/dist/commands/export-command.js.map +1 -1
- package/dist/commands/fingerprint-commands.d.ts +2 -2
- package/dist/commands/fingerprint-commands.d.ts.map +1 -1
- package/dist/commands/fingerprint-commands.js +7 -7
- package/dist/commands/fingerprint-commands.js.map +1 -1
- package/dist/commands/gather-command.d.ts.map +1 -1
- package/dist/commands/gather-command.js +86 -20
- package/dist/commands/gather-command.js.map +1 -1
- package/dist/commands/init-command.d.ts.map +1 -1
- package/dist/commands/init-command.js +6 -6
- package/dist/commands/init-command.js.map +1 -1
- package/dist/commands/pull-command.d.ts.map +1 -1
- package/dist/commands/pull-command.js +22 -9
- package/dist/commands/pull-command.js.map +1 -1
- package/dist/commands/pulse-command.js +6 -6
- package/dist/commands/pulse-command.js.map +1 -1
- package/dist/commands/review-command.js +7 -7
- package/dist/commands/review-command.js.map +1 -1
- package/dist/commands/skill-command.js +2 -2
- package/dist/fingerprint.d.ts +2 -1
- package/dist/fingerprint.d.ts.map +1 -1
- package/dist/fingerprint.js +1 -0
- package/dist/fingerprint.js.map +1 -1
- package/dist/ghost-core/catalog/assemble.d.ts.map +1 -1
- package/dist/ghost-core/catalog/assemble.js +2 -1
- package/dist/ghost-core/catalog/assemble.js.map +1 -1
- package/dist/ghost-core/catalog/menu.d.ts +6 -4
- package/dist/ghost-core/catalog/menu.d.ts.map +1 -1
- package/dist/ghost-core/catalog/menu.js +1 -0
- package/dist/ghost-core/catalog/menu.js.map +1 -1
- package/dist/ghost-core/catalog/types.d.ts +4 -2
- package/dist/ghost-core/catalog/types.d.ts.map +1 -1
- package/dist/ghost-core/check/index.d.ts +1 -1
- package/dist/ghost-core/check/index.js +1 -1
- package/dist/ghost-core/check/lint.d.ts +2 -2
- package/dist/ghost-core/check/lint.js +2 -2
- package/dist/ghost-core/check/load.d.ts +1 -1
- package/dist/ghost-core/check/load.js +3 -3
- package/dist/ghost-core/check/types.d.ts +3 -3
- package/dist/ghost-core/index.d.ts +9 -3
- package/dist/ghost-core/index.d.ts.map +1 -1
- package/dist/ghost-core/index.js +6 -2
- package/dist/ghost-core/index.js.map +1 -1
- package/dist/ghost-core/markdown.d.ts +1 -1
- package/dist/ghost-core/markdown.js +1 -1
- package/dist/ghost-core/node/index.d.ts +1 -1
- package/dist/ghost-core/node/index.d.ts.map +1 -1
- package/dist/ghost-core/node/index.js +1 -1
- package/dist/ghost-core/node/index.js.map +1 -1
- package/dist/ghost-core/node/schema.js +1 -1
- package/dist/ghost-core/node/serialize.d.ts +6 -5
- package/dist/ghost-core/node/serialize.d.ts.map +1 -1
- package/dist/ghost-core/node/serialize.js +25 -9
- package/dist/ghost-core/node/serialize.js.map +1 -1
- package/dist/ghost-core/node/steering.d.ts +1 -0
- package/dist/ghost-core/node/steering.d.ts.map +1 -1
- package/dist/ghost-core/node/steering.js +4 -1
- package/dist/ghost-core/node/steering.js.map +1 -1
- package/dist/ghost-core/node/types.d.ts +6 -5
- package/dist/ghost-core/node/types.d.ts.map +1 -1
- package/dist/ghost-core/package-manifest.d.ts +23 -13
- package/dist/ghost-core/package-manifest.d.ts.map +1 -1
- package/dist/ghost-core/package-manifest.js +20 -7
- package/dist/ghost-core/package-manifest.js.map +1 -1
- package/dist/ghost-core/skill-bundle-loader.d.ts +1 -1
- package/dist/ghost-core/skill-bundle-loader.js +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/init-payloads/median/cliche.median.md +6 -6
- package/dist/init-payloads/median/median-tells.md +1 -1
- package/dist/init-payloads/skeleton/brand.md +4 -3
- package/dist/init-payloads/skeleton/glossary.md +1 -1
- package/dist/init-payloads/vessel-light/anti-goal.median.md +6 -6
- package/dist/init-payloads/vessel-light/checks/motion-restraint.md +1 -1
- package/dist/init-payloads/vessel-light/manifest.yml +1 -1
- package/dist/init-payloads/vessel-light/materials/ref/composition.form.html +2 -2
- package/dist/init-payloads/vessel-light/materials/ref/composition.overlay.html +3 -3
- package/dist/observability-events.d.ts +10 -0
- package/dist/observability-events.d.ts.map +1 -1
- package/dist/observability-events.js +12 -0
- package/dist/observability-events.js.map +1 -1
- package/dist/package.d.ts +7 -0
- package/dist/package.d.ts.map +1 -0
- package/dist/package.js +4 -0
- package/dist/package.js.map +1 -0
- package/dist/review/resolve.js +1 -1
- package/dist/review/resolve.js.map +1 -1
- package/dist/review/review-packet.d.ts +5 -3
- package/dist/review/review-packet.d.ts.map +1 -1
- package/dist/review/review-packet.js +12 -11
- package/dist/review/review-packet.js.map +1 -1
- package/dist/scan/constants.d.ts +6 -2
- package/dist/scan/constants.d.ts.map +1 -1
- package/dist/scan/constants.js +8 -4
- package/dist/scan/constants.js.map +1 -1
- package/dist/scan/file-kind.d.ts +1 -1
- package/dist/scan/file-kind.d.ts.map +1 -1
- package/dist/scan/file-kind.js +11 -11
- package/dist/scan/file-kind.js.map +1 -1
- package/dist/scan/fingerprint-package-lint.d.ts +3 -1
- package/dist/scan/fingerprint-package-lint.d.ts.map +1 -1
- package/dist/scan/fingerprint-package-lint.js +14 -12
- package/dist/scan/fingerprint-package-lint.js.map +1 -1
- package/dist/scan/fingerprint-package-loader.d.ts +7 -3
- package/dist/scan/fingerprint-package-loader.d.ts.map +1 -1
- package/dist/scan/fingerprint-package-loader.js +10 -6
- package/dist/scan/fingerprint-package-loader.js.map +1 -1
- package/dist/scan/fingerprint-package.d.ts +30 -14
- package/dist/scan/fingerprint-package.d.ts.map +1 -1
- package/dist/scan/fingerprint-package.js +17 -9
- package/dist/scan/fingerprint-package.js.map +1 -1
- package/dist/scan/index.d.ts +3 -1
- package/dist/scan/index.d.ts.map +1 -1
- package/dist/scan/index.js +3 -1
- package/dist/scan/index.js.map +1 -1
- package/dist/scan/tarball.d.ts +2 -2
- package/dist/scan/tarball.js +3 -3
- package/dist/scan/tarball.js.map +1 -1
- package/dist/scan/templates.d.ts +1 -1
- package/dist/scan/templates.d.ts.map +1 -1
- package/dist/scan/templates.js +15 -11
- package/dist/scan/templates.js.map +1 -1
- package/dist/skill-bundle/SKILL.md +39 -31
- package/dist/skill-bundle/references/adapting-a-starter.md +11 -11
- package/dist/skill-bundle/references/authoring-scenarios.md +33 -30
- package/dist/skill-bundle/references/blocks.md +19 -20
- package/dist/skill-bundle/references/brief.md +13 -11
- package/dist/skill-bundle/references/capture.md +65 -37
- package/dist/skill-bundle/references/concrete-tiers.md +7 -7
- package/dist/skill-bundle/references/distill.md +204 -0
- package/dist/skill-bundle/references/making.md +113 -0
- package/dist/skill-bundle/references/recall.md +11 -7
- package/dist/skill-bundle/references/schema.md +16 -12
- package/dist/skill-bundle/references/self-check.md +12 -12
- package/dist/skill-bundle/references/steering-audit.md +19 -9
- 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
|
|
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
|
-
#
|
|
10
|
+
# ghost — Brand Guidance Packages
|
|
11
11
|
|
|
12
|
-
A
|
|
13
|
-
its stance, its conditions, and optional pointers to the concrete materials
|
|
14
|
-
|
|
15
|
-
|
|
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 #
|
|
23
|
-
<slug>.md #
|
|
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
|
|
30
|
-
|
|
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
|
|
59
|
-
ghost pull <ids> #
|
|
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
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
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,
|
|
73
|
-
prose rules), extracts Skeletons dead last, and appends
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
134
|
+
conventions, but durable brand guidance should be curated by the human.
|
|
127
135
|
|
|
128
|
-
## When the
|
|
136
|
+
## When the package is silent
|
|
129
137
|
|
|
130
|
-
A silent
|
|
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-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
85
|
-
- Foundation usage rules: **
|
|
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** —
|
|
88
|
-
measured model
|
|
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
|
|
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
|
|
3
|
+
description: Choose the right human-agent workflow for authoring ghost packages.
|
|
4
4
|
handoffs:
|
|
5
|
-
- label: Validate the
|
|
5
|
+
- label: Validate the package
|
|
6
6
|
command: ghost validate --format json
|
|
7
|
-
prompt: Classify this
|
|
7
|
+
prompt: Classify this package's authoring scenario and confirm the package validates.
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
-
# Recipe: Collaborative
|
|
10
|
+
# Recipe: Collaborative Package Authoring
|
|
11
11
|
|
|
12
|
-
**Goal:** help a human and agent co-author durable brand
|
|
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
|
|
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
|
|
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
|
|
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
|
|
33
|
-
empty catalog; the
|
|
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
|
|
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.
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
94
|
-
narrower
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
119
|
-
- **Altitude** — 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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
15
|
-
|
|
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
|
|
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
|
|
29
|
-
concrete materials
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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
|
|
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
|
|
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
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
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
|
|
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
|
|
178
|
-
- Never let the
|
|
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
|
|
3
|
+
description: Build a compact pre-generation packet from pulled ghost guidance.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# Recipe: Brief Work From
|
|
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
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
|
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
|
|
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
|