~/blog/tag/tooling
Tooling
Tools, workflows and configuration that accelerate the development process.
What I write about here
Tools sit between what you mean and what gets done. That sentence sounds obvious until you watch a team adopt a tool that does the opposite, and ship worse code with more confidence.
The posts under this tag are mostly about tooling for working with AI. CLAUDE.md files. Hooks. Skills, plugins, the surrounding scaffolding that turns an agent from a clever autocomplete into something with rules and memory. Half of them are guides to specific patterns that have held up. The other half are critical assessments of tools that look impressive in a demo and fall apart when you put real work through them.
The test I keep applying is simple. Does this tool make my intent more explicit, or does it make the output feel more confident? Those are very different things. A tool that forces you to specify what you want is useful. A tool that paraphrases your vague prompt into fluent code is a liability, no matter how good the demo looked.
Read these posts expecting opinions on specific instruments. I name names. Some tools earn their stars. Some do not.
If you are just getting started with this tooling, the Agentic coding guide is the shortest route through the posts that matter.
best entry points
- Claude Code hooks: deterministic control over AI workflows
Where deterministic control over agent behaviour starts. The tool feature I lean on most heavily.
- The CLAUDE.md file: give your AI permanent memory
The simplest pattern with the biggest impact. Give the agent the context it cannot infer.
- Claude Code /doctor: what it checks and what changed
The shortest way to find out what your setup is actually carrying. The health check turned into a context audit, and it itemises the bill nobody asked for.
Plugin4Shell: a pinned plugin is only pinned if something checks where it landed
Air showed that Claude Code, Codex, Copilot and Gemini CLI all asked git for the commit a marketplace pinned without checking that they got it. I reproduced it in git, watched Claude Code refuse it, and found the same hole in my own CI runner.
read →Recovering a Claude Code session your picker will not show you
WSL went down and took Claude Code with it. The transcript was still on disk, and the resume picker would not offer it. Agent history is durable because it is append-only text on a filesystem, and reaching it needs some program other than the client that just crashed.
Empty catch blocks in AI code: the comment that silences your linter
AI-generated code swallows errors in catch blocks that hold nothing but a comment, and ESLint's recommended config waves them through because of that comment. What I found in my own repositories, why a model writes it, and the rule that sees through the comment.
What a dependency graph finds that your coding agent misses
I pointed a scanner at an internal app that agents had been working in for months. It took under two seconds and produced four tickets. Not one of the defects was in a file, which is exactly why nothing reading files had found them.
Who wrote this commit? Git attribution when an agent does the work
I went looking for the coding agent in 1,644 commits across ten of my public repositories. It left no trace at all. The thing that had quietly rewritten the authorship record was the merge button.
MCP vs CLI for coding agents: what your tools actually cost
Every comparison quotes a multiplier. Mine came out at 88.9x, and my client had already answered the question that number was asking. What a tool surface costs now, and what still separates a schema from a command.
Quality ratchets for AI code: baselines that only tighten
A lint baseline lets you enforce a standard you cannot fix today. Existing violations are grandfathered, new ones fail the build, and the file can only shrink. How PHPStan, ESLint, detekt and Sonar do it, and the four ways a ratchet quietly stops working.
On-call for AI-generated code: what to set up before the pager goes off
The best-known case of AI code taking down production is one the company denies. Nobody outside can settle it, because the records that would settle it were never kept. On-call for code a model wrote is a records problem.
Claude Code in a large codebase: scoping an agent to the part that matters
Coding agents start failing systematically past roughly 400,000 lines. What actually breaks, the Claude Code settings that fix it in a monorepo, and the ignore file everyone recommends, which has never existed.
Your best context is in a session you cannot find
Every agent CLI keeps a full transcript of everything you ever asked it, and each one can only see its own. Here is what searching your agent session history across all of them looks like, and the one thing the tool refuses to claim.