Boris’s whole workflow turns on a single rule: never let Claude write code until you’ve reviewed and approved a written plan. Everything else — the research phase, the annotation cycle, even the choice of plain markdown over Claude Code’s built-in plan mode — exists to make that rule enforceable.
The four phases
- Research. Claude reads the relevant code “deeply” (his word, deliberately chosen) and produces
research.md. The vocabulary matters — saying deeply, intricacies, thoroughly visibly changes how much surrounding context the model loads. This is the step that prevents implementations which pass tests in isolation but break the surrounding system. - Planning. Boris asks for a
plan.mdwith concrete approaches, snippets, and exact file paths. Crucially, he refuses Claude Code’s built-in plan mode in favor of a markdown file he can annotate. - Annotation cycle. This is the part most workflows skip. Boris adds inline notes directly into the plan — correcting wrong assumptions, killing approaches, injecting domain knowledge — and re-prompts. One to six iterations, all under the standing instruction “don’t implement yet.” The plan file becomes shared mutable state between him and Claude.
- Implementation. Only after the plan is locked in does he say “execute everything in the plan.” Strict typing, run type-checks continuously, mark each task complete.
What I find most interesting
- Markdown as the contract, not chat. Chat is ephemeral and lossy; an annotated
plan.mdis reviewable, editable, and survives compaction. Treating the plan as the artifact (not the conversation) is the real insight. - Word choice as a steering wheel. “Read this deeply” producing measurably different output than “look at this” is a real thing in practice. Prompts aren’t incantations, but vocabulary picks the depth of work.
- Terse mid-execution corrections. During implementation he drops to one-sentence nudges like “You didn’t implement the deduplicateByTitle function.” Long prompts are for planning; short prompts are for course-correction.
- He hasn’t seen context-window degradation at 50%. Counter to a lot of folk wisdom — credits Claude’s auto-compaction plus the persistent plan doc as the reason long sessions still work.
Hot takes worth flagging
- The default “prompt → fix errors → repeat” loop produces “a mess that completely falls apart for anything non-trivial.”
- Claude Code’s built-in plan mode “sucks” — markdown beats it on editability.
- He’s skeptical of orchestration scaffolding (ralph loops, MCP towers, multi-agent setups) — says the results “are a mess” the same way ad-hoc prompting is.
My one-line takeaway
The annotation cycle is the move I want to steal. Most of the productivity gap between people getting great results from Claude and people getting slop comes from whether there’s a written, mutable, reviewed plan sitting between the prompt and the diff. The implementation step is almost a formality once the plan is right.