<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: quintetkit</title>
    <description>The latest articles on DEV Community by quintetkit (@quintetkit).</description>
    <link>https://dev.to/quintetkit</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4109022%2Fcf76ff45-b365-4b7c-a788-a19c036c50f2.png</url>
      <title>DEV Community: quintetkit</title>
      <link>https://dev.to/quintetkit</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/quintetkit"/>
    <language>en</language>
    <item>
      <title>What Works and What Doesn't in CLAUDE.md</title>
      <dc:creator>quintetkit</dc:creator>
      <pubDate>Fri, 04 Sep 2026 05:30:40 +0000</pubDate>
      <link>https://dev.to/quintetkit/what-works-and-what-doesnt-in-claudemd-d22</link>
      <guid>https://dev.to/quintetkit/what-works-and-what-doesnt-in-claudemd-d22</guid>
      <description>&lt;p&gt;Writing "Write clean code" in &lt;code&gt;CLAUDE.md&lt;/code&gt; changes nothing.&lt;/p&gt;

&lt;p&gt;During the process of building 10 personal apps in three months, I rewrote &lt;code&gt;CLAUDE.md&lt;/code&gt; many times.&lt;br&gt;
Since it became clear what worked and what didn't, I will outline that distinction.&lt;/p&gt;
&lt;h2&gt;
  
  
  What Doesn't Work
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Giving instructions with adjectives
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="p"&gt;-&lt;/span&gt; Write clean code
&lt;span class="p"&gt;-&lt;/span&gt; Design for maintainability
&lt;span class="p"&gt;-&lt;/span&gt; Handle errors appropriately
&lt;span class="p"&gt;-&lt;/span&gt; Consider performance
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;None of these work.&lt;/strong&gt; Because "clean" and "appropriate" cannot be objectively judged.&lt;br&gt;
Instructions that cannot be judged cannot even be verified by yourself as to whether they are followed.&lt;/p&gt;

&lt;p&gt;And the person who wrote them cannot verify later if they were followed.&lt;br&gt;
Rules that cannot be verified are the same as non-existent.&lt;/p&gt;
&lt;h3&gt;
  
  
  Writing general best practices
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="p"&gt;-&lt;/span&gt; Follow the DRY principle
&lt;span class="p"&gt;-&lt;/span&gt; Adhere to the Single Responsibility Principle
&lt;span class="p"&gt;-&lt;/span&gt; Do not use magic numbers
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The model already knows these. Writing them adds no information.&lt;br&gt;
&lt;strong&gt;The role of &lt;code&gt;CLAUDE.md&lt;/code&gt; is to convey what the model does not know (project-specific circumstances).&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Writing things that can be understood by reading the code
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="p"&gt;-&lt;/span&gt; We use Zustand for state management
&lt;span class="p"&gt;-&lt;/span&gt; We use Vitest for testing
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;You can see this in &lt;code&gt;package.json&lt;/code&gt;. If you write anything, it should be "why we chose it" or "what not to do".&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="p"&gt;-&lt;/span&gt; State management is Zustand. Migration to Redux was considered but rejected due to boilerplate increase. Do not suggest it.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is worth writing. You will stop receiving the same suggestions every time.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Works
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Writing prohibitions in a verifiable format
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="p"&gt;-&lt;/span&gt; Do not use pure black &lt;span class="sb"&gt;`#000000`&lt;/span&gt; or pure white &lt;span class="sb"&gt;`#ffffff`&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Do not use gradient backgrounds or gradient heading text
&lt;span class="p"&gt;-&lt;/span&gt; Limit to 3 types of motion per screen
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can verify this with &lt;code&gt;grep '#000000'&lt;/code&gt;. &lt;strong&gt;Because it is verifiable, you can mechanically inspect if it is followed.&lt;/strong&gt;&lt;br&gt;
The shape of a UI belongs in a UI specification, not in &lt;code&gt;CLAUDE.md&lt;/code&gt;. What goes here&lt;br&gt;
is the &lt;strong&gt;floor beneath the specification&lt;/strong&gt; — the line you do not want crossed even&lt;br&gt;
when no specification exists. The principle does not change: the persona that writes&lt;br&gt;
the code does not decide how it looks.&lt;/p&gt;

&lt;p&gt;"Make the UI clean" does not work, but "Do not use pure black" does. The difference lies not in the model's comprehension, but in &lt;strong&gt;whether the instruction is verifiable&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  Reducing permissions
&lt;/h3&gt;

&lt;p&gt;This was the most effective.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="p"&gt;-&lt;/span&gt; Do not modify paths outside the scope described in the assigned Issue
&lt;span class="p"&gt;-&lt;/span&gt; If changes outside the scope are needed, stop implementation and report it
&lt;span class="p"&gt;-&lt;/span&gt; Only Reviewers may merge to main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;"Cannot do ~" is more effective than "Do ~".&lt;/strong&gt;&lt;br&gt;
Instructions that increase what you can do have a wide range of interpretation, while prohibitions are narrow.&lt;/p&gt;

&lt;p&gt;Especially the phrase "&lt;strong&gt;stop implementation and report it&lt;/strong&gt;" was effective. Without this,&lt;br&gt;
when the model hits constraints, it tries to push forward somehow.&lt;br&gt;
Providing an exit allows it to retreat there.&lt;/p&gt;
&lt;h3&gt;
  
  
  Explicitly stating exceptions
&lt;/h3&gt;

&lt;p&gt;When writing prohibitions, cases of "but what about this exception?" always arise. Write them in advance.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;Things not treated as out-of-scope:
&lt;span class="p"&gt;-&lt;/span&gt; Automatic updates of lock files due to dependency additions
&lt;span class="p"&gt;-&lt;/span&gt; Test files corresponding to modified files
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you don't write them, judgments will vary each time. &lt;strong&gt;Inconsistent judgments hollow out the rules.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Writing order and dependencies
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="p"&gt;-&lt;/span&gt; Do not start issues involving UI until the UI specification status is:done
&lt;span class="p"&gt;-&lt;/span&gt; Coders in the parallel execution group must be launched simultaneously within one message
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The second point actually worked. &lt;strong&gt;Separating calls makes them serial&lt;/strong&gt;, so&lt;br&gt;
without explicit instruction, they will not run in parallel.&lt;/p&gt;
&lt;h3&gt;
  
  
  Using tables
&lt;/h3&gt;

&lt;p&gt;For lists of states or labels, I have the impression that tables are referenced more often than bullet points.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;| Label | Meaning | When to assign |
|---|---|---|
| &lt;span class="sb"&gt;`status:planned`&lt;/span&gt; | Issue created, not started | When Architect creates the Issue |
| &lt;span class="sb"&gt;`status:review`&lt;/span&gt; | PR created, waiting for review | When Coder creates the PR |
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Writing "when to assign" is important. If you only write the meaning, you will forget to assign them&lt;br&gt;
(in the end, I shifted this to GitHub Actions, but that's a different story).&lt;/p&gt;




&lt;h2&gt;
  
  
  Regarding Length
&lt;/h2&gt;

&lt;p&gt;Shorter is better.&lt;/p&gt;

&lt;p&gt;I once wrote a &lt;code&gt;CLAUDE.md&lt;/code&gt; that swelled to 74KB, but &lt;strong&gt;the latter half was followed less.&lt;/strong&gt;&lt;br&gt;
I haven't verified this definitively, but the experience was clear.&lt;/p&gt;

&lt;p&gt;The one I use now is around 7KB. The breakdown is as follows:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Section&lt;/th&gt;
&lt;th&gt;Proportion&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Permissions by role (what can and cannot be done)&lt;/td&gt;
&lt;td&gt;40%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Overall flow (who receives what from whom)&lt;/td&gt;
&lt;td&gt;30%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;State management (labels and when to assign them)&lt;/td&gt;
&lt;td&gt;20%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Explicit exceptions&lt;/td&gt;
&lt;td&gt;10%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;It contains zero general knowledge.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The cause of the swelling was "just in case I write it." Lines written "just in case" tend to become unjudgable instructions. Unjudgable instructions don't work, so writing them only dilutes the file.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Verify
&lt;/h2&gt;

&lt;p&gt;Whether a written rule works is judged by &lt;strong&gt;whether you can notice when it is broken&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Scope violation → Can be seen with &lt;code&gt;gh pr diff --name-only&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Hardcoded colors → Can be seen with &lt;code&gt;grep&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Missing labels → Can be seen by checking the Issue list&lt;/li&gt;
&lt;li&gt;"Clean code" → &lt;strong&gt;Cannot be seen&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There is no verification method for the last one. That's why it doesn't work.&lt;br&gt;
Before writing, asking "can I notice if this is broken?" helps you avoid writing ineffective lines.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Do not give instructions with adjectives. Unjudgable instructions don't work.&lt;/li&gt;
&lt;li&gt;Do not write general best practices. The model already knows them.&lt;/li&gt;
&lt;li&gt;Do not write things that can be understood by reading the code. If writing, include "why" and "what not to do".&lt;/li&gt;
&lt;li&gt;Write prohibitions in a mechanically inspectable format.&lt;/li&gt;
&lt;li&gt;"Cannot do ~" is better than "Do ~". And always &lt;strong&gt;provide an exit (stop and report)&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Explicitly state exceptions in advance. Inconsistent judgments hollow out rules.&lt;/li&gt;
&lt;li&gt;Keep it short. Lines written "just in case" tend to be ineffective.&lt;/li&gt;
&lt;li&gt;Before writing, verify "can I notice if it is broken?"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I have published the &lt;code&gt;CLAUDE.md&lt;/code&gt; written with this approach and sub-agent definitions for four personas under the MIT license.&lt;/p&gt;




&lt;p&gt;I publish the configuration for splitting Claude Code into separate personas —&lt;br&gt;
Architect, Coder, Reviewer, Conflict Resolver — under MIT. Copy it, run&lt;br&gt;
&lt;code&gt;./setup.sh&lt;/code&gt;, and it works. It does not depend on your tech stack.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/quintetkit/quartet" rel="noopener noreferrer"&gt;https://github.com/quintetkit/quartet&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I built one real tool using nothing but this workflow. Every Issue, PR, review&lt;br&gt;
and merge is still there. &lt;strong&gt;The parts that went wrong were not deleted.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/quintetkit/mdlinkcheck" rel="noopener noreferrer"&gt;https://github.com/quintetkit/mdlinkcheck&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The version that adds a UI Designer persona, review criteria, a per-Issue&lt;br&gt;
parallel execution script and a 10-chapter guide is on the&lt;br&gt;
&lt;a href="https://quintetkit.github.io/index.en.html" rel="noopener noreferrer"&gt;product page&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>claudecode</category>
      <category>ai</category>
      <category>claude</category>
      <category>personaldev</category>
    </item>
    <item>
      <title>Assigning 5 Personas to Claude Code for Parallel Development</title>
      <dc:creator>quintetkit</dc:creator>
      <pubDate>Fri, 04 Sep 2026 04:44:37 +0000</pubDate>
      <link>https://dev.to/quintetkit/assigning-5-personas-to-claude-code-for-parallel-development-5abn</link>
      <guid>https://dev.to/quintetkit/assigning-5-personas-to-claude-code-for-parallel-development-5abn</guid>
      <description>&lt;p&gt;When you give a large request to Claude Code, doesn't this happen?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You asked for authentication logic, but it also included standardizing error handling.&lt;/li&gt;
&lt;li&gt;There are 40 changed files, and you lack the motivation to read them all, so you approve them based on intuition.&lt;/li&gt;
&lt;li&gt;Three days later, you can’t even explain why the implementation is the way it is.&lt;/li&gt;
&lt;li&gt;You want to run tasks in parallel, but fear of conflicts forces you to run them one by one.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While building 10 personal apps in three months and releasing two to the App Store,&lt;br&gt;
I encountered these issues extensively. Here is the architecture I arrived at.&lt;/p&gt;

&lt;p&gt;The conclusion is that &lt;strong&gt;this was not a capability problem. It was a permission design problem.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  What Is Happening
&lt;/h2&gt;

&lt;p&gt;You are asking one persona to handle design, implementation, review, and merging.&lt;/p&gt;

&lt;p&gt;You decide the design, implement it yourself, review it yourself, and merge it yourself.&lt;br&gt;
There is no check or balance anywhere. No human team would approve this configuration.&lt;/p&gt;
&lt;h2&gt;
  
  
  Divide Responsibilities and Lower Permissions
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Persona&lt;/th&gt;
&lt;th&gt;Can Do&lt;/th&gt;
&lt;th&gt;Cannot Do&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Architect&lt;/td&gt;
&lt;td&gt;Create/split Issues&lt;/td&gt;
&lt;td&gt;Write code&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;UI Designer&lt;/td&gt;
&lt;td&gt;Write UI specifications&lt;/td&gt;
&lt;td&gt;Write code&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Coder&lt;/td&gt;
&lt;td&gt;Change only within the assigned Issue's scope&lt;/td&gt;
&lt;td&gt;Touch outside scope, merge, or decide structure&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reviewer&lt;/td&gt;
&lt;td&gt;Review and merge&lt;/td&gt;
&lt;td&gt;Implement or resolve conflicts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Conflict Resolver&lt;/td&gt;
&lt;td&gt;Resolve conflicts&lt;/td&gt;
&lt;td&gt;Merge or act before being called&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;All use the same model.&lt;/strong&gt; There is no difference in intelligence. The only difference is what they are allowed to do.&lt;/p&gt;

&lt;p&gt;Why does this change the result? AI selects the most plausible next step within the given context. If you just say "build a login feature," it is plausible for it to do everything related to that topic. If you say "change only &lt;code&gt;src/auth/**&lt;/code&gt; and satisfy these three acceptance criteria," the most plausible next step becomes completely different.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Constraints create context, and context determines output.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Overall Flow
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Request → [Architect] Split into Issues (create groups with non-overlapping scopes)
         │
         ├─ [Coder] issue/12-xxx ─┐
         ├─ [Coder] issue/13-yyy ─┤ Parallel
         └─ [Coder] issue/14-zzz ─┘
                                   │ One by one per PR
                                   ▼
                            [Reviewer] Check acceptance criteria and scope → Merge
                                   │
                                   └─ Conflict → [Conflict Resolver] → Reviewer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Actual Configuration
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;.claude/agents/architect.md&lt;/code&gt; looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;architect&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Use to turn a feature request into GitHub issues for&lt;/span&gt;
  &lt;span class="s"&gt;issue-driven parallel development. Defines per-issue scope (owned paths),&lt;/span&gt;
  &lt;span class="s"&gt;dependencies, branch names, and acceptance criteria. Never implements code.&lt;/span&gt;
&lt;span class="na"&gt;tools&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Bash, Read, Grep, Glob&lt;/span&gt;
&lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;inherit&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

You are the &lt;span class="gs"&gt;**Architect**&lt;/span&gt;. You do not write code.
Your job is to "split Issues into units that can be executed safely in parallel."

&lt;span class="gu"&gt;## What to do when called&lt;/span&gt;
&lt;span class="p"&gt;
1.&lt;/span&gt; Read the request and identify necessary tasks.
&lt;span class="p"&gt;2.&lt;/span&gt; Split tasks into &lt;span class="gs"&gt;**1 Issue = 1 scope = 1 branch**&lt;/span&gt;.
&lt;span class="p"&gt;   -&lt;/span&gt; Keep scopes as narrow as possible and ensure they do not overlap with other Issues.
&lt;span class="p"&gt;   -&lt;/span&gt; Group non-overlapping Issues together as a "parallel start group."
&lt;span class="p"&gt;3.&lt;/span&gt; When creating an issue via &lt;span class="sb"&gt;`gh issue create`&lt;/span&gt;, always include:
&lt;span class="p"&gt;   -&lt;/span&gt; Scope: Paths of files/directories you are allowed to modify
&lt;span class="p"&gt;   -&lt;/span&gt; Branch: issue/&lt;span class="nt"&gt;&amp;lt;number&amp;gt;&lt;/span&gt;-&lt;span class="nt"&gt;&amp;lt;slug&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;   -&lt;/span&gt; Depends on: Dependent Issue number (or "none")
&lt;span class="p"&gt;   -&lt;/span&gt; Acceptance Criteria: Specific enough for the Reviewer to judge

&lt;span class="gu"&gt;## Rules to follow&lt;/span&gt;
&lt;span class="p"&gt;
-&lt;/span&gt; Do not write implementation or test code.
&lt;span class="p"&gt;-&lt;/span&gt; Do not put Issues with overlapping scopes in the same parallel group.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On the Coder side, include this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="p"&gt;-&lt;/span&gt; Do not touch files or branches of Issues you are not assigned to.
&lt;span class="p"&gt;-&lt;/span&gt; Do not merge to main yourself (only Reviewers may merge).
&lt;span class="p"&gt;-&lt;/span&gt; Do not resolve conflicts on your own judgment.
&lt;span class="p"&gt;-&lt;/span&gt; If implementation cannot be completed without changing files outside the scope, stop changes and return a report stating "Changes outside scope are required."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The last line is crucial. If the Coder silently expands its scope,&lt;br&gt;
the &lt;strong&gt;signal that "the Architect split incorrectly" disappears.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Most of the result is determined by how you cut scopes
&lt;/h2&gt;

&lt;p&gt;To be honest, &lt;strong&gt;how you split Issues&lt;/strong&gt; matters more than persona settings.&lt;/p&gt;
&lt;h3&gt;
  
  
  Consolidate shared files into a single Issue
&lt;/h3&gt;

&lt;p&gt;In practice, conflicts usually occur in the following files:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Routing definitions&lt;/li&gt;
&lt;li&gt;Aggregated type definition files&lt;/li&gt;
&lt;li&gt;DI containers, entry points&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;package.json&lt;/code&gt;, migration indexes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If multiple Issues are designed to touch these, conflicts will inevitably occur.&lt;br&gt;
Create an Issue that changes only the shared file first, and make others depend on it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Issue #10  Scope: src/routes/index.ts        (Add route definitions first)
Issue #11  Scope: src/pages/settings/**      Depends on #10
Issue #12  Scope: src/pages/billing/**       Depends on #10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This allows #11 and #12 to run in parallel. Since #10 is small, it finishes quickly.&lt;/p&gt;

&lt;h3&gt;
  
  
  Write acceptance criteria in a verifiable format
&lt;/h3&gt;

&lt;p&gt;The Reviewer judges based solely on the acceptance criteria. If written in an unverifiable way,&lt;br&gt;
the review will pass through without scrutiny.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Writing Style&lt;/th&gt;
&lt;th&gt;Verifiable?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;"Login functionality works correctly"&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;"Logging in with an unregistered email returns 401 and &lt;code&gt;USER_NOT_FOUND&lt;/code&gt;"&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;"Improve performance"&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;"Initial list display of 200 items completes within 500ms"&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h3&gt;
  
  
  Cut vertically by feature
&lt;/h3&gt;

&lt;p&gt;Splitting into "Model Layer Issues" and "View Layer Issues" creates linear dependencies,&lt;br&gt;
so they cannot run in parallel.&lt;/p&gt;
&lt;h2&gt;
  
  
  Two Pitfalls with Parallel Execution
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Must launch simultaneously in one message to be parallel
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(NG) "Have the coder do Issue 12" → Wait for completion → "Do 13"
(OK) "Implement Issues 12, 13, and 14 in parallel using the Coder.
       Issue three Agent calls simultaneously within one message."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Separating the calls makes them sequential. I wasted a significant amount of time here initially.&lt;/p&gt;
&lt;h3&gt;
  
  
  Merge sequentially
&lt;/h3&gt;

&lt;p&gt;Even if implementation is parallel, merging must be done one by one. If you merge three at once,&lt;br&gt;
even if each is correct individually, you cannot isolate issues if the combination breaks.&lt;br&gt;
You end up re-examining all three, making it slower than sequential merging.&lt;/p&gt;

&lt;p&gt;The practical upper limit for parallel tasks was &lt;strong&gt;3–4&lt;/strong&gt;. The constraint lies not with AI, but with review capacity.&lt;/p&gt;
&lt;h2&gt;
  
  
  Separate Working Trees
&lt;/h2&gt;

&lt;p&gt;Even if scopes are respected, running multiple Coders in the same directory causes accidents.&lt;br&gt;
Build artifacts mix, and one &lt;code&gt;git checkout&lt;/code&gt; affects the other.&lt;/p&gt;

&lt;p&gt;Separate them at the filesystem level using &lt;code&gt;git worktree&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git worktree add &lt;span class="nt"&gt;-b&lt;/span&gt; issue/12-upload ../worktrees/issue-12 main
git worktree add &lt;span class="nt"&gt;-b&lt;/span&gt; issue/13-profile ../worktrees/issue-13 main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What is shared is only the objects in &lt;code&gt;.git&lt;/code&gt;. &lt;strong&gt;The working tree is copied.&lt;/strong&gt;&lt;br&gt;
Measured locally: adding one worktree to a repository with 5,600KB of source&lt;br&gt;
added 5,608KB, while &lt;code&gt;.git&lt;/code&gt; itself grew by 44KB. &lt;code&gt;node_modules&lt;/code&gt; is not shared&lt;br&gt;
either. So each parallel branch costs you a full copy of the source and its&lt;br&gt;
dependencies.&lt;/p&gt;

&lt;h2&gt;
  
  
  When This Approach Is Not Suitable
&lt;/h2&gt;

&lt;p&gt;To be honest, &lt;strong&gt;this adds overhead.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Exploration/Prototyping (stage where acceptance criteria cannot be written)&lt;/li&gt;
&lt;li&gt;Changes contained in a single file (no point in creating a PR for a typo fix)&lt;/li&gt;
&lt;li&gt;Work with inherently linear dependencies (splitting does not enable parallelism)&lt;/li&gt;
&lt;li&gt;Tasks that take 30 minutes or less&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is only worth it when you want to run three or more tasks simultaneously, and when&lt;br&gt;
tracing history later has value.&lt;/p&gt;

&lt;p&gt;There is one more limitation. &lt;strong&gt;The Reviewer uses the same model.&lt;/strong&gt;&lt;br&gt;
If the model has systematic errors, such as consistently misremembering a library's API,&lt;br&gt;
the Coder will make the mistake, and the Reviewer will judge it as correct.&lt;/p&gt;

&lt;p&gt;The countermeasure is to include &lt;strong&gt;executable verification&lt;/strong&gt; in the acceptance criteria.&lt;br&gt;
"Tests passing" is one of the few ways to externally verify against the model's assumptions.&lt;/p&gt;




&lt;p&gt;I publish the configuration for splitting Claude Code into separate personas —&lt;br&gt;
Architect, Coder, Reviewer, Conflict Resolver — under MIT. Copy it, run&lt;br&gt;
&lt;code&gt;./setup.sh&lt;/code&gt;, and it works. It does not depend on your tech stack.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/quintetkit/quartet" rel="noopener noreferrer"&gt;https://github.com/quintetkit/quartet&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I built one real tool using nothing but this workflow. Every Issue, PR, review&lt;br&gt;
and merge is still there. &lt;strong&gt;The parts that went wrong were not deleted.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/quintetkit/mdlinkcheck" rel="noopener noreferrer"&gt;https://github.com/quintetkit/mdlinkcheck&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The version that adds a UI Designer persona, review criteria, a per-Issue&lt;br&gt;
parallel execution script and a 10-chapter guide is on the&lt;br&gt;
&lt;a href="https://quintetkit.github.io/index.en.html" rel="noopener noreferrer"&gt;product page&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>claudecode</category>
      <category>ai</category>
      <category>github</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
