Chalk Labs
Need help deploying tailwind-shadcn?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/o-marsters-1997-tailwind-shadcn
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: design, frontend, writing, agent-building
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/tailwind-shadcn
Tools it pre-approves 9
From allowed-tools in SKILL.md: the agent may use these without asking you each time.
Bash(npxshadcn@latest*),Bash(pnpmdlxBash(bunx--bunshadcn-solid@latest*)
What's inside
- Skill name
tailwind-shadcn- Description
- shadcn/ui + Tailwind CSS standards. Auto-detects the framework — React uses the shadcn CLI with Base UI primitives, SolidJS uses shadcn-solid with Kobalte. TRIGGER — load BEFORE writing or editing any styling, not after: a `class=` or `className=` attribute is being added or changed; tailwind.config.*, globals.css, or anything under components/ui/ is touched; the prompt names Tailwind, shadcn, a variant, a design token, a CSS variable, a responsive breakpoint, dark mode, or a colour; or an arbitrary bracket value like [24px] or [#1a1a1a] is about to be written. Trigger on plain requests — "style this", "add a colour", "make this responsive", "match the other buttons" — the user will not say "Tailwind discipline"; the class attribute is the trigger. SKIP only when no styling and no component file is touched.
- License
- MIT
- Allowed tools
- Bash(npx, shadcn@latest, *),, Bash(pnpm, dlx, shadcn@latest, *),, Bash(bunx, --bun, shadcn@latest, *),, Bash(npx, shadcn-solid@latest, *),, Bash(pnpm, dlx, shadcn-solid@latest, *),, Bash(bunx, --bun, shadcn-solid@latest, *)
- Instructions
- 260 lines in SKILL.md · view on GitHub
Before installing
- Pre-approves some shell commands
Files (9)
- SKILL.md
- evals.json · evals/
- cli-shadcn-solid.md · references/
- cli.md · references/
- cva.md · references/
- formatting.md · references/
- primitives-solid.md · references/
- responsive.md · references/
- theming.md · references/
SKILL.md (first lines)
# Tailwind + shadcn/ui
Apply these patterns whether you're building new UI from scratch or refactoring existing code — the rules are the same either way.
## Detect framework first
This skill serves two ecosystems. Before doing anything, read `package.json` to detect which one you're in:
- **`react` / `react-dom` present → React mode.** Primitive layer is **Base UI**; the CLI is the official **`npx shadcn@latest`**. Gather project context by running:
```json
npx shadcn@latest info --json
```
Key fields: `tailwindVersion` (v4 uses `@theme inline`; v3 uses `tailwind.config.js`), `tailwindCssFile` (always edit this file for CSS variables — never create a new one), `aliases` (use the actual alias prefix for imports, never hardcode), `base` (the primitive layer).
- **`solid-js` present → Solid mode.** Primitive layer is **Kobalte** (Zaidan components); the CLI is **`npx shadcn-solid@latest`** (much thinner — no `info`/`search`/`docs`). Gather project context by reading `ui.config.json` + `package.json`. See [references/cli-shadcn-solid.md](./references/cli-shadcn-solid.md) and [references/primitives-solid.md](./references/primitives-solid.md).
## Framework mode
| Concern | React mode | Solid mode |
| --------------------- | ------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------- |
| Primitive layer | Base UI — see "Primitive layer APIs" below | Kobalte (Zaidan) — see [references/primitives-solid.md](./references/primitives-solid.md) |
| CLI | `npx shadcn@latest` — see [references/cli.md](./references/cli.md) | `npx shadcn-solid@latest` — see [references/cli-shadcn-solid.md](./references/cli-shadcn-solid.md) |
| JSX class attribute | `className` | `class` |
| Component composition | `asChild` + `Slot` | `<Dynamic>` / Kobalte polymorphic `as` |
| Lists | `.map(... key={})` | `<For each>` / `<Index>` |
**Normalization note (Solid mode):** the styling discipline below and the shared references (`theming.md`, `responsive.md`, `cva.md`) use React (`className`) syntax in their examples. In Solid mode, **read every `className` as `class`**, read `.map(...)`+`key` as `<For each>`, and ignore React-only constructs (`React.*` types, `asChild`, `Slot`). See [references/primitives-solid.md](./references/primitives-solid.md) for the Solid equivalents. The Tailwind/token discipline itself is identical in both modes.
---
## Principles
1. **Reusability first — exhaust existing options before writing any inline/custom component.** Work down this ladder in order:
1. **Search what the project already has.** Scan the UI components directory (`resolvedPaths.ui` in React mode; the components dir in Solid mode) for an existing component that fits.
2. **Extend what exists.** If an existing component nearly fits and it makes semantic sense, reuse it. Add a new `cva` variant **only when the styling will be reused in more than one place** — for a one-off, prefer composition or a `className` override. Don't reach for a variant by default; overusing `cva` adds complexity. See [references/cva.md](./references/cva.md).
3. **Bring in an available component.** Check the registry before writing custom UI — `npx shadcn@latest search` (React); browse the shadcn-solid catalog (Solid, no `search`). Check community registries too.
4. **Only then write custom code**, and consult the component docs first (`npx shadcn@latest docs <component>` in React mode) for the recommended reusable pattern.
2. **Compose, don't reinvent.** Settings page = Tabs + Card + form controls. Dashboard = Sidebar + Card + Chart + Table.
3. **Use built-in variants before custom styles.** `variant="outline"`, `size="sm"`, etc.
4. **Use semantic colors.** `bg-primary`, `text-muted-foreground` — never raw values like `bg-blue-500`.
---
## Critical Rules
These rules are always enforced.
### Colors
- **Never** use raw Tailwind palette values (`text-blue-500`, `bg-emerald-600`) in application code.
- **Never** hardcode hex/rgb/oklch values inline in className strings.
- **Use semantic tokens** for all color decisions: `bg-primary`, `text-destructive`, `border-border`.
- For status indicators with no matching token, use `Badge` variants first. If a reusable semantic token is needed (e.g. `--success`), add it to the theme.
### Spacing & layout
- **No `space-x-*` or `space-y-*`.** Use `flex` + `gap-*` instead. `space-y-4` → `flex flex-col gap-4`.
- **`size-*` when width = height.** `size-10` not `w-10 h-10`.
- **`truncate`** not `overflow-hidden text-ellipsis whitespace-nowrap`.
### Component styling
- **`className` is for layout, not overrides.** Acceptable: `max-w-md mx-auto mt-4`. Not acceptable: `bg-blue-100 text-blue-900 font-bold`.
- **Built-in variants first.** Exhaust `variant="outline"`, `variant="destructive"`, `size="sm"` before adding new ones.
- **Add a new variant sparingly** — only when a styling pattern repeats (used in more than one place) and no built-in fits. Edit the component source using `cva`. Not every component needs variants; a one-off doesn't warrant one. See [references/cva.md](./references/cva.md).
### Class merging
- **`cn()` for all conditional or merged classes.** No `${isActive ? 'bg-primary' : 'bg-muted'}` in className.
- **No manual `z-index`** on overlay components (Dialog, Sheet, Popover, Tooltip, Drawer). They manage their own stacking.
- **No manual `dark:` overrides.** Semantic tokens handle theme switching via CSS variables.
---
## CSS Architecture
### Variables at `:root`
All color tokens are CSS custom properties on `:root` in the global CSS file (`tailwindCssFile` from project context). Never scatter variable definitions across component files.
```css
:root {
--background: oklch(1 0 0);
--foreground: oklch(0.145 0 0);
--primary: oklch(0.205 0 0);
--primary-foreground: oklch(0.985 0 0);
--muted: oklch(0.97 0 0);
--muted-foreground: oklch(0.556 0 0);
/* ... see references/theming.md for the full token set */
}
```
**OKLCH:** `oklch(lightness chroma hue)` — perceptually uniform, so equal chroma values look equally saturated across hues. Prefer it over HSL.
### Map variables to Tailwind
With **Tailwind v4**, register every CSS variable via `@theme inline`:
```css
@theme inline {
--color-background: var(--background);
--color-foreground: var(--foreground);
--color-primary: var(--primary);
--color-primary-foreground: var(--primary-foreground);
/* ... see references/theming.md for the full mapping */
--radius-sm: calc(var(--radius) - 4px);
--radius-md: calc(var(--radius) - 2px);
--radius-lg: var(--radius);
--radius-xl: calc(var(--radius) + 4px);
}
```
### Apply base styles
```css
@layer base {
* {
@apply border-border;
}
body {From O-Marsters-1997/my-claude-code, MIT.
More from O-Marsters-1997/my-claude-code
- 0.570score
frontend-best-practices
O-Marsters-1997
Frontend engineering standards — component architecture, state, async, forms, accessibility, performance and TypeScript discipline.
SkillAFreshness: AClaude Code +9 - 0.570score
go-testing
O-Marsters-1997
How Go tests are written in these repos: assertions, tables, test doubles, helpers, async waits, golden files, fuzzing, benchmarks, and integration tests…
SkillAFreshness: AClaude Code +9 - 0.570score
go-idiomatic
O-Marsters-1997
Go engineering standards for this repo — package layout, error handling, logging, testing, concurrency and design patterns.
SkillAFreshness: AClaude Code +9 - 0.570score
htmx-go-templates
O-Marsters-1997
htmx on Go html/template: how a handler picks page, fragment or redirect, how templates carry hx-* attributes, where client JS lives, and how errors and…
SkillAFreshness: AClaude Code +9 - 0.566score
postgres-best-practices
O-Marsters-1997
Postgres schema and query rules, independent of the calling language.
SkillAFreshness: AClaude Code +9 - 0.565score
clean-comments
O-Marsters-1997
Remove comments that fail ~/.claude/rules/comments.md from source files.
SkillAFreshness: AClaude Code +9 - 0.565score
record-decision
O-Marsters-1997
Capture a design or architecture decision as an ADR in docs/adr/ and update CONTEXT.md if terminology is affected.
SkillAFreshness: AClaude Code +9 - 0.539score
code-review
O-Marsters-1997
Use when the user wants to review a branch, a PR, work-in-progress changes, or asks to "review since X".
SkillAFreshness: AClaude Code +9 - 0.539score
tdd
O-Marsters-1997
Use when implementing any feature or fixing any bug.
SkillAFreshness: AClaude Code +9 - 0.539score
testing-policy-creator
O-Marsters-1997
Writes, or brings up to date, a repo's own testing-policy skill at .claude/skills/testing-policy/SKILL.md: which code gets which kind of test, with which…
SkillAFreshness: AClaude Code +9 - 0.539score
codebase-design
O-Marsters-1997
Shared vocabulary for designing deep modules.
SkillAFreshness: AClaude Code +9 - 0.529score
architecture-review
O-Marsters-1997
Use when the user wants an architecture review, a design health check, a staff-level read on architectural risk, or an assessment of coupling and cohesion…
SkillBFreshness: BClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 10
- Last commit (this folder)
- Aug 22, 2026 (2 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from O-Marsters-1997
- 0.570score
htmx-go-templates
O-Marsters-1997
htmx on Go html/template: how a handler picks page, fragment or redirect, how templates carry hx-* attributes, where client JS lives, and how errors and…
SkillAFreshness: AClaude Code +9 - 0.570score
go-testing
O-Marsters-1997
How Go tests are written in these repos: assertions, tables, test doubles, helpers, async waits, golden files, fuzzing, benchmarks, and integration tests…
SkillAFreshness: AClaude Code +9 - 0.570score
frontend-best-practices
O-Marsters-1997
Frontend engineering standards — component architecture, state, async, forms, accessibility, performance and TypeScript discipline.
SkillAFreshness: AClaude Code +9 - 0.570score
go-idiomatic
O-Marsters-1997
Go engineering standards for this repo — package layout, error handling, logging, testing, concurrency and design patterns.
SkillAFreshness: AClaude Code +9 - 0.566score
postgres-best-practices
O-Marsters-1997
Postgres schema and query rules, independent of the calling language.
SkillAFreshness: AClaude Code +9 - 0.565score
clean-comments
O-Marsters-1997
Remove comments that fail ~/.claude/rules/comments.md from source files.
SkillAFreshness: AClaude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get tailwind-shadcn running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
tailwind-shadcn skill. Agent Mart. https://agentmart.dev/skills/o-marsters-1997-tailwind-shadcn (last updated 2026-10-24)