@orkestrel/scaffold 0.0.64 → 0.0.66
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 +11 -1
- package/dist/host/agents/skills/enterprise-bootstrap/SKILL.md +202 -175
- package/dist/host/agents/skills/enterprise-bootstrap/references/bootstrap-reference.md +347 -94
- package/dist/host/agents/skills/enterprise-bootstrap/references/color-modes.md +356 -0
- package/dist/host/agents/skills/enterprise-bootstrap/references/components.md +100 -45
- package/dist/host/agents/skills/enterprise-bootstrap/references/frontend-design.md +295 -101
- package/dist/host/agents/skills/enterprise-bootstrap/references/inputs.md +60 -41
- package/dist/host/agents/skills/enterprise-bootstrap/references/inspection.md +255 -132
- package/dist/host/agents/skills/enterprise-bootstrap/references/responsive-layout.md +237 -0
- package/dist/host/agents/skills/enterprise-bootstrap/references/utilities.md +111 -17
- package/dist/host/claude/agents/orkestrel.md +24 -24
- package/dist/host/claude/rules/workspace.md +2 -2
- package/dist/host/claude/settings.json +1 -1
- package/dist/host/claude/skills/enterprise-bootstrap/SKILL.md +11 -10
- package/dist/host/guides/scaffold.md +63 -22
- package/dist/host/manifest.json +26 -14
- package/dist/host/scripts/ollama.sh +322 -13
- package/dist/src/core/index.cjs +34 -13
- package/dist/src/core/index.cjs.map +1 -1
- package/dist/src/core/index.d.cts +31 -9
- package/dist/src/core/index.d.ts +31 -9
- package/dist/src/core/index.js +33 -14
- package/dist/src/core/index.js.map +1 -1
- package/package.json +5 -5
|
@@ -1,129 +1,323 @@
|
|
|
1
1
|
# Frontend Design
|
|
2
2
|
|
|
3
|
-
> Part of the `enterprise-bootstrap`
|
|
4
|
-
>
|
|
3
|
+
> Part of the `enterprise-bootstrap` skill. Aesthetic, hierarchy, spacing,
|
|
4
|
+
> typography, color, depth, imagery, signature, and copy — use when setting visual direction.
|
|
5
|
+
> The pass order lives in [SKILL.md](../SKILL.md) → Process.
|
|
5
6
|
> Operate layer: [SKILL.md](../SKILL.md).
|
|
6
7
|
|
|
7
|
-
Give the surface a
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
Give the surface a point of view rooted in its subject. Make the person's task clear before making
|
|
9
|
+
the frame distinctive. Preserve an established identity; take a justified aesthetic risk only where
|
|
10
|
+
the brief leaves room. Never trade readability, familiar behavior, or honest content for novelty.
|
|
10
11
|
|
|
11
12
|
## Ground it in the subject
|
|
12
13
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
Name the subject, the audience, and the screen's single job. Inspect the existing product, its
|
|
15
|
+
content, and its design system before choosing a direction. Use prior designs and preferences as
|
|
16
|
+
hints, not templates. Draw character from the subject's materials, instruments, artifacts, and
|
|
17
|
+
vernacular rather than an unrelated visual trend.
|
|
18
|
+
|
|
19
|
+
Set personality through these levers — typeface, primary color, corner-radius family, and copy
|
|
20
|
+
register. Choose each from the audience and subject, then hold it on every screen. In an existing
|
|
21
|
+
product the levers are already set: carry them forward and move none without a brief that asks for
|
|
22
|
+
it.
|
|
23
|
+
|
|
24
|
+
Pick the typeface and radius against the register the brief names: take a serif for a classic
|
|
25
|
+
register, a rounded sans or a large radius for a playful one, and no radius for a formal one. Take a
|
|
26
|
+
neutral sans-serif and a small radius for a neutral register as a deliberate choice, never as a
|
|
27
|
+
skipped one. Use one radius family per product; pill buttons beside square cards read as two
|
|
28
|
+
products. Take the copy register from what the audience already uses, not from a competitor's
|
|
29
|
+
interface.
|
|
30
|
+
|
|
31
|
+
Start with the smallest useful feature: what the person needs to see, enter, decide, and do next.
|
|
32
|
+
Compose that interaction with realistic content before choosing its navigation shell. Reuse a shell
|
|
33
|
+
that already works; do not redesign it to avoid a local layout decision. Build the simple working
|
|
34
|
+
flow first, then refine it and take the next feature. Never imply functionality that is not built.
|
|
19
35
|
|
|
20
36
|
## Design principles
|
|
21
37
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
38
|
+
### Hierarchy before decoration
|
|
39
|
+
|
|
40
|
+
Name the primary information, supporting context, and ancillary detail in each task region. Make
|
|
41
|
+
that order readable without color: use placement, grouping, weight, and spacing before adding
|
|
42
|
+
paint. When the primary element does not stand out, quiet its competitors before enlarging it.
|
|
43
|
+
|
|
44
|
+
Carry hierarchy with a short set of foreground tiers and a weight pair before reaching for size;
|
|
45
|
+
size alone produces oversized primary text and unreadable secondary text. Use a regular body
|
|
46
|
+
weight (400) and one emphasis weight (600–700); weights under 400 belong only at display sizes.
|
|
47
|
+
Quiet a heavy element by lowering its contrast — an icon beside a label takes the secondary tier
|
|
48
|
+
rather than the label growing — and strengthen a faint one with weight or width, not a darker
|
|
49
|
+
color. On a colored fill, inherit its tested foreground first. Use a scoped opaque same-hue tier only
|
|
50
|
+
when another readable tier is needed; do not import a neutral grey blindly or reduce opacity. Take the
|
|
51
|
+
measured tiers from [color-modes.md](color-modes.md) → Text tiers. Keep information-bearing marks
|
|
52
|
+
above the contrast bar in [SKILL.md](../SKILL.md) → Surfaces, color, contrast.
|
|
53
|
+
|
|
54
|
+
Pick heading elements for document structure and size them for their visual job. A page's `h1` need
|
|
55
|
+
not be its largest text; a section title usually supports the content and can be small, or present
|
|
56
|
+
only for assistive technology. Adapt the heading levels in component examples to the host page,
|
|
57
|
+
never the other way around.
|
|
58
|
+
|
|
59
|
+
Treat labels on **displayed data** as supporting content. Omit a redundant label only when format
|
|
60
|
+
and context still identify the value; combine label and value where that reads more naturally.
|
|
61
|
+
Keep labels, units, timeframes, and comparison bases where values would otherwise be ambiguous.
|
|
62
|
+
Emphasize the label instead when the task is to scan for a named property. Never apply label
|
|
63
|
+
removal to form controls or accessible names.
|
|
64
|
+
|
|
65
|
+
Give each active task region at most one dominant action. Make secondary actions clear but quieter,
|
|
66
|
+
and tertiary actions discoverable without competing. Destructive describes consequence, not rank:
|
|
67
|
+
keep a row-level delete quiet; give the final destructive commit the strong danger treatment when
|
|
68
|
+
the confirmation ladder calls for one. Take implementations from [SKILL.md](../SKILL.md) →
|
|
69
|
+
Hierarchy & actions; a readable outline is not forbidden, and a solid fill is not proof of contrast.
|
|
70
|
+
|
|
71
|
+
### Space, grouping, and width
|
|
72
|
+
|
|
73
|
+
Start with generous space, then remove it until the task's density is right. Choose compactness
|
|
74
|
+
because comparison or throughput needs it, not because everything must fit above the fold.
|
|
75
|
+
|
|
76
|
+
Use a small spacing and sizing scale with meaningful jumps: tight steps at the bottom, wider
|
|
77
|
+
steps higher up, and no two steps closer than about 25 %. Reuse the project's scale before
|
|
78
|
+
extending it. Choose by elimination — render the guessed step and both neighbors; when both
|
|
79
|
+
neighbors are worse the guess is right, and when one is better repeat around it — instead of
|
|
80
|
+
tuning one pixel at a time. Name roles for internal gaps, field groups, panels, and sections; do
|
|
81
|
+
not make "multiples of four" an unlimited license to invent values.
|
|
82
|
+
|
|
83
|
+
Keep more space **between** groups than **within** them, in both axes. Keep labels, controls, help,
|
|
84
|
+
and errors together; keep headings closer to the content they introduce than to the preceding
|
|
85
|
+
section. Separate icon-and-value pairs from their neighbors. Confirm those relationships after
|
|
86
|
+
wrapping, validation, and responsive reflow.
|
|
87
|
+
|
|
88
|
+
Give content the width it needs, not all the width available. Bound forms and reading columns;
|
|
89
|
+
allow data comparisons more room. Split supporting explanation from a form on wide screens rather
|
|
90
|
+
than stretching its fields. A narrow useful panel does not owe the screen filler cards.
|
|
91
|
+
|
|
92
|
+
Use a grid where columns need to scale together. Use a bounded rail and a flexible main region where
|
|
93
|
+
they do not. Prefer a content-derived maximum width over changing percentage widths for a
|
|
94
|
+
login panel. Let it shrink only when the viewport requires it. Take missing sizing steps through
|
|
95
|
+
[bootstrap-reference.md](bootstrap-reference.md) → Utilities API, not invented classes.
|
|
96
|
+
|
|
97
|
+
Compose and use the primary flow at narrow width before expanding it. Record each region's
|
|
98
|
+
stacking, expansion, content parity, and scroll policy in [responsive-layout.md](responsive-layout.md).
|
|
99
|
+
On mobile, preserve the design's reading order and character through type, rhythm, and useful
|
|
100
|
+
content, not a shrunken shell. Rework dense previews into legible lists rather than truncating
|
|
101
|
+
all the evidence. Judge the available container, not the viewport label.
|
|
102
|
+
|
|
103
|
+
Adapt hierarchy, not a screenshot's proportions. Reduce large headings and outer gaps sooner than
|
|
104
|
+
body text and control targets. Set type, padding, and icon size independently for each control size.
|
|
105
|
+
Wrap or reorganize before truncating decision-critical content. Do not shrink an entire interface
|
|
106
|
+
to make it fit.
|
|
107
|
+
|
|
108
|
+
### Typography that fits the task
|
|
109
|
+
|
|
110
|
+
Assign display, body, and utility roles; they need not be different font families. Reuse the
|
|
111
|
+
product's typefaces. For a new system, take a legible UI face for repeated reading and data, and add
|
|
112
|
+
a display face only where its character earns the payload. A neutral sans-serif or system stack is
|
|
113
|
+
a deliberate choice, not a failure of distinctiveness. Prefer a family shipping the `300`–`700`
|
|
114
|
+
range so display, body, and emphasis roles draw from one family; avoid condensed or
|
|
115
|
+
short-x-height faces for UI text; keep a display face at display size,
|
|
116
|
+
where it was drawn to work. Test the actual glyphs, numerals, weights, languages, and fallback the
|
|
117
|
+
surface needs.
|
|
118
|
+
|
|
119
|
+
Hand-pick a finite type scale in `rem`, with smaller jumps for UI text and larger jumps for
|
|
120
|
+
display; a modular ratio yields fractional pixels and too few reading sizes. Avoid nested `em`
|
|
121
|
+
font sizes that compound off-scale. Start with a regular weight and an emphasis weight, and
|
|
122
|
+
add another only for a distinct role. Keep captions and metadata at the smallest readable step in
|
|
123
|
+
the secondary tier, not smaller in body color. Never shrink text merely to avoid fixing a cramped
|
|
124
|
+
layout.
|
|
125
|
+
|
|
126
|
+
Keep prose near **45–75 characters per line** where the viewport permits; judge the rendered font,
|
|
127
|
+
not the unit alone. Bound paragraphs independently of wider images, tables, or navigation. Keep
|
|
128
|
+
long text start-aligned; center only short, independent passages. Align mixed-size text on its
|
|
129
|
+
baseline, not the centers of its boxes.
|
|
130
|
+
|
|
131
|
+
Use more line-height for small or wide paragraphs and less for large headings. Keep controls and
|
|
132
|
+
icons out of prose line-height rules. Trust the typeface's tracking by default; tighten display
|
|
133
|
+
text or open short all-caps labels only where the rendered result improves. Never use tracking to
|
|
134
|
+
rescue an illegible display face at UI size.
|
|
135
|
+
|
|
136
|
+
Right-align comparable quantities with their headers. Keep units and decimal precision consistent;
|
|
137
|
+
use tabular figures when the shipped font supports them. Keep identifiers and prose out of numeric
|
|
138
|
+
formatting rules. Take table mechanics from [bootstrap-reference.md](bootstrap-reference.md) →
|
|
139
|
+
Dense data tables.
|
|
140
|
+
|
|
141
|
+
Let link prominence follow context. Inline prose links need a persistent non-color cue. Where
|
|
142
|
+
most things are links — navigation, lists, tables — emphasize with weight or a darker tone and
|
|
143
|
+
let ancillary links reveal an underline on hover and focus; the prose treatment everywhere is
|
|
144
|
+
noise. Keep hover and visible focus feedback. Never make hover the only way to discover an action
|
|
145
|
+
on touch or keyboard.
|
|
146
|
+
|
|
147
|
+
### Color as a constrained system
|
|
27
148
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
149
|
+
Define roles, not a handful of unrelated swatches. Reuse or establish a neutral ramp, the brand
|
|
150
|
+
families the identity needs, and only the status or categorical families the feature needs. Build
|
|
151
|
+
the neutral ramp across the shipped `100…900` steps, and give each brand and status family enough
|
|
152
|
+
steps for text, borders, fills, and interaction states. Declare a step because a role consumes it,
|
|
153
|
+
never to fill the ramp.
|
|
32
154
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
155
|
+
Choose a family's base in a real control, its dark edge in text, and its light edge in a subtle
|
|
156
|
+
surface; fill the gaps with visibly distinct steps, middle first. Define every shade up front;
|
|
157
|
+
never derive one at a use site with `lighten`, `darken`, or `color-mix`. Use HSL to reason about
|
|
158
|
+
hue, saturation, and lightness when authoring a ramp; retain a project's established color
|
|
159
|
+
format. Raise saturation as lightness moves away from the middle so light and dark steps keep
|
|
160
|
+
their color, and rotate hue within about 20–30° — toward a brighter neighbor for light steps, a
|
|
161
|
+
darker one for dark steps — rather than mixing with white or black. Give all greys one hue and
|
|
162
|
+
temperature, warmer or cooler to match the brand. Refine the shared ramp in context instead of
|
|
163
|
+
adding per-component shades. Take the Bootstrap extension points from
|
|
164
|
+
[color-modes.md](color-modes.md) → Extend the theme.
|
|
37
165
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
166
|
+
Map primitives through the existing semantic and component tokens. Decide which element owns
|
|
167
|
+
the surface before choosing a foreground. Default ordinary text and quiet status to inheritance;
|
|
168
|
+
use adaptive neutral or subtle fills without automatically adding a text-color class. Take the
|
|
169
|
+
mechanics and bounded exceptions from [color-modes.md](color-modes.md), and the token extension
|
|
170
|
+
points from [bootstrap-reference.md](bootstrap-reference.md) → Theming & design tokens.
|
|
42
171
|
|
|
43
|
-
|
|
44
|
-
|
|
172
|
+
Flip the contrast for status, tags, and callouts: a dark tone of the hue on its light tint keeps
|
|
173
|
+
the color without the weight of a dark fill, and reserves the solid pair for the primary
|
|
174
|
+
element. Reserve explicit foreground/background pairs for intentional solid, inverse, or
|
|
175
|
+
image-backed regions. Keep a secondary foreground within that region's tested contract; do not apply neutral
|
|
176
|
+
grey or reduced opacity by habit. When no quieter foreground passes, separate by weight or spacing.
|
|
177
|
+
Review hierarchy in every declared mode independently. Preserve relative prominence and useful
|
|
178
|
+
separation rather than mechanically inverting shades or adding a border to every dark panel.
|
|
45
179
|
|
|
46
|
-
|
|
47
|
-
|
|
180
|
+
Use color to reinforce a word, glyph, position, or pattern, never to carry meaning alone. Give
|
|
181
|
+
charts identifiable series and values without relying solely on hue. A grayscale check reveals
|
|
182
|
+
hierarchy problems; it does not prove contrast or accessibility.
|
|
183
|
+
|
|
184
|
+
### Depth and finishing details
|
|
185
|
+
|
|
186
|
+
Separate regions with space first, then a surface change, then a shadow, then a line. Keep cards
|
|
187
|
+
for real grouping; do not nest a card around every field. When an element has both a border and a
|
|
188
|
+
distinct background, remove the border and look again. Remove redundant dividers, not the edges or
|
|
189
|
+
focus indicators a person needs to recognize and operate a control.
|
|
190
|
+
|
|
191
|
+
Use elevation to explain layering. Define a small shadow scale and assign it by z-position:
|
|
192
|
+
small and tight for slightly raised controls and cards, medium for floating menus, large and soft
|
|
193
|
+
for dialogs; lift an item on drag and press a control on click. Do not give every panel a shadow.
|
|
194
|
+
Light comes from above: a raised element takes a lighter top edge and a tight shadow beneath, an
|
|
195
|
+
inset element a shadow at its top edge — mimic that and stop. Where a shadow needs two parts, use
|
|
196
|
+
a broad cast shadow and a tighter contact shadow; weaken the contact as elevation increases. Flat
|
|
197
|
+
surfaces establish depth through lightness — lighter reads closer, darker recessed — or a hard
|
|
198
|
+
offset shadow, without simulated lighting. Take the Bootstrap ladder from
|
|
199
|
+
[bootstrap-reference.md](bootstrap-reference.md) → Elevation and depth.
|
|
200
|
+
|
|
201
|
+
Keep overlap intentional and responsive: no clipped text, controls, focus rings, or hit areas.
|
|
202
|
+
Give overlapping images a ring in the background color so they never clash. Keep radii and border
|
|
203
|
+
weights in one family.
|
|
204
|
+
|
|
205
|
+
Spend polish on the content already present before adding another accessory — icon bullets that mean something, a brand-colored check, a
|
|
206
|
+
promoted quotation mark, a link underline that completes on hover. Use one accent border per region
|
|
207
|
+
— top of a card, side of a callout, under a heading, or the active nav item. Repeating that accent
|
|
208
|
+
across neighboring regions turns it into a pattern and it stops reading as an accent. Change a
|
|
209
|
+
section's surface before decorating it; keep
|
|
210
|
+
any gradient within about 30° of hue and any pattern low-contrast and away from text. An accent,
|
|
211
|
+
pattern, or background treatment supports grouping, state, or the subject; never add one to
|
|
212
|
+
compensate for weak hierarchy. Take the class recipes from [utilities.md](utilities.md) →
|
|
213
|
+
Composition habits and [components.md](components.md).
|
|
214
|
+
|
|
215
|
+
### Images at their intended size
|
|
216
|
+
|
|
217
|
+
Use relevant, good-quality imagery and inspect the actual asset early. Do not compose around a
|
|
218
|
+
placeholder and assume an unrelated replacement will work. Choose an image, diagram, live demo,
|
|
219
|
+
or text treatment for the information it carries; imagery is not mandatory decoration.
|
|
220
|
+
|
|
221
|
+
Keep text contrast consistent across the actual image crop and every supported width. Use a tested
|
|
222
|
+
overlay or local backdrop when needed; changing text color alone does not control a variable
|
|
223
|
+
background. Do not count average image contrast as a passing measurement.
|
|
224
|
+
|
|
225
|
+
Render icons near their intended optical size. Put a small icon in a larger quiet container, or
|
|
226
|
+
choose a purpose-built illustration, rather than enlarging a UI glyph until its proportions look
|
|
227
|
+
wrong. Show UI screenshots at a legible size: crop to the relevant feature or capture its real
|
|
228
|
+
narrow layout instead of shrinking a whole desktop screen into unreadable texture. Label a
|
|
229
|
+
simplified illustration as such; never pass invented product output off as evidence.
|
|
230
|
+
|
|
231
|
+
Bound user-uploaded images with a consistent frame and aspect ratio. Use cover only when cropping
|
|
232
|
+
is acceptable; use contain when the whole image matters. Reserve dimensions, preserve aspect
|
|
233
|
+
ratio, and handle missing images. Give informative images useful alternatives and decorative ones
|
|
234
|
+
empty alternatives. Test portrait, landscape, transparent, very light, and very dark content.
|
|
235
|
+
|
|
236
|
+
### States are part of the composition
|
|
237
|
+
|
|
238
|
+
Design the first-use empty state beside the populated one. Name the action that creates value and
|
|
239
|
+
remove controls that genuinely have nothing to operate on. Keep active filters and their clear
|
|
240
|
+
path in a **filtered-empty** state; hiding them hides the cause of the empty result. Preserve the
|
|
241
|
+
frame, entered values, and recovery path when a request fails.
|
|
242
|
+
|
|
243
|
+
Build the required loading, partial, and error states in the same feature cycle. Keep known layout
|
|
244
|
+
stable while loading; never display invented progress. Stress the working interface with long
|
|
245
|
+
names, multiline copy, missing values, and large counts, not only attractive sample data. Take the
|
|
246
|
+
state contracts from [bootstrap-reference.md](bootstrap-reference.md) → The data states.
|
|
48
247
|
|
|
49
248
|
## Where the signature lives in product UI
|
|
50
249
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
Structure your CSS selector specificities deliberately when writing the code. Classes cancel each
|
|
84
|
-
other out, especially a type-based selector like `.section` against an element-based selector like
|
|
85
|
-
`.cta`, and the padding and margin between sections is where it happens most.
|
|
86
|
-
|
|
87
|
-
Do this planning and iteration in your thinking. Show the user a direction only once it satisfies
|
|
88
|
-
the brief and the quality floor below.
|
|
250
|
+
In an authenticated tool the data is the content: keep it quiet, legible, and fast to compare. Put
|
|
251
|
+
the signature in the frame — navigation, header, type treatment, and useful empty states — rather
|
|
252
|
+
than an unconventional table. Keep the frame subordinate to the task. Carry an existing product's
|
|
253
|
+
signature forward instead of introducing another one for each screen.
|
|
254
|
+
|
|
255
|
+
For marketing, open with the subject's thesis and the most characteristic evidence for it: a
|
|
256
|
+
headline, image, demonstration, or interaction. Do not transplant that hero into an operational
|
|
257
|
+
screen. A big number, supporting stats, and a gradient accent are not a direction by themselves.
|
|
258
|
+
|
|
259
|
+
Make numbering, eyebrows, dividers, and labels encode something true. Number steps only when order
|
|
260
|
+
matters. Give richer components richer content without replacing their semantics: supporting text
|
|
261
|
+
in a menu, related non-comparable details in one table cell, native radios inside selectable cards.
|
|
262
|
+
Preserve keyboard behavior, sorting, and the comparisons the task depends on.
|
|
263
|
+
|
|
264
|
+
## Hold the direction against defaults
|
|
265
|
+
|
|
266
|
+
Run the pass order in [SKILL.md](../SKILL.md) → Process. That section owns the sequence; this file
|
|
267
|
+
owns the visual decisions each pass makes.
|
|
268
|
+
|
|
269
|
+
Calibrate against recurring defaults: cream with serif and terracotta; near-black with
|
|
270
|
+
acid green or vermilion; broadsheet hairlines, square corners, and dense columns. These can fit a
|
|
271
|
+
brief; they are not evidence that a direction fits this one. Follow a pinned direction exactly and
|
|
272
|
+
use free axes deliberately, not as an excuse to rebrand an existing product.
|
|
273
|
+
|
|
274
|
+
Reject a direction that obscures the task, implies unbuilt behavior, or reads as interchangeable
|
|
275
|
+
with any other product. Keep exploratory drafts private: show the selected direction, the decisions
|
|
276
|
+
behind it, and the verification limits, not every discarded variation. Never claim a rendered result
|
|
277
|
+
from source inspection.
|
|
278
|
+
|
|
279
|
+
Keep specificity deliberate through [SKILL.md](../SKILL.md) → The styling ladder, which owns that
|
|
280
|
+
rule.
|
|
89
281
|
|
|
90
282
|
## Restraint and self-critique
|
|
91
283
|
|
|
92
|
-
Spend
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
of decoration with no reason in the subject. Treat a surface with no deliberate risk as failing the
|
|
96
|
-
distinctiveness mandate. Meet the quality floor without announcing it: responsive down to mobile,
|
|
97
|
-
visible keyboard focus, reduced motion respected. Critique your own work as you build, and take
|
|
98
|
-
screenshots where the environment supports it. Read both themes and both the wide and the narrow
|
|
99
|
-
viewport from those captures, not the markup. Before shipping, remove one accessory: cut the
|
|
100
|
-
least-necessary decorative element, and restore it only where the surface demonstrably loses
|
|
101
|
-
information without it. Where notes persist across passes, record what you tried so the next pass
|
|
102
|
-
reads it.
|
|
284
|
+
Spend boldness in one place where the brief permits it, and keep its surroundings disciplined. A
|
|
285
|
+
minimal direction needs precise spacing and type; a maximal direction needs controlled hierarchy,
|
|
286
|
+
not a pile of effects. Preserve an established restrained identity instead of manufacturing risk.
|
|
103
287
|
|
|
104
|
-
|
|
288
|
+
Use motion only when it explains a transition, gives feedback, or belongs to the subject. Prefer
|
|
289
|
+
Bootstrap's behavior and at most one orchestrated decorative moment. Keep custom motion behind
|
|
290
|
+
`prefers-reduced-motion: no-preference`; the motion-free surface must remain complete.
|
|
105
291
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
292
|
+
Before shipping, remove the least-useful accessory if one exists. Restore it only when the surface
|
|
293
|
+
loses information or the brief's intended identity. Never remove a label, boundary, or affordance
|
|
294
|
+
merely to satisfy a subtraction rule.
|
|
295
|
+
|
|
296
|
+
Review captures at the declared widths, themes, and states, with keyboard focus and realistic
|
|
297
|
+
content. Switch modes on the mounted interface; inspect inherited text, quiet fills, and selected
|
|
298
|
+
controls before polishing decoration. Compare against the named design criteria; do not invent a numeric beauty score. Use
|
|
299
|
+
[inspection.md](inspection.md) for measurable claims and its rendered design review for visual
|
|
300
|
+
ones. Record untested coverage as open.
|
|
301
|
+
|
|
302
|
+
## Writing in design
|
|
109
303
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
304
|
+
Keep a word only where it helps the person understand or operate the interface. Decide what each
|
|
305
|
+
element needs to say before writing it. Use the brief's content; when it supplies none, write
|
|
306
|
+
specific interface copy without inventing customer claims, performance figures, or testimonials.
|
|
307
|
+
Distinguish fixture data from product facts.
|
|
114
308
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
309
|
+
Write from the end user's side of the screen. Name what people control and recognize, not how the
|
|
310
|
+
system is built. Prefer a specific plain verb to a clever phrase. Tune tone to the product and hold
|
|
311
|
+
one vocabulary across screens.
|
|
118
312
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
313
|
+
Make a control name its result: "Save changes," not "Submit." Keep that verb through the flow:
|
|
314
|
+
"Publish" confirms with "Published." Keep labels short only while they stay unambiguous. An expanded
|
|
315
|
+
accessible name must contain the visible label, preferably at its start; do not replace a useful
|
|
316
|
+
visible label with hidden explanation.
|
|
122
317
|
|
|
123
|
-
|
|
124
|
-
the
|
|
125
|
-
|
|
318
|
+
Give failure and emptiness direction rather than mood. State what failed, what was preserved, and
|
|
319
|
+
what the person can do next. Name the first useful action in an empty state. Keep errors in context
|
|
320
|
+
and avoid apology, blame, and vague reassurance.
|
|
126
321
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
nothing is lost for someone who arrives without that context.
|
|
322
|
+
Use active voice, sentence case, and no filler. Let a label label and an example demonstrate. Keep
|
|
323
|
+
help and validation distinct; never make placeholder text carry either job alone.
|