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.
- package/.codex/.template-manifest.json +32 -24
- package/.codex/.version +1 -1
- package/.codex/agents/builder.toml +6 -1
- package/.codex/agents/debugger.toml +1 -0
- package/.codex/agents/general.toml +6 -1
- package/.codex/agents/painter.toml +1 -0
- package/.codex/agents/planner.toml +1 -0
- package/.codex/agents/refactorer.toml +1 -0
- package/.codex/agents/reviewer.toml +1 -0
- package/.codex/agents/runner.toml +1 -0
- package/.codex/agents/scout.toml +1 -0
- package/.codex/agents/shipper.toml +1 -0
- package/.codex/agents/vision.toml +1 -0
- package/.codex/config.toml +8 -3
- package/.codex/mcp/README.md +19 -3
- package/.codex/mcp/context7.toml.example +25 -8
- package/.codex/mcp/exa.toml.example +8 -1
- package/.codex/prompts/create.md +63 -26
- package/.codex/prompts/init.md +24 -0
- package/.codex/prompts/ship.md +36 -25
- package/.codex/prompts/start.md +2 -2
- package/.codex/prompts/ui-slop-check.md +119 -0
- package/.codex/scripts/start_bead.sh +9 -5
- package/.codex/scripts/verify_bead.sh +18 -6
- package/.codex/skills/frontend-design/SKILL.md +137 -55
- package/.codex/skills/frontend-design/references/color-system.md +125 -0
- package/.codex/skills/frontend-design/references/interaction.md +115 -0
- package/.codex/skills/frontend-design/references/motion-core.md +102 -0
- package/.codex/skills/frontend-design/references/responsive-design.md +104 -0
- package/.codex/skills/frontend-design/references/spatial-design.md +103 -0
- package/.codex/skills/frontend-design/references/typography-rules.md +118 -0
- package/.codex/skills/frontend-design/references/ux-writing.md +105 -0
- package/.template-manifest.json +32 -24
- package/AGENTS.md +3 -3
- package/CHANGELOG.md +33 -0
- package/README.md +3 -1
- package/bin/codexkit +20 -1
- package/package.json +1 -1
package/.codex/prompts/ship.md
CHANGED
|
@@ -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
|
|
43
|
-
|
|
|
44
|
-
| `br`
|
|
45
|
-
| `git`
|
|
46
|
-
| `grep
|
|
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
|
|
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
|
|
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
|
|
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` |
|
package/.codex/prompts/start.md
CHANGED
|
@@ -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
|
|
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"
|
|
99
|
-
(cd "$PROJECT_ROOT" && br update "$BEAD_ID" --
|
|
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="$(
|
|
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
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
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
|
|
4
|
-
version: 1.
|
|
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
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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
|
-
|
|
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
|
-
###
|
|
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
|
-
###
|
|
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
|
-
###
|
|
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
|
-
###
|
|
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 can
|
|
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
|
|
95
|
-
- [ ] Touch targets at least
|
|
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
|
-
##
|
|
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
|
-
|
|
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
|
-
|
|
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.
|