Releases: bitjaru/styleseed
Release list
v2.10.0 — /ss-verify: the visual gate (render, look, score the pixels)
The gate now has eyes. /ss-score reads the code — but some of the worst "AI-made" tells only exist in pixels, and a code-reading gate is blind to every one: a hero that doesn't actually dominate, a lower third of dead whitespace, a web font that silently failed to load and fell back to Times, two colors that look like two accents once rendered, an empty state that's a blank white void. A human catches these in half a second.
Added
/ss-verify— the VISUAL gate. It renders the screen (dev server + headless screenshot, a static file, or an isolated component harness), the agent looks at the image, and scores the same StyleSeed gate against what it actually sees: the squint "does this look AI-made" test, whether one element truly dominates, dead/cramped space, fonts that didn't load, hues that read as two accents, contrast as rendered, optical alignment. It renders the empty/loading/error states too — the blank-void failure you can only catch by looking — then fixes and re-renders until it passes. Never claims a visual pass without a real screenshot; falls back to/ss-scoreif nothing can render.
Changed
- The Quality Gate is now two passes in order:
/ss-score(code-clean, cheap) →/ss-verify(pixel-clean, the real bar) whenever the screen renders./ss-buildfinishes a renderable screen with it. Wired into the CLAUDE.md / AGENTS.md gates,/ss-build, andllms.txt. 19 skills total.
Update: run `/ss-update`, or `npx skills add bitjaru/styleseed`.
v2.9.0 — Motion scoped by surface: the Cinematic tier
A blanket "no scroll-linked / no parallax / no 3D / no animated gradients" was right for product surfaces (dashboards, data, forms) but got over-generalized to every surface — which made it impossible to build the exact brand pages StyleSeed points to as best-in-class (family.co, stripe.com, linear.app). Those pages are scroll-choreographed. This release scopes the rule instead of dropping it.
Changed
- Cinematic tier (DESIGN-LANGUAGE §43, PAGE-TYPES Landing): on a marketing/landing/brand page, scroll-LINKED reveals, pinned/sticky sections, the "product assembles as you scroll" move, subtle parallax, a 3D/tilt hero, animated gradient/mesh or video backgrounds, and rich hover are now explicitly allowed — with guardrails: purposeful (not jitter), 60fps (
transform/opacityonly), never blocks the first read or the CTA/LCP,prefers-reduced-motionleaves a complete static page, one motion language. - The distinction the old rule blurred: scroll-JACKING (hijacking scroll speed, trapping) stays banned everywhere; scroll-LINKED (native scroll drives it, user in control) is now encouraged on brand pages.
- App/dashboard/data/form surfaces keep the restraint — the bans got a surface, they didn't go away.
- Propagated across DESIGN-LANGUAGE, PAGE-TYPES, VISUAL-CRAFT, METHODOLOGY, the CLAUDE.md/AGENTS.md gates, and /ss-score (surface-aware), /ss-motion, /ss-dial.
Update: run `/ss-update`, or `npx skills add bitjaru/styleseed`.
v2.8.0 — /ss-dial + /ss-restyle: change the look without breaking coherence
"Make it more minimal" is something you can just say — the model already reads plain language. A skill only earns its place where one word must move many tokens at once, coordinated, without breaking a rule — and where doing it by hand gives an inconsistent one-off. Two new skills cover exactly that; vibes stay words.
Added
/ss-dial <axis> <direction>— turn ONE design axis up or down as a deterministic transform. Seven axes: density · hierarchy · radius · elevation · color · weight · motion. Each is a defined ramp that moves the whole coordinated token set together (density denser= spacing + padding + gap + line-height + type, all at once), respects the guardrails (8px grid, ≥44px touch, single accent, nested-radius, ≤8% shadow, font-size table), clamps at the ends (bounded, not runaway), writes the lock, and re-runs the gate to ≥ 80./ss-restyle <preset>— apply a named aesthetic as a coordinate across the dial axes plus a font and one signature move: swiss · editorial · technical · warm-dtc · minimal-mono · brutalist-lite. A preset is a full identity, not a filter you stack (two presets = the mixed-personality tell). Honors a deliberate brand hex, holds the modern floor (§CC-9d), rewrites the lock, re-gates. Glassmorphism / neumorphism deliberately excluded as dated.
Why this shape
A mood word ("premium", "editorial") isn't one axis — it's a position across several → a preset (/ss-restyle). A single measurable axis with a guardrail ("denser", "sharper", "more muted") → a dial (/ss-dial). Anything the model handles from plain words stays words — no skill. 18 skills total.
Update: run `/ss-update`, or `npx skills add bitjaru/styleseed`.
v2.7.0 — /ss-build: enforce the loop, not just the rules
The reference demo looks designed and a free-hand build often doesn't — with the same 74 rules. The gap was never the rules; it was a loop the demo runs and a free-hand build skips: lock the look → build → run the Quality Gate → fix to a floor → repeat. v2.7.0 turns that loop from prose-you-can-ignore into machinery.
Added
/ss-build— build a screen the demo way, enforced. Refuses to write UI before the look is locked inSTYLESEED.md, reads the full rules, builds with one focal point / surface-correct type / no icon-chip cliché, then runs/ss-scoreas a loop to ≥ 80 before presenting — with the score and what it fixed. The front door for building UI now. (16 skills total.)
Changed
- The one-paste prompt bootstraps its own install (
npx skills add bitjaru/styleseed) first — because the Quality Gate is what strips the "AI look," and/ss-score//ss-buildonly run when installed. Pointed at the rules-URL alone, the gate degrades to an honor-system self-check the agent skips and the lock never persists. Install-first makes the gate real. - Landing "install" tier rewritten to state why install beats paste.
- CLAUDE.md / AGENTS.md "How to use" now lead with
/ss-build(or the same loop by hand).
Update: run /ss-update, or npx skills add bitjaru/styleseed.
Full changelog: https://github.com/bitjaru/styleseed/blob/main/CHANGELOG.md
v2.6.0 — Rules that survive contact
A three-domain stress test — Korean mobile health app, dark observability dashboard, warm DTC e-commerce landing, all built with zero user direction — confirmed v2.5.0 escapes the first-generation AI tells: no default indigo, no icon chips, no rainbow lists, and three genuinely different results (calm teal + Pretendard + soft / signal teal + IBM Plex + sharp + tonal dark / terracotta + Bricolage Grotesque + pill). The builders also honestly reported ~12 rule contradictions and gaps. This release patches all of them.
The 2nd-generation tells (new)
CC-9c — don't let the escape hatch become the new uniform. Ghost index numbers (01·02·03) on every section, identical uppercase-overline + big-number cards, the stock text-left/visual-right hero, the symmetric 8+4 grid — the exits from the last cliché are becoming the next one. Rule: one signature treatment per project, varied section anatomy. Enforced in the Quality Gate and /ss-score.
Contradictions fixed (found by dogfooding)
- Dark-mode elevation — light = layered shadows ≤8%; dark = tonal surface ramp + hairline borders. The gate no longer punishes correct dark-mode hairlines.
- One 8px spatial grid (stray 6px guidance removed); Golden Rule 5 scoped for mobile vs desktop.
- Radius personality → component mapping (sharp 2–4/6–8 · soft 8–10/12–16 · pill full/20–24) — one scale, not one number.
- 44px touch vs 36–40px pointer targets.
Gaps filled
- Accent ≈ semantic-color collision rule (green accent vs success green) + "completed/normal rests grey".
- Locked content/imagery palettes for product art (2–3 material tones ≠ a second accent).
- Skinless tint formula (10–14% alpha over card, light & dark).
- Desktop app-chrome type scale (dashboard h1 22–24px, hero KPI 48–64px), dense-data exceptions to the 14px floor, duration KPIs, Korean/CJK tracking guidance.
- Page-type-aware Quality Gate (static mockups/landings: States = N/A).
- Warm/consumer smart defaults (e-commerce → terracotta/coral; health → desaturated green-teal).
Full notes: CHANGELOG.md
v2.5.0 — Distinctive, not just coherent
Coherent-but-generic still reads "an AI made this." Dogfooding real product builds surfaced the next failure mode after ugliness: StyleSeed reliably stopped rainbow/emoji/pure-black, but could still leave a screen generic — the default indigo, a tight mobile type scale on a desktop, the "Lucide-icon-in-a-pale-chip" cliché repeated for every feature, an all-even grid with no focal point, and the demo layout copied verbatim. v2.5.0 forces the identity layer that made the reference demo look designed.
Highlights
- Mood step in Quick Setup — pin the aesthetic in plain words (edges → radius, feel → shadow, density → spacing/type, tone → motion), from a skin-based default you tweak ("sharper corners").
- Smart domain defaults — infers a domain-fit skin/color (Korean + fintech/regulation → Toss
#3182F6). The unlocked default indigo (#5E6AD2/#4F46E5) is now forbidden as a final choice. - Type scale by surface — a desktop/web B2B scale (body ≥16px) distinct from the tight mobile scale, plus font-pairing recommendations.
- No icon-chip cliché (VISUAL-CRAFT CC-9b) — drop the pale-chip, vary the treatment, or use numbered/typographic markers (01 · 02 · 03).
- One-focal-point rule — an all-even card grid is the machine-composed tell.
- Quick Setup is now mandatory, and the Quality Gate +
/ss-scorenow fail default-indigo, copied-demo, no-focal, and 14px-on-desktop output (/ss-scoregains a Distinctiveness category). - Retrofit path (
/ss-updateStep 6) — re-do a screen built with an older, weaker StyleSeed to the new standard; report the before/after score.
Full notes: CHANGELOG.md
v2.4.0 — Consistent application (plan-mode setup, design lock, rule-gap fixes)
Theme: consistent application. Real usage showed the one-paste prompt could still produce mediocre UI (random colors, no key color, different every run). Root cause: consistency comes from constraints, and the paste path is the least-constrained. This release raises the floor of the default path — validated by dogfooding the engine end-to-end.
Added
- Quick Setup protocol — agents work in plan mode, lock a key color + motion seed with the user before building, then self-check.
- Design Lock — agents write & obey a project-root
STYLESEED.md(skin, accent, radius, motion) every prompt, so decisions persist instead of drifting./ss-setupwrites it. - Troubleshooting guide (README) + FAQ entries for "applied StyleSeed but it still looks bad / results vary."
Changed
- Stronger canonical paste-prompt — points to
llms-full.txt(the full rules, not the summary) and bakes in plan-mode + key-color lock + coherence self-check.
Rules (gaps closed from real failures + dogfooding)
- No emoji as UI icons — they inject many uncontrolled hues; use one line-icon set in
currentColor. - Status color = severity, not decoration — fixed a rule that told agents to "vary status colors for visual interest" (the cause of noisy rainbow lists). Normal/OK/"보통" rows are neutral grey; color marks only the minority needing attention; same value → same color.
- Quality/score scales (good→bad, e.g. air-quality/health/life-index) now have guidance — neutral+exception or one sequential ramp, never scattered process hues.
- Favorite/saved/rating affordances convey on/off by fill (filled accent / outline grey), not gold/red.
- Enforced in
/ss-review,/ss-score, the design-review skill, and.cursorrules.
Full notes: CHANGELOG.md · Update: run /ss-update or npx skills add bitjaru/styleseed
v2.3.0 — Design Judgment: Playbooks, Visual Craft & Scoring
This release is about design judgment — teaching the engine not just rules, but taste: how to bias those rules for the kind of app and screen you're building, the research-backed craft that makes a component look intentional, and how to keep a whole UI coherent.
New: two axes of judgment
- APP-PLAYBOOKS.md — how to bias the rules for the app's domain (fintech, SaaS, e-commerce, social, content, productivity, health, dev-tools, …). A fintech dashboard and a social dashboard apply the same rules differently.
- PAGE-TYPES.md — how to bias for the screen type (dashboard / form / landing / detail / list / settings / onboarding). Domain × page-type = the actual judgment.
New: VISUAL-CRAFT.md — research-backed craft + Coherence Laws
The "design sense" layer, made concrete and sourced (Refactoring UI, Material 3, Apple HIG, IBM Carbon, WCAG 2.2, FT Visual Vocabulary, Butterick, NN/g, Tufte):
- §C0 Coherence Laws — one choice per axis (radius / shadow / accent / spacing / icons / type / motion), applied system-wide. The antidote to "AI-generated UI looks off": pick a corner personality and keep everything on it.
- Spacing & rhythm · typography (+ type recipe by app type) · component craft (layered shadows, the nested-radius law, buttons/cards/inputs/icons/states) · color & dark mode · data-viz · 2025–26 trends (durable vs fad).
Rules: 69 → 74
DESIGN-LANGUAGE.md gains §70 Form & Input · §71 States · §72 Accessibility · §73 Responsive & Mobile · §74 Rule Priority & Conflict Resolution.
Skills: 14 → 15
- /ss-score — score a UI 0–100 across weighted categories with a prioritized fix list. Now includes a Coherence category.
- /ss-review — new §8 Coherence checklist (one-choice-per-axis, nested radius).
Web
- /guides — 8 programmatic design guides by app type, each surfacing the domain's type recipe (typeface / hero / body / numerals) and corner personality.
MIT licensed. ⭐ https://github.com/bitjaru/styleseed
v2.2.0 — Named Motion System + Showcase
StyleSeed grew from a static design system into a full design engine with a named motion language and a live showcase. This release collects everything since v2.1.1.
✨ Named Motion System
- 5 personality seeds (Spring / Silk / Snap / Float / Pulse) × 5 contexts — spreadable framer-motion recipes
- 20+ keyword moves —
tilt-3d,magnetic,glow-pulse,gradient-sweep,blob-morph,spotlight,toggle-flip,reveal-blur,confetti-pop, and more - New
/ss-motionskill — say a seed or a keyword, get the exact recipe - One source of truth (
engine/motion/library.ts) shared by the skill and the gallery
🖼️ Live galleries & showcase
- /motion — preview + copy every move
- /motion/guide — vibe-code your own motion (composition patterns + prompts)
- /interactions — toast, bottom sheet, swipe-to-delete, segmented control, like-burst…
- 11 reference builds (added food-delivery, fitness, music B2C apps) — toggle skin × motion live in the browser
🎨 Skins
- Now 7 brand skins (added Raycast, Arc) + 58 via awesome-design-md
🧭 Positioning & docs
- Reframed as a design engine — "teaches judgment, not just data"
- SEO/GEO: per-page metadata, JSON-LD, sitemap, robots (AI crawlers welcome),
llms.txt - Safer updates — UPDATE.md +
/ss-updatenow make clear that updates are additive & reversible
🩹 Fixes
- SKILL.md frontmatter is now valid YAML → all 14 skills are discoverable via
npx skills/ agentskill.sh - Reconciled doc counts (48 components · 7 skins · 14 skills · 20+ moves) and repaired broken links
- Corrected the wiki (real
/ss-*skill names, working install paths) — fixes #1
Try it: https://styleseed-demo.vercel.app · ⭐ a star helps more people (and AI tools) find it!
v2.1.1 — Font Size Anti-Pattern Warning
Critical: Tailwind v4 Font Size Anti-Patterns
Documented from a real production incident. If you tokenize font sizes as CSS variables, Tailwind v4 will break your UI.
What Went Wrong
text-[var(--text-sm)]→ Tailwind interprets as color, not font-size →color: 13px(invalid)--text-*CSS variables → conflict with Tailwind v4's internal--text-*namespace- Changing
--font-sizein theme.css → breaks all rem-based spacing (icons, nav, buttons)
What We Added
- CLAUDE.md: Font Size Anti-Pattern section with 3 ✗ and 1 ✓ pattern
- DESIGN-LANGUAGE.md: CRITICAL warning after typography rules
- Prohibited Practices: explicit rules against font-size tokenization
- /ss-lint: New check that detects
text-[var(--pattern automatically
The Rule
✓ ALWAYS: text-[36px], text-[18px], text-[13px] (explicit px)
✗ NEVER: text-[var(--text-sm)] (CSS variable)
✗ NEVER: --text-sm: 13px in theme.css (Tailwind conflict)