Why We Stopped Adding Abstraction Layers to Our Dev Workflow

Every wrapper between us and the model became a debugging tax.

Published 2026-06-26

Why We Stopped Adding Abstraction Layers to Our Dev Workflow

TL;DR: abstraction layers between our prompts and the model stopped saving time — see our dev abstraction layers comparison.

The Context

We spent the first half of this year experimenting with abstraction layers: prompt routers, context managers, and orchestration wrappers for AI coding tools. The pitch is attractive: abstract the grunt work, ship faster. The reality is that every layer introduces a failure mode you don’t control.

What We Tested

ToolUse CaseVerdictWhy
Custom prompt routerMulti-model routingHard to inspect; failures were opaque and hard to reproduce
Direct MCP callsContext lookupFast, predictable, debuggable
CLAUDE.md project filesPersistent contextVersion-controlled, readable, merges cleanly

The Pivot Point

The router misrouted a model-sensitive prompt to the wrong provider and returned an error we couldn’t attribute. It took an hour to trace. The same task, done directly, took one call and an obvious log line. That hour broke the abstraction ROI.

What We Use Now

Direct integrations. We call the model APIs or CLI tools we need, maintain project context in plain markdown files under git, and avoid middleware unless it is paying explicit rent. Our config surface is under a dozen files.

When You’d Choose Differently

If you are running a fleet of agents with different model or capability needs, abstraction may be necessary. We are not there yet. For organizations with strict compliance or audit requirements, a wrapper that enforces policies may be worth the opacity cost.

Tool Crucible Rating

Overall: 3 / 5
Ease: 4 / 5
Value: 2 / 5
Support: 4 / 5


This is part of our dev abstraction layers evaluation series. See full comparison: Dev Abstraction Layers

Last reviewed 2026-06-26. See our methodology and affiliate policy.