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.
- Run Vale against
website/docs,website/blog, andwebsite/src/pages. - Run codespell against those same paths, plus
website/static/llms.txtandREADME.md. - Run Lychee against every Markdown and MDX file in the site, plus
llms.txtandREADME.md. - 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.
- Take the post title as an argument, or ask for one if none was given.
- Generate a slug from the title (lowercase, hyphen-separated, no special characters).
- Create
website/blog/YYYY-MM-DD-{slug}.mdx, dated with today's date, with the frontmatter and a{/* truncate */}marker already in place. - 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.
- Check whether a Docusaurus dev server is already running. If so, report its URL instead of starting a duplicate.
- If not, start one in the background using Node 20 via
nvm. - Wait for the server's own "Docusaurus website is running" success message before reporting it's ready.
- 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
/checkcommand's shell invocations are one of the pairs it tracks. - How I built this — the broader story of building this site with Claude Code.