Gerris home
Gerris

Chris Abraham: technical consulting, AI tools, and technical SEO

Home › Case Studies › Built with Codex and Claude Code

Built with Codex and Claude Code

I run Claude Code the way a technical lead runs a development team: I write the requirements, make the design decisions, review every change, insist on tests, and decide what ships. These are three things built that way.

OpenAI Codex and Claude Code are now my two main coding assistants. The three original builds below were done with Claude Code; ongoing work on this site also uses Codex. I use GitHub Copilot, Gemini, Grok, and sometimes Perplexity as well, choosing around the task rather than a single provider.

Blackbox: a command-line chief of staff

Blackbox, or bb, is my own assistant. It runs on a Debian server I administer and manages the operational side of my business from the terminal.

What it does

How it was built

Over eight days, Claude Code took it from a 1,500-line script to about 12,000 lines: Python modules, an installer, a backup tool, and 140 end-to-end tests across 54 commits on main. Claude Code wrote the implementation. I specified the behavior, wrote structured feedback documents with scoped priorities and open architecture questions, tested each stage, compared model backends from OpenAI, Anthropic, and open-weight providers against each other on real tasks, and accepted or rejected the work.

Safety rules

Built from real use

The second week was the most useful. I used bb the way I actually talk, pasted the sessions back, and every misfire became a fix plus a test that uses my exact words. A shorthand I'd typed for weeks had been silently ignored, so now bb says plainly when something isn't a command and shows what would have worked. A ranking that gave hourly jobs no credit was found by asking a simple question about the results. Rules I stated once in conversation now live in code, where they can't drift. Every screen ends with the exact next command, which turned out to be the feature I value most.

The deploy loop

Work happens on a branch in a development worktree. Tests run, the database is backed up, the branch is fast-forwarded to main and pushed, and a live smoke test confirms the result. It's the same discipline I bring to client automation pilots.

Hill Mole: a legacy blog off dead software

Hill Mole is my serialized novel, 309 entries written from 2005 to 2022 on Movable Type, which had stopped working. With Claude Code, I moved it to static pages on GitHub Pages, preserving the content, the feel of the original, and every original URL, including old archive and feed addresses. Every entry now has a hand-written title and description checked by a script on each build, schema.org data, llms.txt coverage, and IndexNow submission. The same approach rescues any client site stranded on old software. See project rescue.

This site

Gerris is plain HTML generated by a short Python script, also built with Claude Code. Every page has structured data and a Markdown twin for AI tools, the site publishes llms.txt and a full-text llms-full.txt, and each build checks title and description lengths, word counts, broken internal links, and the copy rules. It's static, fast, readable without JavaScript, and an example of the advice in the guides.

What this means for clients

Building software with AI coding assistants is a real skill, and the skill is mostly the part that isn't typing: knowing what the job is, specifying behavior precisely, catching what the model got wrong, testing, and owning the decision to ship. That's what I bring to a client's tool, a client's repository, or a client's developers.

Tell me what you'd build

Updated