Skills

Reusable AI instructions, tuned for this project

These 20 skill files live in .claude/skills/ (most in this repo; only ga-reportlives in my personal skills folder) 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. Two of them run on their own schedule: 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]
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
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
manage_searchtoken-audit

Scans CSS files for hardcoded hex colours, raw rgb() values, pixel values, and transition timings that should reference design tokens. 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
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 *and* accessibility test (Vitest + headless Chromium + axe), the Storybook build, and the website lint + build (Next.js). 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 robertritacca.com. Surveys the tree so unrelated files never get swept into a commit, runs the full local verify (lint, story tests, and the library, package, Storybook, and website builds, mirroring CI) before anything is committed, merges branch work into main when needed, pushes, confirms the CI run goes green, and reports exactly what deployed.

ship.mdmd
Invoke:ship itmake it livepush to maindeploy this
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]
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 components-index card. The 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]
fact_checkheuristic-analysis

Evaluates a page or component against Nielsen's 10 Usability Heuristics. Takes screenshots in light and dark mode, reads the source code, then produces a structured findings table with severity ratings (Pass / Minor / Moderate / Critical) and specific fix suggestions.

heuristic-analysis.mdmd
Invoke:heuristic analysis of [page]UX review of [page]usability check on [component]
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
cyclegrowth-loop

Runs one analytics-driven copy experiment end to end: pulls GA4 data, filters bot noise, forms a falsifiable hypothesis about the words on a page, implements the change on a branch in a temporary worktree, verifies the build, and writes a problem / hypothesis / solution report for approval. Runs itself every Monday, as one of the loops described on the Loops page.

growth-loop.mdmd
Invoke:run the growth loop/growth-loop
historysite-updates

Keeps the Project journal timeline evergreen: reads every commit since the last curated bookmark, clusters them into themes, and writes one story entry (what was built, why, and the outcome in plain English), extending an existing arc when the work continues one. Runs biweekly on a schedule, builds on a branch in a temporary worktree, and hands the new entry over for approval. Nothing is pushed without a human merge.

site-updates.mdmd
Invoke:update the project journalrun the site updates loop/site-updates
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
query_statsga-report

Pulls GA4 data for this site and analyzes it in plain English — with the judgment calls baked in: which traffic is bots, why page titles fragment, and which numbers are normal for a portfolio rather than problems. Lives in my personal skills folder rather than the repo, because it encodes analytics context instead of codebase conventions.

ga-report.mdmd
Invoke:GA reporthow's the site doingsite traffic analysis