Adi Design
A calm reading room: clean off-white, sage accent, serif for reading, flat
hairline surfaces, restrained motion. The goal is that every one of Adi's apps
feels like one product made by one person with taste.
Canon & showroom: the source of truth is the ~/GitHub/adi-design repo
(system/styles.css + system/tokens/), browsable live at
https://design.adithyan.io. It is authored directly in that repo (no
upstream tool, no export step). This skill carries a vendored copy of the
identity + tokens so you can build Adi's UIs in any repo without cloning — when
the canon's VERSION bumps, refresh assets/tokens.css from that repo's
system/styles.css.
Flow
- Read
references/design-language.md — the aesthetic, the rules, the
do's/don'ts, and the per-product notes. This is the part that keeps work
recognizably Adi's.
- Use
assets/tokens.css (a vendored copy of the canon) for values. Reference
tokens (var(--accent), --space-lg), never raw hex/oklch literals.
- Wire the tokens into the target the way that stack consumes them (below).
- Apply, then check against the hard rules — especially: no warm-cream
background, one accent (sage), cards never over ~16px radius, no
border+heavy-shadow ghost cards, reading prose in the serif.
- If a product needs its own colors (an app's charts, a map's phases), keep
those in a small local
tokens.local.css layered after the core — do not
add them to the shared assets/tokens.css.
Consuming the tokens per stack
- Plain CSS (dobby-dashboard, ~/GitHub/agents/dashboard): copy
tokens.css in and
@import / link it before app styles. Tokens cascade as-is.
- Tailwind (blog/adithyan.io): import
tokens.css for the variable
definitions, then point the Tailwind theme at the variables
(e.g. colors: { bg: 'var(--bg)', accent: 'var(--accent)' }). Swap the body
font to Newsreader for reading + Inter for UI, and replace any cream
background with --bg.
The ~/GitHub/adi-design repo is the canon; this skill is a vendored extract of
it. Authoring happens directly in that repo — see the note in
references/design-language.md.
Scope — identity, craft, voice
Three skills shape Adi's work, split by axis. Keeping each lesson in the skill
that owns its axis is what stops any one from bloating into a catch-all:
- adi-design — identity (the look). Palette, the three fonts, space/shape,
the functional-accent and no-cream rules. The values + the why.
- impeccable — craft (the method). Contrast/motion rigor, anti-slop,
layout-pattern selection (master-detail vs table vs cards), build/critique/polish.
Deliberately no house style of its own.
- adi-writing — voice (the words). How copy and prose sound like Adi.
On Adi's apps, where they overlap, identity wins on look. File each new lesson
where it belongs: a look rule → here; a method rule → impeccable; a voice
rule → adi-writing; a one-app implementation detail → that app's local docs or
tokens.local.css. Do not fold craft, content, or app-specifics into this skill.
With impeccable (the craft companion)
impeccable is a general frontend-craft engine — contrast, motion, anti-slop
bans, build/critique/polish workflows. It has rigor but deliberately no house
style. This skill is the missing half: the identity. They compose on
different axes — impeccable is the how (method), adi-design is the what
(Adi's look) — so use them together, not instead of each other.
When running impeccable (or any craft pass) on one of Adi's apps
(dobby-dashboard, blog/adithyan.io, ~/GitHub/agents dashboard, or a new personal app):
- Treat
assets/tokens.css as committed brand colors. Do NOT run
impeccable's palette-generation / brand-seed step — the identity is already
decided. (impeccable's own setup says to skip palette generation when
committed colors exist; identity-preservation wins.)
- Apply impeccable's craft rigor on top of these tokens, never in place of
them. Sage stays the one accent; no new palette, no cream background.
- The handshake is the project's own tokens +
DESIGN.md: keep those pointing
at this skill so impeccable picks up the identity automatically.
In short: impeccable for craft, adi-design for identity. Where they meet on
Adi's apps, adi-design wins on look.
Evolving the language
The aesthetic changes in the canon, not here: edit it directly in
~/GitHub/adi-design (system/), bump system/VERSION. Then keep this skill in
step — refresh assets/tokens.css from the repo's system/styles.css and update
the rationale in references/design-language.md to match. Never edit a token
value only in this vendored copy; the repo is the one source.
1---2name: adi-design3description: Apply Adi's personal design language so his apps look like one cohesive product. Use when building, restyling, or reviewing any UI for Adi's personal projects (dobby-dashboard, blog/adithyan.io, ~/GitHub/agents/dashboard) or a new personal app/page, including choosing colors, typography, spacing, radius, or motion, setting up a theme or design tokens, migrating a surface off a generic or warm-cream look, or judging whether a screen is on-brand. The aesthetic is clean off-white (never warm cream), oklch sage accent with amber secondary, Newsreader serif for reading and Inter for UI, flat hairline surfaces, and restrained state-only motion.4---56# Adi Design78A calm reading room: clean off-white, sage accent, serif for reading, flat9hairline surfaces, restrained motion. The goal is that every one of Adi's apps10feels like one product made by one person with taste.1112**Canon & showroom:** the source of truth is the `~/GitHub/adi-design` repo13(`system/styles.css` + `system/tokens/`), browsable live at14`https://design.adithyan.io`. It is authored **directly in that repo** (no15upstream tool, no export step). This skill carries a **vendored copy** of the16identity + tokens so you can build Adi's UIs in any repo without cloning — when17the canon's `VERSION` bumps, refresh `assets/tokens.css` from that repo's18`system/styles.css`.1920## Flow21221. Read `references/design-language.md` — the aesthetic, the rules, the23 do's/don'ts, and the per-product notes. This is the part that keeps work24 recognizably Adi's.252. Use `assets/tokens.css` (a vendored copy of the canon) for values. Reference26 tokens (`var(--accent)`, `--space-lg`), never raw hex/oklch literals.273. Wire the tokens into the target the way that stack consumes them (below).284. Apply, then check against the hard rules — especially: **no warm-cream29 background**, one accent (sage), cards never over ~16px radius, no30 border+heavy-shadow ghost cards, reading prose in the serif.315. If a product needs its own colors (an app's charts, a map's phases), keep32 those in a small local `tokens.local.css` layered after the core — do not33 add them to the shared `assets/tokens.css`.3435## Consuming the tokens per stack3637- **Plain CSS** (dobby-dashboard, ~/GitHub/agents/dashboard): copy `tokens.css` in and38 `@import` / link it before app styles. Tokens cascade as-is.39- **Tailwind** (blog/adithyan.io): import `tokens.css` for the variable40 definitions, then point the Tailwind theme at the variables41 (e.g. `colors: { bg: 'var(--bg)', accent: 'var(--accent)' }`). Swap the body42 font to Newsreader for reading + Inter for UI, and replace any cream43 background with `--bg`.4445The `~/GitHub/adi-design` repo is the canon; this skill is a vendored extract of46it. Authoring happens **directly in that repo** — see the note in47`references/design-language.md`.4849## Scope — identity, craft, voice5051Three skills shape Adi's work, split by axis. Keeping each lesson in the skill52that owns its axis is what stops any one from bloating into a catch-all:5354- **adi-design — identity (the _look_).** Palette, the three fonts, space/shape,55 the functional-accent and no-cream rules. The values + the why.56- **impeccable — craft (the _method_).** Contrast/motion rigor, anti-slop,57 layout-pattern selection (master-detail vs table vs cards), build/critique/polish.58 Deliberately no house style of its own.59- **adi-writing — voice (the _words_).** How copy and prose sound like Adi.6061On Adi's apps, where they overlap, **identity wins on look.** File each new lesson62where it belongs: a _look_ rule → here; a _method_ rule → impeccable; a _voice_63rule → adi-writing; a one-app implementation detail → that app's local docs or64`tokens.local.css`. Do not fold craft, content, or app-specifics into this skill.6566## With impeccable (the craft companion)6768`impeccable` is a general frontend-craft engine — contrast, motion, anti-slop69bans, build/critique/polish workflows. It has rigor but deliberately no house70style. This skill is the missing half: the **identity**. They compose on71different axes — impeccable is the *how* (method), adi-design is the *what*72(Adi's look) — so use them together, not instead of each other.7374When running impeccable (or any craft pass) on one of Adi's apps75(dobby-dashboard, blog/adithyan.io, ~/GitHub/agents dashboard, or a new personal app):7677- Treat `assets/tokens.css` as **committed brand colors**. Do NOT run78 impeccable's palette-generation / brand-seed step — the identity is already79 decided. (impeccable's own setup says to skip palette generation when80 committed colors exist; identity-preservation wins.)81- Apply impeccable's craft rigor *on top of* these tokens, never in place of82 them. Sage stays the one accent; no new palette, no cream background.83- The handshake is the project's own tokens + `DESIGN.md`: keep those pointing84 at this skill so impeccable picks up the identity automatically.8586In short: **impeccable for craft, adi-design for identity. Where they meet on87Adi's apps, adi-design wins on look.**8889## Evolving the language9091The aesthetic changes in the **canon**, not here: edit it **directly** in92`~/GitHub/adi-design` (`system/`), bump `system/VERSION`. Then keep this skill in93step — refresh `assets/tokens.css` from the repo's `system/styles.css` and update94the rationale in `references/design-language.md` to match. Never edit a token95value only in this vendored copy; the repo is the one source.