UI/UX Design System Advisor
Galaxy-Dawn/claude-scholar
Turns a vague UI request into a concrete design system with style, palette, typography and layout guidance from a search script, plus stack-specific implementation advice.
Build accessible UI with monochrome, the framework-agnostic UI library for agents.
$ npx skills add vaneenige/monochrome-ui --skill monochrome -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install vaneenige/monochrome-ui monochrome --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/vaneenige/monochrome-ui.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/monochrome .claude/skills/monochrome && 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 "monochrome" agent skill from https://github.com/vaneenige/monochrome-ui/tree/main/skills/monochrome into .claude/skills/monochrome/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "monochrome", 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/vaneenige/monochrome-ui/tree/main/skills/monochromeType 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 vaneenige/monochrome-ui --skill monochrome -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install vaneenige/monochrome-ui monochrome --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vaneenige/monochrome-ui.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/monochrome .agents/skills/monochrome && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "monochrome" agent skill from https://github.com/vaneenige/monochrome-ui/tree/main/skills/monochrome into .agents/skills/monochrome/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "monochrome", 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 vaneenige/monochrome-ui --skill monochrome -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install vaneenige/monochrome-ui monochrome --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vaneenige/monochrome-ui.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/monochrome .cursor/skills/monochrome && 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 "monochrome" agent skill from https://github.com/vaneenige/monochrome-ui/tree/main/skills/monochrome into .cursor/skills/monochrome/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "monochrome", 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/vaneenige/monochrome-ui.git --path skills/monochrome--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 vaneenige/monochrome-ui --skill monochrome -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install vaneenige/monochrome-ui monochrome --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vaneenige/monochrome-ui.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/monochrome .gemini/skills/monochrome && 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 "monochrome" agent skill from https://github.com/vaneenige/monochrome-ui/tree/main/skills/monochrome into .gemini/skills/monochrome/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "monochrome", 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 vaneenige/monochrome-ui monochromeInstalls 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 vaneenige/monochrome-ui --skill monochrome -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/vaneenige/monochrome-ui.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/monochrome .github/skills/monochrome && 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 "monochrome" agent skill from https://github.com/vaneenige/monochrome-ui/tree/main/skills/monochrome into .github/skills/monochrome/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "monochrome", 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 vaneenige/monochrome-ui --skill monochrome -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install vaneenige/monochrome-ui monochrome --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vaneenige/monochrome-ui.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/monochrome .opencode/skills/monochrome && 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 "monochrome" agent skill from https://github.com/vaneenige/monochrome-ui/tree/main/skills/monochrome into .opencode/skills/monochrome/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "monochrome", 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.
monochromeBuild accessible UI with monochrome, the framework-agnostic UI library for agents.
Monochrome is an agent skill from vaneenige/monochrome-ui. Build accessible UI with monochrome, the framework-agnostic UI library for agents. Use whenever a project depends on monochrome or has ids starting with mct:, mcc:, or mcr:, and whenever you write or fix an accordion, collapsible, dialog or modal, dropdown or context menu, menubar, popover, tabs, or tooltip in HTML, React, or Vue. Also use when asked to check, debug, or style such markup.
Its SKILL.md is about 2.3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Frontend & Design, covering Accessibility and Design systems. It works with React, Vue.js and TypeScript. The repository describes itself as: Accessible UI component library. Best performance out of the box. HTML first, React and Vue supported. The licence is MIT.
8 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 1fffdaa. 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.
Shell commands in SKILL.md call:
npxFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
cdn.jsdelivr.netFrom 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.
Monochrome loads about 2.3k tokens when it runs. Until then it costs about 101 tokens; SKILL.md has 1,187 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); files beside SKILL.md are not scanned.
The full file from vaneenige/monochrome-ui at commit 1fffdaa, republished under its MIT licence (© vaneenige). 1,187 words, ~2,264 tokens.
.claude/skills/monochrome/SKILL.md (or your agent's skills folder).monochrome makes correctly marked-up HTML interactive. Import it
once; every component on the page works, including markup added
later (framework renders, innerHTML, streamed or generated HTML).
There is no init call, no state object, and no event wiring. The
DOM is the state: the core reads and writes ARIA attributes.
Components: Accordion, Collapsible, Dialog, Menu, Menubar, Popover, Tabs, Tooltip. Optional: Router.
The spec for the installed version is in
node_modules/monochrome/spec/, one file per component plus
choosing, conventions, styling, and router;
spec/<topic>.md below means that folder. Without the package
installed, npx monochrome docs <topic> prints the same pages.
mct:<kind>:<id> is a trigger,
mcc:<kind>:<id> its content, mcr:<kind>:<id> a root. Every
id is unique on the page.aria-controls names the content id;
content aria-labelledby names the trigger id (a dialog names
its title). Accordion panels are role="region"; collapsible
content links back only as a role="region". Tooltip triggers
use aria-describedby. One id per attribute.<button type="button">. Only tooltip triggers
may be any focusable element.showModal(), no popovertarget, no useState for open state,
no handler that flips hidden or aria-*. The core does it.
Handlers for what an item does (onClick on a menu item) are
fine.aria-expanded="false" plus hidden, aria-selected,
aria-checked), then let the core own them. Disable with
aria-disabled="true", never disabled (the parts' disabled
prop renders aria-disabled for you).[aria-expanded="true"], [aria-selected="true"],
[aria-checked="true"], [data-mc-highlighted],
:popover-open, dialog[open]. Menus, popovers, and tooltips
need the Required CSS from their spec's Styling section, copied
as it is: it places them at their trigger from the variables and
the [data-mc-y] / [data-mc-x] side the core writes. Don't
write placement of your own. Pick a side and alignment with
data-mc-side (top, right, bottom, left) and
data-mc-align (start, center, end) on the content.import "monochrome" (or the CDN script)
for plain pages; in apps, the component files add writes (each
imports its own monochrome/<component> module).
Never both: listeners would register twice. When React or Vue
only renders HTML on the server (a static site, no client bundle
of the component files), their imports never reach the browser:
load the core once from the script every page runs, and drop
the core import (and "use client") from the component files
(spec/conventions.md, Server rendering).| Need | Use |
|---|---|
| List of actions or options, checkable items, submenus | Menu |
| Row of menus or dropdown navigation | Menubar |
| Interactive panel next to a button (form, share, picker) | Popover |
| Modal task or confirmation | Dialog |
| Short non-interactive hint on hover and focus | Tooltip |
| One show/hide region | Collapsible |
| Sections where only one is open | Accordion |
| Switch between peer panels | Tabs |
Details: spec/choosing.md.
npx monochrome add <component> installs monochrome at its
own version, saves settings in monochrome.json, and prints the
markup to start from (--json prints it all as JSON). In React
and Vue it writes the parts instead (src/components/ui/, or
components/ui/ without a src/ folder). For markup, add the
line it prints that loads the core.spec/<component>.md.aria-* and data-* variants, StyleX, or its design system.
The spec's Example shows one way; adapt it. Patterns:
spec/styling.md.spec/conventions.md (Verify), then the
component's Contract table, Common mistakes, and Design choices.New project: npx monochrome init installs the package, saves the
settings add uses, and adds a short block to AGENTS.md; it
works without a package.json too (pages then load the core from
a CDN). After an upgrade, apply the steps from
npx monochrome changelog --from <old version>, then verify again.
add prints the markup and
the tag that loads the core once per page:
<script type="module" src="https://cdn.jsdelivr.net/npm/monochrome/dist/index.js"></script>.add menu writes src/components/ui/menu.tsx
(.jsx without a tsconfig); import { Menu } from there (there is no
monochrome/react). Parts render the spec's markup with useId
ids. default* props are initial values; there is no controlled
open prop. The files are "use client"; your component that
passes handlers such as onClick needs it too (add prepends it
in Next.js). Shared rules: spec/conventions.md (Parts).add menu writes src/components/ui/menu/, one
single-file component per part and an index.ts; import
{ Menu } from there (there is no monochrome/vue) and write
<Menu.Root> in templates. Same markup, ids, and initial values
as the React parts; props take the template's kebab-case
(default-checked, keep-open). Shared rules:
spec/conventions.md (Parts).add prints the
markup (--framework html, the default without React or Vue);
write it in templates and import "monochrome" once in the app
entry. React below 19 or Vue below 3.5: the same, with
--framework html.MutationObserver; a trigger's own click handler runs before the
core and sees the old state.import "monochrome/router". Wrap each page in
data-mc-area="root"; mark sub-regions with data-mc-area="name" and a
data-mc-key (same key on both pages keeps the region). Same-origin
links swap in place; rel="external", target="_blank",
download, cross-origin links, and forms are left alone. Re-run
page scripts on addEventListener("mc:navigate", ...). Details:
spec/router.md.
role="button" on a standalone menu trigger, or
role="menuitem" on submenu and menubar triggers.li role="none" with the item first.li role="none" > ul role="group" named by its label
(Menu.Group label="…" with the parts). A submenu wrapper is
Menu.Sub.tabindex="0".role="tablist", exactly one
aria-selected="true".mcr:accordion:
root, heading first, button first inside it.popover="manual" (not auto) on menu, popover, and tooltip
content; role="dialog" on popover content; a <dialog> element
for dialogs.display on closed content overrides hidden and the popover
closed state; scope it to the open state.color-scheme (:root or .dark);
monochrome never does, so without it surfaces stay light.© vaneenige, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/monochrome of vaneenige/monochrome-ui.
Open the folder on GitHubat commit 1fffdaa
Monochrome 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 |
|---|---|---|---|---|---|---|
| Monochrome this skillvaneenige/monochrome-ui | 132 | — | ~2.3k | Automated safety check: Pass | MIT | |
| UI/UX Design System AdvisorGalaxy-Dawn/claude-scholar | 5.7k | 1 repos | ~1.1k | Automated safety check: Pass | MIT | |
| Connect Component To Figmadequelabs/cauldron | 129 | — | ~2k | Automated safety check: Pass | MPL-2.0 | |
| BeeqEndava/BEEQ | 163 | — | ~5.6k | Automated safety check: Pass | Apache-2.0 | |
| Component ForgeEliasOulkadi/shokunin | 114 | — | ~3.6k | Automated safety check: Notes | MIT | |
| Components BuildAsymmetric-al/core | 381 | — | ~2.1k | Automated safety check: Pass | MIT |
Galaxy-Dawn/claude-scholar
Turns a vague UI request into a concrete design system with style, palette, typography and layout guidance from a search script, plus stack-specific implementation advice.
dequelabs/cauldron
Add a Figma Code Connect (.figma.tsx) file for a Cauldron React component.
Endava/BEEQ
Builds, styles, and reviews UI with BEEQ, Endava's web-component design system.
EliasOulkadi/shokunin
Build production-grade components for React, Vue 3, and Svelte 5 with all states (loading, empty, error, success, idle), TypeScript strict, WCAG 2.2 accessibility, server components (RSC), and…
Asymmetric-al/core
Build modern, composable, and accessible React UI components following the components.build specification.
Light0305/Light-skills
Light 按需工程技能·前端设计:把模糊的「做个好看的界面」落成能跑的 React/Tailwind/shadcn 代码 + 设计决策说明—— 有视觉记忆点(signature element)、风格自洽(design tokens 一致)、适配场景(学术海报/数据大屏/管理后台/移动端/营销 landing 信息密度各不同)、反「一眼 AI」(紫蓝渐变/Inter/16px 圆角/巨型…
Works with
Categories
Build accessible UI with monochrome, the framework-agnostic UI library for agents. Monochrome is an agent skill from vaneenige/monochrome-ui. Build accessible UI with monochrome, the framework-agnostic UI library for agents.
Monochrome fits situations like: A project depends on monochrome; has ids starting with mct:; whenever you write; fix an accordion.
Run `npx skills add vaneenige/monochrome-ui --skill monochrome -a claude-code`. Or copy the skill folder (skills/monochrome in vaneenige/monochrome-ui) into .claude/skills/monochrome in your project. Claude Code loads it when a task matches its description.
Run `npx skills add vaneenige/monochrome-ui --skill monochrome -a codex`. Or copy the skill folder (skills/monochrome in vaneenige/monochrome-ui) into .agents/skills/monochrome 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 vaneenige/monochrome-ui --skill monochrome -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/monochrome, .gemini/skills/monochrome, .github/skills/monochrome and .opencode/skills/monochrome in your project.
Going by SKILL.md and its folder, Monochrome needs the command-line tools its instructions call (npx). Our summary lists: Node.js.
SKILL.md names 1 domain. In commands or code: cdn.jsdelivr.net; the agent is likely to contact it when it follows the instructions. 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. Review the folder before installing.
Monochrome is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.3k tokens (SKILL.md is roughly 9.1k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Monochrome: UI/UX Design System Advisor (Galaxy-Dawn/claude-scholar, 5.7k stars), Connect Component To Figma (dequelabs/cauldron, 129 stars), Beeq (Endava/BEEQ, 163 stars) and Component Forge (EliasOulkadi/shokunin, 114 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
vaneenige (a GitHub user) maintains it in vaneenige/monochrome-ui, which has 132 GitHub stars. The repository was last updated on October 7, 2026.
Source: vaneenige/monochrome-ui on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.