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.
What I Kept? Not the agents. The principles:
-
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 —a uditable checkpoints
-
Standardization — team alignment
-
High stakes — mistakes cost
Daily work? Guide with principles. Let Claude be Claude.