Skip to content
IntermediateAI Workflows

How I Use Claude Code Every Day — As a Mentor, Not an Autopilot

I built a strict-mentor system prompt that refuses to hand me finished code. Here's why I made AI harder to use, not easier.

Hen HeangJuly 1, 20267 min read
Claude CodeAILearningWorkflow

Most people use Claude Code to move faster. I use it that way too — but for my learning workspace, I deliberately configured it to slow me down. I maintain a separate repo of study notes with a CLAUDE.md that turns Claude into a strict senior mentor, and the single rule that matters most is: never give me complete working code as a first response.

Why I made AI harder to use

Early on, I noticed a pattern: I'd ask Claude to write something, get a working answer in seconds, paste it in, and move on. The code worked. I didn't. Three days later I couldn't explain what SecurityContextHolder actually did in my own JWT filter — I had shipped an explanation I never internalized. That's the real risk of AI-assisted development for someone still building fundamentals: it can produce correct code faster than it produces understanding.

The Golden Rule

If I ask "write me X", Claude must refuse politely, ask me to attempt it first, and give only a hint or the first step — unless I explicitly say "SPEED MODE".

Four modes, one system prompt

  • LEARNING MODE (default) — explain step by step, always the WHY, then quiz me before moving on.
  • PAIR MODE — I paste my own code first. Claude finds bugs and explains why, but does not rewrite it for me.
  • SPEED MODE — only for things I've already mastered. Claude may write boilerplate directly, but first asks me one check question to confirm I actually understand what it's about to generate.
  • TRANSLATION MODE — Korean ↔ English technical translation, no restrictions. This one exists because I work at a Korean fintech company and read a lot of Korean engineering docs.

The mode system exists because "always explain, never give code" is too rigid for real work — sometimes I genuinely just need a Redis config and already understand what it does. SPEED MODE is the escape hatch, gated by one honesty check instead of an unlimited one.

A real session, start to finish

1

Problem

Reviewing a payout endpoint, I couldn't tell if it was safe against an external system retrying the same request.

2

Prompt

"I'm a Spring Boot developer. In AutoPayController.java, autoPay() calls paymentService.process(req) with no duplicate check. If the caller times out and retries, is this dangerous? Explain the risk only, no rewritten code, 5 sentences max."

3

Claude's response

Explained the TOCTOU (time-of-check to time-of-use) race: an exists-check alone isn't enough because two identical retries can both pass the check before either insert commits.

4

My review

I pushed back with an "I think" prompt: "I think adding an existsByExternalTxId() check at the top fixes it. Is that correct?" Claude said no — that closes the common case but not the race window, and asked what closes a race at the database level instead of just the application level.

5

Final understanding

I landed on the actual fix myself: a UNIQUE constraint on the external transaction ID column, with the application catching the constraint violation and returning the existing result instead of erroring.

6

Lesson learned

An application-level exists() check is a fast path, not a guarantee. The database constraint is the real guarantee. I now check for a UNIQUE index before approving any payment-adjacent PR.

That session produced zero pasted code. What it produced was a rule I now apply on every payment-related review, written up in [[idempotency-timeout-is-not-failure]].

What this looks like week to week

Every session starts the same way: Claude reads a PROGRESS.md file tracking my current topic, weak spots, and quiz history, then opens with a warm-up — 1-2 questions from something I got wrong last time, active recall style, before I'm allowed to ask about anything new. Every session ends with a Feynman check: explain the concept back in my own words, corrected if needed, saved to a notes folder. Nothing gets marked "done" if my last quiz grade was WEAK or FAIL.

The habit this builds

AI is a collaborator, not a replacement. I stay responsible for the architecture decision, the security tradeoff, and the business logic — Claude is very good at making sure I actually understand them before I ship them.