Posts tagged Claude Code — AI × software engineering, made practical.
You will learn the four levels of the C4 model and how to write them as a plain-text ARCHITECTURE.md that people and coding agents both read before changing code.
How we replaced the take-home test with a live Claude Code pairing session built around a believable agent mistake, and the five-line rubric we now use to score what the candidate does before the first prompt and after the agent says it's done.
You'll learn the difference between guardrails written into an agent's prompt and guardrails the environment enforces, and how to decide which of your rules need which.
You will learn how to agree on what 'done' means before work starts, using BATNA and a five-line Done Contract, and how to hold to it with teammates, PMs and coding agents.
This post covers five guardrails you can merge this sprint so the database migrations your coding agent writes don't break during rolling deploys: an N-1 compatibility job, lint output written for the agent, a phase state file, a production read gate, and a one-line CLAUDE.md rule plus a reviewer checklist.
You'll learn how to partition parallel agent work and design the merge step (output contracts, shared-file ownership, seam reviewers and reducer budgets) so that fanning out actually saves time, and when you shouldn't fan out at all.
You'll learn how known flaky tests teach coding agents to rerun real regressions until they pass, and how flake fingerprints, a rerun ledger and test-writing bans in CLAUDE.md stop that from happening.
You'll learn why coding agents copy the patterns in your existing code instead of following the rules in CLAUDE.md, and how a four-step exemplar audit finds and fixes the files they copy most.
I said one sentence at turn 6, the agent obeyed it for thirty turns, then compaction quietly summarized it out of existence and the agent ran the exact command I'd banned — here's the fix that isn't "write a better CLAUDE.md."
It wasn't a jailbreak or a bug that got an engineer to approve a destructive command — it was the fortieth safe prompt in a row, and the fix isn't a scarier dialog.
Two hundred tool calls into a cleanup session, my agent quoted a config file back to me word-for-word — a file it had deleted ninety calls earlier — and the real explanation had nothing to do with the model being wrong.
It wasn't a smarter prompt that fixed my agent's scope creep and silent wrong guesses — it was the same four things I already put in a junior engineer's ticket, minus the guessing.
A Claude Code subagent had room to spare and still rebuilt a feature on a file a teammate had deleted twelve minutes earlier — the cache bug hiding inside every long agent session, and four concrete hooks that kill it.
Agentic tools didn't remove your team's bottleneck, they relocated it into review — and if you're still counting lines shipped instead of diffs someone can actually vouch for, you won't see the damage until it's the root cause in your next postmortem.
If your first multi-agent run came back with confident garbage, the fix isn't a better model — it's the same delegation skill you already learned the hard way with your first junior hire.
AI coding tools didn't make your team faster — they moved the bottleneck somewhere your dashboard isn't looking, and the bill shows up two sprints later as a postmortem.
That confident, plausible, wrong edit your agent just made wasn't a hallucination — it was a stale cache hit, and every long agentic session has the exact same one sitting inside it unmonitored.
The two prompts looked almost identical; one let a bug hide in production for two days, the other made the agent stop and confess exactly where it was stuck.