visual-design-principles/skills/consistency-design-systems/SKILL.md
This skill should be used when the user is building a design system, defining design tokens, creating component libraries, implementing CSS custom properties, ensuring visual consistency across pages, choosing between design systems (Material, Ant, Carbon), or auditing a codebase for design consistency. Covers design tokens (primitive → semantic → component layers), atomic design methodology, token governance, and systematic consistency.
npx skillsauth add oborchers/fractional-cto consistency-design-systemsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Consistency is the most central aesthetic factor. The VisAWI (Visual Aesthetics of Websites Inventory) instrument identifies Craftsmanship as a primary dimension -- and the fastest way to score high on Craftsmanship is rigid consistency. Every time a user encounters the same component rendered two slightly different ways, trust erodes. The CRAP design framework (Contrast, Repetition, Alignment, Proximity) names Repetition as a core principle for exactly this reason.
Design tokens are the atomic values that encode visual decisions. Organize them in three layers, referencing downward only.
| Layer | Naming Pattern | Example | Changes When |
|-------|---------------|---------|--------------|
| Primitive | --{category}-{scale} | --blue-500, --space-4, --radius-md | Brand overhaul |
| Semantic | --color-{purpose} | --color-primary, --color-bg-surface | Theme switch (light/dark) |
| Component | --{component}-{property} | --button-bg, --card-radius | Component redesign |
Rule: Components reference semantic tokens. Semantic tokens reference primitives. Never skip a layer.
Define tokens for every visual property. Constrain each category to a finite set.
| Category | Max Unique Values | Example Tokens |
|----------|-------------------|----------------|
| Color | <= 15 | --color-primary, --color-bg-surface, --color-status-error |
| Spacing | <= 10 | See whitespace-density skill for the full spacing scale |
| Typography | <= 6 sizes | --font-xs, --font-sm, --font-base, --font-lg, --font-xl, --font-2xl |
| Elevation | <= 5 levels | --shadow-0 through --shadow-4 (see craftsmanship-polish skill for definitions) |
| Border radius | <= 4 values | See craftsmanship-polish skill for reference values |
| Motion | <= 3 durations | --duration-fast (100ms), --duration-normal (200ms), --duration-slow (300ms) |
Extract all unique values for any single property in the codebase. If there are more than 10 unique values for spacing, or more than 15 for color, the system has drifted. Run this audit periodically.
How to audit:
Build from the smallest constrained unit upward.
| Level | Definition | Example | |-------|-----------|---------| | Atoms | Single elements, unsplittable | Button, input, label, icon | | Molecules | Small groups of atoms with one function | Search bar (input + button), form field (label + input + error) | | Organisms | Complex groups forming a section | Navigation bar, pricing card, data table | | Templates | Page-level layout with placeholder content | Dashboard layout, settings page layout | | Pages | Templates filled with real content | The actual rendered screen |
Every atom uses tokens. Molecules compose atoms without overriding their tokens. If a molecule needs a different button color, create a semantic token variant -- never hard-code a value.
The same component at the same level must share exact styles across every screen. A "Save" button on the settings page must be pixel-identical to a "Save" button on the profile page. If it is not, the user perceives lower quality even without consciously noticing the difference.
Audit by taking screenshots of the same component across different pages and overlaying them. Any variation is a bug.
| Anti-Pattern | Problem | Fix |
|-------------|---------|-----|
| Magic numbers (padding: 13px) | Breaks the spacing scale, impossible to maintain | Use nearest token (--space-3: 12px) |
| One-off styles | Inconsistency across pages, maintenance burden | Create a reusable token or component |
| Token sprawl (50+ colors) | Effectively no system at all | Constrain to <= 15 colors, audit and merge |
| Inconsistent naming (--btn-bg vs --button-background) | Developer confusion, duplication | Adopt one naming convention and enforce it |
| Skipping token layers (component referencing primitive) | Theme switching breaks | Always reference through semantic layer |
Working implementations in examples/:
examples/design-tokens-system.md -- Complete token system in CSS custom properties with primitive/semantic/component layers, Tailwind config, and React theme providerWhen reviewing or building a design system:
craftsmanship-polish for reference values)tools
This skill should be used when the user invokes any /plan-* command from the planning-tools plugin (/plan-context, /plan-master, /plan-open-questions, /plan-verify, /plan-tick, /plan-progress, /plan-delete), asks how Claude Code's plan files work, asks where plans are stored, asks to author or audit a multi-phase master planning document, asks how to walk through a plan's Open Questions interactively, asks how to write progress entries, or mentions ~/.claude/plans/ or .claude/planning-tools.local.md. Provides the index of planning-tools commands, the master-plan workflow lifecycle, the v0.3.0+ list-shape mandate (phases and questions as headings + bulleted scope items, never tables), the v0.3.2+ plain-bullet shape (no `- [ ]` checkboxes — heading emoji is the sole tick signal), the progress-entry methodology, and the mechanics of Claude Code's plan-mode file storage.
testing
This skill should be used by the plan-verifier agent and the /plan-verify command to audit a drafted master plan against a fixed checklist. Covers universal-core completeness, the v0.3.0+ no-tables-for-phases-or-questions rule, trigger-based section-coverage gaps, phase actionability (heading + per-phase TL;DR + bulleted scope + exit criteria), the v0.3.1+ per-phase TL;DR requirement, the v0.3.2+ plain-bullet scope shape (legacy `- [ ]`/`- [x]` accepted silently), the v0.3.3+ context-block shape (plan-level `**TL;DR:**` + bulleted metadata, legacy `>` blockquote accepted silently), integer phase numbering enforcement, dependency traceability, citation resolution, callout/evidence convention compliance, Open Questions placement, and the one-PR-per-master-plan rule. Single-owner of the audit checklist.
tools
This skill should be used when authoring, reviewing, or modifying a multi-phase master planning document via the planning-tools plugin (especially the /plan-master and /plan-verify commands). Codifies the universal core sections, trigger-based optional sections, integer-only phase numbering, Open Questions placement, one-PR-per-plan rule, status conventions, evidence attribution, callouts, cross-reference formats, the v0.3.0 list-shape mandate (phases and questions are heading + bulleted list, never markdown tables), the v0.3.1 per-phase TL;DR requirement (1–3 sentence what/why summary under each phase heading for glance-ability), the v0.3.2 plain-bullet scope shape (`- <action>` items, no `- [ ]` checkboxes — the phase status emoji is the sole tick signal), and the v0.3.3 context-block shape (a plan-level `**TL;DR:**` + a bulleted metadata list instead of a `>` blockquote; legacy blockquote blocks accepted silently). Project-agnostic — no ticket-prefix or plan-type taxonomy.
testing
This skill should be used when the user is adjusting spacing, padding, margins, content density, section gaps, vertical rhythm, or separation between elements. Also applies when reviewing whether a design feels cramped or too sparse, choosing between borders and whitespace for separation, or defining a spacing system. Covers the 4px/8px spacing system, macro vs micro whitespace, content density spectrum, separation techniques (whitespace > background shifts > borders), and vertical rhythm.