Jul 30, 2025
I learned this the hard way: when someone else pays the cost of understanding your AI-generated content, it isn't real productivity.
I generated a Dagster pipeline plan in 6 minutes. My colleague Sam spent nearly an hour trying to review it. Here's what the AI gave me:
Pipeline Overview: Implement staged rollout with A/B testing framework, targeting 5% initial traffic with automatic failover mechanisms and comprehensive monitoring across three deployment zones...
And here's what Sam actually needed to see:
What we're building: Basic ETL pipeline to process user events
Unknown: How do we want to handle failures? (needs architecture decision)
Next step: Sam, can you review the data schema before I implement?
Claude Code recently added sub-agents. They are specialized AI assistants you can create for specific workflows. But most examples I see are generic role-based agents: `backend-architect`, `frontend-developer`, `payment-integrator`. They try to help with any task in their domain.
But sub-agents become powerful when they solve specific human problems, not when they try to be universal assistants.
I built a three-agent system that works together to solve the hidden cost problem. Here's how they collaborate when I type "ready for PR":
Here's what came out when I used this system on a real bug fix:
This isn't three separate tools. It's one system. The pr-creator doesn't just generate descriptions; it uses strategic-advisor to ensure alignment and reviewer-first to format output that respects your teammates' time.
A `backend-architect` agent could theoretically help with database design, API patterns, performance optimization, deployment strategies—anything "backend-related."
But when an agent can help with "anything backend," it doesn't deeply solve any specific workflow friction.
Think about a Swiss Army knife. It has a blade, scissors, screwdriver, can opener, tweezers—everything you might need. But when you actually need to cut something important, you reach for a real knife. Need to tighten a screw? You grab a proper screwdriver. The Swiss Army knife's flexibility makes it mediocre at each individual task.
Generic scope means generic value.
The same applies to agents. A "coding assistant" that can "help with any development task" will be mediocre at all of them. But an agent that only creates PR descriptions? It can be exceptional at that one thing.
Wait. Isn't `backend-architect` already narrower than a foundational LLM
Yes. And that's exactly the point.
Think of it as a spectrum of specificity:
Each step down trades flexibility for excellence at specific problems. The magic happens when you start with real UX pain and work backward to the right level of narrowness.
My team's biggest friction wasn't "we need better backend architecture". It was "we spend an hour trying to understand AI-generated PR descriptions." So I built an agent that solves exactly that problem, exceptionally well.
I didn't build all three agents at once. I started with the problem that hurt most—teammates spending an hour trying to understand my AI-generated content.
Look for places in your workflow where:
Start with one agent. Build it well. Then look for opportunities to compose.
My reviewer-first agent became more powerful when I added strategic-advisor to check alignment. The pr-creator became a system orchestrator when it learned to call both other agents.
Start tomorrow: Pick the most annoying 5-minute task your team does repeatedly. Build an agent that triggers on specific phrases and solves that exact problem. Don't try to build a "coding assistant". Build something that eliminates one recurring frustration.
Once it works, look for the next friction point. Build another focused agent. Then find ways to connect them.
The results? My team now spends 10 minutes reviewing PRs instead of an hour. Strategic decisions reference actual data instead of guesswork. And I stopped creating work for other people with my AI experiments.
Agent composition isn't just more powerful . It's more respectful of human attention.