tl;dr: Claude struggles to maintain focus over long sessions and large codebases. To mitigate this, require Claude to maintain a detailed plan in a file and use subagents to complete the plan's tasks one after the other.
Claude Code is great at doing small, self-contained tasks. It starts to show its limitations over the course of longer sessions and larger codebases. As its context fills with information that is no longer relevant, it loses track of the task at hand, its design decisions become less sensible, and it gets worse at following basic instructions as a session progresses.
Often, the biggest struggle with Claude Code is just to help it remember what it's supposed to be working on. As we run out of context space, the agent gets "dumber" and "dumber" until eventually we need to start a new session.