Anti-Default Design

Overview
A Claude Code skill against the look every AI-built interface shares. The brief fixes the style, a seeded script rolls the structure, and a lint pass checks the result before the work counts as done.
Stack
Bash, the Claude Code skill format, GitHub Actions on Ubuntu and macOS
What I built
- A roll script with a deterministic Park-Miller generator: it fires 3 of 6 design constraints (typography, layout, color, density, shape, motion, 7 options each) and draws 3 metaphor words from the system dictionary, with a bundled fallback list. The same seed reproduces the same roll.
- A lint script with 10 checks for the default fingerprint: the usual fonts, indigo accents and purple gradients, uniform rounded corners, soft shadow stacks, hover lift, a missing viewport tag and a layout with no responsive path. Every hit must be fixed or justified.
- A pinned design direction written into the project with its seed, so re-runs keep it and a re-roll changes the structure while the style survives.
- A suite of 35 shell tests (roll determinism, seed reproduction, every lint check against clean and dirty fixtures, threshold edges, usage errors), run in CI on Ubuntu and macOS.
Key decisions
- Randomness comes from a script, never from the model. Asked to be different, a model returns the most probable different, so the entropy has to come from outside it.
- The roll is a visible command with its seed in the output, so a skipped step shows and any roll can be reproduced.
- The brief owns the style and the dice only touch the structure. An earlier version let the roll own both, and a sci-fi spec-sheet look landed on a sushi bar.
- Seven versions, each tested against real briefs, and each one documents the loophole that broke the one before it.