There's a particular kind of pain that only hits you a few weeks after you shipped something with AI help.
The feature works. The tests pass (or there aren't any). You move on. Then three weeks later you need to touch it — add a field, fix a bug, change a behavior — and you spend 45 minutes just figuring out what it's doing and why.
This isn't a prompt quality problem. It's a workflow design problem.
The hidden cost of "just ask Claude"
The model is very good at generating code that works right now. It is not automatically good at generating code that a future version of you (or a teammate) can understand and modify safely.
When you work with Claude without a clear structure, a few things tend to happen:
- Files grow in ways that made sense at the time but don't hang together as a system
- Abstraction layers appear where they weren't needed
- Naming and conventions drift across sessions because the model doesn't remember what you established earlier
- You end up with code that "looks clean" but that only the model understands
You shipped fast. Great. But you created invisible debt.
The actual problem: no session contract
When experienced engineers pair-program, there's implicit shared context. You both know the codebase, you both have opinions about what good looks like, you negotiate when your instincts conflict.
With Claude, that negotiation doesn't happen unless you force it. The model will fill your silence with its own defaults — which are often fine, but not aligned to your project's actual shape, conventions, or maintenance priorities.
What I've found helpful is treating the start of any meaningful Claude session like a brief contract:
-
State what already exists and must be preserved. "We have a
user.tsmodule that handles auth state — don't refactor it unless I explicitly ask." - Describe the conventions you're following. "We use a flat file structure. No new subdirectories without asking."
- Clarify the scope of this session. "Today we're only adding the billing hook. Nothing else should change."
- Ask it to flag assumptions. "If you'd need to change something outside this scope to implement this cleanly, tell me before doing it."
This isn't about controlling Claude — it's about giving it the context it needs to help you well. The model wants to be useful. Unhelpfully comprehensive output is what happens when it doesn't know what "useful" looks like in your specific situation.
What "maintainability-first" looks like in practice
Here's a rough framework I use:
Before the session:
- Note which files are stable vs. actively in progress
- Write a one-sentence description of the current task (scope limiter)
- Decide what constraints apply (naming, structure, patterns)
During the session:
- Review diffs before accepting them — especially file additions
- Ask "why did you change X?" if something unexpected appears
- Pause and reorient if the session grows past 3-4 back-and-forths
After the session:
- Read the code as if you didn't write it
- Can you explain what each function does in one sentence? If not, that's a sign something needs documentation or simplification
- Would a collaborator be able to extend this without asking you?
The test isn't "does this work" — it's "could someone maintain this?"
The false confidence trap
The most dangerous outcome in AI-assisted development isn't bad code. It's code you're confident in but can't verify.
Claude generates fluent, well-formatted code. It has good variable names. It compiles. This is aesthetically satisfying in a way that makes it easy to skip the review step — especially under deadline pressure.
But fluency isn't correctness. And readability at the line level isn't the same as clarity at the system level.
The habits that help: smaller sessions, explicit scope, and treating every diff as something that needs to earn its place in the codebase.
If any of this resonates, I put together a free starter pack — workflow templates, prompt structures for session setup, and a shipping checklist oriented around maintainability rather than just speed.
It's free, no email required: Ship With Claude — Starter Pack
I built it after noticing my own projects were degrading in quality the faster I shipped with AI. Not because the AI was bad — because I hadn't designed a workflow that kept the output coherent across sessions.
Happy to hear how others are handling this — curious what session habits have worked for people.
Top comments (0)