ui-craft-dense-dashboard

$npx mdskill add educlopez/ui-craft/ui-craft-dense-dashboard

Build dense, data-heavy dashboards with Bloomberg/Retool-like density and precision.

  • Solves creating high-density admin panels and analytics views for power users.
  • Depends on IBM Plex font, semantic palette, and 4/8px grid system.
  • Uses locked knobs (CRAFT=7, MOTION=3, DENSITY=9) and trigger keywords.
  • Delivers polished UI code with sparklines, tabular-nums, and tight spacing.

SKILL.md

.github/skills/ui-craft-dense-dashboardView on GitHub ↗
---
name: ui-craft-dense-dashboard
description: "Dense dashboard / admin / Bloomberg / Retool / data-heavy internal tools. Locked knobs: CRAFT=7, MOTION=3, DENSITY=9. IBM Plex + mono numbers, semantic palette, 4/8px grid, sparklines, tabular-nums. Trigger on: dashboard, admin panel, data-dense, analytics, Bloomberg-like, Retool-like."
argument-hint: "[action: build|review|polish] [target]"
---

<!-- HARNESS MIRROR — do not edit here. Canonical source: skills/ or commands/. After editing source, copy into cli/assets/<harness>/ and repo-root harness mirrors. -->

# UI Craft — Dense Dashboard

Pre-committed dense style: data-first, keyboard-first, operator tools. Bloomberg, Retool, Linear issues view, admin panels. Every pixel earns its place.

## Knobs (locked)

- **CRAFT_LEVEL = 7** — polished but not precious; operators value speed over sheen.
- **MOTION_INTENSITY = 3** — micro-only. Row hover, row active tint, inline confirm. No scroll reveals in table areas.
- **VISUAL_DENSITY = 9** — tight 4/8px grid; whitespace earns its place.

Do not re-ask these in Discovery. Confirm brand accent + dark/light preference only.

## Style anchors

- UI sans + mono pairing. Mono for every ID, hash, timestamp, code.
- Semantic palette required: success, warning, danger, info + one brand accent.
- `tabular-nums` on every numeric column; mono on identifiers.
- Tight 4/8px spacing grid. `px-3 py-2` table cells, `gap-2` toolbars.
- Sparklines everywhere; horizontal bars for categorical; area for time-series. No pie. No 3D.
- Keyboard shortcuts visible inline (`⌘K`, `J/K`, `E` to edit).
- Dense chrome: breadcrumbs + tabs + toolbars + filter chips are welcome.
- Micro-motion only. Row hover, row active, inline save. No entrance stagger.

## Base rules (inherited)

All rules in `../ui-craft/SKILL.md` apply. This file overrides knob defaults and adds style-specific guidance below. The anti-slop and craft tests still apply in full.

## Style-specific overrides

**Typography**

- UI: IBM Plex Sans or Inter, 400 / 500.
- Mono: IBM Plex Mono or Geist Mono for IDs, hashes, timestamps, code, version numbers, kbd.
- Body size: 13-14px default; 12px in dense tables is fine.
- `tabular-nums` on every numeric column, metric card, timestamp, duration.
- `font-variant-numeric: tabular-nums slashed-zero` for IDs + codes.
- Headings: compact. Page title 18-20px, section 14-15px 500.

**Color (semantic palette required)**

- Brand accent: one — primary actions, active tab, selected row accent tint.
- Semantic, subdued OKLCH (lightness 50-60, chroma ≤ 0.15):
  - success `oklch(60% 0.12 150)`
  - warning `oklch(72% 0.13 75)`
  - danger `oklch(58% 0.15 25)`
  - info `oklch(62% 0.12 240)`
- Never saturated hues — dashboards live on screens for 8 hours.
- Status dots, badge text, chip text use semantic color; backgrounds stay neutral.

**Spacing & layout**

- 4/8px spacing scale — never 5, 7, 9, 10. Stick to 4 / 8 / 12 / 16 / 24.
- Table cells: `px-3 py-2` default; `px-2 py-1.5` for ultra-dense.
- Toolbar rows: `gap-2`, `h-9` controls, `text-sm`.
- Sidebar: narrow (200-240px), subtle bg tint, icon + label; never full dark.
- Cards: `p-4`, 8px radius; 1px border over shadow.

**Data display**

- Every number column: `tabular-nums` + right-aligned.
- Every ID / hash / commit / timestamp: monospace.
- Sparklines inline in rows for trend context. 24-40px tall, single color.
- Category charts: horizontal bars. Time-series: area with 15% → 0% fade. No pies.
- Deltas: plain text `+12.5%` in semantic color, no pill.
- Empty states: one-line hint + keyboard shortcut to create.

**Chrome & navigation**

- Breadcrumbs + tabs + sub-toolbar together is expected and fine.
- Filter chips: outline style, removable `×`, no pill fill.
- Global command palette: `⌘K` visible in header search affordance.
- Row actions: inline icons on hover; also available via keyboard.
- Pagination: text `Page 3 of 42` + `tabular-nums`, plus `J/K` navigation.

**Motion**

- Row hover: background shift to `oklch(96% 0.002 250)` light / `oklch(20% 0.005 250)` dark, 80ms.
- Active/selected row: brand accent tint at ~6% opacity + 2px accent left border.
- Inline save / confirm: 150ms fade + check icon swap.
- No scroll-triggered reveals in table areas — they stutter long lists.
- Sort arrow, filter open, column resize: instant or <100ms.

## Reference files to read first

Load these from `../ui-craft/references/`:

- `dashboard.md` — primary reference; metric cards, charts, sidebar, tables
- `typography.md` — tabular-nums, mono pairing, scale
- `motion.md` Rendering Performance — compositor pipeline, layer promotion, scroll-linked motion
- `responsive.md` — tablet + laptop breakpoints, toolbar collapse

Skip `inspiration.md` (landing-page focused), `sound.md`.

## Anti-patterns for THIS style

- Serif fonts anywhere in chrome or data. Editorial is a different variant.
- Proportional figures in numeric columns — always `tabular-nums`.
- Saturated hues — reads as consumer app, not operator tool.
- Colored pills on every delta — plain text in semantic color.
- Pie charts, donut charts, 3D charts. Ever.
- Vertical bar chart for time-series — use area/line.
- Uniform colored top borders on metric cards.
- Card grids with heavy whitespace — if it feels airy, wrong variant.
- Full-dark sidebar (common AI pattern) — subtle tint only.
- Scroll-triggered reveals or stagger animations in table areas.
- Hidden keyboard shortcuts — always surface `⌘K`, row shortcuts, help trigger.
- Vague loading states — show skeleton rows matching column structure, not generic spinner.

More from educlopez/ui-craft

SkillDescription
adaptResponsive layout pass covering breakpoints, touch targets, safe areas, and fluid type. Use when the UI has layout or touch issues on mobile/tablet, when adding a new screen that hasn't been tested across viewports, or when the user says "make it responsive" / "fix mobile layout". Invoke when the user asks for adapt on their UI, or mentions 'adapt' alongside design / UI / frontend work.
animateMotion design pass — adds purposeful animations or removes excessive ones, respecting MOTION_INTENSITY and the project's animation stack. Use when the user asks to add animation, "make it feel smoother", fix janky transitions, or trim motion that's distracting. Invoke when the user asks for animate on their UI, or mentions 'animate' alongside design / UI / frontend work.
bolderAmplify personality — raises layout variance and motion, strengthens typography and one signature detail, without slop. Use when the UI works but feels safe, flat, or "template-y", or when the user says "bolder", "more personality", "more creative", or "make it pop" (still professional). Invoke when the user asks for bolder on their UI, or mentions 'bolder' alongside design / UI / frontend work.
clarifyUX copy review across buttons, errors, empty states, and form hints — critiques by default, applies only on request. Use when copy feels vague, generic, or AI-sounding, or when the user says "fix the labels", "improve error messages", or "review the copy". Invoke when the user asks for clarify on their UI, or mentions 'clarify' alongside design / UI / frontend work.
colorizeColor strategy pass — introduces a single accent at 3-5 intentional placements, or reduces an over-colored UI back to 90% neutral. Use when the UI has no color identity, uses blue by default, or is shouting with too many competing accents. Invoke when the user asks for colorize on their UI, or mentions 'colorize' alongside design / UI / frontend work.
craftOne-shot build pipeline for a complete surface from an outcome recipe — inputs (or defaults) → composition → theme → build order → acceptance bar. Use when the user asks for a whole surface ("build me a dashboard", "hazme un dashboard") and expects a shippable result, not component-level help. Invoke when the user asks for craft on their UI, or mentions 'craft' alongside design / UI / frontend work.
critiqueDesign lens critique covering visual hierarchy, clarity, and anti-slop patterns — produces a findings table, no code edits unless asked. Use when the user wants a design review, says "what's wrong with this UI", or needs a second opinion before a handoff or presentation. Invoke when the user asks for critique on their UI, or mentions 'critique' alongside design / UI / frontend work.
delightDelight pass — adds one or two memorable micro-interactions (copy specificity, hover choreography, state transitions, one signature detail) without decoration or confetti. Use when the UI works but feels generic, or when the user says "make it feel special" / "add some personality". Invoke when the user asks for delight on their UI, or mentions 'delight' alongside design / UI / frontend work.
distillReduction pass — cuts content, structure, visuals, and dead code that doesn't answer a user question or drive an action, respecting CRAFT_LEVEL. Use when the UI feels cluttered, has too many CTAs, walls of text, or decorative noise, or when the user says "simplify this" / "it feels too busy". Invoke when the user asks for distill on their UI, or mentions 'distill' alongside design / UI / frontend work.
hardenProduction-readiness pass — audits and implements the full non-happy-path matrix: loading skeletons, empty states, error messages, partial data, i18n, offline, permissions, and first-run guidance. Use when preparing a surface for production or when the user says "it crashes on empty data" / "there's no loading state" / "harden this". Invoke when the user asks for harden on their UI, or mentions 'harden' alongside design / UI / frontend work.