<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Agent Teams on Peter Fulop</title><link>https://peterfulop.tech/tags/agent-teams/</link><description>Recent content in Agent Teams on Peter Fulop</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><copyright>Peter Fulop</copyright><lastBuildDate>Tue, 28 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://peterfulop.tech/tags/agent-teams/index.xml" rel="self" type="application/rss+xml"/><item><title>How to set up a Claude Code agent team workflow: from parallel tasks to peer review</title><link>https://peterfulop.tech/p/how-to-set-up-a-claude-code-agent-team-workflow/</link><pubDate>Tue, 28 Apr 2026 00:00:00 +0000</pubDate><guid>https://peterfulop.tech/p/how-to-set-up-a-claude-code-agent-team-workflow/</guid><description>&lt;img src="https://peterfulop.tech/p/how-to-set-up-a-claude-code-agent-team-workflow/claude-agent-teams-showcase.png" alt="Featured image of post How to set up a Claude Code agent team workflow: from parallel tasks to peer review" /&gt;&lt;h2 id="motivation"&gt;Motivation
&lt;/h2&gt;&lt;p&gt;Recently I wrote about &lt;a class="link" href="https://peterfulop.tech/" target="_blank" rel="noopener"
&gt;orchestrating parallel subagents for data collection, exploration, and reporting&lt;/a&gt; — a hands-on case study using Codex subagents to coordinate data collection, preparation, and Slidev report generation in parallel.&lt;/p&gt;
&lt;p&gt;It was an interesting experience to watch how subagents were spawned by a main agent, executed work in parallel, and returned results back to their parent. In that setup, each subagent was running in complete isolation.&lt;/p&gt;
&lt;p&gt;In general, I tend to prefer teamwork over isolated, siloed execution. So I started wondering: what happens if agents can actually collaborate? For example, what if they review each other’s report sections before everything gets merged into a final output?&lt;/p&gt;
&lt;p&gt;With that in mind, I enabled agent teams in Claude and set up a small team to handle the same data collection, exploration, and reporting workflow.&lt;/p&gt;
&lt;p&gt;You can find the full setup here, download it, and reproduce the process yourself:
&lt;a class="link" href="https://github.com/ipeterfulop/claude-code-agent-teams-showcase" target="_blank" rel="noopener"
&gt;https://github.com/ipeterfulop/claude-code-agent-teams-showcase&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="what-to-include-in-your-instruction-file-to-set-up"&gt;What to include in your instruction file to set up
&lt;/h2&gt;&lt;p&gt;If you want to try something similar, the key is not the prompt itself, but how you structure the instruction file that defines the team.&lt;/p&gt;
&lt;p&gt;I didn’t need a complex setup to get something useful running — but a bit of structure around roles, tasks, and communication made a big difference.&lt;/p&gt;
&lt;h3 id="1-team-structure"&gt;1. Team structure
&lt;/h3&gt;&lt;p&gt;Define who is in the team and what they are responsible for.&lt;/p&gt;
&lt;p&gt;In my setup, this was enough:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a &lt;strong&gt;coordinator&lt;/strong&gt; (orchestrates the flow)&lt;/li&gt;
&lt;li&gt;a few &lt;strong&gt;specialists&lt;/strong&gt; (data collector, analyst, report writer, reviewer)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Each agent had:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a clear role&lt;/li&gt;
&lt;li&gt;a clear scope (what they own)&lt;/li&gt;
&lt;li&gt;a short note on how they interact with others&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I noticed pretty quickly that once roles started to overlap, things became harder to reason about — agents would either duplicate work or skip steps.&lt;/p&gt;
&lt;h3 id="2-task-registry"&gt;2. Task registry
&lt;/h3&gt;&lt;p&gt;Instead of one big instruction, I broke the work into named tasks.&lt;/p&gt;
&lt;p&gt;Something like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;collect_data&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;prepare_data&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;analyze_section_X&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;generate_report_section&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;review_section&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Each task defines:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;inputs&lt;/li&gt;
&lt;li&gt;expected output&lt;/li&gt;
&lt;li&gt;owning agent&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I initially tried keeping this implicit, but agents started stepping on each other’s work. Making tasks explicit made handoffs much more predictable.&lt;/p&gt;
&lt;h3 id="3-communication-rules"&gt;3. Communication rules
&lt;/h3&gt;&lt;p&gt;This is where things started to feel more like a team and less like parallel scripts.&lt;/p&gt;
&lt;p&gt;I added a few simple rules:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;analysts send results to a reviewer before finalization&lt;/li&gt;
&lt;li&gt;the report writer only works with reviewed sections&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For example, without the review step, the final report became inconsistent pretty quickly — different sections had different levels of detail and structure.&lt;/p&gt;
&lt;p&gt;Nothing fancy here, but even minimal rules changed the behavior a lot.&lt;/p&gt;
&lt;h3 id="4-execution-flow-lightweight"&gt;4. Execution flow (lightweight)
&lt;/h3&gt;&lt;p&gt;I didn’t define a strict workflow, just a rough order:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;data collection&lt;/li&gt;
&lt;li&gt;preparation&lt;/li&gt;
&lt;li&gt;parallel analysis&lt;/li&gt;
&lt;li&gt;review&lt;/li&gt;
&lt;li&gt;report assembly&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The coordinator uses this as guidance rather than a rigid script.&lt;/p&gt;
&lt;p&gt;Trying to over-specify this made things worse in my experiments — the setup became brittle instead of flexible.&lt;/p&gt;
&lt;h3 id="5-output-contracts"&gt;5. Output contracts
&lt;/h3&gt;&lt;p&gt;This is easy to skip, but it helped more than I expected.&lt;/p&gt;
&lt;p&gt;I defined:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;basic structure for outputs&lt;/li&gt;
&lt;li&gt;clearly labeled sections&lt;/li&gt;
&lt;li&gt;consistent formatting&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Without this, downstream agents spent time guessing how to interpret results instead of actually using them.&lt;/p&gt;
&lt;h2 id="closing"&gt;Closing
&lt;/h2&gt;&lt;p&gt;That was enough to get something useful running.&lt;/p&gt;
&lt;p&gt;It’s a small setup, but it was enough for me to start seeing how agent teams behave differently compared to isolated subagents — less like independent tools, and a bit more like collaborators.&lt;/p&gt;
&lt;p&gt;If you want a concrete example, the full instruction file is here:&lt;br&gt;
&lt;a class="link" href="https://github.com/ipeterfulop/claude-code-agent-teams-showcase" target="_blank" rel="noopener"
&gt;https://github.com/ipeterfulop/claude-code-agent-teams-showcase&lt;/a&gt;&lt;/p&gt;</description></item></channel></rss>