component-sizing-principles
Use when picking a control height (button / input / chip / badge), proposing a component-height or icon-size ladder for a density mode, or auditing one-off…
Skill by thrillmade
Chalk Labs
Need help deploying component-sizing-principles?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/thrillmade-component-sizing-principles
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: design, frontend, agent-building
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/component-sizing-principles
What's inside
- Skill name
component-sizing-principles- Description
- Use when picking a control height (button / input / chip / badge), proposing a component-height or icon-size ladder for a density mode, or auditing one-off heights drifting across a codebase. Names the universal principles: ladders are curated, not formula-derived — formula-clean values render poorly and blur rung distinctions; every interactive control clears the WCAG 2.5.8 AA 24 CSS px target-size floor, with the smallest rung reserved for non-interactive elements; each rung pairs its height with a type-scale font size and a curated icon size; sibling controls in one surface share a rung. Cite when an agent derives heights from a ratio, picks an off-ladder height, or puts an interactive control below 24 px. For one system's concrete rung sets see udts-component-sizing-ladders.
- License
- MIT
- Instructions
- 86 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# Component sizing principles Component heights and icon sizes are **curated**, not formula-derived. A good ladder picks each height so it pairs cleanly with a font from the type scale, an icon from the icon set, and target-size requirements — and so each rung distinguishes visually from its neighbors. This skill names the universal principles; it is deliberately system-neutral. For one concrete instantiation — the per-density rung sets with their exact heights, fonts, and icon pairings — see [udts-component-sizing-ladders](../udts-component-sizing-ladders/SKILL.md). ## When to use - Picking a height for a button, input, chip, badge, dropdown, or any other rectangular interactive control. - Proposing a control-height or icon-size ladder for a new density mode. - Auditing one-off heights (`h-7`, `h-9`, `h-11`) drifting across a codebase. - Code review: flag heights outside the curated ladder; propose the nearest curated rung with rationale. ## When NOT to use - One-off marketing CTAs designed for a specific page (e.g. hero buttons at 72 px). A ladder governs recurring controls, not single-surface designs. - Non-rectangular controls (circular avatars, range thumbs) where the size is governed by the icon or asset, not a height token. ## Ladders are curated, not formula-derived A formula `height → font-size → icon-size` produces *mathematically clean* values that *render poorly*. Curate the rungs by hand instead, for three reasons: - **Formula heights create visually indistinct rungs.** Heights at every fixed step (24, 28, 32, 36, ...) are hard to tell apart in a stack — adjacent rungs blur, so the ladder loses its job of signalling hierarchy. - **Off-scale font sizes clash with the typography system.** A formula lands on sizes like 13, 15, 17 that sit outside the modular scale and read as noise next to type set from [type-scale](../type-scale/SKILL.md). - **Off-curve icon sizes glitch at common zoom levels.** Icon sizes outside the curated set render with hairline artifacts at ordinary zoom. A curated ladder trades flexibility for visual distinguishability, predictable pairing, and target-size safety. Design systems benefit from less flexibility at this layer. ## The rung-pairing principle Each rung pairs its height with **a font size from the type scale** and **a curated icon size**. The pairings are fixed per rung, not chosen ad hoc per instance. One invariant holds across every rung: **the icon is never smaller than the paired font size** — an undersized icon next to its label reads as a rendering bug. Ladders are conventionally labelled with T-shirt sizes (`xs` / `sm` / `md` / `lg` / `xl`) so the rung, its font, and its icon travel together under one name. ## Curated icon sizes Curate the icon ladder the same way you curate heights. **12, 16, 24, 32, 40, 48** is a widely-used curated set — these are the sizes at which the common icon families (Material Icons, Lucide, Heroicons, Phosphor) render cleanly without hairline glitches, and they subdivide into 4 px steps at the small end (where inline alignment matters) and 8 px steps at the large end (where it doesn't). **Don't formula-derive icon sizes.** A height-to-icon ratio like `icon = height / 2` produces off-curve values (14, 18, 22, ...) — every one of which renders worse than its curated neighbour. ## The WCAG 2.5.8 target-size floor Interactive control heights clear **24 CSS px** per WCAG 2.5.8 AA Target Size (added in WCAG 2.2). In practice: - Reserve the **smallest rung** — which may sit at or below the 24 px floor — for **non-interactive elements** (badges, read-only chips, density tags). - Start interactive rungs at the **first rung that clears the floor**. - In a roomier, lower-density mode whose smallest rung already exceeds 24 px, the entire ladder is interactive-safe. Failing this floor is one of the most common WCAG 2.2 audit misses. The floor itself is defined alongside the spacing primitives in [spacing-system](../spacing-system/SKILL.md). ## Sibling consistency Sibling controls in the same UI surface share a rung. Mixing (say) an `sm` and an `md` button next to each other reads as a typo, not a hierarchy — hierarchy comes from prominence and placement, not from a one-step height difference between neighbours. ## Picking a rung Default heuristic: - **Paired buttons and inputs:** the system's default mid rung. Use the *same* rung for a button and its associated input so they align horizontally in a form. - **Dense table cell / compact toggle:** one rung smaller than default. - **Primary CTA / hero button:** one or two rungs larger than default, by prominence. - **Badge, breadcrumb separator, density tag (non-interactive):** the smallest, non-interactive rung. ## Verification After picking a rung: 1. **Ladder match:** the rung comes from the declared density ladder, not a one-off height. Mixing rungs from different density ladders in one surface is a bug. 2. **Interactive floor:** the height clears 24 CSS px for interactive controls. Where the smallest rung sits below that floor it is reserved for non-interactive use; a ladder whose smallest rung already clears 24 px has no reserved tier. 3. **Font pairing:** the inner font-size matches the rung's paired size from the type scale, not a free-picked value. 4. **Icon pairing:** the leading or trailing icon size matches the rung's paired icon, and is not smaller than the font. 5. **Sibling consistency:** sibling controls in the same surface share a rung. ## Cross-references - **Routed here by:** [designing-a-design-system](../designing-a-design-system/SKILL.md) — the L1 dispatcher for building or extending a system. - **REQUIRED BACKGROUND:** [spacing-system](../spacing-system/SKILL.md) — the unit primitives drive which density ladder applies, and the 24 CSS px WCAG 2.5.8 floor is defined there. - **For the font sizes paired with each rung:** [type-scale](../type-scale/SKILL.md) — the per-rung font is taken from the canonical scale, not free-picked. - **For line-heights inside each rung:** [line-height-grid](../line-height-grid/SKILL.md) — interactive controls use `lh-ui`, not `lh-prose`. - **For one system's worked rung sets:** [udts-component-sizing-ladders](../udts-component-sizing-ladders/SKILL.md) — concrete per-density heights with their font and icon pairings (incubating L2 stub). ## Sources - [WCAG 2.5.8 — Target Size (AA, added in 2.2)](https://www.w3.org/TR/WCAG22/#target-size-minimum). - Material Design 3 — Component sizing guidance. - Apple Human Interface Guidelines — touch targets (44 pt mobile; relaxed to 24 CSS px desktop per WCAG).
From thrillmade/agent-skills, MIT.
More from thrillmade/agent-skills
- 0.557score
design-token-naming
thrillmade
SUPERSEDED by `token-naming-conventions` (L0) + `udts-naming-convention` (L2, incubating) — see the design-catalog section of the README; kept unchanged…
SkillBFreshness: B★ 2Claude Code +9 - 0.557score
api-contract-enforcement
thrillmade
Flag PRs that change the shape, semantics, or error behavior of a public API without versioning, deprecation, or migration notes.
SkillBFreshness: B★ 2Claude Code +9 - 0.557score
brand-voice-review
thrillmade
Review user-facing strings for brand-voice consistency.
SkillBFreshness: B★ 2Claude Code +9 - 0.557score
chroma-harmonization
thrillmade
Use when constructing or auditing a multi-hue palette where all hues should appear equally saturated at each contrast stop.
SkillBFreshness: B★ 2Claude Code +9 - 0.557score
component-sizing
thrillmade
SUPERSEDED by `component-sizing-principles` (L0) + `udts-component-sizing-ladders` (L2, incubating) — see the design-catalog section of the README; kept…
SkillBFreshness: B★ 2Claude Code +9 - 0.557score
consuming-a-design-system
thrillmade
Entry-point dispatcher for CONSUMING a design system in a product — installing its tokens, wiring CSS variables, theming, upgrading across token releases, or…
SkillBFreshness: B★ 2Claude Code +9 - 0.557score
design-system-consistency
thrillmade
Use when judging whether a RENDERED surface obeys its own design system — screenshots or a live page plus the computed styles behind them — as the drift lens…
SkillBFreshness: B★ 2Claude Code +9 - 0.557score
designing-a-design-system
thrillmade
Entry-point dispatcher for BUILDING or EXTENDING a design system — creating a token architecture, color system, type scale, spacing system, or…
SkillBFreshness: B★ 2Claude Code +9 - 0.557score
skill-frontmatter-quality
thrillmade
Review SKILL.md frontmatter for trigger surface, specificity, voice, and completeness.
SkillBFreshness: B★ 2Claude Code +9 - 0.557score
apca-contrast
thrillmade
Use when picking text-on-surface contrast, auditing an accessibility budget, or generating a color against a specific contrast target.
SkillBFreshness: B★ 2Claude Code +9 - 0.554score
conventions-template
thrillmade
Template for a "review like me" skill - captures one maintainer's review conventions (formatting, what to flag, what to ignore).
SkillBFreshness: B★ 2Claude Code +9 - 0.553score
curating-a-skill-catalog
thrillmade
Use when judging whether a skill earns its place — running or reviewing a skill census cycle, triaging…
SkillBFreshness: B★ 2Claude Code +9
Signals
- Stars
- 2
- Forks
- 0
- Open issues
- 40
- Last commit (this folder)
- Aug 23, 2026 (2 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/thrillmade/agent-skills
- Website
- logmind.dev
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from thrillmade
- 0.557score
api-contract-enforcement
thrillmade
Flag PRs that change the shape, semantics, or error behavior of a public API without versioning, deprecation, or migration notes.
SkillBFreshness: B★ 2Claude Code +9 - 0.557score
brand-voice-review
thrillmade
Review user-facing strings for brand-voice consistency.
SkillBFreshness: B★ 2Claude Code +9 - 0.557score
design-token-naming
thrillmade
SUPERSEDED by `token-naming-conventions` (L0) + `udts-naming-convention` (L2, incubating) — see the design-catalog section of the README; kept unchanged…
SkillBFreshness: B★ 2Claude Code +9 - 0.557score
skill-frontmatter-quality
thrillmade
Review SKILL.md frontmatter for trigger surface, specificity, voice, and completeness.
SkillBFreshness: B★ 2Claude Code +9 - 0.557score
apca-contrast
thrillmade
Use when picking text-on-surface contrast, auditing an accessibility budget, or generating a color against a specific contrast target.
SkillBFreshness: B★ 2Claude Code +9 - 0.557score
chroma-harmonization
thrillmade
Use when constructing or auditing a multi-hue palette where all hues should appear equally saturated at each contrast stop.
SkillBFreshness: B★ 2Claude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get component-sizing-principles running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
component-sizing-principles skill. Agent Mart. https://agentmart.dev/skills/thrillmade-component-sizing-principles (last updated 2026-10-24)