Skip to content
Practitioner Notes
Prof Rod Avatar

Quick Thoughts

Short-form practitioner insights on zero employee organizations — written for sharing.

You ask if it's done. It says yes. You check, and it isn't. That's not a lie, it's a signal problem: without a check it can run, "looks done" is the only evidence Claude has to go on, and you become the QA department…

claude-codeverification

It gets it wrong. You correct it. Still wrong. You correct again, and the third attempt is, more often than not, somehow worse. That's not a fixed law, just a pattern I keep seeing: every failed attempt stays in the…

claude-codecontext

Three hundred lines of instructions and it still breaks your conventions. So you add more rules. It gets worse. Here's my read on why: bloated instruction files cause the model to ignore the instructions that matter…

claude-codecontext

You ask how the auth layer handles token refresh. It reads forty files into your main conversation, and now the actual implementation runs on a stuffed context, exactly when you need it sharpest. Ask for a subagent…

claude-codecontext

You won't let it attempt the aggressive refactor, so you micromanage every step and get a worse result slowly. Every prompt creates a checkpoint. Double-tap Escape, or run rewind, and restore the conversation, the code…

claude-codepractice

A pattern worth watching for: you write a long spec, it builds the thing, and you discover at the demo that you never thought about the edge cases. Flip it. Start with almost nothing: "I want to build X. Interview me in…

claude-codepractice

Your instructions say "always run the linter after edits." Most of the time, that's exactly what happens, until the day it doesn't, and you find out later, from something else. An instruction is a preference the model…

claude-codeverification

You walk away from a long task. You come back. It says "complete." The build is red. A Stop hook, a script Claude Code runs for you, blocks the turn from ending until your check passes. Not a request to verify. A…

claude-codeverification

Ask a session to review its own implementation and you usually get a glowing self-assessment. Makes sense: it's evaluating the reasoning that produced the code, not the code. Use a second session with fresh context. One…

claude-codeverification

Ask an unscoped reviewer for gaps and it finds some, whether or not any exist. That's what you asked it to do. A common shape this takes: a review comes back with a dozen findings, you fix all of them dutifully, and the…

claude-codeverification

Agent teams go beyond subagents: one session leads, teammates work in their own context windows and talk to each other directly, and you can address any of them. They also burn roughly seven times the tokens of a single…

claude-codeeconomics

For a change that touches two hundred files, don't run one enormous session. Generate the task list to a file, then loop the agent over it one file at a time in headless mode. The part that makes it safer is the…

claude-codepractice

You've caught yourself typing "and don't forget to run the linter" for the fourth time this week. That's the tell. Most people treat skills as documents the model reads when relevant, but they can be workflows that take…

claude-codepractice

Custom subagents, the sub-tasks you delegate to their own context window, take a model: field, and most people never set it. It cuts both ways. A security reviewer restricted to read-only tools can run on the strongest…

claude-codeeconomics

A long session auto-compacts, the tool that condenses your conversation history so it fits in context again, and suddenly it has forgotten which files you modified and what the test command was. Most people only know…

claude-codecontext

Say you're refactoring the billing module and also fixing an unrelated UI bug. Those two jobs have nothing to say to each other, they just need to not overwrite each other's files. That's not a job for agent teams…

claude-codepractice

A second session with fresh context reviews better than the one that wrote the code. A second model family reviews differently again. This is a pattern from the power-user community, not a measured result, but the logic…

claude-codeverification

"Make the dashboard look better" produces something that compiles and looks nothing like your design. Close the loop with an image. Paste the mockup and say: implement this, then screenshot the result, compare it to the…

claude-codeverification

"The auth helper, I think it's somewhere in src/utils, it handles tokens": and now it's grepping around, burning context to find something you already know the location of. Reference it directly with an @ path and it…

claude-codecontext

Auto mode puts a separate classifier in the approval loop. It blocks scope escalation, unknown infrastructure and hostile-content-driven actions, and lets routine work through without prompting. Two things worth holding…

claude-codesecurity

Every session you re-explain the test runner, the import style, the branch naming. Groundhog Day, at your expense. Run /init. It reads the codebase (build system, test framework, existing patterns) and writes a starter…

claude-codesetup

You ask for a feature. It starts editing immediately, and solves the wrong problem in the wrong place. Plan mode separates exploration from implementation. First: read this directory and understand how sessions work…

claude-codepractice

Mid-task you wonder what a flag does. Asking pollutes the session with a tangent that stays in context for the rest of the day. So you don't ask. Which is worse. Claude Code has a slash command for exactly this: /btw…

claude-codecontext

You want personal notes (my sandbox database is at, my scratch directory is) without pushing them into the file your team shares. The reason to bother splitting anything up: in a single enormous instruction file, every…

claude-codesetup

You start on the billing refactor, get pulled into the onboarding flow mid-afternoon, and never leave. One session now carries both, plus whatever else came up. By evening the output on either has quietly gotten worse…

claude-codepractice

cat error.log | claude: the log goes straight in, no copy-paste, no truncation, no mangled formatting. Prefix a message with ! and the shell command runs with its output landing in context, which is faster than…

claude-codepractice

You're writing shell loops around the Claude Code CLI to build a Slack bot, or a pull-request reviewer for CI, or a pipeline that fires on a schedule. That's the point where you've stopped using the tool and started…

claude-codepractice

You ask a reviewer for gaps, and it finds some, whether or not any exist. That's the part people miss before they build their own review workflow: /code-review already ships with the tool. It runs in a subagent, a…

claude-codeverification