Skip to main content

Skills

This site is built with Claude Code as a day-to-day collaborator. Three custom commands live in .claude/commands/ as Markdown files. Each filename becomes a slash command — check.md runs as /check, and so on. Claude Code reads the file's contents as instructions when the command runs. They've been in use since early in the project; this page is the first write-up of any of them.

/check​

Runs the same style, spelling, and link checks that CI runs, so issues surface locally before a push instead of in a failed GitHub Actions run.

  1. Run Vale against website/docs, website/blog, and website/src/pages.
  2. Run codespell against those same paths, plus website/static/llms.txt and README.md.
  3. Run Lychee against every Markdown and MDX file in the site, plus llms.txt and README.md.
  4. Report which checks passed, which found issues, and which were skipped because the tool isn't installed.
vale --config=.vale/.vale.ini website/docs website/blog website/src/pages
codespell website/docs website/blog website/src/pages website/static/llms.txt README.md
lychee --config .lychee.toml 'website/docs/**/*.md' 'website/docs/**/*.mdx' 'website/blog/**/*.mdx' 'website/src/pages/**/*.mdx' 'website/static/llms.txt' 'README.md'

/new-post​

Scaffolds a new blog post with correct frontmatter, so every post starts from the same shape instead of copy-pasted from whatever post came before.

  1. Take the post title as an argument, or ask for one if none was given.
  2. Generate a slug from the title (lowercase, hyphen-separated, no special characters).
  3. Create website/blog/YYYY-MM-DD-{slug}.mdx, dated with today's date, with the frontmatter and a {/* truncate */} marker already in place.
  4. Remind the reviewer to replace the placeholder content, check the tag list, and add any images to website/static/img/blog/.

/start​

Starts the local Docusaurus dev server, checking first so a second one doesn't get started by accident.

  1. Check whether a Docusaurus dev server is already running. If so, report its URL instead of starting a duplicate.
  2. If not, start one in the background using Node 20 via nvm.
  3. Wait for the server's own "Docusaurus website is running" success message before reporting it's ready.
  4. Report the local URL: http://localhost:3000/showcase-site/.

See also​

  • CLAUDE.md — the other mechanism Claude Code reads in this repo, automatically rather than on request.
  • Coupling map — the /check command's shell invocations are one of the pairs it tracks.
  • How I built this — the broader story of building this site with Claude Code.