@ericrisco/rsc 3.1.3 → 3.3.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 +8 -6
- package/manifest.json +43 -69
- package/package.json +6 -1
- package/scripts/design-upstream.js +92 -0
- package/scripts/doctor.js +0 -24
- package/scripts/lib/default-skill-floor.js +5 -1
- package/scripts/lib/domains.js +2 -2
- package/scripts/lib/recommend.js +1 -3
- package/scripts/lib/retired-skills.js +7 -1
- package/skills/ai-media/SKILL.md +2 -2
- package/skills/design/IMPECCABLE-LICENSE.txt +191 -0
- package/skills/design/SKILL.md +79 -328
- package/skills/design/THIRD_PARTY.md +26 -0
- package/skills/design/engine/LICENSE +21 -0
- package/skills/design/engine/RUN.md +515 -0
- package/skills/design/engine/UPSTREAM.json +4 -0
- package/skills/design/engine/assets/app.css +216 -0
- package/skills/design/engine/assets/base.css +105 -0
- package/skills/design/engine/assets/base.js +37 -0
- package/skills/design/engine/assets/charts.js +617 -0
- package/skills/design/engine/assets/scenes/stage.css +28 -0
- package/skills/design/engine/assets/scenes/stage.js +133 -0
- package/skills/design/engine/library/app.json +1327 -0
- package/skills/design/engine/library/directions.json +1078 -0
- package/skills/design/engine/library/heroes.json +1086 -0
- package/skills/design/engine/library/motions.json +92 -0
- package/skills/design/engine/library/palettes.json +1485 -0
- package/skills/design/engine/library/photos.json +7240 -0
- package/skills/design/engine/library/sections.json +4429 -0
- package/skills/design/engine/library/sites.json +8350 -0
- package/skills/design/engine/library/type.json +2024 -0
- package/skills/design/engine/references/app-screens.md +1199 -0
- package/skills/design/engine/references/colour.md +141 -0
- package/skills/design/engine/references/copy.md +177 -0
- package/skills/design/engine/references/critique.md +182 -0
- package/skills/design/engine/references/imagery.md +791 -0
- package/skills/design/engine/references/layout.md +292 -0
- package/skills/design/engine/references/motion.md +980 -0
- package/skills/design/engine/references/research.md +356 -0
- package/skills/design/engine/references/scenes.md +174 -0
- package/skills/design/engine/references/tells.md +115 -0
- package/skills/design/engine/references/type.md +170 -0
- package/skills/design/engine/scripts/assets.mjs +865 -0
- package/skills/design/engine/scripts/draw.mjs +584 -0
- package/skills/design/engine/scripts/inspect.mjs +303 -0
- package/skills/design/engine/scripts/lib/app-draw.mjs +203 -0
- package/skills/design/engine/scripts/lib/cdp.mjs +248 -0
- package/skills/design/engine/scripts/lib/probe.mjs +909 -0
- package/skills/design/engine/scripts/lib/rules.mjs +243 -0
- package/skills/design/engine/scripts/lint.mjs +119 -0
- package/skills/design/engine/scripts/scenes.mjs +124 -0
- package/skills/design/evals/cases.yaml +35 -46
- package/skills/design/references/design-md.md +49 -0
- package/skills/design/references/finish-review.md +46 -0
- package/skills/design/references/modes.md +51 -0
- package/skills/expo/SKILL.md +3 -4
- package/skills/marketing/references/landing-copy.md +2 -2
- package/skills/react/SKILL.md +2 -2
- package/skills/react-native/SKILL.md +3 -3
- package/skills/scroll-film/SKILL.md +220 -0
- package/skills/scroll-film/assets/page-template.html +128 -0
- package/skills/scroll-film/assets/scrub-engine.js +352 -0
- package/skills/scroll-film/evals/README.md +26 -0
- package/skills/scroll-film/evals/cases.yaml +81 -0
- package/skills/scroll-film/references/chain.md +218 -0
- package/skills/scroll-film/references/engine.md +132 -0
- package/skills/scroll-film/scripts/verify.sh +158 -0
- package/skills/swift-ios/SKILL.md +1 -1
- package/skills/ui-engineering/SKILL.md +3 -4
- package/skills/ui-engineering/evals/cases.yaml +2 -2
- package/skills/variant-explorer/SKILL.md +4 -4
- package/skills/variant-explorer/evals/cases.yaml +1 -1
- package/targets/clone-bootstrap.mjs +1 -1
- package/scripts/lib/design-identity.js +0 -117
- package/scripts/lib/starting-point.js +0 -314
- package/skills/design/evals/README.md +0 -53
- package/skills/design/references/ai-tells.md +0 -75
- package/skills/design/references/brand-grounding.md +0 -197
- package/skills/design/references/copywriting-frameworks.md +0 -138
- package/skills/design/references/design-systems.md +0 -49
- package/skills/design/references/inspiration-sources.md +0 -96
- package/skills/design/references/landing-anatomy-and-cro.md +0 -202
- package/skills/design/references/motion-and-interaction.md +0 -228
- package/skills/design/references/research-method.md +0 -154
- package/skills/design/references/signature-and-craft.md +0 -148
- package/skills/design/references/starting-point.md +0 -75
- package/skills/design/references/trends-2026.md +0 -80
- package/skills/design/references/visual-system.md +0 -237
- package/skills/design/scripts/verify.sh +0 -357
- package/skills/design-dna/PROMPT.md +0 -211
- package/skills/design-dna/SKILL.md +0 -162
- package/skills/design-dna/design-dna.schema.json +0 -230
- package/skills/design-dna/evals/README.md +0 -64
- package/skills/design-dna/evals/cases.yaml +0 -68
- package/skills/design-dna/references/method.md +0 -436
- package/skills/design-dna/scripts/emit.py +0 -164
- package/skills/design-dna/templates/PROMPT.md.tmpl +0 -42
- package/skills/design-dna/templates/SKILL.md.tmpl +0 -42
- package/skills/design-dna/templates/check.py.tmpl +0 -143
- package/skills/design-loop/SKILL.md +0 -160
- package/skills/design-loop/evals/README.md +0 -56
- package/skills/design-loop/evals/cases.yaml +0 -60
- package/skills/motion-craft/SKILL.md +0 -125
- package/skills/motion-craft/evals/cases.yaml +0 -38
- package/skills/motion-craft/scripts/verify.sh +0 -75
|
@@ -1,197 +0,0 @@
|
|
|
1
|
-
# Brand Grounding — Checklist, Question Script & Persistence (visual)
|
|
2
|
-
|
|
3
|
-
The brand study is the source of truth every design decision is grounded in. This file holds the **completeness checklist** (the visual/design dimensions a brand study must cover before you paint a single pixel), the **question script** (how to interview the user, batched), and the **persistence format** (how to write it into `02-DOCS` and link it from `CLAUDE.md`). The runtime mechanism that invokes this — the hard STOP on an incomplete study — lives in `SKILL.md` under "Brand grounding (read this first)".
|
|
4
|
-
|
|
5
|
-
This skill **co-owns the brand study with the `marketing` skill**. Marketing owns the *words* dimensions (positioning, audience, value prop, voice & tone, proof, offers, channels, SEO/GEO keywords — see `../../marketing/references/brand-grounding.md`). Design owns the *visual* dimensions below. They write into the **same** `02-DOCS/wiki/brand/` study and the **same** `## Brand & voice` section of root `CLAUDE.md` — never a parallel copy. If marketing already created the study, extend it with the visual articles; do not duplicate the words articles.
|
|
6
|
-
|
|
7
|
-
## Where the brand study lives
|
|
8
|
-
|
|
9
|
-
Following the `harness` Karpathy-wiki convention (compiled articles in `wiki/`, immutable raw inputs in `raw/`):
|
|
10
|
-
|
|
11
|
-
```text
|
|
12
|
-
02-DOCS/
|
|
13
|
-
├── raw/brand/ ← immutable: pasted inputs (screenshots, palettes, competitor lists, mood refs)
|
|
14
|
-
│ ├── inspiration-linear.png
|
|
15
|
-
│ ├── existing-palette.txt
|
|
16
|
-
│ └── …
|
|
17
|
-
└── wiki/brand/ ← compiled brand study, one article per dimension
|
|
18
|
-
├── index.md ← positioning one-liner + links to every dimension article
|
|
19
|
-
├── visual-identity.md ← color (OKLCH), type pairing & scale, logo, radius/shadow/motion personality [DESIGN]
|
|
20
|
-
├── imagery.md ← photography vs illustration mood, iconography, texture/grain [DESIGN]
|
|
21
|
-
├── layout.md ← density, composition, dark-mode stance, reference/inspiration sites [DESIGN]
|
|
22
|
-
├── constraints.md ← accessibility level, performance budget, existing design system/tokens [DESIGN]
|
|
23
|
-
├── audience.md ← ICP, pains, desires [MARKETING]
|
|
24
|
-
├── value-proposition.md ← value prop, differentiation [MARKETING]
|
|
25
|
-
├── voice.md ← tone, do/don't word lists, voice samples [MARKETING]
|
|
26
|
-
├── proof.md ← credibility, metrics, customers [MARKETING]
|
|
27
|
-
├── offers.md ← offers + primary/secondary CTA [MARKETING]
|
|
28
|
-
├── channels.md ← active channels [MARKETING]
|
|
29
|
-
└── seo.md ← target keywords [MARKETING]
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
Small projects may collapse the visual dimensions into one `visual-identity.md` with each dimension as a `##` heading — but every dimension below must still be present and filled.
|
|
33
|
-
|
|
34
|
-
## Completeness checklist (visual dimensions)
|
|
35
|
-
|
|
36
|
-
The visual side of the study is **COMPLETE** only when every dimension below is filled with real, specific content. Any empty, placeholder, or "TBD" dimension = **INCOMPLETE** = hard STOP, interview the user. (The words dimensions are checked by `marketing/references/brand-grounding.md`; design needs the voice/positioning articles present so copy and design agree, but design only *interviews* for the visual gaps.)
|
|
37
|
-
|
|
38
|
-
- [ ] **V1. Color system** — brand hue(s) and neutrals expressed (or convertible) to OKLCH; a target ramp (50→900); the accent's role; the 60-30-10 intent. Capture any existing hex/brand colors so they can be converted to OKLCH tokens (OKLCH is the source of truth; sRGB hex is an approximation — see `visual-system.md`).
|
|
39
|
-
- [ ] **V2. Typography** — display face + text face (and mono if code is shown), or a single superfamily with weight contrast; the modular scale ratio (e.g. 1.25); any licensed/owned fonts the brand must use. Never three+ families.
|
|
40
|
-
- [ ] **V3. Logo & wordmark** — does one exist? light/dark variants, clear-space, min size, and whether a favicon/app icon is needed. If absent, note it as a gap (`[[NEEDS ASSET]]`) — never invent a logo silently.
|
|
41
|
-
- [ ] **V4. Imagery & illustration mood** — photography vs 3D vs illustration vs abstract; realistic vs stylized; iconography style (line vs filled, corner radius); texture/grain/noise stance. This sets whether the hero shows a product screenshot, a render, or an editorial image.
|
|
42
|
-
- [ ] **V5. Density & personality** — how the surface should *feel*: airy/editorial vs dense/utilitarian; the radius personality (sharp 0–4px vs soft 12px+); shadow personality (flat vs layered elevation); motion personality (still/quiet vs expressive). These become token values.
|
|
43
|
-
- [ ] **V6. Reference / inspiration sites** — 2–5 sites the user loves and *why* (e.g. "Linear for restraint", "Stripe for gradients done right"). These anchor the research-first protocol's archetypes; without them you research blind.
|
|
44
|
-
- [ ] **V7. Layout preferences** — composition leanings (centered hero vs asymmetric/bento vs editorial), max-width feel, any required sections or a sitemap, mobile-first vs desktop-first emphasis.
|
|
45
|
-
- [ ] **V8. Dark-mode stance** — light-only, dark-only, or both with a token-swap; if both, which is the default. (Dark mode via semantic token swap, not per-component overrides — see `visual-system.md`.)
|
|
46
|
-
- [ ] **V9. Accessibility & performance constraints** — target conformance (WCAG 2.2 AA is the floor here; AAA if mandated); Core Web Vitals budget (LCP/INP/CLS); locales/RTL; reduced-motion seriousness; any device/bandwidth constraints.
|
|
47
|
-
- [ ] **V10. Existing design system / tokens** — is there a Tailwind `@theme`, a `tokens.json`, a Figma library, or component kit to extend? Reusing the system beats inventing a parallel one.
|
|
48
|
-
- [ ] **V11. Voice & positioning present (cross-check)** — the marketing-owned `voice.md` and `value-proposition.md` articles exist and are filled, so copy and design agree. If absent, hand off to the `marketing` sibling skill (or interview for them too) — a premium surface with off-voice copy is not premium.
|
|
49
|
-
|
|
50
|
-
## Question script (ask in batches, never all at once)
|
|
51
|
-
|
|
52
|
-
Ask **one batch at a time**. Send the batch, wait for the answer, persist what you learned, then send the next batch. Skip questions a located-but-incomplete study already answers — only fill the gaps. Stop interviewing the moment every dimension is complete.
|
|
53
|
-
|
|
54
|
-
### Batch 1 — references & feel
|
|
55
|
-
|
|
56
|
-
```text
|
|
57
|
-
1. Show me 2–5 sites or apps whose look you love — and for each, what specifically (the
|
|
58
|
-
restraint, the type, the color, the motion)? Paste links or screenshots.
|
|
59
|
-
2. In three words, how should this feel? (e.g. calm/editorial, dense/technical,
|
|
60
|
-
playful/vivid, refined/luxury)
|
|
61
|
-
3. Airy or dense? Should it breathe with whitespace, or pack information tightly?
|
|
62
|
-
4. Light mode, dark mode, or both? If both, which is the default?
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
### Batch 2 — color & type
|
|
66
|
-
|
|
67
|
-
```text
|
|
68
|
-
5. Do you have brand colors already? Paste any hex/RGB values, a palette, or a brand guide —
|
|
69
|
-
I'll convert them to an OKLCH token ramp (I'll save the raw input under 02-DOCS/raw/brand/).
|
|
70
|
-
6. If not: pick a brand hue direction (cool/blue, warm/orange, green, violet, near-neutral)
|
|
71
|
-
and how saturated it should read (muted vs vivid).
|
|
72
|
-
7. Any required or owned fonts? If not, do you lean geometric-sans, humanist-sans, serif/
|
|
73
|
-
editorial, or mono-forward (dev tool)?
|
|
74
|
-
8. How loud should the type be — understated, or oversized expressive headlines?
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
### Batch 3 — assets, imagery & layout
|
|
78
|
-
|
|
79
|
-
```text
|
|
80
|
-
9. Is there a logo/wordmark? Send light + dark versions if you have them. Need a favicon/app icon?
|
|
81
|
-
10. What imagery direction — product screenshots, photography, 3D renders, illustration, or
|
|
82
|
-
abstract? Realistic or stylized? Any reference for the icon style?
|
|
83
|
-
11. Radius/shadow/motion personality: sharp & flat, or soft & elevated? Still & quiet, or
|
|
84
|
-
expressive motion? (I'll bake these into tokens.)
|
|
85
|
-
12. Any must-have sections or a required sitemap? Centered hero or asymmetric/bento?
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
### Batch 4 — constraints & system
|
|
89
|
-
|
|
90
|
-
```text
|
|
91
|
-
13. Accessibility target — is WCAG 2.2 AA enough, or is AAA / a specific standard mandated?
|
|
92
|
-
Any RTL/locale needs?
|
|
93
|
-
14. Performance budget or device constraints I should design within? (slow networks, low-end
|
|
94
|
-
devices, a hard LCP target?)
|
|
95
|
-
15. Is there an existing design system, Tailwind @theme, tokens.json, or Figma library to
|
|
96
|
-
extend rather than replace?
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
If the user can't answer a question, that dimension stays incomplete — note the gap, keep the STOP in place for that dimension, and offer to propose a researched default they can confirm, rather than silently defaulting to your generic prior. **How to actually propose one: `starting-point.md`.** It is the difference between offering something and improvising something: what the project already owns is checked first, the value comes from a reference you opened and measured, and it is written marked `propuesto`. A proposed-and-unconfirmed dimension does **not** count as complete against the checklist above — the STOP stays up until the user confirms it.
|
|
100
|
-
|
|
101
|
-
## Persistence format
|
|
102
|
-
|
|
103
|
-
### Visual-identity wiki article template
|
|
104
|
-
|
|
105
|
-
Each `02-DOCS/wiki/brand/*.md` article follows the harness wiki format. It is an OKF v0.1 article: open it with YAML frontmatter carrying a non-empty `type:` (`brand-study`), then the H1 and body:
|
|
106
|
-
|
|
107
|
-
```markdown
|
|
108
|
-
---
|
|
109
|
-
type: brand-study
|
|
110
|
-
title: Brand — Visual Identity
|
|
111
|
-
description: The visual personality — OKLCH color system, type pairing & scale, and radius/shadow/motion personality.
|
|
112
|
-
tags: [brand, visual-identity, design]
|
|
113
|
-
timestamp: YYYY-MM-DDTHH:MM:SSZ
|
|
114
|
-
topic: brand
|
|
115
|
-
status: stable
|
|
116
|
-
---
|
|
117
|
-
|
|
118
|
-
# Brand — Visual Identity
|
|
119
|
-
|
|
120
|
-
> Sources: {user interview, YYYY-MM-DD}
|
|
121
|
-
> Raw: [existing-palette](../../raw/brand/existing-palette.txt); [inspiration-linear](../../raw/brand/inspiration-linear.png)
|
|
122
|
-
|
|
123
|
-
## Overview
|
|
124
|
-
|
|
125
|
-
One paragraph: the visual personality and the ONE memorable detail.
|
|
126
|
-
|
|
127
|
-
## Color (OKLCH source of truth)
|
|
128
|
-
|
|
129
|
-
| Token | OKLCH | Role |
|
|
130
|
-
| --- | --- | --- |
|
|
131
|
-
| brand-500 | oklch(0.62 0.19 256) | primary accent (10% allocation) |
|
|
132
|
-
| bg | oklch(0.99 0 0) | background (light) |
|
|
133
|
-
| fg | oklch(0.21 0.01 256) | foreground |
|
|
134
|
-
|
|
135
|
-
(Any sRGB hex the user gave is recorded as an approximation, not the source — see `visual-system.md`.)
|
|
136
|
-
|
|
137
|
-
## Typography
|
|
138
|
-
|
|
139
|
-
- Display: Geist Semibold · Text: Inter Regular · Mono: Geist Mono (code)
|
|
140
|
-
- Scale ratio: 1.25 (major third), 16px base
|
|
141
|
-
|
|
142
|
-
## Personality
|
|
143
|
-
|
|
144
|
-
- Radius: soft (0.875rem cards) · Shadow: layered transparent elevation · Motion: quiet, entry reveals only
|
|
145
|
-
|
|
146
|
-
## See Also
|
|
147
|
-
|
|
148
|
-
- [Layout](layout.md)
|
|
149
|
-
- [Constraints](constraints.md)
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
### Raw inputs
|
|
153
|
-
|
|
154
|
-
Paste each user-provided input (palette text, competitor list, screenshots saved as files) under `02-DOCS/raw/brand/` with a one-line provenance header on text files:
|
|
155
|
-
|
|
156
|
-
```markdown
|
|
157
|
-
> Source: user-pasted, YYYY-MM-DD, origin: "current brand guide, page 3 palette"
|
|
158
|
-
|
|
159
|
-
<the pasted values, unedited>
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
Binary inputs (screenshots, logo files) go in verbatim and are linked from the article's `> Raw:` line; never compiled or edited.
|
|
163
|
-
|
|
164
|
-
### CLAUDE.md link
|
|
165
|
-
|
|
166
|
-
Add (or **extend**, never duplicate) the shared `## Brand & voice` section in the root `CLAUDE.md`. Additive only — never delete existing sections. Create `CLAUDE.md` if absent. If `marketing` already created this section, append the visual links to it rather than writing a second section.
|
|
167
|
-
|
|
168
|
-
```markdown
|
|
169
|
-
## Brand & voice
|
|
170
|
-
|
|
171
|
-
Design and marketing/landing copy are grounded in the brand study under
|
|
172
|
-
`02-DOCS/wiki/brand/`. Read it before any user-facing design or copy:
|
|
173
|
-
|
|
174
|
-
- [Positioning](02-DOCS/wiki/brand/index.md)
|
|
175
|
-
- [Visual identity (color, type, personality)](02-DOCS/wiki/brand/visual-identity.md)
|
|
176
|
-
- [Imagery & illustration](02-DOCS/wiki/brand/imagery.md)
|
|
177
|
-
- [Layout & references](02-DOCS/wiki/brand/layout.md)
|
|
178
|
-
- [Accessibility & performance constraints](02-DOCS/wiki/brand/constraints.md)
|
|
179
|
-
- [Audience](02-DOCS/wiki/brand/audience.md)
|
|
180
|
-
- [Value proposition](02-DOCS/wiki/brand/value-proposition.md)
|
|
181
|
-
- [Voice & tone](02-DOCS/wiki/brand/voice.md)
|
|
182
|
-
|
|
183
|
-
Raw inputs (palettes, screenshots, voice samples): `02-DOCS/raw/brand/`.
|
|
184
|
-
The `design` skill owns the visual articles; `marketing` owns the words
|
|
185
|
-
articles. Either stops to interview the user if its dimensions are missing.
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
Also update `02-DOCS/wiki/index.md` (add the new brand articles) and append a one-line entry to `02-DOCS/wiki/log.md` per the harness wiki protocol.
|
|
189
|
-
|
|
190
|
-
## See Also
|
|
191
|
-
|
|
192
|
-
- `../SKILL.md` — the runtime grounding mechanism (hard STOP) that uses this checklist.
|
|
193
|
-
- `visual-system.md` — turns the captured color/type/personality into Tailwind v4 `@theme` tokens.
|
|
194
|
-
- `research-method.md` — uses the reference sites (V6) as archetypes for the research loop.
|
|
195
|
-
- `trends-2026.md` — researched defaults to offer when a visual dimension has no user direction.
|
|
196
|
-
- `../../marketing/references/brand-grounding.md` — the co-owned words dimensions (incl. SEO/GEO) of the same study.
|
|
197
|
-
- `../../harness/SKILL.md` — the canonical `02-DOCS` wiki protocol and article templates.
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
# Conversion Copywriting Frameworks
|
|
2
|
-
|
|
3
|
-
The marketing-copy engine. Copy carries the value prop — the prettiest hero fails if the words are vague. Write benefit-led, specific, and human. The `marketing` skill is the canonical owner of the WORDS (voice, full landing copy, launch, channel adaptation) and grounds them in the same `02-DOCS/wiki/brand/` study; this file is the design-side quick reference that makes on-page copy convert and keeps it in sync with the design. For anything beyond the hero/section copy, hand off to `marketing`.
|
|
4
|
-
|
|
5
|
-
## The 5s value-prop test
|
|
6
|
-
|
|
7
|
-
A stranger reads the hero and, within 5 seconds, can answer: **what is it, who is it for, why is it better?** If any answer is missing, the copy fails — rewrite before you touch the layout.
|
|
8
|
-
|
|
9
|
-
Build the value prop from a value-proposition canvas: map the customer's jobs/pains/gains, then your pain-relievers/gain-creators, then compress the strongest match into a headline.
|
|
10
|
-
|
|
11
|
-
```text
|
|
12
|
-
VALUE-PROP CANVAS — Driftway (preview-environment CLI)
|
|
13
|
-
Customer jobs ...... ship a branch for review without breaking staging
|
|
14
|
-
Customer pains ..... staging is a shared queue; manual env setup eats an afternoon
|
|
15
|
-
Customer gains ..... reviewers click a link and see the real change
|
|
16
|
-
Pain relievers ..... one CLI command spins an isolated env; auto-teardown
|
|
17
|
-
Gain creators ...... every PR gets a live preview URL automatically
|
|
18
|
-
Headline ........... "Preview every branch — no staging queue"
|
|
19
|
-
Subhead ............ "One command gives every pull request a live URL. For platform teams who are done babysitting staging."
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
## Frameworks with picker
|
|
23
|
-
|
|
24
|
-
Pick the framework by traffic temperature and funnel position.
|
|
25
|
-
|
|
26
|
-
- **PAS (Problem-Agitate-Solution)** — pain-aware cold traffic that already feels the problem.
|
|
27
|
-
- **AIDA (Attention-Interest-Desire-Action)** — broad / top-of-funnel where you must earn attention first.
|
|
28
|
-
- **FAB (Feature-Advantage-Benefit)** — feature sections; translate capability into outcome.
|
|
29
|
-
- **BAB (Before-After-Bridge)** — show the transformation; strong for case studies.
|
|
30
|
-
- **JTBD (Jobs To Be Done)** — frame the product as the tool that gets a specific job done.
|
|
31
|
-
|
|
32
|
-
```text
|
|
33
|
-
PAS rewrite
|
|
34
|
-
Bad — "Our platform streamlines environment management."
|
|
35
|
-
Good — "Staging is a queue. Every merge waits behind someone else's broken branch.
|
|
36
|
-
Driftway gives each PR its own environment — no queue, no waiting."
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
```text
|
|
40
|
-
AIDA rewrite
|
|
41
|
-
Bad — "Sign up for our developer tool today."
|
|
42
|
-
Good — "See your branch live in 30 seconds (Attention). It runs as one CLI step in
|
|
43
|
-
your existing pipeline (Interest). Reviewers click a real URL, not a screenshot
|
|
44
|
-
(Desire). Start free — no credit card (Action)."
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
```text
|
|
48
|
-
FAB rewrite
|
|
49
|
-
Bad — "Includes automatic environment teardown."
|
|
50
|
-
Good — "Environments tear down automatically when the PR merges (Feature → Advantage),
|
|
51
|
-
so you never pay for idle infra or clean up by hand (Benefit)."
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
```text
|
|
55
|
-
BAB rewrite
|
|
56
|
-
Bad — "Improve your review workflow."
|
|
57
|
-
Good — "Before: reviewers guess from a diff (Before). After: they click a live URL and
|
|
58
|
-
test the real thing (After). Driftway builds that URL on every push (Bridge)."
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
```text
|
|
62
|
-
JTBD rewrite
|
|
63
|
-
Bad — "A powerful preview platform for modern teams."
|
|
64
|
-
Good — "When a teammate opens a PR, you want to test the actual change in seconds —
|
|
65
|
-
Driftway gives that PR a live environment automatically."
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
## Headline formulas
|
|
69
|
-
|
|
70
|
-
| Formula | Pattern | Example |
|
|
71
|
-
| --- | --- | --- |
|
|
72
|
-
| Outcome + timeframe | `<Outcome> in <time>` | "Preview every branch in 30 seconds" |
|
|
73
|
-
| X without Y | `<Gain> without <pain>` | "Live previews without a staging queue" |
|
|
74
|
-
| JTBD | `When <trigger>, <product> <gets job done>` | "When you open a PR, get a live URL automatically" |
|
|
75
|
-
| Specificity | Replace adjectives with numbers | "Cut review setup from 20 min to 30 sec" |
|
|
76
|
-
|
|
77
|
-
The subhead's job: state **who** it's for, **how** it works in one clause, and **proof** if you have it. Specificity beats cleverness — a clear claim outconverts a clever pun every time.
|
|
78
|
-
|
|
79
|
-
## Benefit-led specificity
|
|
80
|
-
|
|
81
|
-
Climb the ladder feature → benefit → proof. Stop at the rung the visitor cares about (the benefit), and back it with the proof rung.
|
|
82
|
-
|
|
83
|
-
```text
|
|
84
|
-
Feature ... "Isolated per-branch environments."
|
|
85
|
-
Benefit ... "Reviewers test the real change, not a screenshot."
|
|
86
|
-
Proof ..... "Northwind cut review setup from 20 min to 30 sec across 40 engineers."
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
Numbers and receipts outperform adjectives. "Fast" is a claim; "30 seconds" is evidence.
|
|
90
|
-
|
|
91
|
-
## Microcopy & CTA copy
|
|
92
|
-
|
|
93
|
-
Buttons use value verbs; forms label clearly; states stay human.
|
|
94
|
-
|
|
95
|
-
| Context | Bad | Good |
|
|
96
|
-
| --- | --- | --- |
|
|
97
|
-
| Primary CTA | "Submit" | "Start free" |
|
|
98
|
-
| Secondary CTA | "Learn more" | "See a 2-min demo" |
|
|
99
|
-
| Form label | "Email" placeholder only | "Work email" with persistent label |
|
|
100
|
-
| Empty state | "No data" | "No previews yet — push a branch to create one" |
|
|
101
|
-
| Loading | "Loading..." | "Spinning up your environment…" |
|
|
102
|
-
| Error | "Something went wrong" | "Couldn't reach the API. Retry, or check status.acme.example." |
|
|
103
|
-
|
|
104
|
-
## Voice/tone system
|
|
105
|
-
|
|
106
|
-
Define a reusable VOICE block once and apply it everywhere. If a brand study exists under `02-DOCS/wiki/brand/voice.md` (owned by `marketing`), consume its profile verbatim; otherwise fill this and persist it back to the brand study:
|
|
107
|
-
|
|
108
|
-
```text
|
|
109
|
-
VOICE
|
|
110
|
-
Persona ...... a senior engineer who respects your time
|
|
111
|
-
Tone sliders . formal ⟵───●──── casual | serious ●──────── playful | dense ───●───── airy
|
|
112
|
-
Do ........... lead with the outcome; use concrete numbers; short sentences; active voice
|
|
113
|
-
Don't ........ hype words; bait questions; em-dash-stacked run-ons; forced lowercase
|
|
114
|
-
Reading level 8th–10th grade; one idea per sentence
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
## The ban-list
|
|
118
|
-
|
|
119
|
-
State once, enforce everywhere. These signal AI-template copy and erode trust:
|
|
120
|
-
|
|
121
|
-
`revolutionary` · `game-changer` · `cutting-edge` · "In today's landscape" · `unlock` · `seamless` · `elevate` · `supercharge` · bait questions ("Tired of slow deploys?") · "not X, just Y" · forced lowercase as a style · "Excited to share".
|
|
122
|
-
|
|
123
|
-
The `marketing` skill is the canonical owner of voice and distribution; this ban-list is the on-page enforcement of its rules.
|
|
124
|
-
|
|
125
|
-
## SEO-aware copy
|
|
126
|
-
|
|
127
|
-
A structural constraint, not a keyword strategy — defer depth (keyword research, GEO, technical SEO) to the `marketing` sibling skill, which carries SEO/GEO.
|
|
128
|
-
|
|
129
|
-
- Title 50–60 characters; meta description 120–160.
|
|
130
|
-
- Put the primary keyword in the `<h1>` naturally, not stuffed.
|
|
131
|
-
- Use scannable `<h2>`/`<h3>` subheads that double as answers to likely queries.
|
|
132
|
-
- Front-load the benefit in the first 160 characters so search snippets read well.
|
|
133
|
-
|
|
134
|
-
## See Also
|
|
135
|
-
|
|
136
|
-
- `landing-anatomy-and-cro.md` — where each piece of copy lands on the page.
|
|
137
|
-
- `brand-grounding.md` — where the voice/positioning that drives this copy is captured and persisted.
|
|
138
|
-
- `../../marketing/SKILL.md` — canonical owner of voice, full landing copy, launch, channel adaptation, and SEO/GEO + keyword research.
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
# When the brief is a design system, not an aesthetic
|
|
2
|
-
|
|
3
|
-
This skill's default is Tailwind v4 + Next.js, and for most briefs that is right. But some
|
|
4
|
-
briefs correspond to a **maintained, official design system**, and there the correct answer is
|
|
5
|
-
to install it. Recreating its CSS by hand produces something that looks like it, fails its
|
|
6
|
-
accessibility work, and drifts on its next release.
|
|
7
|
-
|
|
8
|
-
The list is deliberately short: only the cases where using the official package is
|
|
9
|
-
**obligatory or strongly expected**, and where the default instinct would be to hand-roll it.
|
|
10
|
-
Free choices (Bootstrap, Material for a non-Google product, Radix Themes, shadcn/ui) are not
|
|
11
|
-
here — they are ordinary picks, and shadcn/ui in particular is already this skill's territory,
|
|
12
|
-
where the rule is simply never to ship it in its default state.
|
|
13
|
-
|
|
14
|
-
| The brief reads as | Install | Why it is not a choice |
|
|
15
|
-
| --- | --- | --- |
|
|
16
|
-
| A UK public-sector service | `govuk-frontend` | Expected by the Service Standard; deviating is a finding at assessment |
|
|
17
|
-
| A US federal or trust-first public service | `uswds` | Same, under the US Web Design System |
|
|
18
|
-
| A Shopify admin surface or embedded app | `@shopify/polaris` (or Polaris web components) | Required for admin UI to be accepted |
|
|
19
|
-
| IBM-flavoured enterprise or dense analytics | `@carbon/react` + `@carbon/styles` | Mature data-density patterns you will otherwise reinvent badly |
|
|
20
|
-
| An Atlassian / Jira-adjacent product surface | `@atlaskit/*` + `@atlaskit/tokens` | Official DS; token-driven theming |
|
|
21
|
-
| A GitHub-style devtool or community page | `@primer/css`, or `@primer/react-brand` for marketing | Official Primer; the Brand variant is the marketing half |
|
|
22
|
-
| A Microsoft / Fluent-flavoured product | `@fluentui/react-components` | Official Fluent, Microsoft tokens, accessibility already done |
|
|
23
|
-
|
|
24
|
-
## The three rules that come with them
|
|
25
|
-
|
|
26
|
-
1. **Do not recreate it.** If the brief names one of these, install the package. Importing its
|
|
27
|
-
tokens and then overriding ninety percent of them is the same mistake with extra steps.
|
|
28
|
-
2. **One system per project.** No Fluent components inside a Carbon tree, no shadcn/ui
|
|
29
|
-
dropped into a Material app. Mixing two systems produces a third, worse one.
|
|
30
|
-
3. **Name what is an approximation.** When the brief is an *aesthetic* rather than a system —
|
|
31
|
-
glassmorphism, bento tiles, brutalism, editorial, aurora gradients, kinetic type — there is
|
|
32
|
-
no official package, and saying so is part of the work. Apple's Liquid Glass is documented
|
|
33
|
-
for Apple platforms only: there is no official web implementation, so a web version is a
|
|
34
|
-
`backdrop-filter` approximation and must be labelled as one, in the code and to the user.
|
|
35
|
-
|
|
36
|
-
## What still applies
|
|
37
|
-
|
|
38
|
-
Everything in `../SKILL.md` that is not styling: the brand gate, the accessibility floor,
|
|
39
|
-
the Core Web Vitals budget, the 5-second value-prop test, and the tell registry in
|
|
40
|
-
`../scripts/verify.sh`. An official design system settles which components you use. It does
|
|
41
|
-
not settle whether the page says anything.
|
|
42
|
-
|
|
43
|
-
## Where to browse for component ideas
|
|
44
|
-
|
|
45
|
-
When a surface needs an idea rather than a primitive, a gallery of shipped products
|
|
46
|
-
names where to go — Aceternity for marketing effects, 21st.dev for breadth, React Bits for tunable
|
|
47
|
-
animation — and what each is good for. Take the technique and rebuild it in this project's tokens;
|
|
48
|
-
check the brand study for what it refuses first, because a component that contradicts a stated ban
|
|
49
|
-
makes the page look less designed, not more.
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
# Reference — where to go looking for a bar
|
|
2
|
-
|
|
3
|
-
> Last verified: **2026-08-24**. Every URL below was requested on that date and answered.
|
|
4
|
-
> Four sites block automated requests (403/429) but are alive in a browser — marked *(bot-blocked)*.
|
|
5
|
-
> A source with no date does not exist. Re-check before quoting one as current.
|
|
6
|
-
|
|
7
|
-
**Go and look.** Your built-in aesthetic prior is the median of every template ever scraped, so the
|
|
8
|
-
fastest way past it is to open real work and name what it does. This file is where to open.
|
|
9
|
-
|
|
10
|
-
Two rules that make the browsing worth anything:
|
|
11
|
-
|
|
12
|
-
- **Come back with a specific page, not a gallery.** `../../design-loop/SKILL.md` needs a bar you can
|
|
13
|
-
open — one URL, one screenshot. "Something like Awwwards" is not a bar; a named site from it is.
|
|
14
|
-
- **Extract principles, not pixels.** "Headline is 8× the body, one accent at 3% coverage" travels to
|
|
15
|
-
your project. Cloning a competitor's exact grid is theatre, and `research-method.md` says so.
|
|
16
|
-
|
|
17
|
-
## A whole page to beat
|
|
18
|
-
|
|
19
|
-
The default bucket. Use it when the goal is a site or landing and you need something to converge on.
|
|
20
|
-
|
|
21
|
-
| Source | Go here for |
|
|
22
|
-
|---|---|
|
|
23
|
-
| [Awwwards](https://www.awwwards.com) | The award tier. Ambitious, often over-built — take the craft, leave the load time. |
|
|
24
|
-
| [Recent](https://recent.design) | Formerly **Godly**; `godly.website` now 301s here. Curated modern web, strong signal-to-noise. |
|
|
25
|
-
| [SiteInspire](https://www.siteinspire.com) *(bot-blocked)* | Long-running, filterable by style, type and subject. Calmer taste than Awwwards. |
|
|
26
|
-
| [Land-book](https://land-book.com) *(bot-blocked)* | Landing pages at volume, filterable by industry and style. |
|
|
27
|
-
| [Httpster](https://httpster.net) | Opinionated and current, less polished-agency than the rest. |
|
|
28
|
-
| [Minimal Gallery](https://minimal.gallery) | When the brief is restraint and you need proof it can still sell. |
|
|
29
|
-
| [Curated Design](https://curated.design) | Aggregated across galleries — a fast first sweep. |
|
|
30
|
-
| [Nicely Done](https://nicelydone.club) | Real product sites and app UI rather than portfolios. |
|
|
31
|
-
| [Lapa Ninja](https://lapa.ninja) *(bot-blocked)* | Large landing archive, free, categorised. |
|
|
32
|
-
| [One Page Love](https://onepagelove.com) | Single-page sites specifically — the constraint is the point. |
|
|
33
|
-
|
|
34
|
-
## SaaS and conversion surfaces
|
|
35
|
-
|
|
36
|
-
| Source | Go here for |
|
|
37
|
-
|---|---|
|
|
38
|
-
| [SaaS Landing Page](https://saaslandingpage.com) | Real SaaS landings, browsable **by section** (hero, pricing, testimonials, footer) — the most useful axis when you are building one section at a time. |
|
|
39
|
-
| [Landingfolio](https://www.landingfolio.com) | Landings and page sections, heavy on conversion patterns. |
|
|
40
|
-
|
|
41
|
-
## Real product, real flows — not portfolios
|
|
42
|
-
|
|
43
|
-
The most under-used bucket. Portfolio galleries show the hero; these show what happens after the click.
|
|
44
|
-
|
|
45
|
-
| Source | Go here for |
|
|
46
|
-
|---|---|
|
|
47
|
-
| [Mobbin](https://mobbin.com) | Screens and full flows from shipped apps, mobile and web. The reference for "how does a real onboarding actually go". |
|
|
48
|
-
| [Page Flows](https://pageflows.com) | Recorded user flows end to end — signup, checkout, cancellation. Video, so you see the motion too. |
|
|
49
|
-
| [Screensdesign](https://screensdesign.com) | Mobile app screens with an emphasis on what is currently shipping. |
|
|
50
|
-
| [Refero](https://refero.design) | UI/UX inspiration organised for browsing by pattern. |
|
|
51
|
-
|
|
52
|
-
## One section, one pattern
|
|
53
|
-
|
|
54
|
-
Use when the piece is small and named: `design-loop` splits a goal into three or four pieces, and
|
|
55
|
-
these are for when a piece is "the footer" or "the empty state".
|
|
56
|
-
|
|
57
|
-
| Source | Go here for |
|
|
58
|
-
|---|---|
|
|
59
|
-
| [Footer.design](https://www.footer.design) | Footers only. Narrow on purpose, and the narrowness is why it is good. |
|
|
60
|
-
| [Collect UI](https://collectui.com) | Daily-UI-style collections by component and pattern. |
|
|
61
|
-
| [UI Garage](https://uigarage.net) | Patterns tagged by element and by industry. |
|
|
62
|
-
| [UI Movement](https://uimovement.com) | Motion and interaction specifically — pair with the frequency gate in `../../motion-craft/SKILL.md` before copying anything. |
|
|
63
|
-
| [Dark.design](https://dark.design) · [Dark Mode Design](https://darkmodedesign.com) | Dark interfaces done properly, which is a different problem from inverting a light one. |
|
|
64
|
-
| [Scrnshts](https://scrnshts.club) | App Store screenshot design — a real discipline of its own. |
|
|
65
|
-
|
|
66
|
-
## Design systems as the canonical answer
|
|
67
|
-
|
|
68
|
-
Not inspiration: **specification**. When the question is "what is the correct behaviour for this
|
|
69
|
-
component", these outrank any gallery.
|
|
70
|
-
|
|
71
|
-
| Source | Go here for |
|
|
72
|
-
|---|---|
|
|
73
|
-
| [Material 3](https://m3.material.io) | Google's system. Exhaustive on states, motion and tokens. |
|
|
74
|
-
| [Apple HIG](https://developer.apple.com/design/human-interface-guidelines) | The reference for platform behaviour and for what *not* to invent on Apple platforms. |
|
|
75
|
-
| [Shopify Polaris](https://polaris.shopify.com) | Dense, commerce-grade product UI with unusually good content guidance. |
|
|
76
|
-
| [IBM Carbon](https://carbondesignsystem.com) | Enterprise density and data-heavy patterns. |
|
|
77
|
-
| [GitHub Primer](https://primer.style) | Developer-tool UI, which is the closest analogue for most rsc projects. |
|
|
78
|
-
| [The Component Gallery](https://component.gallery) *(bot-blocked)* | The same component compared **across** design systems — the fastest way to see the range of correct answers. |
|
|
79
|
-
| [Adele](https://adele.uxpin.com) | Index of public design systems and their pattern libraries. |
|
|
80
|
-
| [Designsystems.com](https://www.designsystems.com) | Essays on building and maintaining a system, not a system itself. |
|
|
81
|
-
|
|
82
|
-
## Niche, but the right answer when it fits
|
|
83
|
-
|
|
84
|
-
| Source | Go here for |
|
|
85
|
-
|---|---|
|
|
86
|
-
| [Interface In Game](https://interfaceingame.com) | Game UI. Useful well beyond games for diegetic and high-density HUD ideas. |
|
|
87
|
-
| [Mobile.design](https://mobile.design) | Mobile-first patterns collected on their own terms. |
|
|
88
|
-
|
|
89
|
-
## Housekeeping
|
|
90
|
-
|
|
91
|
-
- **[Bestfolios](https://www.bestfolios.com) returned 502 on 2026-08-24** and is excluded until it
|
|
92
|
-
comes back. Do not cite it.
|
|
93
|
-
- **Component ideas**, as opposed to whole pages, live in
|
|
94
|
-
Component galleries — Aceternity, 21st.dev, React Bits.
|
|
95
|
-
- **Identity outranks all of this.** Check `02-DOCS/wiki/brand/` for what the project refuses before
|
|
96
|
-
bringing an idea back. A gallery cannot know what your brand vetoed.
|