ima2-gen 2.0.15 → 2.0.16
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 +30 -0
- package/bin/commands/skill.js +336 -17
- package/bin/ima2.js +22 -2
- package/bin/lib/doctor-checks.js +6 -4
- package/config.js +1 -0
- package/docs/CLI.md +25 -3
- package/docs/PROMPT_STUDIO.ko.md +29 -0
- package/docs/PROMPT_STUDIO.md +31 -0
- package/docs/migration/runtime-test-inventory.md +7 -1
- package/lib/agentImageVideoGen.js +8 -0
- package/lib/agentQueueStore.js +36 -10
- package/lib/agentQueueWorker.js +79 -7
- package/lib/agentRuntime.js +2 -0
- package/lib/assetLifecycle.js +40 -8
- package/lib/canvasVersionStore.js +86 -0
- package/lib/cardNewsGenerator.js +37 -3
- package/lib/cardNewsJobStore.js +10 -0
- package/lib/cardNewsManifestStore.js +6 -12
- package/lib/cardNewsPath.js +25 -0
- package/lib/db.js +2 -0
- package/lib/generatePipeline.js +474 -0
- package/lib/generationInputValidation.js +32 -0
- package/lib/grokImageCore.js +18 -1
- package/lib/historyIndex.js +11 -4
- package/lib/historyList.js +3 -0
- package/lib/imageMetadata.js +3 -0
- package/lib/inflight.js +30 -3
- package/lib/multimodePipeline.js +462 -0
- package/lib/nodeGeneration.js +440 -0
- package/lib/nodeValidation.js +23 -0
- package/lib/oauthProxy/generators.js +3 -246
- package/lib/oauthProxy/multimodeGenerators.js +251 -0
- package/lib/routeHelpers.js +9 -2
- package/package.json +2 -2
- package/routes/agent.js +4 -4
- package/routes/canvasVersions.js +21 -1
- package/routes/cardNews.js +2 -1
- package/routes/edit.js +25 -9
- package/routes/events.js +5 -1
- package/routes/generate.js +2 -481
- package/routes/keys.js +31 -39
- package/routes/multimode.js +2 -502
- package/routes/nodes.js +3 -448
- package/routes/video.js +12 -3
- package/routes/videoExtended.js +19 -4
- package/server.js +53 -1
- package/skills/ima2/SKILL.md +204 -0
- package/skills/ima2-front/SKILL.md +611 -0
- package/skills/ima2-front/references/a11y-patterns.md +134 -0
- package/skills/ima2-front/references/aesthetics.md +327 -0
- package/skills/ima2-front/references/anti-slop.md +241 -0
- package/skills/ima2-front/references/asset-requirements.md +431 -0
- package/skills/ima2-front/references/brand-asset-sourcing.md +122 -0
- package/skills/ima2-front/references/color-system.md +132 -0
- package/skills/ima2-front/references/consistency-locks.md +20 -0
- package/skills/ima2-front/references/crud-ui.md +53 -0
- package/skills/ima2-front/references/dropdown-layer.md +110 -0
- package/skills/ima2-front/references/i18n-global.md +104 -0
- package/skills/ima2-front/references/iterative-design.md +90 -0
- package/skills/ima2-front/references/korea-2026.md +174 -0
- package/skills/ima2-front/references/layout-discipline.md +161 -0
- package/skills/ima2-front/references/liquid-glass.md +181 -0
- package/skills/ima2-front/references/logo-sections.md +194 -0
- package/skills/ima2-front/references/mobile-ux.md +144 -0
- package/skills/ima2-front/references/performance-budget.md +106 -0
- package/skills/ima2-front/references/preflight-full.md +58 -0
- package/skills/ima2-front/references/product-density.md +53 -0
- package/skills/ima2-front/references/prototype-variants.md +54 -0
- package/skills/ima2-front/references/reference-capture.md +120 -0
- package/skills/ima2-front/references/responsive-viewport.md +139 -0
- package/skills/ima2-front/references/seo-baseline.md +123 -0
- package/skills/ima2-front/references/soft-3d-asset-gates.md +70 -0
- package/skills/ima2-front/references/stacks/astro.md +204 -0
- package/skills/ima2-front/references/stacks/mobile-native.md +281 -0
- package/skills/ima2-front/references/stacks/nextjs.md +219 -0
- package/skills/ima2-front/references/stacks/react.md +264 -0
- package/skills/ima2-front/references/stacks/svelte.md +235 -0
- package/skills/ima2-front/references/stacks/vanilla.md +226 -0
- package/skills/ima2-front/references/theme-switching.md +82 -0
- package/skills/ima2-front/references/top-bar.md +126 -0
- package/skills/ima2-front/references/typography-wrapping.md +270 -0
- package/skills/ima2-front/references/ux-writing-ko.md +62 -0
- package/skills/ima2-front/references/visual-verification.md +102 -0
- package/skills/ima2-uiux/SKILL.md +477 -0
- package/skills/ima2-uiux/references/anti-slop-judgment.md +39 -0
- package/skills/ima2-uiux/references/color-system.md +80 -0
- package/skills/ima2-uiux/references/design-isms.md +194 -0
- package/skills/ima2-uiux/references/design-read-example.md +33 -0
- package/skills/ima2-uiux/references/design-system-bootstrap.md +133 -0
- package/skills/ima2-uiux/references/favicon-logo.md +355 -0
- package/skills/ima2-uiux/references/form-patterns.md +118 -0
- package/skills/ima2-uiux/references/intent-discovery-ladder.md +86 -0
- package/skills/ima2-uiux/references/korean-design-vocabulary.md +52 -0
- package/skills/ima2-uiux/references/layout-macrostructures.md +54 -0
- package/skills/ima2-uiux/references/logo-trust-sections.md +96 -0
- package/skills/ima2-uiux/references/mobile-native-ux.md +207 -0
- package/skills/ima2-uiux/references/product-personalities.md +118 -0
- package/skills/ima2-uiux/references/responsive-nav.md +66 -0
- package/skills/ima2-uiux/references/typography-line-breaks.md +193 -0
- package/skills/ima2-uiux/references/ux-preflight.md +65 -0
- package/skills/ima2-uiux/references/ux-states.md +197 -0
- package/skills/ima2-uiux/references/visual-hierarchy.md +115 -0
- package/ui/dist/.vite/manifest.json +13 -13
- package/ui/dist/assets/AgentWorkspace-CtYt4SF5.js +3 -0
- package/ui/dist/assets/{CardNewsWorkspace-Cdxn1ohU.js → CardNewsWorkspace-DN5cVqG5.js} +1 -1
- package/ui/dist/assets/GenerationRequestLogPanel-DnmUQdKR.js +1 -0
- package/ui/dist/assets/{NodeCanvas-C67sLboA.js → NodeCanvas-CxpfIBI0.js} +1 -1
- package/ui/dist/assets/PromptBuilderPanel-C2R3ObtR.js +2 -0
- package/ui/dist/assets/{PromptImportDialog-DeQXsEEv.js → PromptImportDialog-BIxz_yEx.js} +2 -2
- package/ui/dist/assets/PromptImportDiscoverySection-BQTlPMME.js +1 -0
- package/ui/dist/assets/PromptImportFolderSection-Ds_Th9O3.js +1 -0
- package/ui/dist/assets/{PromptLibraryPanel-Db3xEPM_.js → PromptLibraryPanel-Rs4l45pV.js} +2 -2
- package/ui/dist/assets/{SettingsWorkspace-BDk_1W-V.js → SettingsWorkspace-p1AZ6uT9.js} +1 -1
- package/ui/dist/assets/index-0-_vgFGs.js +4 -0
- package/ui/dist/assets/index-Dm3pFxV4.js +23 -0
- package/ui/dist/assets/index-J8yDF3Ch.css +1 -0
- package/ui/dist/index.html +2 -2
- package/ui/dist/assets/AgentWorkspace-DAg_7zpY.js +0 -3
- package/ui/dist/assets/GenerationRequestLogPanel-C_qvEUi2.js +0 -1
- package/ui/dist/assets/PromptBuilderPanel-DjvVdAie.js +0 -2
- package/ui/dist/assets/PromptImportDiscoverySection-CrwyUKYI.js +0 -1
- package/ui/dist/assets/PromptImportFolderSection-CToGMqYE.js +0 -1
- package/ui/dist/assets/index-2oG6in1i.css +0 -1
- package/ui/dist/assets/index-CoxMOXAU.js +0 -23
- package/ui/dist/assets/index-p8egnGHk.js +0 -4
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Anti-Slop Design Judgment
|
|
2
|
+
|
|
3
|
+
Design-level anti-slop rules. These are JUDGMENT calls made before code —
|
|
4
|
+
implementation enforcement lives in `ima2-front/references/anti-slop-implementation.md`.
|
|
5
|
+
|
|
6
|
+
## LLM Default Patterns to Reject
|
|
7
|
+
|
|
8
|
+
These are the patterns AI agents produce when they lack specific direction.
|
|
9
|
+
Reject them on sight:
|
|
10
|
+
|
|
11
|
+
- **Warm beige/cream backgrounds** with brass/clay accents as "premium" default
|
|
12
|
+
- **Centered hero + three equal feature cards** below
|
|
13
|
+
- **Generic glassmorphism** without functional justification
|
|
14
|
+
- **Inter + slate-900** as the go-to type/color combo
|
|
15
|
+
- **Card-based everything** without layout variety
|
|
16
|
+
- **Purple gradients on white** (old tell, still common)
|
|
17
|
+
- **Gradient mesh backgrounds** as a substitute for real visual content
|
|
18
|
+
|
|
19
|
+
## 2026 Active Tells
|
|
20
|
+
|
|
21
|
+
- **Gradient soup** — multiple gradients per viewport, gradients on card grids
|
|
22
|
+
- **One-note dark themes** — terminal green, cyber cyan, CRT amber
|
|
23
|
+
- **Emoji as UI icons** — the #1 signal that AI wrote this
|
|
24
|
+
- **"Elevate your X"** — cliche copy that AI defaults to
|
|
25
|
+
- **Version labels in heroes** ("v3.0", "2.0 Release")
|
|
26
|
+
- **Numbered eyebrows** ("01 — Features", "02 — Pricing")
|
|
27
|
+
- **Fake social proof** ("trusted by teams worldwide", "10,000+ users")
|
|
28
|
+
- **Middle-dot overuse** as a section separator
|
|
29
|
+
- **Duplicate image reuse** across sections
|
|
30
|
+
- **Decorative scroll cues** with no functional purpose
|
|
31
|
+
|
|
32
|
+
## What to Do Instead
|
|
33
|
+
|
|
34
|
+
- Use `ima2 gen` to create real, domain-specific visual assets
|
|
35
|
+
- Choose asymmetric or content-weighted layouts
|
|
36
|
+
- Vary section families (at least 4 different per 8 sections)
|
|
37
|
+
- Use domain-appropriate fonts (not Inter unless the project already uses it)
|
|
38
|
+
- Write original copy that names the product's actual value
|
|
39
|
+
- Generate real product photos/illustrations instead of gradient washes
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
## 1. Color Palette Generation
|
|
2
|
+
|
|
3
|
+
When the user provides a brand color (or you need to generate a palette from scratch), follow this method.
|
|
4
|
+
|
|
5
|
+
### From Brand Color to Full Palette
|
|
6
|
+
|
|
7
|
+
1. **Start with the brand hex.** Compute OKLCH values for precise perceptual steps.
|
|
8
|
+
2. **Generate the scale** (50–900) by adjusting lightness while preserving hue and saturation:
|
|
9
|
+
- 50: background tint (lightness ~97%)
|
|
10
|
+
- 100–200: hover/pressed states
|
|
11
|
+
- 300: borders
|
|
12
|
+
- 400: disabled text
|
|
13
|
+
- 500: brand primary (the input color)
|
|
14
|
+
- 600–700: text on light backgrounds
|
|
15
|
+
- 800–900: heading text, dark surfaces
|
|
16
|
+
|
|
17
|
+
3. **Add semantic colors:**
|
|
18
|
+
- Success: green-based (hue ~145°)
|
|
19
|
+
- Warning: amber-based (hue ~45°)
|
|
20
|
+
- Danger: red-based (hue ~25°)
|
|
21
|
+
- Info: blue-based (hue ~220°)
|
|
22
|
+
- Generate each as a 50–900 scale.
|
|
23
|
+
|
|
24
|
+
4. **Neutral ramp:** Pick a subtle hue bias from the brand color. Apply it at very low chroma (0.005–0.01) across the gray scale. This gives "warm grays" or "cool grays" that feel cohesive with the brand.
|
|
25
|
+
|
|
26
|
+
### Practitioner Notes — Hue Budget & Tinted Neutrals (verified 2026-07-07)
|
|
27
|
+
|
|
28
|
+
Field-tested extensions to the method above (Korean designer community;
|
|
29
|
+
evidence: repo `devlog/_fin/260707_liquid_glass_motion_trends/000_research.md` §2):
|
|
30
|
+
|
|
31
|
+
- **Hue budget:** most "AI-generated frontend looks off" complaints trace to
|
|
32
|
+
too many meaning-carrying hues (Von Restorff effect: emphasize everything,
|
|
33
|
+
emphasize nothing). Semantic colors (success/warn/danger/info) + bg + text
|
|
34
|
+
already spend most of the budget — new UI meaning should come from the
|
|
35
|
+
existing scales' lightness/chroma/alpha steps, not a new hue.
|
|
36
|
+
- **Tinted neutrals:** pure `#000` backgrounds and pure `#FFFFFF` surfaces
|
|
37
|
+
read flat and strain eyes; production dark modes are rarely pure black.
|
|
38
|
+
Bias black slightly red or blue, bias white slightly yellow for warmth —
|
|
39
|
+
this is the same low-chroma neutral-ramp rule applied to the extremes.
|
|
40
|
+
- **Brand-first theming:** decide icon/logo/symbol identity first (or
|
|
41
|
+
together with the UI), then derive the app theme from the brand color via
|
|
42
|
+
the scale above — the brand-in-theme IS the frontend color principle.
|
|
43
|
+
- **Tools:** see the vetted toolbox below.
|
|
44
|
+
|
|
45
|
+
### Color Toolbox 2026 (maintenance-checked 2026-07-07)
|
|
46
|
+
|
|
47
|
+
Reach for the right tool by job, not by habit:
|
|
48
|
+
|
|
49
|
+
| Tool | Use when | Status |
|
|
50
|
+
|------|----------|--------|
|
|
51
|
+
| tweakcn (tweakcn.com) | shadcn/ui + Tailwind v4 theme editing/export (OKLCH/HSL) | active (repo 2026-06) |
|
|
52
|
+
| OKLCH Picker (oklch.com) | precise OKLCH picking, hex conversion, gamut checks | active (2026-07) |
|
|
53
|
+
| Harmonizer (harmonizer.evilmartians.com) | generating OKLCH UI palettes with APCA-minded contrast | active (2026-04) |
|
|
54
|
+
| Leonardo (leonardocolor.io) | adaptive, accessibility-aware design-system scales + token export | active (Adobe, 2026-05) |
|
|
55
|
+
| Radix Colors (radix-ui.com/colors) | prebuilt accessible app scales — strong neutral/accent pairs | stable (2025-12) |
|
|
56
|
+
| Adobe Color (color.adobe.com) | fast ideation, harmonies, extract-from-image, non-engineer collab | live |
|
|
57
|
+
| Coolors (coolors.co) | rapid palette gacha, quick exports | live |
|
|
58
|
+
| APCA calc (apcacontrast.com) + Atmos checker (atmos.style/contrast-checker) | perceptual contrast checks alongside WCAG | active |
|
|
59
|
+
|
|
60
|
+
Judgment: for SYSTEM-quality palettes start from OKLCH tools (Picker →
|
|
61
|
+
Harmonizer/Leonardo/Radix); use Adobe/Coolors for ideation only; for
|
|
62
|
+
shadcn/Tailwind v4 projects finish in tweakcn. Huetone is stale (2023) —
|
|
63
|
+
learning reference only. Contrast stance: **WCAG 2.2 is the compliance gate;
|
|
64
|
+
APCA is advisory** until WCAG 3 (Working Draft as of 2026-07-07) settles.
|
|
65
|
+
Implementation mechanics (token layering, oklch() fallbacks, color-mix(),
|
|
66
|
+
light-dark(), Tailwind/shadcn wiring):
|
|
67
|
+
`dev-frontend/references/core/color-system.md`.
|
|
68
|
+
|
|
69
|
+
### Dark Mode Token Derivation
|
|
70
|
+
- Do NOT simply invert lightness values. Dark mode has its own logic.
|
|
71
|
+
- Elevation = brightness: higher surfaces are lighter (900→800→700 for bg→surface→elevated).
|
|
72
|
+
- Text: use 100–200 range (not pure white — `#e5e5e5` or `#f5f5f5`).
|
|
73
|
+
- Borders: use 700–800 range at low opacity.
|
|
74
|
+
- Accent colors: may need chroma adjustment for dark backgrounds (slightly more saturated).
|
|
75
|
+
|
|
76
|
+
### Accessible Pair Generation
|
|
77
|
+
For every text-on-background combination, verify:
|
|
78
|
+
- Normal text (< 24px): 4.5:1 contrast ratio minimum (WCAG AA).
|
|
79
|
+
- Large text (≥ 24px or bold ≥ 18.5px): 3:1 minimum.
|
|
80
|
+
- Interactive components: 3:1 against adjacent colors.
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
## 1. Design Ism Vocabulary
|
|
2
|
+
|
|
3
|
+
When the user references a design style or movement, or when selecting an aesthetic direction, use this vocabulary. Each ism includes a CSS signature for rapid implementation.
|
|
4
|
+
|
|
5
|
+
### 1.1 Flat Design
|
|
6
|
+
Minimalist 2D. No shadows, gradients, or textures. Bold saturated solids, clean geometry, ample whitespace.
|
|
7
|
+
```css
|
|
8
|
+
background: #3498db; border: none; border-radius: 0-4px; box-shadow: none;
|
|
9
|
+
font-family: system-ui, sans-serif; font-weight: 400-600;
|
|
10
|
+
```
|
|
11
|
+
**Use:** Content-heavy, mobile-first, government/public services. **Avoid:** Complex data-dense UI, luxury.
|
|
12
|
+
|
|
13
|
+
### 1.2 Material Design
|
|
14
|
+
Flat + physics-based elevation. Z-axis surfaces with systematic shadows, ripple animations, 8dp grid.
|
|
15
|
+
```css
|
|
16
|
+
box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24); /* dp=1 */
|
|
17
|
+
border-radius: 4px; transition: box-shadow 0.3s cubic-bezier(0.25,0.8,0.25,1);
|
|
18
|
+
```
|
|
19
|
+
**Use:** Cross-platform apps, enterprise SaaS, form-heavy workflows. **Avoid:** Distinctive brand identity, Apple-ecosystem.
|
|
20
|
+
|
|
21
|
+
### 1.3 Glassmorphism
|
|
22
|
+
Frosted-glass with `backdrop-filter: blur()`, transparency, and subtle borders over colorful backgrounds.
|
|
23
|
+
```css
|
|
24
|
+
background: rgba(255,255,255,0.1); backdrop-filter: blur(10px);
|
|
25
|
+
border: 1px solid rgba(255,255,255,0.2); border-radius: 12px;
|
|
26
|
+
```
|
|
27
|
+
**Use:** Over rich backgrounds, navigation overlays, media players, macOS-aligned products. **Avoid:** Plain white backgrounds, text-heavy reading, low-powered devices.
|
|
28
|
+
|
|
29
|
+
### 1.4 Neumorphism
|
|
30
|
+
Extruded/inset elements from monochromatic background. Paired light+dark soft shadows. Soft plastic/clay feel.
|
|
31
|
+
```css
|
|
32
|
+
background: #e0e0e0;
|
|
33
|
+
box-shadow: 5px 5px 10px #bebebe, -5px -5px 10px #ffffff;
|
|
34
|
+
border-radius: 20px;
|
|
35
|
+
```
|
|
36
|
+
**Use:** Smart home dashboards, music players, single-purpose widgets, low-density internal tools. **Avoid:** Accessibility-critical (WCAG fails on low contrast), data-dense, e-commerce.
|
|
37
|
+
|
|
38
|
+
### 1.5 Neobrutalism
|
|
39
|
+
Thick black borders, flat bright backgrounds, no blur, oversized bold type, deliberately raw.
|
|
40
|
+
```css
|
|
41
|
+
border: 3px solid #000; background: #ff6b6b;
|
|
42
|
+
box-shadow: 4px 4px 0 #000; border-radius: 0; font-weight: 800-900;
|
|
43
|
+
```
|
|
44
|
+
**Use:** Creative agencies, indie products, developer portfolios, youth-facing. **Avoid:** Finance, healthcare, government, enterprise B2B, luxury.
|
|
45
|
+
|
|
46
|
+
### 1.6 Claymorphism
|
|
47
|
+
3D clay-like. Thick soft pastel shadows, vibrant rounded elements, cartoon-like inflated depth.
|
|
48
|
+
```css
|
|
49
|
+
background: linear-gradient(135deg, #ff6b9d, #feca57);
|
|
50
|
+
box-shadow: 10px 10px 20px rgba(0,0,0,0.1), -5px -5px 15px rgba(255,255,255,0.7);
|
|
51
|
+
border-radius: 25px;
|
|
52
|
+
```
|
|
53
|
+
**Use:** Children's apps, gamification, onboarding, playful consumer. **Avoid:** Professional tools, finance, healthcare, enterprise.
|
|
54
|
+
|
|
55
|
+
### 1.7 Art Deco
|
|
56
|
+
Bold geometry, symmetry, metallic finishes, strong vertical emphasis, luxurious ornamentation.
|
|
57
|
+
```css
|
|
58
|
+
font-family: 'Playfair Display', serif; text-transform: uppercase; letter-spacing: 0.15em;
|
|
59
|
+
color: #c9a96e; background: #1a1a2e; border-radius: 0;
|
|
60
|
+
```
|
|
61
|
+
**Use:** Luxury brands, hospitality, jewelry/fashion, event landing pages. **Avoid:** SaaS, developer tools, casual consumer apps.
|
|
62
|
+
|
|
63
|
+
### 1.8 Bauhaus
|
|
64
|
+
"Form follows function." Reductive, geometric, primary colors (red/yellow/blue) + black/white, grid-based asymmetric.
|
|
65
|
+
```css
|
|
66
|
+
font-family: 'DM Sans', sans-serif; font-weight: 700;
|
|
67
|
+
display: grid; grid-template-columns: 2fr 1fr;
|
|
68
|
+
border: 2px solid #000; border-radius: 0;
|
|
69
|
+
```
|
|
70
|
+
**Use:** Design portfolios, museum/gallery sites, educational platforms. **Avoid:** Complex data interfaces, general consumer apps.
|
|
71
|
+
|
|
72
|
+
### 1.9 Swiss / International Typographic Style
|
|
73
|
+
Maximum clarity. Grid systems, Helvetica/sans-serif, asymmetric layouts, objective photography, mathematical spacing.
|
|
74
|
+
```css
|
|
75
|
+
font-family: 'Helvetica Neue', 'Inter', sans-serif;
|
|
76
|
+
display: grid; gap: 1.5rem; color: #111; background: #fff;
|
|
77
|
+
```
|
|
78
|
+
**Use:** Corporate identities, developer documentation, data dashboards. **Avoid:** Playful consumer products, entertainment.
|
|
79
|
+
|
|
80
|
+
### 1.10 Memphis Design
|
|
81
|
+
Anarchic 1980s. Clashing colors, squiggly lines, geometric confetti, deliberately "ugly" compositions.
|
|
82
|
+
```css
|
|
83
|
+
background: #ff6b6b; border-radius: 50% 0 50% 0;
|
|
84
|
+
/* SVG confetti/geometric shapes as background-image */
|
|
85
|
+
```
|
|
86
|
+
**Use:** Event promotions, youth marketing, creative agency sites, social media graphics. **Avoid:** Professional software, finance, healthcare.
|
|
87
|
+
|
|
88
|
+
### 1.11 Skeuomorphism
|
|
89
|
+
Real-world materials in digital. Leather, wood, metal textures. Realistic shadows, bevels, highlights.
|
|
90
|
+
```css
|
|
91
|
+
background: linear-gradient(to bottom, #e8e8e8, #d0d0d0);
|
|
92
|
+
box-shadow: 0 2px 4px rgba(0,0,0,0.3), inset 0 1px 0 rgba(255,255,255,0.6);
|
|
93
|
+
border: 1px solid #999; border-radius: 8px;
|
|
94
|
+
```
|
|
95
|
+
**Use:** Onboarding for non-technical users, music/audio apps, nostalgic products. **Avoid:** Developer tools, dashboards, SaaS, responsive layouts.
|
|
96
|
+
|
|
97
|
+
### 1.12 Liquid Glass (Apple, 2025-2026)
|
|
98
|
+
Glassmorphism's successor as a SYSTEM material, not a card style (Apple HIG
|
|
99
|
+
Materials, verified 2026-07-07). Dynamic translucent layer reserved for
|
|
100
|
+
floating controls/navigation; content scrolls beneath and peeks through.
|
|
101
|
+
Adapts to context and user settings (reduced transparency, increased
|
|
102
|
+
contrast). Named material states (canonical: `ima2-front` `liquid-glass.md`):
|
|
103
|
+
`pill-at-top` (~70-80% opacity, only over an authored calm bar zone),
|
|
104
|
+
`pill-scrolled` (85-95% + blur, the default text-bearing chrome state),
|
|
105
|
+
`media-overlay` (the older canvas-55% recipe, media/photo overlays only), and
|
|
106
|
+
`clear` (no blur; sparse controls over rich media). Bar-spawned dropdowns and
|
|
107
|
+
popovers are unconditionally near-opaque, blur-free solid.
|
|
108
|
+
```css
|
|
109
|
+
/* pill-scrolled state */
|
|
110
|
+
background: color-mix(in oklab, canvas 90%, transparent);
|
|
111
|
+
backdrop-filter: blur(16px) saturate(1.4);
|
|
112
|
+
border: 1px solid rgba(255,255,255,0.18); border-radius: 16px;
|
|
113
|
+
box-shadow: inset 0 1px 0 rgba(255,255,255,0.12);
|
|
114
|
+
```
|
|
115
|
+
**Judgment gate vs 1.3 Glassmorphism:** 1.3 styles individual cards over
|
|
116
|
+
colorful backgrounds; Liquid Glass is a two-layer hierarchy decision —
|
|
117
|
+
functional chrome floats as glass, content NEVER does. If someone asks for
|
|
118
|
+
"glass cards" in the content layer, that is 1.3 (and usually slop); reserve
|
|
119
|
+
Liquid Glass for sticky headers, tab bars, sidebars, floating toolbars,
|
|
120
|
+
players. A blur-free variant (near-opaque pills over photographic/pastel
|
|
121
|
+
washes) delivers the same 2026 language at lower cost.
|
|
122
|
+
**Use:** macOS/iOS-aligned products, media-rich consumer apps, floating chrome over scrollable content. **Avoid:** content-layer cards, text-heavy reading surfaces, data-dense dashboards, low-powered targets.
|
|
123
|
+
Implementation recipes, perf budget, and a11y gates: `dev-frontend/references/core/liquid-glass.md`.
|
|
124
|
+
|
|
125
|
+
### 1.13 Liquid Editorial (2026 no-brief default kit)
|
|
126
|
+
The composite kit behind SKILL.md §1 UX-DEFAULT-ISM-01 (decided 2026-07-07
|
|
127
|
+
from Tier-2 trend research: Apple Liquid Glass 2025-06-09 announcement + HIG
|
|
128
|
+
restraint guidance; Figma/Creative Bloq/Fireart 2026 forecasts naming
|
|
129
|
+
expressive typography, tactile anti-AI texture, and authored color as the
|
|
130
|
+
premium direction). Structure: type-led asymmetric composition OR light
|
|
131
|
+
centered display (FE-HERO-LIGHT-CENTER-01: centered, weight 300-400, over
|
|
132
|
+
full-width real media backdrop; see `ima2-front` `layout-discipline.md`).
|
|
133
|
+
Both carry a Liquid Glass accent layer — the "fancy" lives in the chrome, the
|
|
134
|
+
authorship in the type.
|
|
135
|
+
```css
|
|
136
|
+
/* signature: oversized authored headline + tactile wash + pill chrome */
|
|
137
|
+
h1 { font-size: clamp(2.5rem, 8vw, 6rem); letter-spacing: 0; text-wrap: balance; }
|
|
138
|
+
.wash { background: url(texture-or-photo) / oklch-tinted pastel; }
|
|
139
|
+
.chrome { border-radius: 9999px; background: rgb(255 255 255 / .92); } /* or pill-scrolled state on nav */
|
|
140
|
+
/* children inside pill chrome: fills/tints only, no capsule borders at rest (FE-PILL-NEST-01) */
|
|
141
|
+
:root { --accent: oklch(0.6 0.2 <one hue>); }
|
|
142
|
+
```
|
|
143
|
+
**Use:** no-brief expressive surfaces (landing, consumer, creative, AI-product) as a stated assumption. **Avoid:** any quiet/repeated-work domain; briefs that name another direction; reusing it so uniformly that it becomes the new generic default — vary texture, hue, and the single signature motion per project.
|
|
144
|
+
Related: 1.12 (material rules), `product-personalities.md` Aside profile (chip vocabulary), `ima2-front` `liquid-glass.md` + `motion.md` (implementation).
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
### 1.14 AI Serif Editorial (2024-2026 serif renaissance)
|
|
148
|
+
The AI-brand serif turn (verified 2026-07-09): display serif at LIGHT weights +
|
|
149
|
+
sans UI + mono technical accent — never "make everything serif". Measured:
|
|
150
|
+
claude.ai `Anthropic Serif` 56px/weight 330 (identity by Geist: Styrene +
|
|
151
|
+
Tiempos); Perplexity's Comet leads with Editorial New (Studio Freight);
|
|
152
|
+
manus.im Libre Baskerville 36px/400; precedent medium.com GT Super 120px/400 +
|
|
153
|
+
Sohne UI. Semiotics: books/scholarship/human-hand trust against AI coldness,
|
|
154
|
+
often with a warm off-white page metaphor.
|
|
155
|
+
```css
|
|
156
|
+
h1, .display { font-family: "Tiempos Headline", "Editorial New", "GT Super", serif;
|
|
157
|
+
font-weight: 350; font-size: clamp(2.5rem, 5vw, 4.5rem); line-height: 1.15; }
|
|
158
|
+
body, button, input { font-family: var(--sans); } /* UI stays sans */
|
|
159
|
+
code, .meta { font-family: var(--mono); } /* technical accent */
|
|
160
|
+
:root { --page: #faf9f5; } /* warm off-white page */
|
|
161
|
+
```
|
|
162
|
+
**Use:** AI-product, research, editorial, publication, trust/human-warmth
|
|
163
|
+
brands WITH real editorial structure (long-form typography, page-like
|
|
164
|
+
surfaces, restrained palette). **Avoid:** dashboards, dense tools, SaaS
|
|
165
|
+
layouts wearing a serif as premium shorthand — that is "tasteslop" (WIRED
|
|
166
|
+
2026-06-05); heavy bold display serif (the pattern is 330-400).
|
|
167
|
+
Related: `ima2-front` `aesthetics.md § Serif Discipline`,
|
|
168
|
+
`korea-2026.md § Korean Serif / Myeongjo Display` (MaruBuri pairing).
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
### 1.15 Organic Capsule (OpenAI announcement grammar)
|
|
173
|
+
The OpenAI model-card/hero grammar (in-house Feb-2025 rebrand led by Veit
|
|
174
|
+
Moeller/Shannon Jager; OpenAI Sans by ABC Dinamo; motion/sound by Studio
|
|
175
|
+
Dumbar/DEPT): a soft-focus organic photographic field (natural palettes,
|
|
176
|
+
film grain, some Sora-generated texture) carrying an OPAQUE white capsule
|
|
177
|
+
label with bold warm-sans text. Two strict layers: expressive background
|
|
178
|
+
(no functional text) vs functional capsule/copy (no decoration). Kin to
|
|
179
|
+
Apple's WWDC25 capsule system but opaque, not glass.
|
|
180
|
+
```css
|
|
181
|
+
.field { background: url(soft-focus-organic.jpg) center/cover; }
|
|
182
|
+
.field::after { content:""; position:absolute; inset:0; opacity:.15;
|
|
183
|
+
/* grain: noise image or feTurbulence */ mix-blend-mode: multiply; }
|
|
184
|
+
.capsule { border-radius: 9999px; background: #fff; color: #111;
|
|
185
|
+
padding: .4em 1em; font-weight: 700; }
|
|
186
|
+
```
|
|
187
|
+
**Use:** announcement cards, model/product reveals, campaign heroes for
|
|
188
|
+
warm-tech brands; pairs with restrained type-led pages. **Avoid:** mixing the
|
|
189
|
+
layers (text on raw busy background, texture on the capsule), more than one
|
|
190
|
+
organic field per viewport (gradient/texture budget), tools/dashboards.
|
|
191
|
+
Related: `ima2-front` `motion.md § Soft-Focus Organic Background + Capsule
|
|
192
|
+
Label`, `aesthetics.md § Expressive vs Functional Layers`.
|
|
193
|
+
|
|
194
|
+
---
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Design Read Example
|
|
2
|
+
|
|
3
|
+
Use this as a filled-in model for `SKILL.md` §2. Adapt the specifics to the brief; do not copy it as a default style.
|
|
4
|
+
|
|
5
|
+
## 1. Filled-In Design Read
|
|
6
|
+
|
|
7
|
+
```yaml
|
|
8
|
+
---
|
|
9
|
+
name: ops-review-console
|
|
10
|
+
colors:
|
|
11
|
+
primary: "#1f4fd8"
|
|
12
|
+
accent: "#21a67a"
|
|
13
|
+
background: "#f7f8fb"
|
|
14
|
+
typography:
|
|
15
|
+
heading: { fontFamily: "Geist", fontSize: "32px" }
|
|
16
|
+
body: { fontFamily: "Inter", fontSize: "14px" }
|
|
17
|
+
---
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Reading this as: a queue review tool for internal operations teams, with a precise, low-noise command-center language.
|
|
21
|
+
|
|
22
|
+
The reference is closer to Linear's density and keyboard-first posture than to a SaaS landing page. The first screen should expose live workload, blocked items, and one primary review action without marketing composition.
|
|
23
|
+
|
|
24
|
+
Do's: compact tables, strong status hierarchy, visible empty/error/loading states, one restrained accent for action and focus.
|
|
25
|
+
|
|
26
|
+
Don'ts: oversized hero type, decorative cards, purple gradients, fake activity, hover-only controls, or hiding critical status behind tabs.
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
DESIGN_VARIANCE: 3
|
|
30
|
+
MOTION_INTENSITY: 2
|
|
31
|
+
Product density profile: D5
|
|
32
|
+
Reasoning: repeated operational review needs dense scanning, fast keyboard use, and minimal motion.
|
|
33
|
+
```
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
## 1. Design System Bootstrap
|
|
2
|
+
|
|
3
|
+
When starting a new project or establishing a design system, use this token architecture template.
|
|
4
|
+
|
|
5
|
+
### Token Template
|
|
6
|
+
```css
|
|
7
|
+
:root {
|
|
8
|
+
/* Spacing (4px base) */
|
|
9
|
+
--space-0: 0; --space-1: 4px; --space-2: 8px; --space-3: 12px;
|
|
10
|
+
--space-4: 16px; --space-6: 24px; --space-8: 32px; --space-12: 48px; --space-16: 64px;
|
|
11
|
+
|
|
12
|
+
/* Radius */
|
|
13
|
+
--radius-none: 0; --radius-sm: 4px; --radius-md: 8px;
|
|
14
|
+
--radius-lg: 12px; --radius-xl: 16px; --radius-full: 9999px;
|
|
15
|
+
|
|
16
|
+
/* Elevation */
|
|
17
|
+
--shadow-sm: 0 1px 2px rgba(0,0,0,0.05);
|
|
18
|
+
--shadow-md: 0 2px 4px rgba(0,0,0,0.06), 0 1px 2px rgba(0,0,0,0.04);
|
|
19
|
+
--shadow-lg: 0 4px 12px rgba(0,0,0,0.08), 0 2px 4px rgba(0,0,0,0.04);
|
|
20
|
+
|
|
21
|
+
/* Timing — canonical values in Motion Tokens below */
|
|
22
|
+
--duration-fast: 150ms; --duration-normal: 250ms; --duration-slow: 400ms;
|
|
23
|
+
--ease-default: cubic-bezier(0.4, 0, 0.2, 1);
|
|
24
|
+
--ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
25
|
+
|
|
26
|
+
/* Typography */
|
|
27
|
+
--font-sans: 'Geist', system-ui, -apple-system, sans-serif; /* Never default to Inter — see SKILL.md font rules */
|
|
28
|
+
--font-mono: 'Geist Mono', 'SF Mono', monospace;
|
|
29
|
+
--text-xs: 0.75rem; --text-sm: 0.875rem; --text-base: 1rem;
|
|
30
|
+
--text-lg: 1.125rem; --text-xl: 1.25rem; --text-2xl: 1.5rem; --text-3xl: 2rem;
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Component Hierarchy
|
|
35
|
+
- **Atoms:** Button, Input, Badge, Avatar, Icon, Toggle, Checkbox, Radio
|
|
36
|
+
- **Molecules:** Form Field (label + input + error), Card, Menu Item, Search Bar, Stat Card
|
|
37
|
+
- **Organisms:** Navigation Bar, Sidebar, Data Table, Form Section, Modal/Dialog, Command Palette
|
|
38
|
+
|
|
39
|
+
### Motion Tokens
|
|
40
|
+
|
|
41
|
+
```css
|
|
42
|
+
:root {
|
|
43
|
+
/* Easing */
|
|
44
|
+
--ease-default: cubic-bezier(0.4, 0, 0.2, 1);
|
|
45
|
+
--ease-in: cubic-bezier(0.4, 0, 1, 1);
|
|
46
|
+
--ease-out: cubic-bezier(0, 0, 0.2, 1);
|
|
47
|
+
--ease-bounce: cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
48
|
+
|
|
49
|
+
/* Duration */
|
|
50
|
+
--duration-instant: 100ms;
|
|
51
|
+
--duration-fast: 150ms;
|
|
52
|
+
--duration-normal: 250ms;
|
|
53
|
+
--duration-slow: 400ms;
|
|
54
|
+
--duration-glacial: 600ms;
|
|
55
|
+
|
|
56
|
+
/* Composed */
|
|
57
|
+
--transition-default: var(--duration-normal) var(--ease-default);
|
|
58
|
+
--transition-enter: var(--duration-normal) var(--ease-out);
|
|
59
|
+
--transition-exit: var(--duration-fast) var(--ease-in);
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Z-Index Scale
|
|
64
|
+
|
|
65
|
+
```css
|
|
66
|
+
:root {
|
|
67
|
+
--z-base: 0;
|
|
68
|
+
--z-dropdown: 100;
|
|
69
|
+
--z-sticky: 200;
|
|
70
|
+
--z-overlay: 300;
|
|
71
|
+
--z-modal: 400;
|
|
72
|
+
--z-popover: 500;
|
|
73
|
+
--z-toast: 600;
|
|
74
|
+
--z-tooltip: 700;
|
|
75
|
+
--z-max: 9999; /* debug overlays only */
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
- Never use raw z-index numbers — always token reference
|
|
80
|
+
- `z-max` reserved for dev tools
|
|
81
|
+
- Modal backdrop = `--z-modal - 1` (399)
|
|
82
|
+
|
|
83
|
+
### Breakpoint Tokens
|
|
84
|
+
|
|
85
|
+
```css
|
|
86
|
+
/* Reference values — use in @media or container queries */
|
|
87
|
+
--bp-sm: 640px;
|
|
88
|
+
--bp-md: 768px;
|
|
89
|
+
--bp-lg: 1024px;
|
|
90
|
+
--bp-xl: 1280px;
|
|
91
|
+
--bp-2xl: 1536px;
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Note: CSS custom properties cannot be used in `@media` queries directly. These are reference values for documentation and JS usage. For CSS, use raw values with a comment referencing the token name.
|
|
95
|
+
|
|
96
|
+
### Token Naming Convention
|
|
97
|
+
|
|
98
|
+
| Pattern | Example | Use |
|
|
99
|
+
|---------|---------|-----|
|
|
100
|
+
| Semantic | `--color-text-primary`, `--spacing-section` | Component usage |
|
|
101
|
+
| Scale | `--space-4`, `--radius-lg` | Design system primitives |
|
|
102
|
+
| Composed | `--transition-enter` = `duration + ease` | Shorthand combinations |
|
|
103
|
+
|
|
104
|
+
Semantic tokens reference scale tokens. Components use semantic tokens. Never reference scale tokens directly in components.
|
|
105
|
+
|
|
106
|
+
### Extending Existing Systems (shadcn/ui)
|
|
107
|
+
- Inspect existing installed components before adding new ones.
|
|
108
|
+
- Use the project's `components.json`, aliases, tokens, and registry conventions.
|
|
109
|
+
- Do not hallucinate components — verify against local source.
|
|
110
|
+
- New components must use the same token variables as existing ones.
|
|
111
|
+
|
|
112
|
+
### DESIGN.md Format
|
|
113
|
+
|
|
114
|
+
A project-root `DESIGN.md` persists design tokens and decisions across sessions. Structure:
|
|
115
|
+
|
|
116
|
+
```markdown
|
|
117
|
+
# Design System — [Project Name]
|
|
118
|
+
|
|
119
|
+
## Tokens
|
|
120
|
+
<!-- Paste the Token Template and Motion Tokens from above -->
|
|
121
|
+
|
|
122
|
+
## Colors
|
|
123
|
+
<!-- Semantic color palette: --color-text-primary, --color-bg-surface, etc. -->
|
|
124
|
+
|
|
125
|
+
## Components
|
|
126
|
+
<!-- Component inventory with variants and states -->
|
|
127
|
+
|
|
128
|
+
## Rules
|
|
129
|
+
<!-- Project-specific constraints: font stacks, icon system, motion policy -->
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Keep `DESIGN.md` under 300 lines. Reference it from SKILL.md routing table, not inline.
|
|
133
|
+
|