Skip to main content
Claude Code

I built a complex AI orchestration system, then deleted most of it

Jan 28, 2026

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:

  1. Questioner: Socratic questioning to surface assumptions

  2. Planner: Breaks problems into atomic, testable stories

  3. Implementer: One story at a time, with tests

  4. 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:

  1. Clarify before building

  2. Small pieces (INVEST criteria)

  3. One at a time

  4. Explain reasoning

  5. 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.