Theme: Smoke
Background: Field
Theme: Smoke
Background: Field
System

Skills

Reusable AI instructions, tuned for this project

These 30 skill files live in .claude/skills/ in this repo and encode this project’s conventions: component patterns, token rules, navigation wiring, and more. Invoke any skill by name in Claude Code and it follows the exact steps without re-explanation each session. Expand any skill to read the full file, and copy it to adapt it for your own project. The recurring ones run as loops: see Loops.

widgetsnew-component
How it works

Scaffolds a new design system component (a typed React component, a token-only CSS stylesheet, and a Storybook stories file), then registers it in the build-enforced component registry and design.md. Enforces the ds- BEM naming prefix, semantic token usage, and the correct stories format without needing reminders.

new-component.mdmd
Invoke:add a [Name] componentcreate a [Name] componentscaffold [Name]

Walks a new design token through every surface it must reach: the token file its category lives in (both theme files for colour), the generated registry, the foundations pages, the Storybook token docs, and design.md. Covers the extra packaging steps a TypeScript-side token needs, and the validators that hold each home in sync.

new-token.mdmd
Invoke:add a tokenadd a [name] tokennew token familyadd a colour token
palettenew-preset
How it works

Walks a new theme preset from a brand colour to a complete shipped look: every lever declared in the preset registry, the accent sextet curated, the stylesheet generated into the package, and the completeness gate passed, including the contrast check on every action fill and what sits on it, resting, hover and pressed, in both themes. Ends with the theme live behind one data-brand attribute, in the home page's selector and the playground's picker with no extra wiring, and with a specimen page of its own beside a downloadable DESIGN.md.

new-preset.mdmd
Invoke:add a theme presetadd a new themenew presetadd a site look
landscapenew-background

Walks a new shader scene or site background through every home it has: the scene in the library with its params, passes and colour roles, the playground's Shaders view template, the site's background registry row with its per-band tuning, the shaded chats that stand on it, the gesture list, and the visual pass that proves it on every page and in every theme.

new-background.mdmd
Invoke:add a shader sceneadd a backgroundnew backgroundadd a shader presetretune the horizon
insert_drive_filenew-page

Creates a new website page by mirroring a live exemplar page's layout shell, then wires it into every place the site tracks pages: the section sidebar and breadcrumbs, with the sitemap deriving automatically. Prevents the common mistake of adding a route without registering it.

new-page.mdmd
Invoke:add a page for [X]create a [section] pageadd [X] to the site
space_dashboardnew-template

Builds a full-viewport template screen from the library alone, then registers it everywhere templates are tracked: the nav entry the index carousel and sitemap derive from, the chromeless list, and the chat-corpus exclusion. Owns the checklist so a screen never ships half-wired.

new-template.mdmd
Invoke:add a [X] templatebuild a template screen for [X]new template
rulenew-validator
How it works

Walks a new validator or generator script through the ritual the existing scripts follow: the doc block that records what it guards and why it runs where it runs, the CRLF and path conventions that keep Windows checkouts green, and the regenerate-and-byte-compare pattern for generated surfaces. Ends with the wiring: the validate-registry chain, the website's subset, and the closing CLAUDE.md entry.

new-validator.mdmd
Invoke:add a validatornew validator scriptadd a generatorbuild-enforce thischain a script into validate-registry
previewvisual-review

Opens the site in a browser preview, drives each page through both light and dark mode at desktop and mobile widths, and screenshots them. Checks for invisible text, broken layouts, overflow, and stuck hover states, then reports findings or confirms all clear.

visual-review.mdmd
Invoke:check how this looksreview light and darkvisual checkscreenshot the page
frame_inspectdesign-qa
How it works

Renders the target in both themes, magnifies its seams, corners, and states, and lines it up against its nearest rendered siblings. Judges the arrangement against the fundamental principles (proximity, alignment, repetition, contrast, spacing) and the parts against component-scale craft checks, fixes what has one right answer, and reports the taste calls that need a decision.

design-qa.mdmd
Invoke:design QA [Name]polish the [Name] componentis [Name] good enoughdesign QA the [category] components
devicesresponsive-sweep
How it works

Loads every page of the site at every breakpoint width, from a small phone to a wide desktop, and measures what a person would otherwise have to spot: content running off the screen, text cut off or spilling out of its box, and controls stacked on top of each other. Each finding comes with a marked screenshot, is judged by eye before it is called a defect, and is fixed where it starts: in the component when the component breaks, with a story at the width that broke it.

responsive-sweep.mdmd
Invoke:run the responsive sweep/responsive-sweepcheck every page at every sizesweep the site for layout breaks
animationanimation-jump-check

Plays a page in a headless browser and records where every visible element sits on every animation frame, then reports what a still can never show: an element that snaps instead of gliding, neighbours drifting out of step, an open popover losing its anchor. Each finding is a lead until someone has stepped through that moment and watched it, so the report separates real faults from motion that is meant to step.

animation-jump-check.mdmd
Invoke:run the animation jump check/animation-jump-checkcheck this animation for jumpsfind the snap in this motion
manage_searchtoken-audit

Scans CSS files for hardcoded hex colours, raw rgb() values, pixel values, and transition timings that should reference design tokens, plus component TS/TSX files for colour-shaped literals. Flags near-twins of existing tokens as their own finding class. Reports file, line number, offending value, and recommended token replacement. Accepts a single component, all-components, or website as scope.

token-audit.mdmd
Invoke:check for hardcoded valuestoken auditaudit [component] CSSare there raw colours
sync_alttoken-rename

Carries a token rename through the whole system in one pass: a codemod over every stylesheet and component, the guarded hand mirrors, the validator regexes that parse the old shape, the foundations pages, the Storybook token docs, and design.md. The mirror guards turn the sweep into a build-error checklist, so a consumer the codemod missed fails the build instead of shipping half-renamed.

token-rename.mdmd
Invoke:rename a token familyrenumber the [category] scaletoken renamechange token naming
spellcheckcontent-audit

Scans shipped prose against content-design.md: banned words, em dashes, promotional register, first person where the system should be the subject, and rhythm problems no word list catches. Reports each finding with its location, the offending text, and a suggested rewrite. Accepts a page, a data file, or a whole surface as scope.

content-audit.mdmd
Invoke:content auditaudit the copy on [page]check this prose against the content guideany AI slop in [file]
rocket_launchpre-deploy

Runs the same checks as CI before a push to Vercel: lint, the library type-check, the API compatibility gate against the last release, the publishable npm package build, every Storybook story as a render, interaction, *and* accessibility test (Vitest + headless Chromium + axe, with story play functions asserting behavior) plus the unit tests of the pure modules, the Storybook build, the website lint + build (Next.js), the validators that read the built HTML, and the served-site checks: a hydration smoke in a real browser, a pointer-flood stress of every drag grip, and a page-level axe pass in both themes. Knows the npm-workspace layout and watches for SSR-unsafe code, portal regressions, and static generation failures.

pre-deploy.mdmd
Invoke:is this ready to push?run the buildpre-deploy checkcheck before I push
publishship

Makes finished work live on the deployed site. Surveys the tree so unrelated files never get swept into a commit, runs the full local verify (the single script mirroring CI) before anything is committed, merges branch work into main when needed, pushes, confirms the CI run goes green, then loads the deployed site in a real browser to prove it renders (a deploy is not done at HTTP 200), and reports exactly what deployed.

ship.mdmd
Invoke:ship itmake it livepush to maindeploy this
rocket_launchsuper-ship
How it works

Chains the drift audit, an API consistency audit and the responsive sweep into the ship flow for structural work. Runs the full drift audit, then the API audit over the components the work touched, fixes the broken and stale findings both surface, stops to ask if any audit section was skipped, sweeps every page at every breakpoint width and fixes the layout breaks it finds, then ships the combined result: full verify, merge into main, push, CI watched to green, and the live site proven rendering. Gap findings and new-validator recommendations are reported as follow-ups, never built mid-ship.

super-ship.mdmd
Invoke:super shipsuper ship itaudit and shipbulletproof shipaudit the API and ship
savecheckpoint

Saves work in progress to a remote branch as a safety net, then stays on that branch so work continues. It never touches main and never deploys: if invoked on main it moves the work to a new branch first, because pushing main publishes the site. A quick lint runs before the push and failures are flagged without blocking the backup.

checkpoint.mdmd
Invoke:checkpointsave my progressback this uppush to the branch
local_parkingpark

Shelves an experiment: commits the session's work, pushes it to a remote branch, then returns to a clean main. Nothing deploys and nothing merges; the report names the branch so the work is easy to resume later.

park.mdmd
Invoke:park thisshelve thisset this asidepark it
flight_landland

Resolves every piece of pending work in the repo in one pass. Sweeps worktrees, branches, uncommitted changes and stashes, reads each one to judge whether it is finished, superseded or abandoned, and proposes a disposition for all of it at once: land, keep, or delete. Approved work merges into a local main one branch at a time and the combined result runs the full verify; anything deleted is archived to a recoverable tag first, and nothing is ever pushed.

land.mdmd
Invoke:land the workcombine my branchesclean up the brancheswhat's worth shipping
rocket_launchrelease

Cuts an npm release of the component library: bumps the single source-of-truth version, runs the Release workflow in dry-run to prove a real consumer can install and build the tarball, publishes with signed provenance, then tags and writes the GitHub Release against the exact commit that shipped. Knows the two things that bite on release day: a version number can never be reused, and the registry lags a green publish by minutes.

release.mdmd
Invoke:cut a releasepublish a new versionship the package to npmrelease [version]
campaignrelease-post

Turns a shipped release into its X announcement: a bento-grid release card drawn in the system's own dark theme, every colour and type value lifted from the live token CSS rather than remembered, rendered headlessly to a paste-ready PNG at twice the post size. The copy comes from the tag and the commits, not from memory, and holds to the content guide: sentence case, no emoji, neutral, and inside the character limit.

release-post.mdmd
Invoke:make the release postrelease image for [version]announcement copy for the release
fact_checkdrift-audit
How it works

Sweeps every place the repo describes itself (skills, CLAUDE.md, design.md, the README that ships to npm, and the website's own explanations of how it is built) and flags anything that no longer matches reality. Executes the commands and recipes the docs prescribe rather than just reading them, so a skill that would break on the next run is caught before someone runs it. Reports findings grouped by severity.

drift-audit.mdmd
Invoke:run a drift auditare the docs and skills up to dateaudit for gapscheck for structural drift
articlecomponent-doc-page

Creates a full-quality documentation page for a design system component on the website. Reads the component's props to generate a variant showcase grid (the Button page is the benchmark), writes all three page files, and adds the component's preview entry (the one hand-maintained surface). The index card, sidebar, sitemap and breadcrumbs derive from the component registry, so there is no navigation to wire.

component-doc-page.mdmd
Invoke:document [X] on the websiteadd a docs page for [X]create the website page for [X]
accessibilityaccessibility-audit

Audits a component or page against WCAG 2.1 AA criteria. Checks semantic HTML, ARIA usage, keyboard navigation, focus styles, and colour contrast via both source code analysis and live screenshots. Reports file and line-level findings with WCAG criterion and severity.

accessibility-audit.mdmd
Invoke:accessibility audita11y check on [component/page]check WCAG complianceis [X] accessible
compareapi-consistency

Reads component Props interfaces, across the library or scoped to one component and its family, and flags inconsistencies: mixed boolean naming (disabled vs isDisabled), mismatched size enums, emphasis and colour mixed in one prop, missing standard props, structural mismatches within families, and registry descriptions or specs that name a prop the contract no longer carries. Produces a grouped findings report prioritised by breaking impact.

api-consistency.mdmd
Invoke:review component APIsprop consistency auditare our component props consistentcheck for API inconsistenciescheck this component's API
differencecomponent-consistency-audit

Sweeps every component for the same thing done more than one way: a checkbox, radio, switch or chosen mark drawn by hand instead of the shared indicator, a visually-hidden recipe or close button copied rather than composed, and a surface family (option rows, cards, overlay rows, navigation rows) whose members split on fill, border, radius, hover, selected or disabled. Runs the shared-primitives validator for the mechanical half, builds the family tables fresh from the stylesheets for the rest, and lands the fixes on a local branch for approval.

component-consistency-audit.mdmd
Invoke:audit component consistencyconsistency auditare the components consistentfind redrawn controlscheck the surface families
travel_exploreseo-audit

Sweeps the technical SEO surface of the site: page titles and descriptions, canonical URLs, the sitemap and robots rules, social preview tags, and structured data. It checks the HTML the server actually sends rather than trusting the source, fixes what it finds on a branch for approval, and reports a clean pass when there is nothing worth changing.

seo-audit.mdmd
Invoke:run the SEO audit/seo-audit
reviewschat-quality
How it works

Reads the site chat's own report card: every thumbs verdict a visitor left, joined back to the logged exchange it rates. Disliked answers become golden-set regression cases, the answer-quality eval runs against the updated set, and the fixes land on a branch with a plain-English report for approval. One of the loops described on the Loops page.

chat-quality.mdmd
Invoke:run the chat quality loop/chat-quality