plugins/design-expert/skills/design-android/SKILL.md
Android mockups and handoff specs — Material 3 Expressive type scale (baseline + emphasized), full color-role system (45 roles incl. surface-container ramp + dynamic color), elevation tokens, shape scale, window size classes, FAB tiers, motion, device-framed HTML mockup, and a Compose-ready handoff spec. Produces tokens + mockup only, never Compose code.
npx skillsauth add fusengine/agents design-androidInstall 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.
After design-system tokens exist. This skill never writes Jetpack Compose — it produces
a static HTML mockup at exact device dimensions plus a spec an Android developer implements.
design-system.md — OKLCH palette, typography direction, motion personality.references/type-scale.md gives the 15-role
baseline scale (displayLarge 57/64sp … labelSmall 11/16sp, Roboto). Material 3
Expressive adds a parallel 15-role Emphasized set on top (30 roles total) for
stronger visual rhythm — use baseline by default, reach for Emphasized when the tone
from design-method calls for it. Source: m3.material.io/styles/typography/type-scale-tokens.references/color-roles.md documents the
core role families (primary/secondary/tertiary + surface/onSurface) derived from a seed
color. Material 3's full role system is larger — 45 color roles, including a
surface-container ramp (lowest → highest: surfaceContainerLowest,
surfaceContainerLow, surfaceContainer, surfaceContainerHigh,
surfaceContainerHighest — 5 levels for layering surfaces without shadow), error/
onError/errorContainer (kept static, never derived from the dynamic seed, so
error states stay legible regardless of theme), and dynamic color: on Android 12+
all roles can be generated tonally from a user's wallpaper/seed, not just the design
seed. Source: m3.material.io/styles/color/roles,
m3.material.io/styles/color/system/how-the-system-works. Gap: color-roles.md
documents the core families, not the full 45-role/surface-container enumeration — use
the fact above until that reference is expanded (out of this pass's exclusive scope).references/shape-scale.md (never an arbitrary
border-radius). Material 3's full shape scale extends to 32dp, 48dp, and Full
(pill) beyond what's currently listed — Expressive defaults buttons to pill (Full)
shape unless a product reason calls for a smaller radius. Source:
m3.material.io/styles/shape/shape-scale-tokens. Gap: shape-scale.md stops at 28dp
(Extra Large); reconfirm 32/48/Full on the m3.material.io page above until expanded.surfaceTint-only approach is deprecated; don't rely on tint alone to
convey elevation. Source: m3.material.io/styles/elevation/overview. Gap: no
references/elevation.md exists yet — these token values are grounded but inlined
here pending a dedicated reference file (out of this pass's exclusive scope).references/window-size-classes.md — mock up at
the dp width that matches the target device class (phone/foldable/tablet/desktop).<div> sized in dp-equivalent px, following
the 4dp base / 8dp grid throughout.references/touch-targets.md.references/motion.md exists yet —
note spring vs legacy-easing choice explicitly in the handoff spec until one exists.references/handoff-compose.md: colors →
MaterialTheme.colorScheme.*, typography → MaterialTheme.typography.*, shapes →
MaterialTheme.shapes.*, custom spacing scale in dp, explicit sizing, states + tonal
elevation (name the elevation level, 0–5, not just "raised"/"flat"), and
start/end (never left/right) for RTL correctness.handoff.md (or equivalent) with Compose theme mappings, spacing, sizing, states,
tonal elevation (level 0–5) — ready for an Android developer.design-review (mockup-scoped: screenshot the mockup, verify contrast, nofull site audit loop).
| File | Purpose |
|------|---------|
| references/type-scale.md | Canonical Material 3 baseline type scale — verified material-components-android (Expressive Emphasized set: see Step 1 above, not yet a separate file) |
| references/shape-scale.md | Canonical shape/corner-radius scale — verified m3.material.io (stops at 28dp — 32/48/Full gap, see Step 3) |
| references/color-roles.md | Canonical Material 3 core color-role families — verified m3.material.io (45-role/surface-container/dynamic-color gap, see Step 2) |
| references/window-size-classes.md | Canonical window size classes — verified developer.android.com |
| references/touch-targets.md | 48×48dp target + 8dp spacing — verified |
| references/handoff-compose.md | Compose-ready handoff spec format |
Gaps (grounded facts, no reference file yet — inlined in Steps above, flagged for future
references/elevation.md, references/motion.md, FAB-tier detail; out of this pass's
exclusive scope to create): elevation tokens 0–5, FAB tiers, spring motion.
testing
Copy self-audit and ban-lists — filler verbs/hype adjectives, slop placeholder names, fake-precise numbers, Title Case headlines, humor in error copy ('Oops!'), em-dash crutch, one copy register per page.
development
Logged-in web apps — dashboards, auth flows, settings, onboarding, data tables, command palettes, modals, toasts. Register `product`: density and glance-speed over marketing polish, no hero/CTA-tricks, every data surface covers empty/loading/error explicitly, tables and dataviz follow preattentive-processing rules.
development
Marketing sites, landing pages, campaign pages — register `brand` (design IS the product). Structure comes from the register's POV + a macrostructure pick, never from copying an inspiration site's section flow. Hero discipline, deviated section order, asymmetric grids, and a silhouette lookalike-test gate before ship.
development
Token-strategy core — OKLCH color rules, neutral tinting, accent-commitment levels, type scale, 8pt spacing grid, touch targets, and the canonical output format of design-system.md (the file the harness gates on). This is routing step 1 of design-method/SKILL.md — read it before design-web/design-webapp/design-ios/design-android, before picking or auditing a single color/type/spacing value.