# How Alex Kladov actually uses coding agents

rust-analyzer, TigerBeetle

**If you take one thing:** `Hand-typed skeletons`, Claude fills in the bodies. he types the types and function signatures himself and has Claude complete only the bodies, so the code keeps his structure.

- **Agent:** Claude Code (cli) ([source, 2026-01-20](https://matklad.github.io/2026/01/20/vibecoding-2.html))
- **Model:** Claude 3.7 Sonnet ([source, 2026-05-11](https://github.com/matklad/config/blob/2baa99f355e1e6a39febc58a0a93b8e3cd345f5c/home/.config/fish/config.fish#L29))
- **Review:** Owns the structure, runs the code, does not vet the guts ([source, 2026-01-20](https://matklad.github.io/2026/01/20/vibecoding-2.html))
- **Harness:** ChatGPT expands a rough idea into SPEC.md, Claude Code implements against hand-typed skeletons ([source, 2026-01-20](https://matklad.github.io/2026/01/20/vibecoding-2.html))
- **Rules file:** plan.md task list the prompt points Claude at (no CLAUDE.md) ([source, 2025-08-31](https://matklad.github.io/2025/08/31/vibe-coding-terminal-editor.html))

## In their words

> With the spec document in hand, I turned over to Claude code for actual implementation work.

> alias q "llm -s \"Answer in as few words as possible. Use a brief style with short replies.\" -m claude-3.7-sonnet";

> I want to be careful — I can’t vouch for correctness and especially completeness of the above snippet. However, given that the nature of the problem is such that I can just run the code and see the result, I am fine with it.

> Then I asked ChatGPT to expand those two paragraphs into a more or less complete spec to hand down to an agent for implementation.

> Read @plan.md, complete the next task, and mark it with X.


Archetype (our label): Purist. Newest source: 2026-05-11.
Card: https://www.prehistoriq.com/stacks/matklad/ · Data: https://github.com/prehistoriq/stacks/blob/main/data/stacks/matklad.json
