Insight

Working with AI Coding Assistants

AI coding assistants are useful when they inherit a repo constitution: product identity, technical constraints, review rules, and protected core paths. Otherwise they generate prompt debt.

Alaa Almallah 11 min read

AI coding assistants do not mainly create code debt. They create prompt debt.

Prompt debt is what accumulates when the assistant keeps producing locally plausible work from weak or missing project reality. The code may compile. The repo gets less coherent anyway. Naming drifts. Boundaries blur. Edge cases disappear into fluent guesses.

That is why the real skill is not clever prompting. It is building a repo constitution: a short body of truth about what this product is, how this codebase works, and what must not be violated for the sake of speed.

If you want speed without review chaos, start there.

The repo constitution

Every serious AI-assisted codebase needs a constitution. Not a manifesto. A working contract.

It should answer five things:

  1. What problem this product solves right now
  2. Which user path matters most
  3. Which architectural patterns are already true
  4. Which rules are non-negotiable
  5. What counts as done for a change

Most teams skip this and then wonder why the assistant keeps inventing abstractions, files, and flows that feel reasonable in isolation but wrong in context.

A useful test

If a new engineer joined tomorrow, could they read one page and avoid the top five mistakes an assistant currently makes in your repo?

If not, the problem is not the model first. It is missing project identity.

Prompt debt vs code debt

TypeWhat it looks likeWhy it hurts
Code debtWeak structure, duplication, fragile logicSlows change directly
Prompt debtVague asks, missing constraints, unowned generated patternsRecreates code debt faster than humans can clean it

Prompt debt is upstream. That is why it matters.

A sloppy assistant workflow usually sounds like this:

  • "Add checkout"
  • "Make this cleaner"
  • "Refactor the dashboard"
  • "Build the admin flow"

These are not prompts. They are abdications.

What the assistant is actually good for

AI is strongest when the repo already knows what it is.

Use it for:

  • scaffolding within an existing pattern
  • drafting tests from known behavior
  • transforming repetitive code
  • explaining unfamiliar code paths
  • generating reviewable first passes on bounded slices

Do not ask it to decide:

  • product scope
  • boundary placement
  • trust model
  • auth policy
  • what not to build

That is not because models are bad. It is because those are ownership decisions.

For the broader workflow split between rapid generation and production hardening, see AI in Action: Smarter Development Workflows.

Protect the core path

One of the biggest AI workflow mistakes is letting the assistant roam equally across every part of the system.

That is backwards.

Every product has a protected path:

  • the booking flow
  • the payment flow
  • the seller upload flow
  • the onboarding path to first value

Those paths need tighter standards than the rest of the repo because they carry trust.

Think of the codebase in layers:

ZoneAI freedom levelWhy
Boilerplate and support codeHighCheap to regenerate and review
Secondary UI and admin toolingMediumUseful leverage, moderate risk
Core product pathLow to mediumChanges need strong acceptance criteria and review
Auth, permissions, money, securityLowLocal plausibility is not enough

Treating every zone the same is how teams get fast demos and expensive incidents.

How to brief a real change

Before a substantial ask, give the assistant:

  • product identity in one sentence
  • exact file or folder context
  • existing pattern to follow
  • acceptance criteria
  • explicit out-of-scope note
  • verification method

Bad ask:

"Build notifications."

Better ask:

"Add email notifications for invoice overdue events using the existing job runner in src/jobs, the existing NotificationPreference model, and the same error pattern as invoice reminders. Do not add in-app notifications. Success means one retry-safe job, one template, and tests for opt-out behavior."

The difference is not style. It is governed intent.

Review rules that keep AI useful

You need review rules adapted to generated speed.

1. The submitter must explain the diff

No transcript dumping. No "the model suggested it." If the human cannot explain the change in plain language, the change is not ready.

2. Core paths require explicit failure review

Do not only check the happy path. Ask:

  • what happens when data is partial?
  • what happens when permissions fail?
  • what happens when the external service times out?

3. AI-heavy PRs should be smaller, not larger

Generated volume tempts teams into mega-PRs. That makes review ceremonial. The fix is smaller diffs with clearer ownership.

4. Remove one abstraction before merge

Assistants love abstraction because they are trained on code that over-explains itself. Many repos get cleaner if you deliberately remove one unnecessary helper, wrapper, or generic layer from each large generated change.

Weekly rhythm that works

For a founder-led or small engineering team:

DayFocus
MondayName one product learning goal and one protected path
TuesdayGenerate bounded slices with explicit constraints
WednesdayHuman review and simplification pass
ThursdayTest, edge-case review, deploy
FridayWatch real usage and write the next sharper brief

The important part is Friday. AI gets more useful when the next week begins with better product truth, not just more prompts.

Pre-prompt checklist

  • [ ] One-sentence product identity exists
  • [ ] The relevant user path is named
  • [ ] Existing repo pattern or files are referenced
  • [ ] Acceptance criteria are specific
  • [ ] Out-of-scope is explicit
  • [ ] Verification path is clear
  • [ ] You know whether this touches a protected core path

FAQ

What is prompt debt in practice?

It is the accumulation of vague instructions, missing repo constraints, and weak ownership that causes generated code to drift from product reality even when each individual change looks acceptable.

Do I need a giant system prompt or project spec?

No. You need a short, maintained constitution. One page of real constraints beats ten pages of generic principles nobody enforces.

Should I let AI generate whole features at once?

Usually no. Ask for thin vertical slices with clear acceptance criteria. Large generations feel efficient and often hide ambiguous ownership.

What improves AI output fastest?

Better project truth. A clearer product identity, repo pattern reference, and verification rule usually matter more than prompt cleverness.

If you want a partner who can define the repo constitution, the protected product path, and the AI-assisted workflow around both, book a discovery call.

Related