<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Leksat</title><description>Notes on software engineering and whatever else I find worth sharing.</description><link>https://leksat.me/</link><language>en</language><atom:link href="https://leksat.me/rss.xml" rel="self" type="application/rss+xml"/><lastBuildDate>Sun, 25 Oct 2026 00:00:00 GMT</lastBuildDate><item><title>One reviewer, one axis</title><link>https://leksat.me/posts/one-reviewer-one-axis</link><guid isPermaLink="true">https://leksat.me/posts/one-reviewer-one-axis</guid><description>Every review skill I tried was good. None of them fit my tasks.</description><pubDate>Sun, 25 Oct 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When a coding agent says a task is done, it isn&apos;t done yet. Ask another agent to review the changes, and it finds a bunch of issues right away. After one or two such rounds, the code is worth my own review. Before that, there&apos;s no point in looking at it.&lt;/p&gt;
&lt;p&gt;These reviews are part of doing the task: all of it happens before anyone else sees the work.&lt;/p&gt;
&lt;details class=&quot;fold&quot;&gt;&lt;summary&gt;I tried several review skills, and each of them is good in its own way&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/cursor/plugins/blob/main/cursor-team-kit/skills/thermo-nuclear-code-quality-review/SKILL.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;thermo-nuclear-code-quality-review&lt;/code&gt;&lt;/a&gt; by Cursor: an extremely strict maintainability review.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/mattpocock/skills/blob/main/skills/engineering/code-review/SKILL.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;code-review&lt;/code&gt;&lt;/a&gt; by Matt Pocock: two parallel agents: one checks the repo&apos;s coding standards, the other the spec.&lt;/li&gt;
&lt;li&gt;My own &lt;code&gt;blind-review&lt;/code&gt;: an agent gets only a path, figures out the purpose of the code by itself and looks for issues with no directions.&lt;/li&gt;
&lt;/ul&gt;&lt;/details&gt;
&lt;p&gt;But they are universal, and my tasks aren&apos;t. What actually works for me boils down to three rules:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Each reviewer is a separate agent, given as little information as possible, so the main agent can&apos;t infect it with its own view of the task.&lt;/li&gt;
&lt;li&gt;It gets a single axis, picked for the task.&lt;/li&gt;
&lt;li&gt;It&apos;s read-only: it reports, and what to do with the report is up to the main agent and/or me.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Some axes I&apos;ve used:&lt;/p&gt;
&lt;details class=&quot;fold&quot;&gt;&lt;summary&gt;Regressions&lt;/summary&gt;&lt;p&gt;I was moving a TypeScript project to &lt;code&gt;strict&lt;/code&gt; mode: a refactoring under tighter typing. The reviewer prompt was roughly &quot;Look at the current changes in this project and check them for regressions&quot;. No other hints.&lt;/p&gt;&lt;details class=&quot;fold&quot;&gt;&lt;summary&gt;The old bugs it ran into became TODOs, and a second reviewer checked them&lt;/summary&gt;&lt;p&gt;Whatever axis I give a reviewer, it always notices bugs along the way. We fixed regressions right away, but the reviewer also found old bugs that were already in the project. We couldn&apos;t just ignore them, and fixing them in a refactoring task was not an option, so we left TODO comments describing them.&lt;/p&gt;&lt;p&gt;Those comments were a byproduct: the regression reviewer wasn&apos;t focused on these bugs and described them sloppily. So a second reviewer checked only the new TODO comments: how accurately each one describes its bug.&lt;/p&gt;&lt;/details&gt;&lt;/details&gt;
&lt;details class=&quot;fold&quot;&gt;&lt;summary&gt;Repo style&lt;/summary&gt;&lt;p&gt;On a patch for an open source project, matching its code style mattered a lot. Some repos have style guides, but practice beats any of them: the reviewer compares our changes with previous commits.&lt;/p&gt;&lt;/details&gt;
&lt;details class=&quot;fold&quot;&gt;&lt;summary&gt;Simpler solutions, with and without context&lt;/summary&gt;&lt;p&gt;After a session where the agent grilled me on the design and we made some decisions, I ran two agents in parallel on the same diff with one question: can the same thing be done simpler? One was told the decisions, the other wasn&apos;t. Both came back with something interesting.&lt;/p&gt;&lt;p&gt;The informed one judged the code within the design. Its findings were targeted: less code, fewer moving parts, a real bug.&lt;/p&gt;&lt;p&gt;The blind one judged the design itself. It kept proposing options we had already turned down, and the main agent filtered those out. But its ideas also changed the design: a couple of times they made me revise decisions from the grilling.&lt;/p&gt;&lt;/details&gt;
&lt;details class=&quot;fold&quot;&gt;&lt;summary&gt;Reliability&lt;/summary&gt;&lt;p&gt;A monitoring system, for example, must always work, under any conditions. A separate reviewer checks that the code never falls over with an uncaught error.&lt;/p&gt;&lt;/details&gt;
&lt;details class=&quot;fold&quot;&gt;&lt;summary&gt;UX&lt;/summary&gt;&lt;p&gt;Not just how convenient it is to click around. When we add new error messages, a separate agent looks at nothing but them: how useful they are, and whether the user understands what to do next.&lt;/p&gt;&lt;/details&gt;
&lt;p&gt;Plus the classics: security, maintainability, etc.&lt;/p&gt;
&lt;p&gt;The main agent writes the reviewer prompts at my request, but I never leave the agents to their own devices. As soon as the reviewers start, I skim their prompts. If one is off, I cancel it and ask for a rewrite. Or I keep it as is and run another one next to it, written my way: one more axis. That&apos;s how the two simplicity reviewers, with and without context, came about.&lt;/p&gt;
&lt;details class=&quot;fold&quot;&gt;&lt;summary&gt;I can also read the full reports&lt;/summary&gt;&lt;p&gt;A reviewer hands its report to the main agent, and Claude Code doesn&apos;t show it to me as is, only the main agent&apos;s take on it. So I have a hook that saves every subagent&apos;s prompt and report to &lt;code&gt;/tmp&lt;/code&gt;. I don&apos;t read them all the time, but now and then I look.&lt;/p&gt;&lt;/details&gt;
&lt;p&gt;Who decides on a report changes from case to case. Sometimes the main agent summarizes the findings for me, and I decide. Sometimes, like in a big refactoring with frequent reruns, it decides by itself. The number of rounds differs too.&lt;/p&gt;
&lt;p&gt;My practice comes down to this: every task needs its own workflow and its own set of focused reviewers. That&apos;s why universal review skills didn&apos;t work for me.&lt;/p&gt;
&lt;p&gt;I&apos;m still experimenting. Maybe I&apos;ll come up with a dozen more reviewers. Maybe the list never ends.&lt;/p&gt;
&lt;details class=&quot;fold&quot;&gt;&lt;summary&gt;Recursion&lt;/summary&gt;&lt;p&gt;This post went through the same process. I had doubts about the last lines, so a reviewer got a single question: does the ending work? It said yes, and showed what to tighten.&lt;/p&gt;&lt;p&gt;One reviewer, one axis 😁&lt;/p&gt;&lt;/details&gt;
</content:encoded><author>alex.leksat@gmail.com (Alex Tkachev)</author></item><item><title>Out of the team chat</title><link>https://leksat.me/posts/out-of-the-team-chat</link><guid isPermaLink="true">https://leksat.me/posts/out-of-the-team-chat</guid><description>Why this blog exists and what comes first.</description><pubDate>Sat, 24 Oct 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I found myself sharing tips and tricks with my colleagues. Now I&apos;m sharing them with everyone.&lt;/p&gt;
&lt;p&gt;It&apos;s about AI, of course: my main tool these days. Currently I&apos;m on Claude Code, but the ideas are usually general and apply to any coding agent.&lt;/p&gt;
&lt;p&gt;My first posts will be about my coding agent setup: user instructions, skills, hooks, config. I&apos;ll keep them short and to the point.&lt;/p&gt;
&lt;p&gt;Mostly, though, this blog is practice for me: putting thoughts into words, and doing it every week. Finding a new topic each time will be the hardest part. A good challenge.&lt;/p&gt;
&lt;p&gt;Wish me luck 🤞&lt;/p&gt;
</content:encoded><author>alex.leksat@gmail.com (Alex Tkachev)</author></item></channel></rss>