The Problem
AI coding assistants give answers. Good answers. But I couldn't tell if they were right. Ask Claude to recommend stocks? Here's a list. Ask it to architect a system? Here's a diagram. Authentication code? Done.
No way to validate. I didn't know what questions to ask. Didn't understand the trade-offs being made for me. Getting faster, not smarter. I'm a product designer. I believe in understanding problems before solving them. I wanted collaboration that built understanding, not outputs I had to trust blindly.
What I Built
Four specialized agents:
-
Questioner: Socratic questioning to surface assumptions
-
Planner: Breaks problems into atomic, testable stories
-
Implementer: One story at a time, with tests
-
Reviewer: Validates against acceptance criteria
A Coordinator orchestrated them. Nothing moved forward without verification.
More confidence in outputs because I understood how we got there.
First Problem: Shared State
Claude Code's TodoWrite had a flaw: subagents replaced the entire list instead of appending. My state kept getting wiped. Workarounds. A hybrid system: TodoWrite for UI, separate .claude/plan.md for details. Rules that subagents never touch TodoWrite. Manual sync. More files. More edge cases.
Second Problem: Bookkeeping
Agents were doing two jobs. Their expertise plus coordination overhead: logging changes, updating state, signaling completion.
The Implementer wasn't just writing code. Also logging files, marking tasks, formatting, signaling results.
Claude Code has hooks. Intercept tool usage, run logic automatically:
PostToolUse[Write] → Log changes
PostToolUse[Write] → Format with Prettier
PostToolUse[Bash] → Detect test results
PreToolUse[Write] → Block protected files
Built five hook scripts. Settings config. Verification script.
More sophisticated. More complex.
The Announcement
Boris Cherny announced the new Tasks system:
Claude can create Tasks with dependencies... stored in the file system so multiple subagents or sessions can collaborate.
Tasks (4 done, 6 open)
□ #1 Buy pasta
✓ #2 Buy chicken
□ #8 Prepare salad › blocked by #3
□ #10 Host dinner › blocked by #1, #7, #8, #9
Dependencies. Blocking. Cross-session collaboration. Everything I'd built workarounds for.
I'd built a Questioner. Claude asks questions when uncertain.
I'd built a Planner. Plan mode exists.
I'd built an Implementer. Claude writes code.
I'd built a Reviewer. Claude checks work.
I'd built a Coordinator. That's the user. That's conversation.
Five principles survived:
-
Clarify before building
-
Small pieces (INVEST criteria)
-
One at a time
-
Explain reasoning
-
Verify before progressing
Claude.md:
When tackling complex work:
- Clarify before building
- Break into small, testable stories
- One story at a time
- Explain reasoning
- Verify before moving on
Two hooks:
{
"PreToolUse": [{"matcher": "Write", "command": "protect-files.sh"}],
"PostToolUse": [{"matcher": "Write", "command": "prettier --write"}]
}
The Trap
I assumed Claude needed more structure than it does. Earlier models needed scaffolding. TodoWrite had problems. Coordination was harder before Tasks had dependencies. Tools evolved. Claude improved. Native capabilities expanded.
I was solving problems that no longer existed.
When Structure Helps
-
Teaching: making process visible
-
Compliance: auditable checkpoints
-
Standardization: team alignment
-
High stakes: mistakes cost
For daily work, five lines in CLAUDE.md do what five agents did.