Skills

Reusable AI instructions, tuned for this project

These 27 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

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]
palettenew-token

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

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 WCAG AA check on the action pairing 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.

new-preset.mdmd
Invoke:add a theme presetadd a new themenew presetadd a site look
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

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

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
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 publishable npm package build, every Storybook story as a render, interaction, *and* accessibility test (Vitest + headless Chromium + axe, with story play functions asserting behavior), 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 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

Chains the drift audit into the ship flow for structural work. Runs the full audit first, fixes the broken and stale findings it surfaces, 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 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_launchfirst-deploy

The one-time path from a green private repo to a live public product: the Vercel projects, the placeholder URL becoming real, the parked uptime cron waking up, the npm Trusted Publishing registration this repo does not yet have, the first publish, and the wiring the chat and analytics wait on. Ordered so nothing ships pointing at a thing that does not exist yet.

first-deploy.mdmd
Invoke:go livefirst deployset up the public phasetake the site public
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

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 all component Props interfaces and flags inconsistencies across the library: mixed boolean naming (disabled vs isDisabled), mismatched size enums, missing standard props (className, disabled), and structural mismatches within component families. Produces a grouped findings report prioritised by breaking impact.

api-consistency.mdmd
Invoke:review component APIsprop consistency auditare our component props consistentcheck for API inconsistencies
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

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