Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsBlogPro
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges
  • Chrome Extension
  • Skill Manager

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Card Tile Ui

ASecurity

Design and implement an Intercom-style card / "tile" UI — discrete soft-shadowed rounded surfaces on a calm monochromatic canvas, in a multi-pane (navigation-rail + content) layout, with a single restrained accent used only as hairlines, outlines, and occasional text. Used by `visual-designer` (primary) and `frontend-implementer` (token-to-code wiring). Invoke when a brief asks for a "card", "tile", "panel", "Intercom-style", "dashboard-like", or "clean SaaS" surface, or when restyling an exi...

7 stars
0 votes
0 copies
0 views
Added 9/23/2026
ai-agentsgoreactfrontend

Works with

cli

Security Analysis

A100/100

Scanned 9/23/2026

$npx -y skills add mcorbett51090/RavenClaude --skill card-tile-ui --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Card Tile Ui?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Card Tile Ui
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/mcorbett51090-card-tile-ui/badge)](https://www.skillsdirectory.com/skills/mcorbett51090-card-tile-ui)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
Files
SKILL.md
---
name: card-tile-ui
description: Design and implement an Intercom-style card / "tile" UI — discrete soft-shadowed rounded surfaces on a calm monochromatic canvas, in a multi-pane (navigation-rail + content) layout, with a single restrained accent used only as hairlines, outlines, and occasional text. Used by `visual-designer` (primary) and `frontend-implementer` (token-to-code wiring). Invoke when a brief asks for a "card", "tile", "panel", "Intercom-style", "dashboard-like", or "clean SaaS" surface, or when restyling an existing flat/monochromatic page toward elevated content tiles.
---

# Skill: card-tile-ui

**Purpose:** produce the **Intercom-style card / tile UI** — the calm, card-driven SaaS aesthetic seen in Intercom's Inbox: a fixed **navigation rail**, a content area composed of **multiple discrete information cards** (white tiles, hairline border, very soft warm shadow, generous radius), all floating on a monochromatic canvas, with one accent color used **minimally** (hairline rules, card outlines, the occasional link/heading, a single primary CTA). Used by `visual-designer` (primary) and `frontend-implementer` (token → code).

## What this pattern is actually called

There is **no public proper-noun name** for Intercom's design system (their engineering blog calls it "the full-stack design system"). The reusable, vendor-neutral name for the *visual* pattern is:

- **Card-based UI** (a.k.a. **card surfaces** / **tiles**) — content grouped into discrete, rounded, **elevated** containers with **soft, low-contrast shadows**, separated by whitespace on a neutral canvas. When the shadows are subtle and warm it's often called **"soft UI."**
- **Multi-pane / list-detail layout** — a persistent navigation rail + (optionally) a list column + a detail panel.
- **Monochromatic base + single accent** — neutral surfaces everywhere; one restrained accent carries interactive meaning.

So the one-liner: *Intercom-style **card/tile UI** — soft-shadowed elevated rounded surfaces on a monochromatic canvas, in a multi-pane layout, with a single restrained accent.*

## When to use

- A brief says "card", "tile", "panel", "Intercom-style", "dashboard", "inbox-style", or "clean / calm SaaS".
- Restyling a **flat, monochromatic** page that has no visual hierarchy of surfaces (the page reads as one undifferentiated sheet) toward **distinct content tiles**.
- Auditing a surface that *claims* a card aesthetic but renders flat — usually because shadows/radius/borders weren't applied, or because **dark-theme color residue** (navy bars, dark code blocks, near-black button text, cool gradients) was mapped onto a light palette.

## The eight rules of a credible card/tile surface

1. **One canvas, white tiles.** The page background is a single calm neutral (cool light grey, or a warm beige). Cards are a *lighter/whiter* surface so they read as lifted. Never gradient-fill a card — a flat fill + shadow is what reads as "tile."
2. **Hairline border + soft shadow, together.** 1px border in a neutral that's *slightly* darker than the card, plus a low-opacity, slightly-warm (or slightly-cool, matching the canvas temperature) shadow. Shadow alone = floating blob; border alone = flat box; both = tile.
3. **Generous radius.** 12–16px on cards (smaller — 6–8px — on inner controls). Consistent radius is most of the "polish."
4. **Whitespace is structural.** 16/24/32 padding rhythm inside and between cards. Crowded cards stop reading as discrete objects.
5. **Accent is a whisper.** The accent appears as: a hairline rule (a faded-end gradient line topping a hero or dividing a section), a 3px left/top **card outline** to flag a primary/active tile, the occasional link or heading color, the active nav-item tint, and **one** filled primary CTA. Everything else is monochrome. If accent is on more than ~5% of the pixels, dial it back.
6. **Navigation rail, not a top nav.** A persistent left rail with icon+label items; the active item gets a subtle accent tint + a 3px accent edge. This is the "navigation pane" users recognize from Intercom/Linear/Slack.
7. **Gentle motion only.** Cards lift `translateY(-2px)` + deepen one shadow step on hover, ~0.18s ease. No scale, no glow pulses. Honor `prefers-reduced-motion`. If a brief wants more than this restrained lift, that's a different job (a memorable marketing-site motion beat) — reach for a single-purpose, per-effect-engine approach the way [ReactBits](https://reactbits.dev) does (CSS-only for a simple effect, one heavier library only where the effect actually needs it — see [`../../knowledge/design-sources/reactbits.md`](../../knowledge/design-sources/reactbits.md)) rather than reaching for a house animation library and then trying to restrain it back down to this pattern's motion budget.
8. **Hover/elevation encode interactivity, not decoration.** Static info cards may stay flat-resting; clickable cards lift on hover. Don't animate non-interactive tiles.

## Dark-theme-residue audit (the #1 reason a "card" page renders flat/ugly)

When a surface was ported from a dark theme to a light palette by remapping tokens, **literal colors that bypassed the tokens** survive and clash. Grep for and fix:

| Residue | Symptom | Fix |
|---|---|---|
| `rgba(11,17,32,…)`, `#0b1120`, `#060c16`, `#07080a` | Navy/black top bars, sticky headers, code panels on a light page | Route to `var(--surface)` / translucent white; light code panel uses `--surface-2` |
| `#04121a`, `#04201c`, `#04210f` as `color:` | Near-black button/selection text meant for a bright fill | Route to the neutral text token, or `#fff` on a saturated fill |
| `radial-gradient(... rgba(45,212,191,…))`, `rgba(56,189,248,…)` | Cool cyan/blue "hero glow" haze | Remove; flat canvas, or a single faint accent whisper |
| Light accent text (`#5eead4`, `#93c5fd`, `#fbbf24`) on white | Audience/status chips nearly invisible | Neutralize to muted text + neutral border, or a single darker accent that passes AA |
| Heavy `linear-gradient` card fills + `box-shadow … glow` | Cards look like buttons, not tiles | Flat `var(--surface)` fill + a real elevation shadow |

A page can carry the *right tokens* and still render wrong because these literals never read them. Always grep the actual source for hex/`rgba` literals, not just the token file.

## Token shape (vendor-neutral)

```css
:root {
  --canvas:    /* one calm neutral — cool grey or warm beige */;
  --surface:   #ffffff;            /* the tile */
  --surface-2: /* slightly tinted — code blocks, insets */;
  --border:    /* hairline, ~1 step darker than surface */;
  --border-strong: /* hover border */;
  --text: …; --muted: …; --faint: …;
  --accent: /* ONE accent — verify AA on --canvas if it ever carries text */;
  /* 5-tier soft shadow scale, opacity 0.04 → 0.14, tinted to match canvas temp */
  --shadow-sm: …; --shadow-md: …;
  --radius: 10px; --radius-lg: 16px;
}
.card {
  background: var(--surface); border: 1px solid var(--border);
  border-radius: var(--radius-lg); box-shadow: var(--shadow-sm);
  padding: 24px;
  transition: box-shadow .18s ease, border-color .18s ease, transform .18s ease;
}
.card:hover { box-shadow: var(--shadow-md); transform: translateY(-2px); }
.card--accent { border-left: 3px solid var(--accent); }  /* minimal-accent flag */
```

> In **this marketplace**, those tokens already exist as `--rc-*` in
> [`plugins/ravenclaude-core/dashboard-assets/shared-tokens.css`](../../../ravenclaude-core/dashboard-assets/shared-tokens.css)
> with the shared `.rc-card`, `.rc-card--accent`, and `.rc-rule` classes. Two
> accents are kept by design: **teal** on the consumer surfaces (index +
> repo-guide) and **gold** on the dashboard. Each surface uses **one** accent;
> the split is intentional. Edit the token file + each surface's generator,
> then **regenerate** (`scripts/generate-*.py`) — the HTML is generated and
> freshness-gated, never hand-edited.

## Accessibility (load-bearing)

- The accent, **if it ever carries text**, must pass WCAG AA (≥4.5:1) on the canvas. A gold/amber accent typically only passes AA-*large* (~3:1) → restrict it to borders, hairlines, icons, and ≥18px/14px-bold headings; never body text or small labels. Verify with a contrast checker against **both** the canvas and the inset surface.
- Hover-lift and shimmer must collapse under `prefers-reduced-motion`.
- Active nav state needs more than the accent tint — also a 3px edge or weight change (don't rely on color alone).
- Focus-visible rings on every interactive tile/control.

Defer the full WCAG pass to the [`accessibility-review`](../accessibility-review/SKILL.md) skill; defer broad token-system work to [`design-system-audit`](../design-system-audit/SKILL.md) and [`design-tokens-scaffolding`](../design-tokens-scaffolding/SKILL.md).

## Hand-off

- **Visual decisions** (canvas temperature, accent choice, radius/shadow scale) → `visual-designer`.
- **Token → component implementation** (the `.card` class, the nav rail, regenerating generated HTML) → `frontend-implementer`.
- **Contrast / keyboard / motion sign-off** → `accessibility-auditor` via `accessibility-review`.

## References

- Knowledge: [`knowledge/card-tile-ui-pattern-2026.md`](../../knowledge/card-tile-ui-pattern-2026.md)
- Anchor donors + what to borrow: [`knowledge/design-references.md`](../../knowledge/design-references.md)
- This marketplace's living implementation: [`ravenclaude-core/dashboard-assets/README.md`](../../../ravenclaude-core/dashboard-assets/README.md)

Attribution

mcorbett51090mcorbett51090
View sourceSee grades on GitHubMore from mcorbett51090 →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Caveman

Terse caveman voice: answer first, fluff gone, every technical fact kept. Use for /caveman, "caveman mode", "talk like caveman", "be brief", "less tokens". Stays on until "stop caveman" or "normal mode".

1100021 votes

Hyperplan

Adversarial multi-agent planning skill. Self-orchestrates 5 hostile category members (unspecified-low, unspecified-high, deep, ultrabrain, artistry) via team-mode for ruthless cross-critique debate, distills only the defensible insights, then MANDATORILY hands the distilled insight bundle to the `plan` agent for executable plan formalization. Use when planning needs maximum rigor and surfacing of weak assumptions, blind spots, and over-engineering. Triggers: 'hyperplan', 'hpp', '/hyperplan', ...

698431 votes

Writing Skills

Create and manage Claude Code skills in HASH repository following Anthropic best practices. Use when creating new skills, modifying skill-rules.json, understanding trigger patterns, working with hooks, debugging skill activation, or implementing progressive disclosure. Covers skill structure, YAML frontmatter, trigger types (keywords, intent patterns), UserPromptSubmit hook, and the 500-line rule. Includes validation and debugging with SKILL_DEBUG. Examples include rust-error-stack, cargo-dep...

3931 votes

Mcp Code Execution

Routes multi-tool workflows through MCP servers for large datasets and pipelines. Use when Bash tool overhead is limiting throughput on data-heavy tasks.

3421 votes

catchup

Recovers the conversation and failed tool calls of a previous Codex, Amp, Claude Code, Antigravity, Cline, Copilot CLI, Cursor, DeepSeek Harness, Grok Build, Kimi, OpenCode, Pi Agent, or ZCode session. Use when the user says "catch up", "what did the last session do", "get me up to speed", "I switched agents", asks to recover/summarize a previous session before continuing, or asks to diagnose or report a catchup failure. Do NOT use for the current conversation, git history, or any non-agent log.

741 votes
View all in ai-agents →