1. Home
  2. Blog
  3. Technical Founders
  4. Claude Code best practices from the product side
Technical Founders

Claude Code best practices from the product side

Claude reads your code well. It can't read your users. The habits that decide what Claude Code builds, before you write the first prompt.

Claude Code best practices from the product side
On this page
  1. Tell Claude what it can’t see: the user and the why
  2. Give each feature its own session
  3. Write must-haves Claude can check
  4. Say what already exists and what’s already broken
  5. Keep CLAUDE.md short and the feature context in a spec
  6. Check the prompt before you send it
  7. Doing this in MindBacklog
  8. Questions

The Claude Code best practices that matter most for founders happen before the first prompt. Give each session one problem, state the user and the why up front, write must-haves Claude can check, and note what already exists. Claude reads your code well. It can’t read your users, so the product side is the part you have to hand it.

In short
  • Claude can see your repo but not who your users are or why a feature matters. Tell it.
  • Give each feature its own session, and clear the context between unrelated tasks.
  • Write must-haves as checks that pass or fail, so Claude can verify its own work.
  • Keep CLAUDE.md for what’s true on every task. Put each feature’s context in a spec.

Tell Claude what it can’t see: the user and the why

Anthropic’s own best practices for Claude Code start from one rule: write down only what Claude can’t find by reading the repo. For an engineering team, that means a deploy step that lives in someone’s head. For a founder, the biggest missing piece is the person the feature is for.

Claude fills that gap with a default user. The default user wants every option, every setting and a dashboard. Your real users usually want one job done faster. When the prompt names them and their problem, Claude makes better calls on the dozens of small decisions you never see.

Instead of

Add CSV export to the invoices page.

Try

Freelancers with 5 to 20 clients send invoice data to their accountant at month end. Six of them told us they copy rows by hand. Add a monthly CSV export to the invoices page for that job, with the columns an accountant needs.

The second prompt changes what gets built. Claude now groups by month, picks accountant-friendly columns and puts the button where month-end work happens. You didn’t specify any of that. You told it who the work is for.

Give each feature its own session

A session that carries two features blends their decisions. The export work picks up assumptions from the settings page you discussed an hour ago. The docs recommend running /clear between unrelated tasks, and starting over with a better prompt after two failed corrections rather than adding a third.

When you aren’t sure what you want yet, let Claude interview you first. Ask it to keep asking questions until it could write the spec, save that to a file, then build from the file in a fresh session.

  1. Name one problem. Write it in one sentence, using your users’ words.
  2. Get interviewed if it’s fuzzy. Ask Claude to question you until it could write the spec, then save it as SPEC.md.
  3. Build in a fresh session. Point Claude at SPEC.md so the build starts with a clean context and a written definition of done.
  4. Clear before the next feature. Run /clear so the next task doesn’t inherit this one’s history.
One feature, one session
  1. The problemIn your users' words
  2. The specWhy, who, must-haves
  3. The buildFresh session
  4. The checkPass or fail, with output
Each feature gets its own session, its own spec and a check Claude can run.

Write must-haves Claude can check

Claude stops when the work looks done. If nothing tells it whether the work is done, you become the test suite. The fix is a must-have that comes back pass or fail: a test, a script, or a behaviour Claude can confirm in the browser.

Vague must-haveCheckable version
Export should be easyAn Export button appears on the invoices page for any month with at least one invoice
Handle errorsA month with no invoices shows “Nothing to export” and downloads no file
Fast enoughA month with 500 invoices in the seed data exports in under 5 seconds
Accountant-friendlyColumns are date, client, invoice number, net, tax, total, in that order

Then ask for evidence, not a summary. “All tests pass” tells you little. The command Claude ran and its output tells you a lot, and it’s faster to read than to rerun. For more on writing a spec this way, see spec-driven development for founders.

Say what already exists and what’s already broken

Coding agents rebuild things that are already there and re-break things you fixed last week. Both happen because nobody said what’s nearby. Two short lists in the prompt prevent most of it.

Example

For the invoice export, an illustrative note might read: Exists: the invoice table component and the month filter on /invoices; reuse both. Broken: totals round wrong for currencies with no decimal places (open issue). Don’t touch the billing webhook in this session.

The “don’t touch” line matters more than it looks. It turns a vague worry into a boundary Claude can respect. If a rule truly has no exceptions, such as never editing the migrations folder, the docs suggest enforcing it with a hook instead of a sentence.

Keep CLAUDE.md short and the feature context in a spec

Claude Code loads CLAUDE.md into every session, so every line costs a little attention on every task. Keep it for what’s true everywhere: who the product is for in one line, what’s out of scope, and the command that proves work is done. Each feature’s why, metric and must-haves belong in that feature’s spec, which the session reads only when it needs it.

# Product
Invoicing for freelancers with 5 to 20 clients.
Most use it on a laptop at month end.

# Out of scope
Payroll, tax filing, multi-currency ledgers.

# Done means
npm test passes and npm run lint is clean.

Note. If you keep adding emphasis to a CLAUDE.md line and Claude still misses it, the file is probably too long or the line is a hard rule that belongs in configuration.

Check the prompt before you send it

Run through this list once per feature. It takes two minutes and saves the session you would otherwise spend correcting.

  • The problem in one sentence, in your users’ words
  • Who has it, and how many people mentioned it
  • Three to six must-haves that pass or fail
  • What already exists and what’s broken nearby
  • The command Claude should run to prove it’s done
  • What’s out of scope for this session

Founders who build with an agent every day tend to keep this as a template. The page for founders building with Claude Code or Cursor shows how the same list scales past a handful of features.

See what a coding agent receives. A sample Build Pack for a made-up product, with every section’s source.

See a sample Build Pack

Doing this in MindBacklog

MindBacklog keeps what your users said, ranks the problems they have, and hands your coding agent the why. For each feature, the Build Pack carries why it matters, who it’s for, the metric, and the must-haves with acceptance criteria, and every section names its source. It also says what’s already broken and what already exists. Copy it for Claude Code or Cursor, or let your agent pull it over MCP on the Growth and Scale plans. How the Build Pack works.

Questions

What are the most important Claude Code best practices?

Tell Claude what it can’t see, give it a check it can run, and keep each session to one task. For founders, “what it can’t see” is mostly the user and the reason for the feature. Those three habits prevent most rework.

Should product context go in CLAUDE.md or in a spec?

Both, at different levels. CLAUDE.md holds what’s true on every task, such as who the product is for and what’s out of scope. A spec holds one feature’s why, metric and must-haves, so it doesn’t weigh on unrelated work.

How long should a CLAUDE.md file be?

Anthropic’s memory docs suggest staying under 200 lines per CLAUDE.md file, because longer files cost context and reduce how well Claude follows them. Include only what Claude couldn’t work out from the code. Rules for one part of the codebase can move into path-scoped rules.

Aadarsh Bohara

Founder, MindBacklog

Building the product management tool I wish I had. Multiple startup exits. Writing about AI, product strategy, and what it takes to build things people want.

Build what people actually asked for.

Start with an idea, your first users or a live product. Mind drafts; you decide.

  • 14 days free
  • No card needed
  • Viewers are free