Score a visual artifact's implementation quality 0-100 against its composed StyleSeed rule set — category breakdown, evidence, and prioritized fixes.
npx skills add https://github.com/bitjaru/styleseed --skill ss-score
/ss-review tells you *what's wrong*. /ss-score tells you *how good it is
overall* and *what to fix first* — a single number plus a category breakdown, so
you can track UI quality like you track test coverage.
/ss-lint/ss-reviewBefore scoring, read .styleseed/effective-rules.md and .styleseed/manifest.json. If they are
missing or ss-resolve --check reports drift, invoke /ss-resolve or $ss-resolve from the
project lock first. Only fall back to the source handbook when no project lock exists.
Score in authority order: core invariants first, then the exact output grammar, domain/page,
brand recipe, optional aesthetic profile, and bounded lock values. The lock cannot waive an invariant.
Unknown values are a resolver error; do not invent an exception.
The output must name the effective rule set, for example:
Rule set: operations-console × SaaS × dashboard × enterprise-workbench × swiss
Score the file (or each file in a directory) on eight weighted categories that
map to the design language. Total = 100.
| Category | Weight | Reads from |
|---|---|---|
| Color discipline | 16 | DESIGN-LANGUAGE §1, §18, §72 + VISUAL-CRAFT §C4 |
| Hierarchy & typography | 16 | §2, §3, §4, §16 + Font Size table + VISUAL-CRAFT §C2 |
| Layout & rhythm | 12 | §13, §14, §15, §61 + VISUAL-CRAFT §C1 |
| Cards & elevation | 10 | §7, §8, §12, §1 + VISUAL-CRAFT §C3 |
| States & a11y | 18 | §11, §70, §71, §72 + VISUAL-CRAFT §C3 |
| Motion & interaction | 6 | §24, §59 + engine/motion |
| Coherence | 12 | VISUAL-CRAFT §C0 (one choice per axis) |
| Distinctiveness | 10 | Golden Rules 14–16 + VISUAL-CRAFT §CC-9b (not generic/default/template) |
For each category, start at full marks and subtract for violations you find by
reading the code. Be specific and evidence-based — cite the line.
Color discipline (16) — deduct for: accidental #000/text-black outside a profile or
grammar contract that explicitly uses hard black structurally (−4 each, cap −8); competing
decorative emphasis hues (−5); emoji used as UI icons (−5); a normal/OK/"보통" state shown in a status color instead of
neutral grey (−4); status color on most/every row (no severity hierarchy) (−4);
decorative hues (gold stars, rainbow category dots) instead of accent/grey (−3);
hardcoded hex where a semantic token exists (−2 each, cap −6); status conveyed by color
alone (−4); the unlocked default indigo (#5E6AD2/#4F46E5) used as the accent instead of
a chosen domain-fit color (−4).
Distinctiveness (10) — a coherent screen can still read "AI-generated." Deduct for: the
icon-chip cliché — a generic Lucide line-icon in an identical pale-tinted rounded-square,
repeated for every feature/step (−4, §CC-9b); the StyleSeed demo layout copied verbatim
(hero+chat / 3-step / feature-grid / pricing) with no product-specific identity (−4); **no focal
point** — an all-even grid of same-weight, centered, evenly-spaced cards (−3); the hero shows a
stock/placeholder visual instead of *this* product (−3); the escape hatch as a new uniform
(§CC-9c) — ghost 01/02/03 index numbers on every section, or identical uppercase-overline +
big-number cards repeated with no variation (−2); distinctive-but-dated (§CC-9d) — full
beige/paper page base, serif body text on a product surface, dark-heavy blocks that read
"brochure" not "2026 product" (−3). Cap −10.
Hierarchy & typography (16) — deduct for: number/unit not ~2:1 (−4); font
sizes off the Font Size table / text-[var(--…)] for size (−5); everything the
same weight, no clear primary (−5); cramped or wrong line-height on body (−3);
body < 16px on a desktop/web B2B surface (tight mobile scale on a wide screen) (−4 —
but dense-data chrome is exempt: chart ticks, mono SHAs/timestamps, table metadata at
12–13px are correct; and dashboard app-chrome h1 at 22–24px is correct, not a violation
of the marketing 40–56px headline scale).
Layout & rhythm (12) — deduct for: grouping that contradicts the selected grammar or recipe (−6):
operations-console needs explicit functional groups, while editorial-reading should not be
forced into cards; enterprise-workbench needs aligned panels/rows while public-service
needs flat step flow; arbitrary off-scale spacing (−3); same section type repeated without purpose
(−4); no discernible proximity rhythm (−3).
Cards & elevation (10) — deduct for mixed or task-inappropriate surface language. Hairlines,
flat grouping, tonal ramps, or restrained shadows are valid only when the selected grammar/profile
uses them coherently. Deduct mixed border/shadow languages (−4), visibly heavy or directionally
inconsistent shadows (−4), or missing group/surface separation where the grammar requires it (−5).
States & a11y (18) — deduct for: missing empty/loading/error state on a data
surface (−5 each, cap −10 — a static mockup or marketing landing with NO data surface is
N/A: skip these deductions, don't fail the category); contrast below 4.5:1 body / 3:1
large (−6); touch target < 44px on a touch surface (pointer-first desktop controls at
36–40px are fine) (−4); no visible focus / outline:none (−5); icon-only control
without aria-label (−3).
Motion & interaction (6) — deduct for: random/ad-hoc fades instead of a named
seed/keyword (−3); motion that delays content or blocks an action (−4); no
prefers-reduced-motion handling on custom motion (−3). **Scroll-linked/parallax/3D/animated-
gradient is SURFACE-DEPENDENT (§43):** on an app/dashboard/data/form surface it's forbidden
(−5); on a marketing/landing/brand page it's ALLOWED (the Cinematic tier) — there, do NOT
deduct for scroll-linked reveals, pinned sections, 3D hero, or animated backgrounds; only deduct
for scroll-JACKING (hijacking scroll / trapping) (−5), motion that hides content until scroll
or delays the headline/CTA (−4), or a missing prefers-reduced-motion fallback (−3). Judge by
page type first, then score.
Coherence (12) — the "one choice per axis" laws (VISUAL-CRAFT §C0). Deduct for
each axis that is *mixed* rather than unified across the file: mixed radius
personalities, e.g. sharp panel + pill buttons (−5); two+ competing accent hues used
for emphasis (−4); mixed shadow languages / light directions (−3); mixed icon
families, fill modes, or stroke weights (−3); same radius on a nested element instead
of inner = outer − padding (−2); inconsistent control heights for buttons/inputs
(−2). This is the category that most predicts "looks AI-generated" — weight evidence
of system-wide consistency, not per-component prettiness.
Clamp each category at 0. Sum to a total.
## Design Score: 70 / 100 (src/app/Dashboard.tsx)
Rule set: operations-console × product-ui × SaaS × dashboard × enterprise-workbench × swiss
████████████████░░░░░░ C-
Color discipline 11/16 ▓▓▓░ competing orange+blue emphasis hues (l.28-34)
Hierarchy & typography 13/16 ▓▓▓▓ number/unit 1:1 on hero (l.18)
Layout & rhythm 9/12 ▓▓▓░ two identical KPI rows (l.22-31)
Cards & elevation 8/10 ▓▓░░ mixed border + floating-shadow language (l.22)
States & a11y 11/18 ▓▓░░ no empty/loading state; focus ring missing (l.55)
Motion & interaction 4/6 ▓▓▓░ default fade, not a named seed
Coherence 6/12 ▓▓░░ sharp cards (l.22) + pill buttons (l.48); 3 accent hues (§C0)
Distinctiveness 8/10 ▓▓▓░ all-even KPI grid weakens the operational focal panel
### Fix first (highest score gain)
1. Add empty + loading states to the orders list → +7 states (§71)
2. Unify radius (pick soft 8-12px) + collapse to one accent → +9 coherence+color (§C0, §2)
3. Drop the 1px borders, use tone + ≤8% shadow → +4 cards (§7)
Re-score after: ~92 / 100.
Use letter bands: 90+ A · 80-89 B · 70-79 C · 60-69 D · <60 F.
The Quality Gate (CLAUDE.md / AGENTS.md) is /ss-score run as a loop, not a one-off:
/ss-review to make the edits), then re-score.The pass bar is a floor, not a ceiling — get to ≥ 80 and stop; don't chase 100. The point
is that no first-draft, obviously-incoherent UI reaches the user. Especially never ship below
80 with a rainbow status list, emoji icons, two accents, or missing states — those are the
exact tells the gate exists to catch.
is the fastest path to a better number.
full breakdown.
/ss-score measures; /ss-review and /ss-motion fix.In Gate mode (above) you do fix-and-re-score until the floor is met.
to delay shipping is worse than shipping a clean 85.
Integration with protocols.io API for managing scientific protocols. This skill should be used when working with protocols.io to search, create, update, or publish protocols; manage protocol steps and materials; handle discussions and comments; organize workspaces; upload and manage files; or integrate protocols.io functionality into workflows. Applicable for protocol discovery, collaborative protocol development, experiment tracking, lab protocol management, and scientific documentation.
Analyzes job descriptions and generates tailored resumes that highlight relevant experience, skills, and achievements to maximize interview chances
Generate Excalidraw diagrams from natural language descriptions. Use when asked to "create a diagram", "make a flowchart", "visualize a process", "draw a system architecture", "create a mind map", or "generate an Excalidraw file". Supports flowcharts, relationship diagrams, mind maps, and system architecture diagrams. Outputs .excalidraw JSON files that can be opened directly in Excalidraw.
Build and distribute Expo development clients locally or via TestFlight
Use when you have a written implementation plan to execute in a separate session with review checkpoints
Data structure for annotated matrices in single-cell analysis. Use when working with .h5ad files or integrating with the scverse ecosystem. This is the data format skill—for analysis workflows use scanpy; for probabilistic models use scvi-tools; for population-scale queries use cellxgene-census.
Benchling R&D platform integration. Access registry (DNA, proteins), inventory, ELN entries, workflows via API, build Benchling Apps, query Data Warehouse, for lab data management automation.
Comprehensive molecular biology toolkit. Use for sequence manipulation, file parsing (FASTA/GenBank/PDB), phylogenetics, and programmatic NCBI/PubMed access (Bio.Entrez). Best for batch processing, custom bioinformatics pipelines, BLAST automation. For quick lookups use gget; for multi-service integration use bioservices.
Take bitjaru/ss-score from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.