Privacy

Accept optional first-party analytics or decline. Functional journey and sound preferences stay on this device.

Read the privacy notice

Open to talks and workshops

All articles

Every one of these started with something breaking.

13 Claude Skills I pulled out of building this site

Each one started as something that broke here: a fake crawler, an unused vector index, an API key that ran dry. The checklists I wrote while fixing them are now free downloads.

Most of what I know about building with AI on this site came from something breaking. Each time, I wrote down what I checked and in what order. Those notes are now 13 Claude Skills, free to download.

A Claude Skill is a folder with a SKILL.md file: instructions Claude loads when a task matches, plus any scripts it needs. Unzip one into ~/.claude/skills/ for Claude Code, or upload the zip in Claude's settings. All of them are MIT licensed.

Where they came from

  • My Slack alerts said Applebot had read /.env.example. It hadn't. A scanner on rented Google Cloud machines was borrowing crawler names, and every request got a 404. That became Crawler or Scanner?.
  • My assistant's vector index was never used, because a DISTINCT ON sat above the search. Separately, one oversized page could wipe a whole embedding sync without a single error. That became the pgvector RAG Doctor.
  • When my API credit ran out, the assistant kept answering from a no-LLM path for days. Making that path fast and honest became Deterministic LLM Fallback. Finding out it had happened at all became the LLM Cost Tracer.
  • I graded my own site C+ for AI search. The FAQ only existed as JSON-LD, and 37 of 38 pages shared one meta description. The checklist I fixed it with is the GEO / AI-Search Audit.
  • My assistant once called my prototypes "production". The rules that stopped it are in the Honest Evidence Writer.

All 13

Engineering

Search and content

Design and review

What's not in them

Nothing specific to this site: no keys, no hostnames, none of my content. Where a script was ported from the site's code, like the Human Check scorer or the crawler verifier, it's the same logic as a standalone file with no dependencies.

They aren't clever. Most of the value is the order of the checks and the list of things to stop doing. That's what I wish someone had handed me before each of these broke.