Skillshare UI Website Style
JetBrains/skills
Skillshare frontend design system for the React dashboard (ui/) and Docusaurus website (website/).
CSS Modules conventions, Stylelint rules, design tokens (spacing, colors, typography, border-radius), and patterns for the Opentrons monorepo.
$ npx skills add Opentrons/opentrons --skill css-modules -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Opentrons/opentrons css-modules --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/Opentrons/opentrons.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.cursor/skills/css-modules .claude/skills/css-modules && 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 "css-modules" agent skill from https://github.com/Opentrons/opentrons/tree/edge/.cursor/skills/css-modules into .claude/skills/css-modules/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "css-modules", 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/Opentrons/opentrons/tree/edge/.cursor/skills/css-modulesType 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 Opentrons/opentrons --skill css-modules -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Opentrons/opentrons css-modules --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Opentrons/opentrons.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.cursor/skills/css-modules .agents/skills/css-modules && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "css-modules" agent skill from https://github.com/Opentrons/opentrons/tree/edge/.cursor/skills/css-modules into .agents/skills/css-modules/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "css-modules", 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 Opentrons/opentrons --skill css-modules -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Opentrons/opentrons css-modules --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Opentrons/opentrons.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.cursor/skills/css-modules .cursor/skills/css-modules && 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 "css-modules" agent skill from https://github.com/Opentrons/opentrons/tree/edge/.cursor/skills/css-modules into .cursor/skills/css-modules/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "css-modules", 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/Opentrons/opentrons.git --path .cursor/skills/css-modules--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 Opentrons/opentrons --skill css-modules -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Opentrons/opentrons css-modules --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Opentrons/opentrons.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.cursor/skills/css-modules .gemini/skills/css-modules && 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 "css-modules" agent skill from https://github.com/Opentrons/opentrons/tree/edge/.cursor/skills/css-modules into .gemini/skills/css-modules/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "css-modules", 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 Opentrons/opentrons css-modulesInstalls 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 Opentrons/opentrons --skill css-modules -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Opentrons/opentrons.git skills-src && mkdir -p .github/skills && cp -r skills-src/.cursor/skills/css-modules .github/skills/css-modules && 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 "css-modules" agent skill from https://github.com/Opentrons/opentrons/tree/edge/.cursor/skills/css-modules into .github/skills/css-modules/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "css-modules", 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 Opentrons/opentrons --skill css-modules -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Opentrons/opentrons css-modules --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Opentrons/opentrons.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.cursor/skills/css-modules .opencode/skills/css-modules && 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 "css-modules" agent skill from https://github.com/Opentrons/opentrons/tree/edge/.cursor/skills/css-modules into .opencode/skills/css-modules/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "css-modules", 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.
css-modulesCSS Modules conventions, Stylelint rules, design tokens (spacing, colors, typography, border-radius), and patterns for the Opentrons monorepo.
CSS Modules is an agent skill from Opentrons/opentrons. CSS Modules conventions, Stylelint rules, design tokens (spacing, colors, typography, border-radius), and patterns for the Opentrons monorepo. Use when working with .module.css files or styling React components in app/, components/, protocol-visualization/, protocol-designer/, or other JS packages.
Its SKILL.md is about 2.2k 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 Design tokens, Typography and React components. The repository describes itself as: Software for writing protocols and running them on the Opentrons Flex and Opentrons OT-2. The licence is Apache-2.0.
Read from SKILL.md and the folder at commit a14fef9. 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:
makepnpmFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
github.comFrom 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.
CSS Modules loads about 2.2k tokens when it runs. Until then it costs about 78 tokens; SKILL.md has 578 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 Opentrons/opentrons at commit a14fef9, republished under its Apache-2.0 licence (© Opentrons). 578 words, ~2,209 tokens.
.claude/skills/css-modules/SKILL.md (or your agent's skills folder).File names are lowercase, no separators, suffixed with .module.css, and match the component name:
ComponentName/
├── index.tsx
├── componentname.module.css
└── **tests**/
└── ComponentName.test.tsxExamples: navbar.module.css, labwarebutton.module.css, textareafield.module.css
Stylelint enforces the pattern /^[a-z0-9_]+$/ — snake_case only (lowercase letters, digits, underscores).
Use a component_element or element_modifier structure:
/* Base classes */
.button {
}
.slider_container {
}
.crumb_link {
}
/* State/modifier variants */
.button_active {
}
.textarea_error {
}
.title_text_center {
}
.crumb_link_inactive {
}import styles from './componentname.module.css'
export function MyComponent(): JSX.Element {
return <div className={styles.wrapper}>content</div>
}clsxUse clsx for combining or conditionally applying classes:
import clsx from 'clsx'
import styles from './componentname.module.css'
export function MyButton({ isActive, isError }: Props): JSX.Element {
const className = clsx(styles.button, {
[styles.button_active]: isActive,
[styles.button_error]: isError,
})
return <button className={className}>Click</button>
}All tokens are defined in components/src/styles/global.css. Always use these variables instead of hard-coding values for colors, spacing, typography, and border-radius.
| Variable | Value |
|---|---|
--spacing-2 | 0.125rem (2px) |
--spacing-4 | 0.25rem (4px) |
--spacing-6 | 0.375rem (6px) |
--spacing-8 | 0.5rem (8px) |
--spacing-10 | 0.625rem (10px) |
--spacing-12 | 0.75rem (12px) |
--spacing-16 | 1rem (16px) |
--spacing-20 | 1.25rem (20px) |
--spacing-24 | 1.5rem (24px) |
--spacing-32 | 2rem (32px) |
--spacing-40 | 2.5rem (40px) |
--spacing-44 | 2.75rem (44px) |
--spacing-48 | 3rem (48px) |
--spacing-60 | 3.75rem (60px) |
--spacing-68 | 4.25rem (68px) |
--spacing-80 | 5rem (80px) |
--spacing-120 | 7.5rem (120px) |
Core: --white (#fff), --black-90 (#16212d), --black-80 (#24313f), --black-70 (#39495b)
Grey: --grey-10 through --grey-60 (10, 20, 30, 35, 40, 50, 55, 60)
Blue: --blue-10 through --blue-60 (10, 20, 30, 35, 40, 50, 55, 60)
Purple: --purple-20 through --purple-60 (20, 30, 35, 40, 50, 55, 60)
Green: --green-20 through --green-60 (20, 30, 35, 40, 50, 60)
Red: --red-20 through --red-60 (20, 30, 35, 40, 50, 55, 60)
Yellow: --yellow-20 through --yellow-60 (20, 30, 35, 40, 50, 60)
Flex brand: --flex-20 through --flex-60 (20, 30, 35, 40, 50, 55, 60)
Semi-transparent white: --transparent-white-20 through --transparent-white-80 (20, 30, 50, 80)
Semi-transparent black: --transparent-black-10 through --transparent-black-80 (10, 20, 30, 40, 50, 60, 80)
transparent: --transparent
Some colors (green, purple) have touchscreen variants that activate when
components/src/styles/global.cssapplies the.enable_touchscreen_colorsclass. The default values are non-touchscreen.
--border-radius-2, --border-radius-4, --border-radius-8, --border-radius-12, --border-radius-16, --border-radius-40, --border-radius-full (pill/circle)
Font size: --font-size-9, --font-size-10, --font-size-11, --font-size-12, --font-size-13, --font-size-14, --font-size-15, --font-size-16, --font-size-18, --font-size-19, --font-size-20, --font-size-22, --font-size-23, --font-size-24, --font-size-26, --font-size-28, --font-size-32, --font-size-38, --font-size-39, --font-size-80
Font weight: --font-weight-light (300), --font-weight-regular (400), --font-weight-semi-bold (600), --font-weight-bold (700)
Line height: --line-height-12, --line-height-16, --line-height-18, --line-height-20, --line-height-24, --line-height-28, --line-height-36, --line-height-42, --line-height-48, --line-height-96
| Property | Use token? | Example |
|---|---|---|
color, background-color, border-color | Yes | var(--blue-50) |
padding, margin, gap | Yes | var(--spacing-16) |
border-radius | Yes | var(--border-radius-8) |
font-size | Yes | var(--font-size-p) |
font-weight | Yes | var(--font-weight-semi-bold) |
line-height | Yes | var(--line-height-20) |
width, height, max-width, min-height | No — use explicit rem | 15rem, 100vh |
box-shadow | No — use px | 0 0 0 2px var(--blue-50) |
240px / 16 = 15rem)box-shadow values and <img> tag dimensionspadding over margin for wrapper and container elementscalc() expressions.button:focus {
outline: none;
box-shadow: 0 0 0 2px var(--blue-50);
}
.button:hover:not(:disabled) {
background-color: var(--grey-10);
}
.button:disabled {
opacity: 0.5;
cursor: not-allowed;
}
.input:focus {
border-color: var(--blue-50);
}Always guard hover styles with :not(:disabled) on interactive elements.
Stylelint allows the composes property for class composition:
.base_button {
padding: var(--spacing-8) var(--spacing-16);
border-radius: var(--border-radius-4);
}
.primary_button {
composes: base_button;
background-color: var(--blue-50);
color: var(--white);
}Use :global() to target non-module classes (e.g., from React Router or third-party libraries):
.nav_link:global(.active) {
color: var(--blue-50);
}The repo uses stylelint-config-standard + stylelint-config-idiomatic-order (property ordering). Key enforced rules:
/^[a-z0-9_]+$/width, height, flex)@value at-rule is still allowed but deprecated — avoid in new codeZero lengths must have no unit (length-zero-no-unit):
/* ✖ Unexpected unit */
box-shadow: 0px 3px 6px rgb(0 0 0 / 23%);
/* ✔ Use bare 0 — no px/rem/etc. */
box-shadow: 0 3px 6px rgb(0 0 0 / 23%);Use modern rgb notation (color-function-alias-notation, color-function-notation):
/* ✖ rgba + comma-separated args are legacy */
box-shadow: 0 3px 6px rgba(0, 0, 0, 23%);
/* ✔ Prefer rgb with space-separated channels and / alpha */
box-shadow: 0 3px 6px rgb(0 0 0 / 23%);# Lint all CSS
make lint-css
# Auto-fix all CSS
make format-css
# Lint a single file
pnpm stylelint path/to/componentname.module.css
# Auto-fix a single file
pnpm stylelint path/to/componentname.module.css --fixAlways run make lint-css and fix any issues before committing.
components/src/styles/borders.module.css — old border tokens (--bd-radius-*, --bd-width-*, --shadow-lvl-*). Use global.css tokens instead.components/src/styles/typography.module.css — old typography tokens (--fs-*, --fw-*, --lh-*). Use global.css tokens instead.styled-components — the codebase is migrating away. Always use CSS Modules for new styles.@value declarations — still parsed by stylelint but deprecated. Use CSS custom properties.© Opentrons, Apache-2.0. 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 .cursor/skills/css-modules of Opentrons/opentrons.
Open the folder on GitHubat commit a14fef9
CSS Modules 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 |
|---|---|---|---|---|---|---|
| CSS Modules this skillOpentrons/opentrons | 521 | — | ~2.2k | Automated safety check: Pass | Apache-2.0 | |
| Skillshare UI Website StyleJetBrains/skills | 364 | — | ~3.1k | Automated safety check: Pass | None | |
| Tailwindcss Developmentanonaddy/anonaddy | 4.9k | 10 repos | ~865 | Automated safety check: Pass | MIT | |
| Design SystemOhh-889/skyroc | 795 | 11 repos | ~1.7k | Automated safety check: Pass | MIT | |
| Stitch Taste Design Systemgoogle-labs-code/stitch-skills | 8.4k | 15 repos | ~3.1k | Automated safety check: Pass | Apache-2.0 | |
| Scalar Design Systemscalar/scalar | 16k | — | ~2.7k | Automated safety check: Pass | MIT |
JetBrains/skills
Skillshare frontend design system for the React dashboard (ui/) and Docusaurus website (website/).
anonaddy/anonaddy
Always invoke when the user's message includes 'tailwind' in any form.
Ohh-889/skyroc
Token architecture, component specifications, and slide generation.
google-labs-code/stitch-skills
Generates a DESIGN.md design-language file for Google Stitch that encodes color, typography, layout, component behavior and motion rules to avoid generic AI-looking UI.
scalar/scalar
Scalar's design system — design tokens, theming (@scalar/themes), CSS variables, and the @scalar/components library.
paperclipai/paperclip
Paperclip UI design system guide for building consistent, reusable frontend components.
Opentrons/opentrons
Conventions for the opentrons-ai-client React/TypeScript frontend — project structure, API integration, state management (Jotai), feature flags, types, and testing.
Opentrons/opentrons
Conventions for the opentrons-ai-server FastAPI service — project structure, uv dependency management, settings, testing, Docker, and deployment.
Opentrons/opentrons
Conventions for the analyses snapshot testing framework in analyses-snapshot-testing/.
Opentrons/opentrons
Authoring and styling guidelines for the Opentrons /docs MkDocs project.
Opentrons/opentrons
E2E testing conventions for Protocol Designer and Labware Library using Playwright + pytest in e2e-testing/.
Opentrons/opentrons
Vite demo and Playwright + Applitools tests for packed @opentrons JS packages in js-package-testing/.
Categories
CSS Modules conventions, Stylelint rules, design tokens (spacing, colors, typography, border-radius), and patterns for the Opentrons monorepo. CSS Modules is an agent skill from Opentrons/opentrons. CSS Modules conventions, Stylelint rules, design tokens (spacing, colors, typography, border-radius), and patterns for the Opentrons monorepo.
CSS Modules fits situations like: working with .module.css files; styling React components in app/; protocol-visualization/; protocol-designer/.
Run `npx skills add Opentrons/opentrons --skill css-modules -a claude-code`. Or copy the skill folder (.cursor/skills/css-modules in Opentrons/opentrons) into .claude/skills/css-modules in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Opentrons/opentrons --skill css-modules -a codex`. Or copy the skill folder (.cursor/skills/css-modules in Opentrons/opentrons) into .agents/skills/css-modules 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 Opentrons/opentrons --skill css-modules -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/css-modules, .gemini/skills/css-modules, .github/skills/css-modules and .opencode/skills/css-modules in your project.
Going by SKILL.md and its folder, CSS Modules needs the command-line tools its instructions call (make and pnpm).
SKILL.md names 1 domain. As links in the text: github.com. 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.
CSS Modules is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.2k tokens (SKILL.md is roughly 8.8k 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 CSS Modules: Skillshare UI Website Style (JetBrains/skills, 364 stars), Tailwindcss Development (anonaddy/anonaddy, 4.9k stars), Design System (Ohh-889/skyroc, 795 stars) and Stitch Taste Design System (google-labs-code/stitch-skills, 8.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Opentrons (a GitHub organization) maintains it in Opentrons/opentrons, which has 521 GitHub stars. The repository holds 17 skills in this directory. The repository was last updated on October 7, 2026.
Source: Opentrons/opentrons on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.