builder-smoke-test
Smoke test the Agent Builder feature branch end-to-end against a hermetic project scaffolded by the skill (linked to the current worktree). Covers workspace…
Tailwind CSS v4 usage guide and v3-to-v4 differences. This skill should be used when writing, reviewing, or refactoring any Tailwind CSS code in this repo. Triggers on tasks involving Tailwind classes, @theme blocks, CSS-first configuration, or cleanup of v3-era syntax.
$ npx -y skills add mastra-ai/mastra --skill tailwind-v4 --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/tailwind-v4Context preview
The summary Claude sees to decide when to auto-load this skill.
Tailwind CSS v4 usage guide and v3-to-v4 differences. This skill should be used when writing, reviewing, or refactoring any Tailwind CSS code in this repo. Triggers on tasks involving Tailwind classes, @theme blocks, CSS-first configuration, or cleanup of v3-era syntax.
name: tailwind-v4 description: Tailwind CSS v4 usage guide and v3-to-v4 differences. This skill should be used when writing, reviewing, or refactoring any Tailwind CSS code in this repo. Triggers on tasks involving Tailwind classes, @theme blocks, CSS-first configuration, or cleanup of v3-era syntax.
How to write idiomatic Tailwind v4 and spot v3-era syntax that still compiles but should not appear in new code.
Check the pinned version before using recent utilities: the playground packages pin `tailwindcss` in their `package.json` (4.3.3 at the time of writing, including v4.3 utilities like `scrollbar-*`, `zoom-*`, and `tab-*`). When unsure whether a utility, variant, or directive exists in the pinned version, verify against the docs instead of guessing:
Tailwind v4 is configured in CSS, not JavaScript.
| Use | Never use (v3-era) | | -------------------------------------------------------------------------- | ------------------------------------- | | `@import 'tailwindcss'` | `@tailwind base/components/utilities` | | `@theme { --color-x: ...; }` for tokens that should generate utilities | `tailwind.config.ts` for new work | | `@utility name { ... }` for custom utilities (works with variants) | `@layer utilities { .name { ... } }` | | `@custom-variant dark (&:is(.dark *))` | JS `plugins` / `addVariant` | | `@source "path"` / `@source inline("...")` for extra sources / safelisting | `content` array / `safelist` config | | `@variant dark { ... }` to apply a Tailwind variant inside custom CSS | duplicating media queries / selectors | | `@reference "app.css"` for `@apply` in scoped styles (Vue, CSS Modules) | duplicating stylesheet imports | | `var(--color-x)` in CSS, `getComputedStyle` in JS | `theme()` function, `resolveConfig` | | `@config "…"` / `@plugin "…"` only for existing JS-config integrations | adding new JS configs or plugins |
`@theme` variables are API: each one emits a native CSS variable AND generates utilities (`--color-*` → `bg-*`/`text-*`/`border-*`/..., `--text-*` → `text-*`, `--shadow-*` → `shadow-*`, `--animate-*` → `animate-*`, `--breakpoint-*` → responsive variants). A plain `:root { --x: ...; }` variable generates nothing — use it for runtime-only values. When a token's value references another variable (`--color-x: var(--y)`), declare it in `@theme inline` so the utility resolves the reference at the declaration site. In custom CSS, `--alpha(var(--color-x) / 50%)` and `--spacing(4)` replace v3 `theme()` math.
Bare names shifted one step down the scale, so the v3 spelling silently renders smaller or lighter:
| v3 | v4 | | --------------------------------- | ----------------------------------------------------------------- | | `shadow-sm` / `shadow` | `shadow-xs` / `shadow-sm` | | `drop-shadow-sm` / `drop-shadow` | `drop-shadow-xs` / `drop-shadow-sm` | | `blur-sm` / `blur` | `blur-xs` / `blur-sm` | | `rounded-sm` / `rounded` | `rounded-xs` / `rounded-sm` | | `outline-none` | `outline-hidden` (a11y-safe); `outline-none` now truly removes it | | `ring` (3px) | `ring-3`; the default ring is now 1px `currentColor` | | `bg-opacity-50`, `text-opacity-*` | opacity modifier: `bg-black/50`, `text-white/50` | | `bg-gradient-to-r` | `bg-linear-to-r` (plus new `bg-conic-*`, `bg-radial-*`) | | `!bg-red-500` (prefix) | `bg-red-500!` (suffix) | | `flex-shrink-*` / `flex-grow-*` | `shrink-*` / `grow-*` | | `bg-[--var]` | `bg-(--var)`; brackets now require `bg-[var(--var)]` | | `grid-cols-[a,b]` (commas) | underscores: `grid-cols-[max-content_auto]` |
The spacing scale is infinite — every number compiles via `calc(var(--spacing) * n)` — so most v3-era arbitrary values have a named form:
| Don't | Do | | -------------------------------------- | --------------------------------------------------------------------------------------- | | `min-w-[400px]`, `w-[600px]` | `min-w-100`, `w-150` | | `h-[1.5rem] w-[1.5rem]` | `size-6` | | `mt-[68px]` | `mt-17` | | `grid-cols-[repeat(15,minmax(0,1fr))]` | `grid-cols-15` | | `h-[100dvh]`, `w-[100dvw]`, `h-[1lh]` | `h-dvh`, `w-dvw`, `h-lh` | | `max-w-[80rem]` | `max-w-7xl` (container scale) | | `data-[current]:opacity-100` | `data-current:opacity-100` (values
Mastra is a framework for building AI-powered applications and agents with a modern TypeScript stack. It includes everything you need to go from early prototypes to production-ready applications.
Repo: mastra-ai/mastra
Smoke test the Agent Builder feature branch end-to-end against a hermetic project scaffolded by the skill (linked to the current worktree). Covers workspace…
Use early when debugging a medium or hard bug, especially when tests alone may not reveal the real runtime failure. Trigger this before extended TDD iteration…
Autonomous, report-only documentation review for Mastra docs. Use when auditing changed docs against source, validating contextual code examples or API…
Convert existing docs diagram images to Mermaid, and author new Mermaid diagrams for Mastra docs. Use when replacing an Excalidraw or PNG/JPG/SVG diagram with…
REQUIRED when modifying any file in packages/playground-ui or packages/playground. Triggers on: React component creation/modification/refactoring, UI changes,…
Review open mastra-ai/mastra GitHub issues, identify direct @mastra/core bugs, and apply the @mastra/core label. Use when auditing issues for core ownership,…