Skip to main content
Claude Code

I built a complex AI orchestration system, then deleted most 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.

What I Kept? Not the agents. The principles:

  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 —a uditable checkpoints

  • Standardization — team alignment

  • High stakes — mistakes cost

Daily work? Guide with principles. Let Claude be Claude.