Assigning 5 Personas to Claude Code for Parallel Development
When you give a large request to Claude Code, doesn't this happen? You asked for authentication logic, but it also included standardizing error handling. There are 40 changed files, and you lack the motivation to read them all, so you approve them based on intuition. Three days later, you can’t even explain why the implementation is the way it is. You want to run tasks in parallel, but fear of…
When a large request is given to Claude Code, it often includes more than what was originally asked for. For example, authentication logic might be included alongside standardizing error handling. With 40 changed files, the user approves the changes based on intuition, only to later struggle to understand the implementation details.
The desire to run tasks in parallel is hampered by concerns over conflicts that could arise. Over the course of building ten personal apps in three months and releasing two to the App Store, these issues were encountered frequently.
The root cause of these problems lies not in Claude's capabilities, but in the way permissions are designed. One persona is being asked to handle design, implementation, review, and merging – a configuration that lacks any checks or balances. No human team would approve such a setup. By dividing responsibilities and lowering permissions, the result can be significantly improved.
Claude is given different roles: Architect, Coder, Reviewer, and Conflict Resolver. Each role has specific responsibilities and cannot perform tasks outside their designated scope. The Architect splits issues into separate units that can be executed safely in parallel. Coder only changes code within the assigned issue's scope and cannot merge to main directly. Reviewer checks acceptance criteria and merges the changes. Conflict Resolver reviews any conflicts and reports them to the Reviewer.
The Architect uses a specific configuration file, .claude/agents/architect.md, to guide the process. It defines per-issue scope, dependencies, branch names, and acceptance criteria. The Coder does not implement code or modify files outside their assigned issue's scope. Reviewer relies solely on the acceptance criteria to judge the changes. If the acceptance criteria are not verifiable, the review process will not be scrutinized.
Issues with overlapping scopes should not be grouped in the same parallel setup. Shared files, such as routing definitions, aggregated type definition files, DI containers, entry points, package.json, migration indexes, should be handled in separate issues to avoid conflicts. Once an issue is small enough, it can be completed quickly.
Writing acceptance criteria in a verifiable format is crucial. The reviewer will only assess the changes based on these criteria. Writing in a format like "Initial list display of 200 items completes within 500ms" allows for accurate evaluation. Vertical splitting into model layer and view layer issues creates linear dependencies, preventing parallel execution. A maximum of three to four parallel tasks is recommended, with actual execution likely being sequential rather than simultaneous.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.