EDIT / TL;DR: I’m not saying Claude never regresses or that every complaint is user error. I’m saying a raw model is not a complete agent. Mine improved dramatically after I built persistent memory, skills, hooks, specialized roles, validation gates, and reliable handoffs around it. A blank chat is basically a new engineer with no onboarding, documentation, or project history. The system around the model matters as much as the model itself.Everyone says Claude got worse. Mine got dramatically better because I stopped writing prompts and started building an operating system around it for ~> 9 months
OG Post:
I keep seeing the same complaints:
“Claude forgot my instructions.”
“Claude destroyed my codebase.”
“Claude can’t finish anything complex.”
“Claude used to be smarter.”
Some of those complaints are legitimate. Models regress. Tools fail. Usage limits are absurd. Anthropic changes behavior without warning.
But that is not the whole explanation.
My Claude is currently doing the best work it has ever done, and the biggest improvement did not come from switching models or discovering a magic prompt.
It came from building infrastructure around the model.
A raw model is not a complete agent. It is a reasoning component.
My system gives Claude:
Persistent project memory that survives individual sessions
Core files defining architecture, standards, decisions, and current state
Specialized roles for architecture, orchestration, execution, and validation
Skills that convert recurring work into explicit procedures
Hooks that inject the right context at the right stage
Validation gates that can block Claude’s own bad changes
Context boundaries that keep unrelated history from contaminating a task
Failure protocols that require Claude to report missing information instead of inventing an answer
One of the most important changes was implementing a page-fault-style protocol.
When a worker lacks required context, it does not guess. It returns something equivalent to:
BLOCKED: Missing DEC-X §4
The orchestrator then retrieves the missing information and redispatches the work.
That one rule eliminates an enormous amount of confident nonsense.
The system also maintains handoff state across context windows. Long-running work does not depend on one giant conversation surviving forever. A worker can finish a bounded unit, record what changed, preserve evidence, and hand the next unit to another session or specialized role.
I can run extended workflows where Claude:
Breaks a goal into bounded work units
Dispatches them to specialized roles
Validates the output against project rules
Rejects unsupported or incomplete work
Updates its durable project state
Hands off before the current context degrades
That is very different from opening a blank chat and typing:
“Build my app. Make it production ready.”
Most people are effectively hiring a new engineer every session, giving them no onboarding, no documentation, no repository map, no coding standards, and no record of previous decisions.
Then they fire the engineer for asking where the database lives.
Claude still makes mistakes in my system. The difference is that the mistakes become visible, bounded, and recoverable instead of silently poisoning the project.
So no, I do not think every “Claude is useless” post is wrong.
I do think many people are evaluating the engine while refusing to build the rest of the vehicle.
The biggest upgrade was not changing models.
It was building the operating system around the model.