Material Design 3 UI/UX Guide
skydashnet/material-design-3-ui-skill
Guides designing, reviewing or implementing interfaces that follow Google's Material Design 3 system: semantic tokens, component states, adaptive layout and accessibility.
Design tokens, light/dark theming, and WCAG contrast validation for HTML documents and decks, compiled into one inlinable CSS bundle.
$ npx skills add borghei/Claude-Skills --skill design-system -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install borghei/Claude-Skills design-system --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/borghei/Claude-Skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/markdown-html/design-system .claude/skills/design-system && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "design-system" agent skill from https://github.com/borghei/Claude-Skills/tree/main/markdown-html/design-system into .claude/skills/design-system/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "design-system", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/borghei/Claude-Skills/tree/main/markdown-html/design-systemType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add borghei/Claude-Skills --skill design-system -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install borghei/Claude-Skills design-system --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/borghei/Claude-Skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/markdown-html/design-system .agents/skills/design-system && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "design-system" agent skill from https://github.com/borghei/Claude-Skills/tree/main/markdown-html/design-system into .agents/skills/design-system/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "design-system", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add borghei/Claude-Skills --skill design-system -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install borghei/Claude-Skills design-system --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/borghei/Claude-Skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/markdown-html/design-system .cursor/skills/design-system && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "design-system" agent skill from https://github.com/borghei/Claude-Skills/tree/main/markdown-html/design-system into .cursor/skills/design-system/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "design-system", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/borghei/Claude-Skills.git --path markdown-html/design-system--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add borghei/Claude-Skills --skill design-system -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install borghei/Claude-Skills design-system --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/borghei/Claude-Skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/markdown-html/design-system .gemini/skills/design-system && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "design-system" agent skill from https://github.com/borghei/Claude-Skills/tree/main/markdown-html/design-system into .gemini/skills/design-system/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "design-system", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install borghei/Claude-Skills design-systemInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add borghei/Claude-Skills --skill design-system -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/borghei/Claude-Skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/markdown-html/design-system .github/skills/design-system && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "design-system" agent skill from https://github.com/borghei/Claude-Skills/tree/main/markdown-html/design-system into .github/skills/design-system/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "design-system", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add borghei/Claude-Skills --skill design-system -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install borghei/Claude-Skills design-system --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/borghei/Claude-Skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/markdown-html/design-system .opencode/skills/design-system && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "design-system" agent skill from https://github.com/borghei/Claude-Skills/tree/main/markdown-html/design-system into .opencode/skills/design-system/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "design-system", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
design-systemDesign tokens, light/dark theming, and WCAG contrast validation for HTML documents and decks, compiled into one inlinable CSS bundle.
Design System is an agent skill from borghei/Claude-Skills. Design tokens, light/dark theming, and WCAG contrast validation for HTML documents and decks, compiled into one inlinable CSS bundle. Use when theming a report or deck, auditing contrast, or fixing dark-mode color drift.
Its SKILL.md is about 3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 11 other files, including scripts, reference files and assets (for example `assets/sample_tokens.json`, `assets/sample_tokens_legacy.json` and `assets/theme_brief_template.md`).
It sits in Frontend & Design, covering Theming and dark mode, Design systems and Accessibility. The repository describes itself as: 385 AI skills, 77 expert agents, and 900 stdlib Python tools for every team: engineering, PM, marketing, C-level, compliance, business ops, research, and a LinkedIn toolkit… The licence is MIT.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit c9a1487. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 3 files in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
python3From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Design System loads about 3k tokens when it runs, and up to ~9k if it reads all its reference files. Until then it costs about 59 tokens; SKILL.md has 1,533 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from borghei/Claude-Skills at commit c9a1487, republished under its MIT licence (© borghei). 1,533 words, ~3,018 tokens.
.claude/skills/design-system/SKILL.md (or your agent's skills folder). This skill also uses 8 other files; get the full folder from GitHub.The visual layer for HTML documents and slide decks: a token file in, a single self-contained CSS bundle out, with every color pairing checked against WCAG before it ships. This is the theming layer for documents — type scales, reading measure, print roles, light/dark surfaces. It is not a product UI component library; there are no buttons, form states, or component variants here.
assets/sample_tokens.json)Before generating a theme, confirm these inputs. If any is unknown or vague, ASK — do not assume:
Stop rule: ask only the 2-3 that most change the output. If the user says "just draft it," proceed and list your assumptions at the top of the artifact.
assets/sample_tokens.json and edit the palette, roles, and scales.python3 markdown-html/design-system/scripts/token_linter.py \
--input markdown-html/design-system/assets/sample_tokens.json --format text
python3 markdown-html/design-system/scripts/theme_builder.py \
--input markdown-html/design-system/assets/sample_tokens.json \
--out build/theme.css --format textpairings block,
each with its usage class.--all-pairs to find combinations nobody declared but a stylesheet will
eventually produce, and --level AAA --no-gate as an aspirational report.python3 markdown-html/design-system/scripts/contrast_validator.py \
--input markdown-html/design-system/assets/sample_tokens.json \
--level AA --format text
python3 markdown-html/design-system/scripts/contrast_validator.py \
--input markdown-html/design-system/assets/sample_tokens.json \
--level AAA --no-gate --format json--all-pairs to get the full contrast matrix.assets/sample_tokens_legacy.json is a deliberately damaged theme carrying all
four failure classes, so this workflow demonstrates real repair rather than a
clean run. Expect findings from both commands: the linter reports 4 errors and
5 warnings and exits 2; the validator is pinned to report-only with
--no-gate and finds 13 failing pairings.
python3 markdown-html/design-system/scripts/token_linter.py \
--input markdown-html/design-system/assets/sample_tokens_legacy.json \
--max-severity warning --format json
python3 markdown-html/design-system/scripts/contrast_validator.py \
--input markdown-html/design-system/assets/sample_tokens_legacy.json \
--all-pairs --no-gate --format text| Ratio | Name | Use for | Top step of an 8-step scale |
|---|---|---|---|
| 1.125 | Major second | Dense reference docs | 1.8x base |
| 1.200 | Minor third | Technical documentation | 2.5x base |
| 1.250 | Major third | Reports, whitepapers [PROVEN] | 3.1x base |
| 1.333 | Perfect fourth | Slide decks [PROVEN] | 4.2x base |
| 1.500 | Perfect fifth | Title treatments only | 8.5x base — unusable in a document |
Use 1.25 for documents and 1.333 for decks. A document needs 7-8 usable steps from caption to H1; at 1.5 the top of that range is 8.5x the base, which no report can place on a page. Escape hatch: a single-page poster or title card can use 1.5 because it has one heading and no hierarchy to preserve.
| Class | Threshold (AA) | Applies to | WCAG criterion |
|---|---|---|---|
body | 4.5:1 | Body copy, captions, footnotes, inline links | 1.4.3 |
large | 3:1 | Text >= 18.66px bold or >= 24px regular | 1.4.3 |
ui | 3:1 | Component boundaries, meaningful graphics | 1.4.11 |
decor | 1.5:1 | Table rules, dividers — losslessly removable | none (practical floor) |
Classify honestly. A border that is the only thing separating two data regions is
ui, not decor. The 1.5:1 decor floor is not a WCAG number — it is the point
below which a rule stops being visible on a mid-quality screen, so it fails at its
decorative job too.
| Element | Gate | Target | Why the target exceeds the gate |
|---|---|---|---|
| Body text | 4.5:1 | 10-16:1 | Below ~8:1 tires sustained reading; above ~17:1 causes halation on OLED |
| Captions | 4.5:1 | 5.5-8:1 | Must stay subordinate to body yet readable |
| Code text | 4.5:1 | 9-14:1 | Measured against its own tinted surface |
| Focus ring | 3:1 | 3-6:1 | Against both the element and the adjacent background |
[RECOMMENDED] Do not use pure black on pure white. 21:1 is the maximum and it is worse than ~16:1 for extended reading — glyph edges bleed on bright displays, and readers with astigmatism report the most discomfort at that pairing.
| Light role points at | Dark role points at | Reason |
|---|---|---|
| neutral 900 (text) | neutral 100 | Read the same ramp from the other end |
| neutral 0 (surface) | neutral 1000 | Not pure black — 1000 leaves room for raised surfaces |
| accent 600 | accent 300 | [PROVEN] Move accents 2-3 steps, not 1 |
Moving an accent only one step is the most common dark-mode bug in this domain:
accent.600 scores 5.9:1 on white and 3.4:1 on near-black, so it passes the light
gate and fails the dark one.
Mistake: Defining light-text and dark-text as two separate roles instead of one text role with two mode values.
Why it happens: It mirrors how the designer thinks — two comps, two palettes — and each role reads unambiguously in isolation.
Instead: Keep one semantic role and let roles.light and roles.dark supply the values. The mode belongs in the mode map, not the name. The linter's parity check enforces this by failing any role defined in only one mode.
Mistake: Hard-coding one color directly in a component rule because no existing role quite fits.
Why it happens: Adding a role feels like ceremony for a one-off, and the deadline is real.
Instead: Add the role or reuse the nearest one. That hard-coded value will not respond to theming and surfaces months later as the single element that stays dark in light mode. The linter flags it as ROLE_LITERAL specifically because it is always cheaper to fix on the day it is written.
Mistake: Authoring the light theme carefully, mechanically inverting for dark, and never rendering the result. Why it happens: Dark mode looks like a mechanical transform, and the CSS compiles either way. Instead: Run the contrast validator across both modes — it checks every mode in the roles map for exactly this reason — and then actually open the document in dark mode. The failures cluster in the mode nobody looked at, especially in saturated accent and warning colors.
Mistake: Treating a passing validator as proof the theme is accessible. Why it happens: The tool gives a number and the number is above the threshold, which feels conclusive. Instead: Read the list of what pairing math cannot see: text over images, semi-transparent overlays, hover and focus states nobody declared, two chart series that both pass against the background but not against each other, and red/green pairs at equal luminance that pass every ratio test and vanish for a deuteranopic reader. Contrast ratio is a luminance metric and is hue-blind by construction.
Mistake: Adding a role per component — table-header-bg, figure-caption-color, toc-link-hover.
Why it happens: Each addition is locally reasonable; no single one looks like a mistake.
Instead: Treat roles as a vocabulary, not a mapping table. Eleven roles cover a document; twenty is a smell; forty means the semantic and component layers have merged and the theme can no longer be re-skinned.
| File | Purpose |
|---|---|
scripts/theme_builder.py | Compile a token JSON file into one inlinable CSS bundle with light/dark blocks |
scripts/contrast_validator.py | Score every declared pairing against WCAG AA/AAA in both modes; CI gate |
scripts/token_linter.py | Structural audit — scale sanity, ramp monotonicity, mode parity, orphan stops |
references/token-architecture.md | Three-layer token model, role vocabulary, type and spacing scales, dark-mode delivery |
references/wcag-contrast-reference.md | Luminance math, thresholds, exemptions, remediation recipes, blind spots |
assets/sample_tokens.json | Working token file — passes the linter and the AA gate as shipped |
assets/sample_tokens_legacy.json | Deliberately damaged theme for Workflow 3: non-monotonic ramp, mode-parity gap, literal hex, un-re-anchored dark accent |
assets/theme_brief_template.md | Pre-work brief: decisions to settle before writing hex values |
All scripts share one exit-code contract: 0 clean, 2 gate failed (findings at or above the threshold), 1 the tool itself errored. A CI job can therefore tell a real defect from a broken invocation.
© borghei, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 8 other files (scripts, references, assets) in markdown-html/design-system of borghei/Claude-Skills.
Open the folder on GitHubat commit c9a1487
Design System next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Design System this skillborghei/Claude-Skills | 874 | — | ~3k | Automated safety check: Pass | MIT | |
| Material Design 3 UI/UX Guideskydashnet/material-design-3-ui-skill | 130 | — | ~3k | Automated safety check: Pass | MIT | |
| UI Design Systemtry-works/role-model | 117 | — | ~5k | Automated safety check: Pass | MIT | |
| Apply Aestheticplugin87/ux-ui-agent-skills | 1.5k | — | ~597 | Automated safety check: Pass | MIT | |
| Brand Kit Design Tokensplugin87/ux-ui-agent-skills | 1.5k | — | ~809 | Automated safety check: Pass | MIT | |
| Applying UI Design Systemtelagod/code-abyss | 244 | — | ~538 | Automated safety check: Pass | MIT |
skydashnet/material-design-3-ui-skill
Guides designing, reviewing or implementing interfaces that follow Google's Material Design 3 system: semantic tokens, component states, adaptive layout and accessibility.
try-works/role-model
React UI component systems with TailwindCSS + Radix + shadcn/ui.
plugin87/ux-ui-agent-skills
Applies a chosen visual direction, an archetype or one of 138 named design systems, by remapping design tokens, then checks contrast before it finishes.
plugin87/ux-ui-agent-skills
Builds a from-scratch brand design system as three-tier DTCG tokens plus one theme.css with light and dark modes, checked against WCAG contrast rules.
telagod/code-abyss
Frontend UI design system selector and implementation guide covering Glassmorphism, Liquid Glass (Apple-style), Neubrutalism, and Claymorphism.
chakra-ui/chakra-ui
Builds responsive, accessible Chakra UI v3 components and layouts, sets up Chakra in new or existing projects, and designs themes with tokens, semantic tokens and recipes.
borghei/Claude-Skills
Run delivery when AI coding and ops agents take tickets. An agent skill from borghei/Claude-Skills.
borghei/Claude-Skills
Check AI-generated marketing content and reviews for required disclosures under the EU AI Act, FTC rules and platform AI-label policies.
borghei/Claude-Skills
Idea to AI-generated prototype to customer validation to engineering handoff.
borghei/Claude-Skills
Analytics engineering across data modeling, dbt, transformation, and semantic layers.
borghei/Claude-Skills
Ansoff Matrix — 4-quadrant framework for growth options: market penetration, market/product development, and diversification.
borghei/Claude-Skills
OKR brainstorming and validation using the Radical Focus framework — outcome objectives, measurable key results, counter-metrics.
Categories
Design tokens, light/dark theming, and WCAG contrast validation for HTML documents and decks, compiled into one inlinable CSS bundle. Design System is an agent skill from borghei/Claude-Skills. Design tokens, light/dark theming, and WCAG contrast validation for HTML documents and decks, compiled into one inlinable CSS bundle.
Design System fits situations like: theming a report; auditing contrast; fixing dark-mode color drift.
Run `npx skills add borghei/Claude-Skills --skill design-system -a claude-code`. Or copy the skill folder (markdown-html/design-system in borghei/Claude-Skills) into .claude/skills/design-system in your project. Claude Code loads it when a task matches its description.
Run `npx skills add borghei/Claude-Skills --skill design-system -a codex`. Or copy the skill folder (markdown-html/design-system in borghei/Claude-Skills) into .agents/skills/design-system in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add borghei/Claude-Skills --skill design-system -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/design-system, .gemini/skills/design-system, .github/skills/design-system and .opencode/skills/design-system in your project.
Going by SKILL.md and its folder, Design System needs Python for the scripts in its folder and the command-line tools its instructions call (python3). Our summary lists: Python 3.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Design System is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 3k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 6k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Design System: Material Design 3 UI/UX Guide (skydashnet/material-design-3-ui-skill, 130 stars), UI Design System (try-works/role-model, 117 stars), Apply Aesthetic (plugin87/ux-ui-agent-skills, 1.5k stars) and Brand Kit Design Tokens (plugin87/ux-ui-agent-skills, 1.5k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
borghei (a GitHub user) maintains it in borghei/Claude-Skills, which has 874 GitHub stars. The repository holds 364 skills in this directory. The repository was last updated on October 7, 2026.
Source: borghei/Claude-Skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.