I’ll be honest — when I first started using Claude Code, I was using it completely wrong.

I’d open it up, paste a chunk of code, ask a question, copy the answer back into my editor, and repeat. Basically treating it like a fancy ChatGPT with a terminal skin. It worked, but it was slow. I was doing all the heavy lifting myself, and Claude Code was just… there.

It took me a few weeks to realize I was ignoring 90% of what makes it actually powerful. Once I changed how I used it, everything clicked. I went from “this is a nice toy” to “I literally can’t start my day without this.”

Here are the ten things that made the difference.


1. Set Up CLAUDE.md With /init — This Is The Big One

If you do nothing else from this list, do this.

Run /init in your project. It creates a CLAUDE.md file that tells Claude about your project — your tech stack, file structure, conventions, whatever matters. Think of it as a cheat sheet that Claude reads every time you start a conversation.

Before I set this up, I was repeating myself constantly. “I’m using Next.js with TypeScript and Prisma” — every single session. Now Claude just knows.

Here’s what I do when I start a new project:

claude /init

It asks you a few questions and generates a solid starting point. I usually edit it afterward to add my own notes — things like “we use Zod for validation” or “auth lives in src/lib/auth.ts.” The more specific you are, the better Claude performs.

This one tip probably saves me 20 minutes a day just from not re-explaining context.


2. Let Claude Read Your Code — Stop Describing It

I used to write these long explanations of what my code does before asking Claude to fix something. Three paragraphs of context, a description of the bug, the whole thing.

Total waste of time.

Claude Code can read your files directly. Just point it there:

Read src/auth.ts and fix the token refresh bug

That’s it. Claude opens the file, reads it, understands the structure, finds the bug, and fixes it. It’s way better at reading code than reading your description of code.

I used to spend five minutes writing a prompt. Now I spend five seconds. The results are better too, because Claude sees the actual code instead of my half-accurate summary of it.


3. Run Tests Through Claude Code

This one changed everything for me.

Instead of running tests yourself, reading the errors, and then asking Claude to fix them — just let Claude do all of it:

Run npm test and fix any failing tests

Claude runs the tests, reads the output, sees exactly which tests fail and why, then goes and fixes the code. One prompt, problem solved.

I used to copy-paste error messages back and forth. Fifteen minutes of context-switching for something Claude can handle in one shot. The terminal integration is what makes Claude Code different from just chatting with an AI. Use it.


4. Chain Tasks In A Single Prompt

You don’t have to do one thing at a time. Claude Code handles multi-step tasks really well.

Here’s a prompt I use regularly:

Add a logout endpoint to the auth router, write tests for it, and run them

One prompt. Three things done. Claude adds the endpoint, creates the test file, runs the tests, and if something fails, it fixes it.

I used to break everything into tiny steps because I didn’t trust it to handle complexity. But Claude Code is surprisingly good at planning multi-step work. The key is being clear about what you want — not vague, just specific about the outcome.

Another one I love:

Create a new API route for user preferences, add input validation with Zod, and update the OpenAPI spec

Would that take me 30 minutes manually? Probably. Claude does it in about two minutes.


5. Let Claude Write Your Commit Messages

I have a confession — I used to write terrible commit messages. “fix stuff” and “update things” were my greatest hits.

Now I just do this:

Look at the diff and write a commit message

Claude reads every changed file, understands what actually changed and why, and writes a clear, descriptive commit message. It’s embarrassingly better than what I’d write myself.

For pull requests, it’s even better:

Create a PR with a good description for the auth-refactor branch

Claude looks at all the commits, summarizes the changes, writes a proper description with context, and creates the PR. My PR descriptions went from “fixed auth” to actual useful documentation that my teammates appreciate.


6. Debug With Stack Traces

When something breaks and you get a wall of red text in your terminal, don’t try to parse it yourself. Just hand it to Claude.

I'm getting this error when I run the app:

TypeError: Cannot read properties of undefined (reading 'userId')
    at AuthMiddleware (src/middleware/auth.ts:23:15)
    at Layer.handle (node_modules/express/lib/router/layer.js:95:5)

Find and fix the issue.

Claude follows the stack trace, reads the relevant files, traces the data flow, and finds the root cause. It’s surprisingly good at this — better than me, honestly, especially when I’m tired and staring at the same code for the third hour.

I’ve had it catch bugs where the problem was three files away from where the error actually showed up. That kind of tracing used to take me ages.


7. Use /compact When Conversations Get Long

Here’s something I learned the hard way. Long conversations make Claude slower and less accurate. The context window fills up, and things start getting fuzzy.

When you notice the conversation getting long, just type:

/compact

It summarizes the conversation context so Claude retains the important stuff without dragging along every single message. Think of it like clearing your desk — same project, but now you can actually find things.

I run /compact roughly every 20-30 messages. It keeps things snappy and focused. Before I started doing this, I’d get weird responses late in conversations where Claude would forget something we discussed five minutes ago.


8. Be Specific About What You Want

This isn’t a Claude Code tip specifically — it’s an AI tip in general. But it matters more here because Claude Code can actually act on specific instructions.

Bad prompt:

Make this faster

Good prompt:

The getUsers function in src/services/user.ts takes 3 seconds for 10k records. Optimize the database queries — check for missing indexes and N+1 problems.

The difference is night and day. With the vague prompt, Claude might refactor your whole file for no reason. With the specific one, it goes straight to the database layer, finds the N+1 query, adds a proper join, and you’re done.

Specific inputs get specific outputs. I know it sounds obvious, but I wasted weeks giving Claude wishy-washy prompts and wondering why the results were wishy-washy too.


9. Use It For Code Review

Before I push code, I’ve started doing this:

Review src/routes/payments.ts for bugs and security issues

Claude reads the file and gives you a focused review. It catches things like unvalidated inputs, SQL injection risks, missing error handling, race conditions — the stuff that slips through when you’re moving fast.

It’s not a replacement for a human code review. But it’s a really good first pass. I’ve caught real bugs this way — things that would’ve made it to production if I’d just pushed without checking.

I also use it for broader reviews:

Review the last 5 changed files for consistency and potential issues

That one’s great before opening a PR. It’s like having a senior dev do a quick scan of your work before you put it up for review.


10. Set Up Custom Slash Commands

If you find yourself typing the same kind of prompt over and over, create a custom slash command for it.

You can add them in your project’s .claude/commands/ directory. Each command is just a markdown file with a prompt template.

Here’s one I use for creating new API routes. I save it as .claude/commands/new-route.md:

Create a new Express route for $ARGUMENTS with:
- Input validation using Zod
- Proper error handling
- TypeScript types
- A test file with happy path and error cases

Then I just type:

/project:new-route user-preferences

And it does everything. No typing the same instructions every time. I’ve got commands for creating components, setting up database migrations, writing tests — all the repetitive stuff.

It takes five minutes to set up and saves hours over a month. That’s the kind of trade-off I’m always looking for.


The Real Difference Is How You Use It

I’ve talked to other developers who tried Claude Code and weren’t impressed. Every time, the issue is the same — they’re using it like a chatbot. Pasting code, asking questions, copying answers back.

That’s not what this tool is for.

Claude Code is at its best when you let it do the work. Let it read your files. Let it run your commands. Let it chain multiple steps together. Let it see your errors directly instead of through your paraphrasing.

These ten tips took me from “Claude Code is a nice toy” to “I genuinely can’t imagine working without it.” Not because the tool got better — because I learned how to actually use it.

The gap between “using Claude Code” and “using Claude Code well” is massive. I hope this post helps you close it faster than I did.