dataviz
Data visualization discipline for monitoring and observability dashboards: chart-type selection by data shape, encoding accuracy hierarchy (position > length > angle > area > color), pre-attentive attributes, Tufte data-ink, color theory (semantic conventions, Viridis, colorblind safety), dashboard layout and information hierarchy (F/Z-pattern, tiering), time-series conventions (baseline, interpolation, dual axes, stacking), observability frameworks (RED, USE, Four Golden Signals, SLO/SLI). Invoke whenever task involves any interaction with dashboard design quality — making a good dashboard, reviewing a visualization, picking a chart type, dashboard layout, color choices, panel arrangement, or critiquing existing observability dashboards.
What this skill does
# Data Visualization for Dashboards
A dashboard is a tool for fast, accurate judgement under operational stress. Every visual choice supports that judgement
or undermines it.
## Scope
- **In scope:** chart selection, encoding accuracy, color, layout and hierarchy, time-series conventions, observability
frameworks (RED, USE, Four Golden Signals, SLO/SLI), anti-patterns, review criteria.
- **Out of scope:**
- **Grafana JSON, panel options, transformations, variables, library panels** — `dashboards` sibling owns mechanics.
- **Alert rule definitions** — `alerting` sibling. This skill covers SLO/SLI dashboard structure, not rule firing.
- **Query syntax** — `promql` / `metricsql` / `logsql` siblings.
## References
- **Perception and encoding** — [`${CLAUDE_SKILL_DIR}/references/perception.md`] Cleveland & McGill hierarchy,
pre-attentive attributes, Tufte data-ink and chart junk, Stephen Few counterpoint.
- **Color** — [`${CLAUDE_SKILL_DIR}/references/color.md`] Semantic conventions, sequential/diverging/categorical
palettes, Viridis, colorblind safety, WCAG contrast, dark/light themes, Grafana scheme mapping.
- **Layout** — [`${CLAUDE_SKILL_DIR}/references/layout.md`] F/Z patterns, tiering, grid discipline, progressive
disclosure, RED/USE/Four Golden Signals, SLO/SLI dashboard structure.
- **Time-series specifics** — [`${CLAUDE_SKILL_DIR}/references/time-series.md`] Aspect ratio, baseline, interpolation,
aggregation, dual y-axes, stacking.
## Encoding hierarchy
Cleveland & McGill (1984), most → least accurate:
1. Position on a common scale
2. Position on non-aligned scales (small multiples)
3. Length (bar charts)
4. Angle / slope (pie slices)
5. Area (bubble plots, treemaps)
6. Volume (3D)
7. Color saturation / luminance
8. Color hue (categorical only)
**Pick encodings as high as the data shape allows.** Color hue distinguishes categories; never magnitude.
## Chart-type selection
Flows from data shape and the question being answered. `dashboards` skill has the panel-type catalog; this skill has the
rationale.
- **Magnitudes over time** → line chart (Time series). Default for observability metrics.
- **Magnitudes across discrete categories** → bar chart for ranking. Never pie.
- **Parts of a whole** → stacked bar or stacked area, ≤ 5 components, only when total is meaningful. No pie above 5.
- **Distribution at a point in time** → histogram. Over time, **heatmap**.
- **One headline number** → stat panel; sparkline when trend context matters.
- **One value against a target** → bar gauge over radial gauge. Radial only for single prominent numbers.
- **Relationships between two metrics** → scatter (XY chart).
- **Tabular detail** → table with sparkline cells for per-row trends.
- **Status across many entities** → state timeline or status history. Pair colored cells with text or icons.
**Pie rule:** if you must, ≤ 5 segments, parts-of-a-whole framing, meaningful total. Otherwise bar chart.
## Pre-attentive attributes
Color hue, intensity, position, length, size, shape, orientation, motion — processed in under 200 ms. The unique
attribute "pops out" against the field.
- **One pre-attentive attribute per signal.** Combining collapses pop-out. If color encodes severity, don't reuse it for
category.
- **Reserve motion for active anomalies.** Decorative blinking trains viewers to ignore motion.
- **Group with enclosure (rows, tabs) and proximity (grid)**, not panel borders.
## Color rules
Color is redundant — pair with text, position, or shape.
- **Fixed semantic mapping.** Green = OK, amber = warning, red = critical, blue = informational, grey = no-data. One
mapping per dashboard. Reusing red for "high traffic" and "error rate" defeats the convention.
- **Match palette to data:**
- Sequential (single hue or Viridis) for magnitudes.
- Diverging (two ends, neutral middle) for anomalies around a baseline.
- Categorical (distinct hues, no order) for series identity. Cap at ~10 hues.
- **Colorblind safety:** 8% of men have color-vision deficiency. Avoid unmodified red-green as sole signal. Use
Viridis/Cividis for sequential data.
- **Contrast:** WCAG 4.5:1 for value text on stat panels. NOC TVs at half brightness amplify low-contrast failures.
- **No rainbow scales.** Perceptually non-uniform.
### Grafana color scheme defaults
- **Status panels (stat, gauge, bar gauge)** → `From thresholds (by value)`. `Base = green`, amber warn, red crit.
- **Multi-series time series** → `Classic palette (by series name)` — stable across reruns.
- **Heatmap** → sequential continuous (Blues / Greens) or Viridis-equivalent. Diverging only when zero/center is
operational.
- **Non-status numeric metrics** → `Single color`. Position does the work.
## Layout and information hierarchy
Users scan dashboards in **F-pattern** (horizontal sweeps, then vertical down the left) or **Z-pattern** (top-left →
top-right → bottom-left → bottom-right). Top-left has the highest attention; bottom-right the lowest.
### Tier the dashboard
- **Tier 1** — primary KPIs. Visible without scrolling. 2–4 panels max.
- **Tier 2** — supporting trends and breakdowns.
- **Tier 3** — drilldown, references, raw tables.
Aim for ≤ 12 panels in the initial viewport.
### Grid discipline
- **Pick a column unit and stick to it.** 6, 8, or 12. Mixed widths in a row are noise.
- **Match panel heights within a row.** Mixed heights force the eye to re-anchor.
- **Group with rows / tabs / collapsed sections**, not decorative borders.
- **Repeat panels and rows** for symmetric per-entity dashboards.
### Progressive disclosure
Headline → trend → breakdown → trace. Top answers "is this OK?" in under 3 seconds; lower tiers answer "why?" when
something is wrong. Use data links for drilldown preserving time range and variables (see `dashboards` skill,
`annotations-links.md`).
## Time-series rules
- **Aspect ratio:** wider than tall, 2:1 to 4:1. Cleveland's "banking to 45°."
- **Baseline:**
- **Zero** for ratios, rates, counts, bounded fractions. Anywhere "twice as much" means something.
- **Skip zero** only for unbounded magnitudes where variation is the signal (temperature, stock prices).
- **Never truncate silently** — most common chart lie.
- **Interpolation:**
- **Linear** — default.
- **Smooth (curved)** — invents values between samples. Never on operational dashboards.
- **Step before / after** — discrete-state metrics (queue depth, feature flag, node count).
- **Bars** — closed-bucket aggregates (requests-per-minute), not continuous samples.
- **Aggregation:**
- `max` for latency, queue depth — preserves spikes.
- `avg` for throughput — shows typical level.
- Overlay both when in doubt.
- `$__rate_interval` inside Prometheus `rate()` (4× scrape-interval rule).
- **Dual y-axes:**
- **OK** for correlated signals on shared time axis (req rate + latency during incidents).
- **Anti-pattern** for unrelated metrics or scale-mismatched signals — split panels or normalize.
- **Stacking:**
- Default **unstacked**.
- Stack only when components sum to a meaningful total and user needs both total and breakdown.
- Non-bottom series read against non-flat baseline — magnitudes noisy.
## Observability frameworks
- **Four Golden Signals (Google SRE)** — Latency, Traffic, Errors, Saturation. **User-facing services.**
- **RED (Tom Wilkie)** — Rate, Errors, Duration. **Request-driven services** (HTTP/gRPC). Golden Signals minus
saturation; better for bursty workloads.
- **USE (Brendan Gregg)** — Utilization, Saturation, Errors. **Resources** (hosts, disks, queues).
Pick by entity:
- Customer-facing service → Four Golden Signals or RED.
- Resource → USE.
- Platform overview → mix: Golden Signals on top, USE per resource tier below.
## SLO/SLI dashboards
- **SLI current value** — large stat, threshold = SLO target. Green ≥ target, red below.
- **Error budget remaining** — `1 - (1 - SLI) / (1 - SLO)` as %. Red near zero.
- **Burn rate** — `current_faRelated in Design
contribute
IncludedLocal-only OSS contribution command center. Auto-refreshes the user's in-flight PR and issue state on invoke so conversations start with full context — no need to brief Claude on what's in flight. Helps the user find issues to contribute to on GitHub, builds per-repo dossiers of what each upstream expects (CLA, DCO, branch convention, AI policy, draft-first, review bots, issue templates), runs deterministic gates before any external action so AI-assisted contributions don't reach maintainers as slop. State is markdown-only: candidate files at ~/.contribute-system/candidates/, repo dossiers at ~/.contribute-system/research/, append-only event log at ~/.contribute-system/log.jsonl. No database, no cloud calls. Use when the user asks about their PRs / issues / contributions, wants to find new work to take on, claim an issue, build/refresh a repo's dossier, or draft a Design Issue or PR. Trigger with "/contribute", "what's my PR status", "find a contribution", "claim issue X", "draft a Design Issue for Y", "refresh dossier for Z".
architectural-analysis
IncludedUser-triggered deep architectural analysis of a codebase or scoped subtree across eight modes — information architecture, data flow, integration points, UI surfaces, interaction patterns, data model, control flow, and failure modes. This skill should be used when the user asks to "diagram this codebase," "map the architecture," "show the data flow," "give me an ERD," "trace control flow," "find the integration points," "verify the layout pattern," "audit the UX architecture," or any similar request whose primary deliverable is mermaid diagrams plus cited reports under docs/architecture/. Dispatches haiku/sonnet sub-agents in parallel for per-mode exploration, then verifies every citation mechanically before any node lands in a diagram. Not for one-off prose explanations of code (use code-explanation) or for high-level system design from scratch (use system-design).
mcp
IncludedModel Context Protocol (MCP) server development and tool management. Languages: Python, TypeScript. Capabilities: build MCP servers, integrate external APIs, discover/execute MCP tools, manage multi-server configs, design agent-centric tools. Actions: create, build, integrate, discover, execute, configure MCP servers/tools. Keywords: MCP, Model Context Protocol, MCP server, MCP tool, stdio transport, SSE transport, tool discovery, resource provider, prompt template, external API integration, Gemini CLI MCP, Claude MCP, agent tools, tool execution, server config. Use when: building MCP servers, integrating external APIs as MCP tools, discovering available MCP tools, executing MCP capabilities, configuring multi-server setups, designing tools for AI agents.
react-native-skia
IncludedDesign, build, debug, and optimise high-polish animated graphics in React Native or Expo using @shopify/react-native-skia, Reanimated, and Gesture Handler. Use when the user wants canvas-driven UI, shaders, paths, rich text, image filters, sprite fields, Skottie, video frames, snapshots, web CanvasKit setup, or performance tuning for custom motion-heavy elements such as loaders, hero art, cards, charts, progress indicators, particle systems, or gesture-driven surfaces. Also use when the user asks for fluid, glow, glass, blob, parallax, 60fps/120fps, or GPU-friendly animated effects in React Native, even if they do not explicitly say "Skia". Do not use for ordinary form/layout work with standard views.
plaid
IncludedProduct Led AI Development — guides founders from idea to launched product. Six capabilities: Idea (discover a product idea), Validate (pressure-test the idea against fatal flaws, problem reality, competition, and 2-week MVP feasibility), Plan (vision intake + document generation), Design (translate image references into a design.md spec), Launch (go-to-market strategy), and Build (roadmap execution). Use when someone says "PLAID", "plaid idea", "help me find an idea", "product idea", "idea from my business", "idea from my expertise", "plaid validate", "validate my idea", "pressure-test", "is this idea good", "find fatal flaws", "validate the problem", "plan a product", "define my vision", "generate a PRD", "product strategy", "plaid design", "design from image", "translate image to design", "create design.md", "extract design tokens", "plaid launch", "go-to-market", "launch plan", "GTM strategy", "launch playbook", "plaid build", "build the app", "start building", or "execute the roadmap".
nextjs-framer-motion-animations
IncludedAdds production-safe Motion for React or Framer Motion animations to Next.js apps, including reveal, hover and tap micro-interactions, whileInView, stagger, AnimatePresence, layout and layoutId transitions, reorder, scroll-linked UI, and lightweight route-content transitions. Use when the user asks to add, refactor, or debug Motion or Framer Motion in App Router or Pages Router codebases, especially around server/client boundaries, reduced motion, LazyMotion, bundle size, hydration, or route transitions. Avoid for GSAP-style timelines, WebGL or 3D scenes, heavy scroll storytelling, or CSS-only effects unless Motion is explicitly requested.