@design-intelligence/ghost 0.21.0 → 0.22.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 +47 -33
- package/dist/commands/fingerprint-commands.d.ts.map +1 -1
- package/dist/commands/fingerprint-commands.js +1 -6
- 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 +26 -30
- 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 +1 -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 +12 -19
- package/dist/commands/pull-command.js.map +1 -1
- package/dist/commands/pulse-command.js +1 -10
- package/dist/commands/pulse-command.js.map +1 -1
- package/dist/ghost-core/catalog/assemble.d.ts +0 -4
- package/dist/ghost-core/catalog/assemble.d.ts.map +1 -1
- package/dist/ghost-core/catalog/assemble.js +0 -10
- package/dist/ghost-core/catalog/assemble.js.map +1 -1
- package/dist/ghost-core/catalog/index.d.ts +1 -1
- package/dist/ghost-core/catalog/index.d.ts.map +1 -1
- package/dist/ghost-core/catalog/index.js +1 -1
- package/dist/ghost-core/catalog/index.js.map +1 -1
- package/dist/ghost-core/catalog/menu.d.ts +1 -11
- package/dist/ghost-core/catalog/menu.d.ts.map +1 -1
- package/dist/ghost-core/catalog/menu.js +1 -6
- package/dist/ghost-core/catalog/menu.js.map +1 -1
- package/dist/ghost-core/catalog/types.d.ts +0 -6
- package/dist/ghost-core/catalog/types.d.ts.map +1 -1
- package/dist/ghost-core/glossary.d.ts +0 -13
- package/dist/ghost-core/glossary.d.ts.map +1 -1
- package/dist/ghost-core/glossary.js +0 -7
- package/dist/ghost-core/glossary.js.map +1 -1
- package/dist/ghost-core/index.d.ts +2 -2
- package/dist/ghost-core/index.d.ts.map +1 -1
- package/dist/ghost-core/index.js +1 -1
- package/dist/ghost-core/index.js.map +1 -1
- package/dist/ghost-core/package-manifest.d.ts +7 -0
- package/dist/ghost-core/package-manifest.d.ts.map +1 -1
- package/dist/ghost-core/package-manifest.js +10 -0
- package/dist/ghost-core/package-manifest.js.map +1 -1
- package/dist/init-payloads/median/median-tells.md +25 -25
- package/dist/init-payloads/skeleton/brand.md +22 -0
- package/dist/init-payloads/skeleton/context.conversation.md +24 -0
- package/dist/init-payloads/skeleton/foundation.color.md +39 -0
- package/dist/init-payloads/skeleton/foundation.composition.md +30 -0
- package/dist/init-payloads/skeleton/foundation.controls.md +29 -0
- package/dist/init-payloads/skeleton/foundation.layout.md +45 -0
- package/dist/init-payloads/skeleton/foundation.motion.md +34 -0
- package/dist/init-payloads/skeleton/foundation.type.md +44 -0
- package/dist/init-payloads/skeleton/foundation.voice.md +29 -0
- package/dist/init-payloads/skeleton/glossary.md +27 -32
- package/dist/init-payloads/vessel-light/anti-goal.tells.md +5 -4
- package/dist/init-payloads/vessel-light/checks/shape-matches-job.md +43 -0
- package/dist/init-payloads/vessel-light/glossary.md +0 -1
- package/dist/init-payloads/vessel-light/grammar.color-roles.md +2 -2
- package/dist/init-payloads/vessel-light/grammar.deletion.md +35 -0
- package/dist/init-payloads/vessel-light/grammar.hierarchy.md +13 -3
- package/dist/init-payloads/vessel-light/grammar.job.md +54 -0
- package/dist/init-payloads/vessel-light/index.md +20 -24
- package/dist/init-payloads/vessel-light/manifest.yml +1 -0
- package/dist/init-payloads/vessel-light/materials/primitives.css +15 -52
- package/dist/init-payloads/vessel-light/materials/ref/composition.editorial.html +12 -7
- package/dist/init-payloads/vessel-light/materials/ref/composition.overlay.html +8 -2
- package/dist/init-payloads/vessel-light/materials/ref/composition.table.html +3 -3
- package/dist/init-payloads/vessel-light/materials/tokens.css +27 -78
- package/dist/init-payloads/vessel-light/signature.temperature.md +7 -0
- package/dist/init-payloads/vessel-light/signature.type.md +6 -5
- package/dist/observability-events.d.ts +0 -3
- package/dist/observability-events.d.ts.map +1 -1
- package/dist/observability-events.js.map +1 -1
- package/dist/review/resolve.d.ts +1 -2
- package/dist/review/resolve.d.ts.map +1 -1
- package/dist/review/resolve.js +4 -5
- package/dist/review/resolve.js.map +1 -1
- package/dist/review/review-packet.d.ts +0 -1
- package/dist/review/review-packet.d.ts.map +1 -1
- package/dist/review/review-packet.js +0 -19
- package/dist/review/review-packet.js.map +1 -1
- package/dist/scan/check-files.d.ts.map +1 -1
- package/dist/scan/check-files.js +0 -15
- package/dist/scan/check-files.js.map +1 -1
- package/dist/scan/check-scaffold.js +2 -2
- package/dist/scan/check-scaffold.js.map +1 -1
- package/dist/scan/fingerprint-package-lint.d.ts +8 -0
- package/dist/scan/fingerprint-package-lint.d.ts.map +1 -0
- package/dist/scan/fingerprint-package-lint.js +284 -0
- package/dist/scan/fingerprint-package-lint.js.map +1 -0
- package/dist/scan/fingerprint-package-loader.d.ts.map +1 -1
- package/dist/scan/fingerprint-package-loader.js +2 -29
- package/dist/scan/fingerprint-package-loader.js.map +1 -1
- package/dist/scan/fingerprint-package.d.ts +9 -7
- package/dist/scan/fingerprint-package.d.ts.map +1 -1
- package/dist/scan/fingerprint-package.js +18 -231
- package/dist/scan/fingerprint-package.js.map +1 -1
- package/dist/scan/node-files.d.ts.map +1 -1
- package/dist/scan/node-files.js +1 -3
- package/dist/scan/node-files.js.map +1 -1
- package/dist/scan/templates.d.ts.map +1 -1
- package/dist/scan/templates.js +43 -35
- package/dist/scan/templates.js.map +1 -1
- package/dist/skill-bundle/SKILL.md +15 -13
- package/dist/skill-bundle/references/adapting-a-starter.md +62 -60
- package/dist/skill-bundle/references/authoring-scenarios.md +6 -8
- package/dist/skill-bundle/references/brief.md +5 -6
- package/dist/skill-bundle/references/capture.md +47 -36
- package/dist/skill-bundle/references/concrete-tiers.md +95 -0
- package/dist/skill-bundle/references/recall.md +6 -12
- package/dist/skill-bundle/references/schema.md +15 -24
- package/dist/skill-bundle/references/self-check.md +2 -2
- package/dist/skill-bundle/references/steering-audit.md +7 -10
- package/package.json +1 -1
- package/dist/init-payloads/skeleton/grammar.color-roles.md +0 -26
- package/dist/init-payloads/skeleton/grammar.conversation.md +0 -23
- package/dist/init-payloads/skeleton/grammar.hierarchy.md +0 -39
- package/dist/init-payloads/skeleton/grammar.motion.md +0 -24
- package/dist/init-payloads/skeleton/grammar.rhythm.md +0 -23
- package/dist/init-payloads/skeleton/grammar.surfaces.md +0 -26
- package/dist/init-payloads/skeleton/index.md +0 -27
- package/dist/init-payloads/skeleton/signature.palette.md +0 -24
- package/dist/init-payloads/skeleton/signature.shape.md +0 -19
- package/dist/init-payloads/skeleton/signature.temperature.md +0 -20
- package/dist/init-payloads/skeleton/signature.type.md +0 -22
- package/dist/skill-bundle/references/wild.md +0 -30
- /package/dist/init-payloads/median/{anti-goal.median.md → cliche.median.md} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: steering-audit
|
|
3
|
-
description: Audit a Ghost fingerprint for concrete steering coverage
|
|
3
|
+
description: Audit a Ghost fingerprint for concrete steering coverage.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Recipe: Audit Steering Coverage
|
|
@@ -19,16 +19,13 @@ ghost pulse --format json
|
|
|
19
19
|
|
|
20
20
|
If checks are installed and a diff exists, run `ghost review` too.
|
|
21
21
|
|
|
22
|
-
## Headline the audit with concreteness
|
|
22
|
+
## Headline the audit with concreteness
|
|
23
23
|
|
|
24
24
|
Report first:
|
|
25
25
|
|
|
26
26
|
- **Concreteness coverage:** total nodes, concrete-material nodes, prose-only
|
|
27
27
|
nodes. Concrete means non-empty `materials`, a fenced code block of at least 3
|
|
28
28
|
lines, or a `## Skeleton` section.
|
|
29
|
-
- **Guard routing:** how many guard nodes exist, whether they stay in default
|
|
30
|
-
gather, and whether `ghost review` can auto-offer matched guards via
|
|
31
|
-
materials.
|
|
32
29
|
- **Pulse by concreteness:** concrete exposure/pull rate vs prose-only
|
|
33
30
|
exposure/pull rate. This is the tuning instrument: if concrete nodes are not
|
|
34
31
|
pulled, descriptions or task selection are failing.
|
|
@@ -37,16 +34,16 @@ Report first:
|
|
|
37
34
|
|
|
38
35
|
| Row | Status | Evidence | Next move |
|
|
39
36
|
| --- | --- | --- | --- |
|
|
40
|
-
| Retrieval | strong / weak | descriptions, ids,
|
|
37
|
+
| Retrieval | strong / weak | descriptions, ids, cover | sharpen descriptions or move universal truth to the cover |
|
|
41
38
|
| Concreteness | strong / thin | materials, fenced examples, Skeletons | add concrete locators, exemplars, or opening structures |
|
|
42
|
-
|
|
|
43
|
-
| Consistency | clean / conflicting | concrete bodies vs rules
|
|
44
|
-
| Stance | present / missing |
|
|
39
|
+
| Anti-goals | present / missing / vague | `anti-goal.*`, review packet | write not-X-instead-Y replacements and material locators |
|
|
40
|
+
| Consistency | clean / conflicting | concrete bodies vs rules | update stale examples; examples average with rules |
|
|
41
|
+
| Stance | present / missing | cover, `principle.*` | write forced-choice principles |
|
|
45
42
|
| Materials | present / missing | `materials`, inspect-pointers | point at real assets/components/tokens |
|
|
46
43
|
| Exemplars | annotated / unannotated / missing | fenced samples, screenshots | say what to copy and what is incidental |
|
|
47
44
|
| Patterns | bound-open / loose / missing | `pattern.*`, Skeletons | state applies / bound / open and add a Skeleton when opening structure matters |
|
|
48
45
|
| Checks | covered / partial / missing | checks/, probes, review packet | add checks/probes for high-risk invariants |
|
|
49
|
-
| Silence posture | defined / missing |
|
|
46
|
+
| Silence posture | defined / missing | cover | say when to proceed provisionally or ask |
|
|
50
47
|
|
|
51
48
|
## Task-level readiness
|
|
52
49
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@design-intelligence/ghost",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.22.0",
|
|
4
4
|
"description": "Ghost CLI for the brand fingerprint: a portable steering packet of prose truths your agent reads before it builds, with advisory review after",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Block, Inc.",
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: "Semantic color roles and the rules that govern them — gather before choosing any color; roles not raw values, status is meaning, expression is register-gated and never on controls."
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
The token roles are the source of truth. An agent may combine roles, but it
|
|
6
|
-
may not author around them. Raw color values are implementation detail, never
|
|
7
|
-
product language.
|
|
8
|
-
|
|
9
|
-
Author with semantic roles: `background`, `foreground`, `card`, `popover`,
|
|
10
|
-
`primary`, `secondary`, `muted`, `accent`, `border`, `input`, `ring`, and the
|
|
11
|
-
status roles. If a container needs a color, it first needs a role.
|
|
12
|
-
|
|
13
|
-
The status roles — destructive, success, warning, info — exist only when
|
|
14
|
-
meaning demands them. Destructive means destructive or error. Success means
|
|
15
|
-
success. Warning means warning. Info means information. None of them are
|
|
16
|
-
brand accents, and they never moonlight as atmosphere, in any register.
|
|
17
|
-
|
|
18
|
-
One view should not perform a color palette. If a status color is present,
|
|
19
|
-
let the rest of the view stay on the base roles. Richness beyond this is
|
|
20
|
-
register-gated: a closed expression set (`--expression-*`) exists; its size
|
|
21
|
-
and members are a dial — see the palette signature — and each register caps
|
|
22
|
-
how loud they may be.
|
|
23
|
-
|
|
24
|
-
The constant that holds across every register: expression never touches what
|
|
25
|
-
you click. Buttons, inputs, and links stay on the base roles everywhere. A
|
|
26
|
-
colored control is a different design system.
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: "Conversation grammar — plain assistant text, compact user surfaces, collapsed tool calls, one structured prompt input; gather for any AI thread, agent console, review assistant, or prompt composer."
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
Conversation UI is not chat cosplay. The assistant speaks on the page surface
|
|
6
|
-
as plain text: no bubble, no border, no fill.
|
|
7
|
-
|
|
8
|
-
User turns are compact muted surfaces aligned right. They mark authorship
|
|
9
|
-
without turning the thread into alternating balloons.
|
|
10
|
-
|
|
11
|
-
Assistant hierarchy comes from prose, spacing, and type. Wrapping assistant
|
|
12
|
-
messages in cards makes the system look defensive and wastes density.
|
|
13
|
-
|
|
14
|
-
Tool calls are operational evidence. Collapse them to a labeled one-line
|
|
15
|
-
summary with status. Expand only when the user asks for detail, then show
|
|
16
|
-
mono content inside the disclosed area.
|
|
17
|
-
|
|
18
|
-
The prompt input is one bordered surface. The textarea region stays empty of
|
|
19
|
-
controls so writing remains the focus. Attachments, model choices, secondary
|
|
20
|
-
tools, and send live in a single row below it.
|
|
21
|
-
|
|
22
|
-
There is one primary send action. Stop and send are mutually exclusive states
|
|
23
|
-
of the same action area, not two competing primary buttons.
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: "The closed hierarchy vocabulary — six text variants, seven tones, a five-rung control emphasis ladder, one primary per view — gather for any view that contains text or actions."
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
Hierarchy is a closed vocabulary, not a size slider. Every piece of text and
|
|
6
|
-
every control picks from a named set; anything outside the set is a broken
|
|
7
|
-
primitive, not a variant.
|
|
8
|
-
|
|
9
|
-
The text variants are exactly six: display, headline, title, body, label,
|
|
10
|
-
mono. Variant names are jobs, not decoration. Display leads a rare editorial
|
|
11
|
-
moment. Headline names a section. Title anchors a card, dialog, or compact
|
|
12
|
-
region. Body carries reading. Label names structure — category tags, field
|
|
13
|
-
labels, bylines, metadata, compact status. Mono carries code and machine
|
|
14
|
-
detail. Do not fake hierarchy with arbitrary font sizes; choose the tier that
|
|
15
|
-
matches the job, then use tone, weight, and spacing for the rest.
|
|
16
|
-
|
|
17
|
-
The tones are exactly seven: default, muted, inverse, success, warning, info,
|
|
18
|
-
destructive. Tone is part of the message. Default is the main reading plane.
|
|
19
|
-
Muted carries secondary information. Inverse is for dark or primary surfaces.
|
|
20
|
-
The four status tones appear only when the words have that state meaning.
|
|
21
|
-
Hierarchy starts with tone and weight before size — a secondary note usually
|
|
22
|
-
wants muted body or label, not a smaller custom font. If the prose needs
|
|
23
|
-
emphasis, improve the sentence before adding a style.
|
|
24
|
-
|
|
25
|
-
The control emphasis ladder is exactly five rungs: primary, secondary,
|
|
26
|
-
outline, ghost, link. One primary action per view is the rule; everything
|
|
27
|
-
else steps down the ladder. Primary is for the action the screen exists to
|
|
28
|
-
complete — if two buttons both look primary, the hierarchy failed.
|
|
29
|
-
Destructive is a meaning, not a rung: it is rare, it names the destructive
|
|
30
|
-
act directly, and it is never borrowed for urgency, emphasis, or brand heat.
|
|
31
|
-
|
|
32
|
-
Fields are quiet until they are active: hairline border, muted placeholder,
|
|
33
|
-
clear label, and a focused ring when the user engages. The focus ring is
|
|
34
|
-
guidance, not decoration. Errors state facts next to the field that caused
|
|
35
|
-
them — do not hide field errors in modals, toasts, or generic banners when
|
|
36
|
-
the user needs to fix one input.
|
|
37
|
-
|
|
38
|
-
Balanced text is for headings and compact statements. Do not balance long
|
|
39
|
-
body copy into jagged reading.
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: "Motion doctrine — motion is evidence of state change, never decoration; a closed vocabulary of three duration roles and one ease; gather for any transition, animation, or hover treatment."
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
Motion is evidence of a state change. It confirms hover, press, reveal,
|
|
6
|
-
collapse, entrance, exit, and spatial movement. It does not entertain.
|
|
7
|
-
|
|
8
|
-
The entire vocabulary is three duration roles and one ease. Fast is for hover
|
|
9
|
-
and press. Normal is for reveals, fades, and small state changes. Slow is
|
|
10
|
-
reserved for spatial transitions where the user needs to understand movement.
|
|
11
|
-
Do not introduce novelty easings because a surface feels static; the ease's
|
|
12
|
-
character is a brand answer — see the temperature signature.
|
|
13
|
-
|
|
14
|
-
Nothing loops except explicit loading states. A spinner may continue because
|
|
15
|
-
work continues. Decorative pulsing, floating, glowing, and attention-seeking
|
|
16
|
-
keyframes are off-language.
|
|
17
|
-
|
|
18
|
-
Prefer opacity and small transform changes. If removing an animation does not
|
|
19
|
-
reduce comprehension, the animation was decoration.
|
|
20
|
-
|
|
21
|
-
Condition: marketing and editorial surfaces may stage entrances — scroll
|
|
22
|
-
reveals and section transitions are part of editorial rhythm, still built
|
|
23
|
-
from the three durations and the one ease. In product UI the same staging is
|
|
24
|
-
decoration.
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: "Layout rhythm — all layout is stacks with a closed gap step set; gather before laying anything out; never ad-hoc sibling margins."
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
All layout is stacks. Rhythm comes from relationships between siblings, not
|
|
6
|
-
from isolated margins pasted onto whichever element was last touched.
|
|
7
|
-
|
|
8
|
-
The gap steps are exactly five: `--gap-xs`, `--gap-sm`, `--gap-md`,
|
|
9
|
-
`--gap-lg`, `--gap-xl`. Choose the gap that states the relationship. Do not
|
|
10
|
-
tune by single pixels to make a screenshot pass.
|
|
11
|
-
|
|
12
|
-
The default is column, medium gap, stretch alignment, start justification.
|
|
13
|
-
That is the ordinary reading rhythm.
|
|
14
|
-
|
|
15
|
-
Columns are for almost everything: forms, cards, message lists, modal bodies,
|
|
16
|
-
settings, empty states, and page sections. A column lets the user scan.
|
|
17
|
-
|
|
18
|
-
Rows are conditional. Use them for controls, metadata lines, compact status,
|
|
19
|
-
and paired label/value moments. If a row starts wrapping awkwardly, it
|
|
20
|
-
probably wanted to be a column.
|
|
21
|
-
|
|
22
|
-
Ad-hoc margins between siblings are forbidden because they hide the rhythm.
|
|
23
|
-
When spacing feels wrong, change the stack gap or split the stack.
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: "Surface roles and the closed elevation set — gather for any card, popover, modal, dialog, scrim, or bordered container; flat is the default, borders are structural, exactly three elevation tiers."
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
Surface is the only way an element gets a background, border, radius, or
|
|
6
|
-
shadow. If a container needs visual treatment, it first needs a surface role.
|
|
7
|
-
|
|
8
|
-
The vocabulary is closed: role, padding, radius, border, and elevation. These
|
|
9
|
-
axes create enough range for page flow, cards, popovers, muted blocks,
|
|
10
|
-
accents, and dark moments without inventing one-off boxes.
|
|
11
|
-
|
|
12
|
-
The default surface is flat: no border, no shadow. We do not outline
|
|
13
|
-
everything to prove layout exists.
|
|
14
|
-
|
|
15
|
-
The elevation tiers are exactly three: card, popover, modal. Elevation
|
|
16
|
-
implies hierarchy — a card sits in the document flow, a popover floats above
|
|
17
|
-
the flow, a modal interrupts the task. Pick the tier that matches the
|
|
18
|
-
interaction; never write a custom shadow because the composition feels flat,
|
|
19
|
-
and never pair a low tier with an interrupting role or give a routine card
|
|
20
|
-
modal gravity. Component shadows belong to the primitives that own them;
|
|
21
|
-
never borrow them for layout.
|
|
22
|
-
|
|
23
|
-
Borders are structural, especially for inputs and overlays. They are not
|
|
24
|
-
decorative frames around ordinary text — reject borders as decoration,
|
|
25
|
-
especially around assistant text, and use space, tone, and type hierarchy
|
|
26
|
-
instead.
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: "Always read first — the trust tiers of this starter fingerprint, the unanswered dials, and how to work before they are answered."
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
This is a skeleton fingerprint: the adaptation-safe law of good interface work,
|
|
6
|
-
with every brand decision left explicitly open. It steers an agent away from
|
|
7
|
-
the model's median from the first generation, without pretending to be a
|
|
8
|
-
brand it is not.
|
|
9
|
-
|
|
10
|
-
The corpus carries two trust tiers. Grammar and the median floor are law:
|
|
11
|
-
safe to consume verbatim, unchanged by any adaptation — they speak in
|
|
12
|
-
token roles and closed sets, never in literal values. Signature nodes are
|
|
13
|
-
dials, and in this starter every dial is unanswered: each states the fixed
|
|
14
|
-
relationship worth keeping and the question only a human can answer. Do not
|
|
15
|
-
freehand a dial's value and present it as brand-backed — ask the human or
|
|
16
|
-
flag the gap.
|
|
17
|
-
|
|
18
|
-
The reset raises the floor; only the fingerprint escapes the median.
|
|
19
|
-
|
|
20
|
-
Unanswered dials do not block work; they mark what your report must flag.
|
|
21
|
-
When generating before the dials are answered, define the grammar's token
|
|
22
|
-
roles in your own stylesheet with provisional values — the role names are
|
|
23
|
-
the contract; the values are placeholders until the dials say otherwise.
|
|
24
|
-
|
|
25
|
-
When a requested UI is not covered by a node, compose from the grammar. Do
|
|
26
|
-
not invent a new styling system. If the result needs a new pattern, the new
|
|
27
|
-
pattern should come from observed drift, not anticipation.
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: "Gather whenever color beyond the base roles is in question. The palette dial: a quiet base spine plus a closed expression set at situation-gated volume — this dial is unanswered; ask the human or flag the gap, don't freehand it."
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
This dial is unanswered — ask the human or flag the gap. Do not freehand a
|
|
6
|
-
value and present it as brand-backed.
|
|
7
|
-
|
|
8
|
-
The relationship is fixed: one brand at different volumes. A quiet base
|
|
9
|
-
spine is the default atmosphere in every medium — calm, legible, and
|
|
10
|
-
resistant to novelty — and a closed expression set supplies the atmosphere,
|
|
11
|
-
with volume set by situation, never by taste. Two constants outrank any
|
|
12
|
-
volume decision: expression never touches what you click — buttons, inputs,
|
|
13
|
-
and links stay on the base roles everywhere — and the status roles are not
|
|
14
|
-
expression; they keep their meanings everywhere and never moonlight as
|
|
15
|
-
atmosphere. The ladder — a quiet spine, a closed hue set, situation-gated
|
|
16
|
-
volume — is the part worth keeping.
|
|
17
|
-
|
|
18
|
-
The open question: what is this brand's base spine, and what are the named
|
|
19
|
-
hues of its closed expression set — how many, and which? When the human
|
|
20
|
-
answers, restate this node as "this brand's current answer is …" and record
|
|
21
|
-
the values where your materials live. If the task can't wait for an answer,
|
|
22
|
-
proceed with a quiet provisional choice, honor the fixed relationship, label
|
|
23
|
-
the choice provisional in your report — and never restate this node as
|
|
24
|
-
answered.
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: "Gather before setting any radius or corner treatment. The shape dial: controls take --radius-control, surfaces take --radius-surface — this dial is unanswered; ask the human or flag the gap, don't freehand it."
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
This dial is unanswered — ask the human or flag the gap. Do not freehand a
|
|
6
|
-
value and present it as brand-backed.
|
|
7
|
-
|
|
8
|
-
The relationship is fixed: controls and surfaces carry different radius
|
|
9
|
-
roles, and the two never swap. Buttons and text inputs use
|
|
10
|
-
`--radius-control`; cards and other surfaces use `--radius-surface`. One
|
|
11
|
-
radius for what you click, one for what contains — that split is the part
|
|
12
|
-
worth keeping, whatever the values turn out to be.
|
|
13
|
-
|
|
14
|
-
The open question: what are this brand's two radii — how round is a control,
|
|
15
|
-
and how round is a surface? When the human answers, restate this node as
|
|
16
|
-
"this brand's current answer is …" and record the values where your
|
|
17
|
-
materials live. If the task can't wait for an answer, proceed with a quiet
|
|
18
|
-
provisional choice, honor the fixed relationship, label the choice
|
|
19
|
-
provisional in your report — and never restate this node as answered.
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: "Gather for any copy and for motion character. The temperature dial: how the brand sounds and how it moves, one shared temperature — this dial is unanswered; ask the human or flag the gap, don't freehand it."
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
This dial is unanswered — ask the human or flag the gap. Do not freehand a
|
|
6
|
-
value and present it as brand-backed.
|
|
7
|
-
|
|
8
|
-
The relationship is fixed: voice and motion carry the same temperature. Copy
|
|
9
|
-
states what happened, what is possible, or what the user must decide — it
|
|
10
|
-
does not perform personality — and motion confirms rather than entertains.
|
|
11
|
-
The coupling — words and motion sharing one temperature — is the part worth
|
|
12
|
-
keeping.
|
|
13
|
-
|
|
14
|
-
The open question: where does this brand sit — how warm or cool is its copy,
|
|
15
|
-
what does its motion feel like, and what character does its one ease carry?
|
|
16
|
-
When the human answers, restate this node as "this brand's current answer
|
|
17
|
-
is …" and record the values where your materials live. If the task can't
|
|
18
|
-
wait for an answer, proceed with a quiet provisional choice, honor the fixed
|
|
19
|
-
relationship, label the choice provisional in your report — and never
|
|
20
|
-
restate this node as answered.
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: "Gather for any text, and for heroes, landing pages, and editorial moments. The type dial: one voice typeface plus a mono for machine detail, editorial scale kept separate from product text — this dial is unanswered; ask the human or flag the gap, don't freehand it."
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
This dial is unanswered — ask the human or flag the gap. Do not freehand a
|
|
6
|
-
value and present it as brand-backed.
|
|
7
|
-
|
|
8
|
-
The relationship is fixed: one typeface is the voice of the interface,
|
|
9
|
-
everywhere, with a mono variant only for code, tool detail, and machine
|
|
10
|
-
output. The heading scale is editorial — it exists for pages composed
|
|
11
|
-
outside the text variants, heroes and editorial moments — and product UI
|
|
12
|
-
never mixes the two vocabularies in one view. A modal title is not a poster.
|
|
13
|
-
The one-voice rule and the editorial/product split are the parts worth
|
|
14
|
-
keeping.
|
|
15
|
-
|
|
16
|
-
The open question: what typeface is this brand's voice, what mono partners
|
|
17
|
-
it, and what rhythm does the editorial heading scale carry? When the human
|
|
18
|
-
answers, restate this node as "this brand's current answer is …" and record
|
|
19
|
-
the values where your materials live. If the task can't wait for an answer,
|
|
20
|
-
proceed with a quiet provisional choice, honor the fixed relationship, label
|
|
21
|
-
the choice provisional in your report — and never restate this node as
|
|
22
|
-
answered.
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: wild
|
|
3
|
-
description: Use wild nodes deliberately to explore past the fingerprint without claiming conformance.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Recipe: Use Wild Nodes
|
|
7
|
-
|
|
8
|
-
Use this ritual only when the human asks to explore beyond the current
|
|
9
|
-
fingerprint or when the brief declares explicit **open territory**: the part of
|
|
10
|
-
the work where conformance is intentionally suspended.
|
|
11
|
-
|
|
12
|
-
1. Run `ghost gather <ask> --wild` to expose wild nodes alongside the
|
|
13
|
-
steady menu. Wild nodes push past the fingerprint; Ghost still does no
|
|
14
|
-
selection.
|
|
15
|
-
2. Select deliberately: choose at most a couple of wild nodes whose descriptions
|
|
16
|
-
match the open territory. Do not bulk-load wild nodes.
|
|
17
|
-
3. Run `ghost pull <steady-id>... <wild-id>...` to read the selected nodes.
|
|
18
|
-
4. In the working brief, name the open territory plainly: where conformance is
|
|
19
|
-
suspended, which wild node ids are being used, and which steady
|
|
20
|
-
non-negotiables still bind.
|
|
21
|
-
5. Generate two options:
|
|
22
|
-
- a conforming baseline grounded only in steady fingerprint context;
|
|
23
|
-
- a divergent take that uses the selected wild nodes inside the open
|
|
24
|
-
territory.
|
|
25
|
-
6. Ask a human to pick, reject, or carry the surprise back into the fingerprint
|
|
26
|
-
through ordinary reviewed edits.
|
|
27
|
-
|
|
28
|
-
Wild nodes are never routine context. Never claim a divergent take as
|
|
29
|
-
Ghost-backed conformance, and never present surprise as something Ghost chose;
|
|
30
|
-
surprise is chosen by a human.
|
|
File without changes
|