codexkit 1.0.1 → 1.0.3

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.
Files changed (38) hide show
  1. package/.codex/.template-manifest.json +32 -24
  2. package/.codex/.version +1 -1
  3. package/.codex/agents/builder.toml +6 -1
  4. package/.codex/agents/debugger.toml +1 -0
  5. package/.codex/agents/general.toml +6 -1
  6. package/.codex/agents/painter.toml +1 -0
  7. package/.codex/agents/planner.toml +1 -0
  8. package/.codex/agents/refactorer.toml +1 -0
  9. package/.codex/agents/reviewer.toml +1 -0
  10. package/.codex/agents/runner.toml +1 -0
  11. package/.codex/agents/scout.toml +1 -0
  12. package/.codex/agents/shipper.toml +1 -0
  13. package/.codex/agents/vision.toml +1 -0
  14. package/.codex/config.toml +8 -3
  15. package/.codex/mcp/README.md +19 -3
  16. package/.codex/mcp/context7.toml.example +25 -8
  17. package/.codex/mcp/exa.toml.example +8 -1
  18. package/.codex/prompts/create.md +63 -26
  19. package/.codex/prompts/init.md +24 -0
  20. package/.codex/prompts/ship.md +36 -25
  21. package/.codex/prompts/start.md +2 -2
  22. package/.codex/prompts/ui-slop-check.md +119 -0
  23. package/.codex/scripts/start_bead.sh +9 -5
  24. package/.codex/scripts/verify_bead.sh +18 -6
  25. package/.codex/skills/frontend-design/SKILL.md +137 -55
  26. package/.codex/skills/frontend-design/references/color-system.md +125 -0
  27. package/.codex/skills/frontend-design/references/interaction.md +115 -0
  28. package/.codex/skills/frontend-design/references/motion-core.md +102 -0
  29. package/.codex/skills/frontend-design/references/responsive-design.md +104 -0
  30. package/.codex/skills/frontend-design/references/spatial-design.md +103 -0
  31. package/.codex/skills/frontend-design/references/typography-rules.md +118 -0
  32. package/.codex/skills/frontend-design/references/ux-writing.md +105 -0
  33. package/.template-manifest.json +32 -24
  34. package/AGENTS.md +3 -3
  35. package/CHANGELOG.md +33 -0
  36. package/README.md +3 -1
  37. package/bin/codexkit +20 -1
  38. package/package.json +1 -1
@@ -39,11 +39,11 @@ Execute PRD tasks, verify each gate passes, run review, then request close appro
39
39
 
40
40
  ## Available Tools
41
41
 
42
- | Tool | Use When |
43
- | ----- | ----------------------------------------- |
44
- | `br` | Task metadata, comments, close/sync |
45
- | `git` | Branch, commits, diffs, verification prep |
46
- | `grep`| Stub checks and key-link checks |
42
+ | Tool | Use When |
43
+ | ------ | ----------------------------------------- |
44
+ | `br` | Task metadata, comments, close/sync |
45
+ | `git` | Branch, commits, diffs, verification prep |
46
+ | `grep` | Stub checks and key-link checks |
47
47
 
48
48
  ## Phase 0: Bootstrap Beads
49
49
 
@@ -115,11 +115,11 @@ For each task:
115
115
 
116
116
  ### Checkpoint Protocol
117
117
 
118
- | Type | Action |
119
- | ------------------------- | ---------------------------------------------------------- |
120
- | `checkpoint:human-verify` | Automate checks first, then pause for user verification |
121
- | `checkpoint:decision` | Present options, wait for explicit selection |
122
- | `checkpoint:human-action` | Request specific action and provide verification command |
118
+ | Type | Action |
119
+ | ------------------------- | -------------------------------------------------------- |
120
+ | `checkpoint:human-verify` | Automate checks first, then pause for user verification |
121
+ | `checkpoint:decision` | Present options, wait for explicit selection |
122
+ | `checkpoint:human-action` | Request specific action and provide verification command |
123
123
 
124
124
  **Checkpoint format:**
125
125
 
@@ -148,16 +148,19 @@ For each task:
148
148
  ### TDD Execution Flow
149
149
 
150
150
  **RED**
151
+
151
152
  1. Add failing test
152
153
  2. Run test (must fail)
153
154
  3. Commit: `test: add failing test for [feature]`
154
155
 
155
156
  **GREEN**
157
+
156
158
  1. Implement minimal fix
157
159
  2. Run test (must pass)
158
160
  3. Commit: `feat: implement [feature]`
159
161
 
160
162
  **REFACTOR** (optional)
163
+
161
164
  1. Clean up without behavior change
162
165
  2. Run tests (must remain green)
163
166
  3. Commit: `refactor: clean up [feature]`
@@ -177,13 +180,13 @@ git commit -m "feat(bead-$ARGUMENTS): <task description>
177
180
 
178
181
  Commit types:
179
182
 
180
- | Type | Use For |
181
- | ---------- | --------------------------------------- |
182
- | `feat` | New user-visible behavior |
183
- | `fix` | Bug fix |
184
- | `test` | Test-only changes |
185
- | `refactor` | Internal cleanup, no behavior change |
186
- | `chore` | Tooling/config/dependency updates |
183
+ | Type | Use For |
184
+ | ---------- | ------------------------------------ |
185
+ | `feat` | New user-visible behavior |
186
+ | `fix` | Bug fix |
187
+ | `test` | Test-only changes |
188
+ | `refactor` | Internal cleanup, no behavior change |
189
+ | `chore` | Tooling/config/dependency updates |
187
190
 
188
191
  ### Stop Conditions
189
192
 
@@ -218,7 +221,7 @@ Completion checklist before closing:
218
221
  - [ ] Durable memory artifacts were updated in the correct home if the work changed state, blockers, or learnings
219
222
  - [ ] User approval obtained before bead close
220
223
 
221
- ## Phase 6: Review
224
+ ## Phase 5: Review
222
225
 
223
226
  Load and run `$requesting-code-review`. Dispatch **5 parallel review agents**, each covering one lens:
224
227
 
@@ -247,7 +250,7 @@ Wait for all 5 to return. Synthesize findings:
247
250
 
248
251
  If critical issues require architectural decisions, stop and present options.
249
252
 
250
- ## Phase 6B: Goal-Backward Verification
253
+ ## Phase 5B: Goal-Backward Verification
251
254
 
252
255
  Three-level verification:
253
256
 
@@ -277,9 +280,10 @@ return Response.json({ ok: true })
277
280
 
278
281
  If Level 2/3 fails, fix and re-verify.
279
282
 
280
- ## Phase 7: Close
283
+ ## Phase 6: Close
281
284
 
282
285
  > **Choose one:**
286
+ >
283
287
  > 1. **Close bead (Recommended)** — All tasks complete, all gates pass, review clear.
284
288
  > 2. **Keep open** — Additional changes required.
285
289
 
@@ -297,6 +301,13 @@ If user confirms close:
297
301
  .codex/scripts/close_bead.sh $ARGUMENTS --reason "Shipped: PRD tasks complete, verification and review passed"
298
302
  ```
299
303
 
304
+ After close, commit bead state:
305
+
306
+ ```bash
307
+ git add .beads/
308
+ git commit -m "chore(bead-$ARGUMENTS): close - shipped with all gates passing"
309
+ ```
310
+
300
311
  ## Output
301
312
 
302
313
  Report with six sections:
@@ -326,9 +337,9 @@ Report with six sections:
326
337
 
327
338
  ## Related Commands
328
339
 
329
- | Need | Command |
330
- | ----------- | -------------------- |
331
- | Create spec | `/prompts:create` |
332
- | Claim task | `/prompts:start <id>` |
340
+ | Need | Command |
341
+ | ----------- | ---------------------- |
342
+ | Create spec | `/prompts:create` |
343
+ | Claim task | `/prompts:start <id>` |
333
344
  | Verify only | `/prompts:verify <id>` |
334
- | Create PR | `/prompts:pr` |
345
+ | Create PR | `/prompts:pr` |
@@ -75,10 +75,10 @@ If missing/incomplete, route to `/prompts:create`.
75
75
  ## Phase 3: Claim
76
76
 
77
77
  ```bash
78
- .codex/scripts/start_bead.sh $ARGUMENTS
78
+ .codex/scripts/start_bead.sh $ARGUMENTS --use-current-branch
79
79
  ```
80
80
 
81
- This helper validates `prd.md`, claims the bead, and prepares the default feature branch.
81
+ This helper validates `prd.md` and claims the bead; workspace setup is handled in Phase 4.
82
82
 
83
83
  ## Phase 4: Prepare Workspace
84
84
 
@@ -0,0 +1,119 @@
1
+ ---
2
+ description: Automated audit for AI aesthetic fingerprints with actionable fixes
3
+ argument-hint: "<component-or-file-path> [--fix]"
4
+ agent: vision
5
+ ---
6
+
7
+ # UI Slop Check: $ARGUMENTS
8
+
9
+ Scan frontend code for the 12 AI aesthetic fingerprint anti-patterns. Returns a pass/fail verdict with specific findings and actionable corrections.
10
+
11
+ > Inspired by [pbakaus/impeccable](https://github.com/pbakaus/impeccable) design language kit.
12
+
13
+ ## Load Skills
14
+
15
+ - `$frontend-design` — design principles and AI slop taxonomy
16
+ - `$visual-analysis` — visual analysis and comparison
17
+
18
+ ## Options
19
+
20
+ | Argument | Default | Description |
21
+ | -------- | ------- | ------------------------------------------- |
22
+ | `--fix` | false | Auto-apply corrections for detected issues |
23
+
24
+ ## Phase 1: Scan Target
25
+
26
+ Parse `$ARGUMENTS` for the target path (component file, directory, or screenshot).
27
+
28
+ Read all relevant files. For each file, scan against the 12 AI fingerprint anti-patterns from the `frontend-design` skill:
29
+
30
+ | # | Anti-Pattern | What to Look For |
31
+ |---|-------------|------------------|
32
+ | 1 | **Inter/Roboto font** | `font-family` declarations using Inter, Roboto, Arial, Open Sans, system defaults as primary choice |
33
+ | 2 | **Purple-to-blue gradients** | `linear-gradient` with purple/blue/cyan hues; neon accents on dark backgrounds |
34
+ | 3 | **Cards-on-cards** | Nested card components; `Card` inside `Card`; excessive `.rounded` + `.shadow` nesting |
35
+ | 4 | **Glassmorphism abuse** | `backdrop-filter: blur`, glass-effect classes used decoratively across multiple components |
36
+ | 5 | **Bounce/elastic easing** | `cubic-bezier` with values >1 (overshoot); `bounce`, `elastic`, `spring` in animation names |
37
+ | 6 | **Pure black/white** | `#000`, `#fff`, `rgb(0,0,0)`, `rgb(255,255,255)` without tinting |
38
+ | 7 | **Hero metric template** | Big number + small label + supporting stats + gradient accent layout pattern |
39
+ | 8 | **Identical card grids** | Same-sized cards with icon + heading + text repeated 3+ times identically |
40
+ | 9 | **Gradient text impact** | `background-clip: text` + gradient on headings or metrics |
41
+ | 10 | **Gray text on color** | Gray (`#6b7280`, `gray-500`, etc.) text on non-white/non-gray backgrounds |
42
+ | 11 | **Decorative sparklines** | Chart/sparkline components with no real data binding or meaningful data |
43
+ | 12 | **Dark mode default** | Only dark theme defined; dark mode with glowing accents and no light mode |
44
+
45
+ ## Phase 2: Generate Report
46
+
47
+ ### Verdict
48
+
49
+ Start with a clear **PASS** or **FAIL** verdict.
50
+
51
+ A single critical anti-pattern = FAIL. Explain why immediately.
52
+
53
+ ### Findings Table
54
+
55
+ For each detected anti-pattern:
56
+
57
+ ```markdown
58
+ | # | Anti-Pattern | Status | Location | Severity |
59
+ |---|-------------|--------|----------|----------|
60
+ | 1 | Inter font | FOUND | globals.css:3 | Medium |
61
+ | 2 | Purple gradient | CLEAR | - | - |
62
+ ...
63
+ ```
64
+
65
+ ### Detailed Findings
66
+
67
+ For each FOUND item:
68
+
69
+ 1. **Location**: File path and line number
70
+ 2. **Evidence**: The specific code or pattern detected
71
+ 3. **Impact**: Why this makes the UI look AI-generated
72
+ 4. **Fix**: Specific replacement code or approach
73
+
74
+ ### Summary
75
+
76
+ - Total anti-patterns found: X/12
77
+ - Severity breakdown: Critical / Medium / Low
78
+ - Estimated fix effort: Quick (<30min) / Moderate (1-2hr) / Significant (>2hr)
79
+
80
+ ## Phase 3: Auto-Fix (if `--fix`)
81
+
82
+ If `--fix` is passed, apply corrections for each detected anti-pattern:
83
+
84
+ 1. Replace generic fonts with distinctive alternatives
85
+ 2. Replace purple/blue gradients with project-appropriate OKLCH palette
86
+ 3. Flatten nested card structures
87
+ 4. Remove decorative glassmorphism; keep functional uses
88
+ 5. Replace bounce/elastic easing with exponential curves
89
+ 6. Tint pure black/white with subtle brand hue
90
+ 7. Redesign hero metric layouts
91
+ 8. Vary card grid sizes and layouts
92
+ 9. Replace gradient text with weight/size/color contrast
93
+ 10. Replace gray-on-color with shade-of-background text color
94
+ 11. Remove decorative sparklines or bind to real data
95
+ 12. Add light mode support if only dark mode exists
96
+
97
+ After fixing, re-run the scan to confirm improvements.
98
+
99
+ ## Phase 4: Record
100
+
101
+ If significant findings, append to `.codex/context/worklog.md`:
102
+
103
+ ```markdown
104
+ ## [YYYY-MM-DD] UI Slop Check: <target>
105
+
106
+ - Verdict: PASS/FAIL
107
+ - Anti-patterns found: X/12
108
+ - Fixed: Y (if --fix)
109
+ - Remaining: Z
110
+ ```
111
+
112
+ ## Related Commands
113
+
114
+ | Need | Command |
115
+ | ---- | ------- |
116
+ | Full UI/UX review | `/prompts:ui-review` |
117
+ | Design new UI | `/prompts:design` |
118
+ | Gather inspiration | `/prompts:ui-inspire` |
119
+ | Ship implementation | `/prompts:ship` |
@@ -6,9 +6,10 @@ set -euo pipefail
6
6
  PROJECT_ROOT="${CODEXKIT_PROJECT_ROOT:-$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)}"
7
7
  BEAD_ID="${1:-}"
8
8
  USE_CURRENT_BRANCH=false
9
+ WORKTREE=false
9
10
 
10
11
  if [[ -z "$BEAD_ID" ]]; then
11
- echo "Usage: $0 <bead-id> [--use-current-branch]" >&2
12
+ echo "Usage: $0 <bead-id> [--use-current-branch] [--worktree]" >&2
12
13
  exit 1
13
14
  fi
14
15
  shift || true
@@ -18,9 +19,12 @@ while [[ $# -gt 0 ]]; do
18
19
  --use-current-branch)
19
20
  USE_CURRENT_BRANCH=true
20
21
  ;;
22
+ --worktree)
23
+ WORKTREE=true
24
+ ;;
21
25
  *)
22
26
  echo "Unknown option: $1" >&2
23
- echo "Usage: $0 <bead-id> [--use-current-branch]" >&2
27
+ echo "Usage: $0 <bead-id> [--use-current-branch] [--worktree]" >&2
24
28
  exit 1
25
29
  ;;
26
30
  esac
@@ -95,13 +99,13 @@ print(f"BEAD_SLUG={shlex.quote(slug)}")
95
99
  PY
96
100
  )"
97
101
 
98
- if [[ "$BEAD_STATUS" != "in_progress" ]]; then
99
- (cd "$PROJECT_ROOT" && br update "$BEAD_ID" --status in_progress >/dev/null)
102
+ if [[ "$BEAD_STATUS" == "open" ]]; then
103
+ (cd "$PROJECT_ROOT" && br update "$BEAD_ID" --claim >/dev/null)
100
104
  fi
101
105
 
102
106
  BRANCH_NAME="$(git -C "$PROJECT_ROOT" branch --show-current)"
103
107
  TARGET_BRANCH="$BRANCH_NAME"
104
- if ! $USE_CURRENT_BRANCH; then
108
+ if ! $USE_CURRENT_BRANCH && ! $WORKTREE; then
105
109
  case "$BEAD_TYPE" in
106
110
  feature) prefix="feat" ;;
107
111
  bug) prefix="fix" ;;
@@ -7,6 +7,8 @@ PROJECT_ROOT="${CODEXKIT_PROJECT_ROOT:-$(cd "$(dirname "${BASH_SOURCE[0]}")/../.
7
7
  BEAD_ID="${1:-}"
8
8
  FULL=false
9
9
  NO_CACHE=false
10
+ QUICK=false
11
+ FIX=false
10
12
 
11
13
  if [[ -z "$BEAD_ID" ]]; then
12
14
  echo "Usage: $0 <bead-id> [--full] [--no-cache]" >&2
@@ -23,8 +25,10 @@ while [[ $# -gt 0 ]]; do
23
25
  NO_CACHE=true
24
26
  ;;
25
27
  --quick)
28
+ QUICK=true
26
29
  ;;
27
30
  --fix)
31
+ FIX=true
28
32
  ;;
29
33
  *)
30
34
  echo "Unknown option: $1" >&2
@@ -81,13 +85,14 @@ fi
81
85
 
82
86
  CURRENT_STAMP="$(
83
87
  cd "$PROJECT_ROOT" &&
84
- printf '%s\n%s\n%s' \
88
+ printf '%s\n%s\n%s\n%s' \
89
+ "$BEAD_ID" \
85
90
  "$(git rev-parse HEAD)" \
86
91
  "$(git diff HEAD -- '*.ts' '*.tsx' '*.js' '*.jsx')" \
87
92
  "$(git ls-files --others --exclude-standard -- '*.ts' '*.tsx' '*.js' '*.jsx' | xargs cat 2>/dev/null)" \
88
93
  | shasum -a 256 | cut -d' ' -f1
89
94
  )"
90
- LAST_STAMP="$(tail -1 "$VERIFY_LOG" 2>/dev/null | awk '{print $1}' || true)"
95
+ LAST_STAMP="$(grep -F "$CURRENT_STAMP" "$VERIFY_LOG" 2>/dev/null | tail -1 | awk '{print $1}' || true)"
91
96
 
92
97
  if ! $NO_CACHE && ! $FULL && [[ -n "$LAST_STAMP" && "$CURRENT_STAMP" = "$LAST_STAMP" ]]; then
93
98
  echo "cached-pass=$CURRENT_STAMP"
@@ -135,15 +140,22 @@ for raw_line in text.splitlines():
135
140
  PY
136
141
  }
137
142
 
143
+ if $FIX; then
144
+ run_npm_script_if_present "lint:fix"
145
+ run_npm_script_if_present "format"
146
+ fi
147
+
138
148
  run_npm_script_if_present typecheck
139
149
  run_npm_script_if_present lint
140
150
  run_npm_script_if_present test
141
151
  run_npm_script_if_present build
142
152
 
143
- while IFS= read -r verify_cmd; do
144
- [[ -z "$verify_cmd" ]] && continue
145
- (cd "$PROJECT_ROOT" && bash -lc "$verify_cmd" >/dev/null)
146
- done < <(run_verify_commands)
153
+ if ! $QUICK; then
154
+ while IFS= read -r verify_cmd; do
155
+ [[ -z "$verify_cmd" ]] && continue
156
+ (cd "$PROJECT_ROOT" && bash -lc "$verify_cmd" >/dev/null)
157
+ done < <(run_verify_commands)
158
+ fi
147
159
 
148
160
  mkdir -p "$(dirname "$VERIFY_LOG")"
149
161
  echo "$CURRENT_STAMP $(date -u +%Y-%m-%dT%H:%M:%SZ) PASS" >> "$VERIFY_LOG"
@@ -1,13 +1,16 @@
1
1
  ---
2
2
  name: frontend-design
3
- description: Create distinctive, production-grade frontend interfaces. Use when building web components, pages, or applications with React-based frameworks. Includes Tailwind CSS v4, shadcn/ui components, Motion animations, and visual design philosophy for avoiding generic AI aesthetics.
4
- version: 1.0.0
3
+ description: Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, artifacts, posters, or applications (examples include websites, landing pages, dashboards, React components, HTML/CSS layouts, or when styling/beautifying any web UI). Generates creative, polished code and UI design that avoids generic AI aesthetics.
4
+ version: 1.1.0
5
5
  tags: [ui, design]
6
6
  dependencies: []
7
+ license: Apache 2.0. Inspired by pbakaus/impeccable design language kit and Anthropic's frontend-design skill.
7
8
  ---
8
9
 
9
10
  # Frontend Design
10
11
 
12
+ This skill guides creation of distinctive, production-grade frontend interfaces that avoid generic "AI slop" aesthetics. Implement real working code with exceptional attention to aesthetic details and creative choices.
13
+
11
14
  ## When to Use
12
15
  - Building or refactoring React UI (Next.js, Remix, Vite)
13
16
  - Creating reusable component systems with Tailwind and shadcn/ui
@@ -17,33 +20,146 @@ dependencies: []
17
20
  ## When NOT to Use
18
21
  - Backend-only tasks with no user-facing surface
19
22
 
20
- ## Design Intent First
21
- Define before coding:
22
- 1. Audience and usage context
23
- 2. Visual direction (minimal/editorial/playful/industrial/luxury)
24
- 3. Interaction tone (calm/fast/expressive/utilitarian)
25
- 4. Primary success metric (clarity, conversion, task speed)
23
+ ---
24
+
25
+ ## Design Direction
26
+
27
+ Commit to a BOLD aesthetic direction before coding:
28
+
29
+ 1. **Purpose**: What problem does this interface solve? Who uses it?
30
+ 2. **Tone**: Pick an extreme — brutally minimal, maximalist chaos, retro-futuristic, organic/natural, luxury/refined, playful/toy-like, editorial/magazine, brutalist/raw, art deco/geometric, soft/pastel, industrial/utilitarian. Use these for inspiration but design one true to the aesthetic direction.
31
+ 3. **Constraints**: Technical requirements (framework, performance, accessibility).
32
+ 4. **Differentiation**: What makes this UNFORGETTABLE? What's the one thing someone will remember?
33
+
34
+ **CRITICAL**: Choose a clear conceptual direction and execute it with precision. Bold maximalism and refined minimalism both work — the key is intentionality, not intensity.
35
+
36
+ ---
37
+
38
+ ## Frontend Aesthetics Guidelines
39
+
40
+ ### Typography
41
+ *Consult [typography reference](references/typography-rules.md) for scales, pairing, and loading strategies.*
42
+
43
+ Choose fonts that are beautiful, unique, and interesting. Pair a distinctive display font with a refined body font.
44
+
45
+ **DO**: Use a modular type scale with fluid sizing (clamp)
46
+ **DO**: Vary font weights and sizes to create clear visual hierarchy
47
+ **DON'T**: Use overused fonts — Inter, Roboto, Arial, Open Sans, system defaults
48
+ **DON'T**: Use monospace typography as lazy shorthand for "technical/developer" vibes
49
+ **DON'T**: Put large icons with rounded corners above every heading — they rarely add value and make sites look templated
50
+
51
+ ### Color & Theme
52
+ *Consult [color reference](references/color-system.md) for OKLCH, palettes, and dark mode.*
53
+
54
+ Commit to a cohesive palette. Dominant colors with sharp accents outperform timid, evenly-distributed palettes.
55
+
56
+ **DO**: Use modern CSS color functions (oklch, color-mix, light-dark) for perceptually uniform, maintainable palettes
57
+ **DO**: Tint your neutrals toward your brand hue — even a subtle hint creates subconscious cohesion
58
+ **DON'T**: Use gray text on colored backgrounds — it looks washed out; use a shade of the background color instead
59
+ **DON'T**: Use pure black (#000) or pure white (#fff) — always tint; pure black/white never appears in nature
60
+ **DON'T**: Use the AI color palette: cyan-on-dark, purple-to-blue gradients, neon accents on dark backgrounds
61
+ **DON'T**: Use gradient text for "impact" — especially on metrics or headings; it's decorative rather than meaningful
62
+ **DON'T**: Default to dark mode with glowing accents — it looks "cool" without requiring actual design decisions
63
+
64
+ ### Layout & Space
65
+ *Consult [spatial reference](references/spatial-design.md) for grids, rhythm, and container queries.*
66
+
67
+ Create visual rhythm through varied spacing. Embrace asymmetry and unexpected compositions. Break the grid intentionally for emphasis.
68
+
69
+ **DO**: Create visual rhythm through varied spacing — tight groupings, generous separations
70
+ **DO**: Use fluid spacing with clamp() that breathes on larger screens
71
+ **DO**: Use asymmetry and unexpected compositions; break the grid intentionally for emphasis
72
+ **DON'T**: Wrap everything in cards — not everything needs a container
73
+ **DON'T**: Nest cards inside cards — visual noise, flatten the hierarchy
74
+ **DON'T**: Use identical card grids — same-sized cards with icon + heading + text, repeated endlessly
75
+ **DON'T**: Use the hero metric layout template — big number, small label, supporting stats, gradient accent
76
+ **DON'T**: Center everything — left-aligned text with asymmetric layouts feels more designed
77
+ **DON'T**: Use the same spacing everywhere — without rhythm, layouts feel monotonous
78
+
79
+ ### Visual Details
80
+ **DO**: Use intentional, purposeful decorative elements that reinforce brand
81
+ **DON'T**: Use glassmorphism everywhere — blur effects, glass cards, glow borders used decoratively rather than purposefully
82
+ **DON'T**: Use rounded elements with thick colored border on one side — a lazy accent that almost never looks intentional
83
+ **DON'T**: Use sparklines as decoration — tiny charts that look sophisticated but convey nothing meaningful
84
+ **DON'T**: Use rounded rectangles with generic drop shadows — safe, forgettable, could be any AI output
85
+ **DON'T**: Use modals unless there's truly no better alternative — modals are lazy
86
+
87
+ ### Motion
88
+ *Consult [motion reference](references/motion-core.md) for timing, easing, and reduced motion.*
89
+
90
+ Focus on high-impact moments: one well-orchestrated page load with staggered reveals creates more delight than scattered micro-interactions.
26
91
 
27
- If intent is fuzzy, align first; implementation quality depends on this.
92
+ **DO**: Use motion to convey state changes entrances, exits, feedback
93
+ **DO**: Use exponential easing (ease-out-quart/quint/expo) for natural deceleration
94
+ **DO**: For height animations, use grid-template-rows transitions instead of animating height directly
95
+ **DON'T**: Animate layout properties (width, height, padding, margin) — use transform and opacity only
96
+ **DON'T**: Use bounce or elastic easing — they feel dated and tacky; real objects decelerate smoothly
97
+
98
+ ### Interaction
99
+ *Consult [interaction reference](references/interaction.md) for forms, focus, and loading patterns.*
100
+
101
+ Make interactions feel fast. Use optimistic UI — update immediately, sync later.
102
+
103
+ **DO**: Use progressive disclosure — start simple, reveal sophistication through interaction
104
+ **DO**: Design empty states that teach the interface, not just say "nothing here"
105
+ **DO**: Make every interactive surface feel intentional and responsive
106
+ **DON'T**: Repeat the same information — redundant headers, intros that restate the heading
107
+ **DON'T**: Make every button primary — use ghost buttons, text links, secondary styles; hierarchy matters
108
+
109
+ ### Responsive
110
+ **DO**: Use container queries (@container) for component-level responsiveness
111
+ **DO**: Adapt the interface for different contexts — don't just shrink it
112
+ **DON'T**: Hide critical functionality on mobile — adapt the interface, don't amputate it
113
+
114
+ ### UX Writing
115
+ *Consult [ux-writing reference](references/ux-writing.md) for labels, errors, and empty states.*
116
+
117
+ **DO**: Make every word earn its place
118
+ **DON'T**: Repeat information users can already see
119
+
120
+ ---
121
+
122
+ ## The AI Slop Taxonomy
123
+
124
+ **Critical quality check**: If you showed this interface to someone and said "AI made this," would they believe you immediately? If yes, that's the problem.
125
+
126
+ A distinctive interface should make someone ask "how was this made?" not "which AI made this?"
127
+
128
+ ### 12 AI Fingerprint Anti-Patterns
129
+
130
+ | # | Anti-Pattern | Description | Correction |
131
+ |---|-------------|-------------|------------|
132
+ | 1 | **Inter/Roboto font** | Defaulting to Inter, Roboto, Arial, or Open Sans for everything | Use distinctive fonts: Instrument Sans, Plus Jakarta Sans, Outfit, Fraunces, Newsreader |
133
+ | 2 | **Purple-to-blue gradients** | Cyan-on-dark, purple gradients, neon accents on dark backgrounds — the "AI color palette" | Build an OKLCH palette with tinted neutrals and a single committed brand hue |
134
+ | 3 | **Cards-on-cards** | Nesting cards inside cards, wrapping everything in rounded containers | Use spacing, typography, and subtle dividers; flatten the hierarchy |
135
+ | 4 | **Glassmorphism abuse** | Blur effects, glass cards, glow borders used decoratively everywhere | Use transparency and blur only where it serves a purpose (overlay context) |
136
+ | 5 | **Bounce/elastic easing** | Bounce and elastic animations that feel dated and draw attention to themselves | Use exponential easing (ease-out-quart/quint/expo) for natural deceleration |
137
+ | 6 | **Pure black/white** | Using #000 or #fff without any tinting | Always tint — even oklch with 0.005-0.01 chroma creates natural feel |
138
+ | 7 | **Hero metric template** | Big number, small label, supporting stats, gradient accent — the dashboard cliche | Design unique data presentations that serve the specific content |
139
+ | 8 | **Identical card grids** | Same-sized cards with icon + heading + text, repeated endlessly | Vary card sizes, use featured items, break the repetition |
140
+ | 9 | **Gradient text impact** | Using gradient text on metrics or headings for "impact" | Use weight, size, and color contrast for emphasis instead |
141
+ | 10 | **Gray text on color** | Gray text on colored backgrounds — it looks washed out and dead | Use a darker shade of the background color, or transparency |
142
+ | 11 | **Decorative sparklines** | Tiny charts that look sophisticated but convey nothing meaningful | Only use charts when they communicate real data the user needs |
143
+ | 12 | **Dark mode default** | Defaulting to dark mode with glowing accents to avoid making real design decisions | Design in light mode first; dark mode should be a considered adaptation |
28
144
 
29
145
  ---
30
146
 
31
147
  ## Component Architecture Patterns
32
148
 
33
- ### 1) Primitive Composite Screen
149
+ ### Primitive > Composite > Screen
34
150
  - **Primitives:** Button, Input, Badge, Icon, Stack
35
151
  - **Composites:** SearchBar, FilterPanel, ProductCard
36
152
  - **Screen sections:** Hero, ResultsGrid, CheckoutSummary
37
153
 
38
154
  Keep business logic out of primitives; place behavior in composites/hooks.
39
155
 
40
- ### 2) Headless behavior + visual shells
156
+ ### Headless behavior + visual shells
41
157
  - Encapsulate logic in hooks (`useDialogState`, `useComboboxFilter`)
42
158
  - Keep visual components presentational
43
159
  - Improves portability and testability
44
160
 
45
- ### 3) Composition over prop explosion
46
- Prefer slot/compound APIs over huge prop matrices.
161
+ ### Composition over prop explosion
162
+ Prefer slot/compound APIs over huge prop matrices:
47
163
 
48
164
  ```tsx
49
165
  <Card>
@@ -53,7 +169,7 @@ Prefer slot/compound APIs over huge prop matrices.
53
169
  </Card>
54
170
  ```
55
171
 
56
- ### 4) State locality
172
+ ### State locality
57
173
  - Keep transient UI state local
58
174
  - Lift only shared/derived state
59
175
  - Use URL state for shareable filters/tabs/pagination
@@ -64,7 +180,6 @@ Prefer slot/compound APIs over huge prop matrices.
64
180
 
65
181
  ### Tokenize decisions
66
182
  Use theme tokens for color, spacing, typography, radius, shadow.
67
- Avoid scattered arbitrary values.
68
183
 
69
184
  ```css
70
185
  @theme {
@@ -75,14 +190,13 @@ Avoid scattered arbitrary values.
75
190
  ```
76
191
 
77
192
  ### Deterministic class generation
78
- - Avoid dynamic class strings purge tools cant statically detect
193
+ - Avoid dynamic class strings purge tools can't statically detect
79
194
  - Use `cva`/`clsx` with explicit variant maps
80
195
 
81
196
  ### Layout discipline
82
197
  - Grid for page-level structure
83
198
  - Flex for one-dimensional alignment
84
199
  - Consistent spacing scale (`gap-*`, `space-y-*`)
85
- - Avoid one-off dimensions unless design requires them
86
200
 
87
201
  ### Dark mode parity
88
202
  Every themed component must preserve hierarchy and contrast in dark mode.
@@ -91,19 +205,14 @@ Every themed component must preserve hierarchy and contrast in dark mode.
91
205
 
92
206
  ## Responsive Design Checklist
93
207
  - [ ] Mobile-first base styles
94
- - [ ] Progressive breakpoints (`sm`→`2xl`)
95
- - [ ] Touch targets at least 44×44px
208
+ - [ ] Progressive breakpoints (`sm` > `2xl`)
209
+ - [ ] Touch targets at least 44x44px
96
210
  - [ ] Navigation works without hover
97
211
  - [ ] Dense tables reflow for narrow screens
98
212
  - [ ] Long text wraps without clipping
99
213
  - [ ] Safe-area support where relevant
100
214
  - [ ] Container queries for component-level adaptation
101
215
 
102
- Practical defaults:
103
- - Collapse multi-column layouts below `md`
104
- - Convert large tables to cards on small screens
105
- - Keep primary CTA visible early in scroll
106
-
107
216
  ---
108
217
 
109
218
  ## Accessibility Requirements
@@ -130,39 +239,11 @@ Practical defaults:
130
239
 
131
240
  ---
132
241
 
133
- ## Animation Guidelines
134
-
135
- ### Motion hierarchy
136
- 1. Micro-interactions: 120–180ms
137
- 2. State transitions: 180–260ms
138
- 3. Section/page transitions: 220–320ms
139
-
140
- ### Tool selection
141
- - Tailwind transitions for simple state feedback
142
- - Motion for layout, gestures, enter/exit choreography
242
+ ## Implementation Principles
143
243
 
144
- ```tsx
145
- <motion.div
146
- initial={{ opacity: 0, y: 8 }}
147
- animate={{ opacity: 1, y: 0 }}
148
- exit={{ opacity: 0, y: -6 }}
149
- transition={{ duration: 0.22 }}
150
- />
151
- ```
152
-
153
- ### Performance rules
154
- - Prefer transform/opacity animations
155
- - Avoid expensive paint/layout animations on large surfaces
156
- - Test on low-end devices for jank
157
-
158
- ---
244
+ Match implementation complexity to the aesthetic vision. Maximalist designs need elaborate code with extensive animations and effects. Minimalist or refined designs need restraint, precision, and careful attention to spacing, typography, and subtle details.
159
245
 
160
- ## Common UI Anti-Patterns
161
- - Generic gradient-heavy hero with weak hierarchy
162
- - Inconsistent spacing/radius across components
163
- - Too many accent colors without semantic mapping
164
- - Decorative animation that slows core tasks
165
- - Copied components with drifted behavior/naming
246
+ Interpret creatively and make unexpected choices that feel genuinely designed for the context. No design should be the same. Vary between light and dark themes, different fonts, different aesthetics. NEVER converge on common choices across generations.
166
247
 
167
248
  ## Pre-Ship QA Pass
168
249
  1. Visual check at mobile/tablet/desktop widths
@@ -171,6 +252,7 @@ Practical defaults:
171
252
  4. Reduced-motion behavior pass
172
253
  5. Empty/loading/error state pass
173
254
  6. Performance smoke for interaction smoothness
255
+ 7. **AI Slop check** — run through the 12 anti-patterns above
174
256
 
175
257
  ## Bottom Line
176
258
  Build interfaces with clear intent, strong visual character, accessible interaction, and production-grade responsiveness/performance from the first iteration.