autorenew

AI Coding Tips from Boris, Creator of Claude Code

I’m Boris and I created Claude Code. Lots of people have asked how I use Claude Code, so I wanted to show off my setup a bit.

My setup might be surprisingly vanilla! Claude Code works great out of the box, so I personally don’t customize it much. There is no one correct way to use Claude Code: we intentionally build it in a way that you can use it, customize it, and hack it however you like. Each person on the Claude Code team uses it very differently.

So, here goes.


1. Run 5 Claudes in Parallel

I run 5 Claudes in parallel in my terminal. I number my tabs 1-5, and use system notifications to know when a Claude needs input.

📖 iTerm2 System Notifications


2. Local + Web Parallel Collaboration

I also run 5-10 Claudes on claude.ai/code, in parallel with my local Claudes.

Web Sessions List

As I code in my terminal, I will often:

I also start a few sessions from my phone (from the Claude iOS app) every morning and throughout the day, and check in on them later.


3. Always Use Opus 4.5 + Thinking

I use Opus 4.5 with thinking for everything. It’s the best coding model I’ve ever used, and even though it’s bigger & slower than Sonnet, since you have to steer it less and it’s better at tool use, it is almost always faster than using a smaller model in the end.

Deep Thinking Mode


4. Team-Shared CLAUDE.md

Our team shares a single CLAUDE.md for the Claude Code repo. We check it into git, and the whole team contributes multiple times a week.

CLAUDE.md Example

Key Practice: Anytime we see Claude do something incorrectly, we add it to the CLAUDE.md, so Claude knows not to do it next time.

Other teams maintain their own CLAUDE.md’s. It is each team’s job to keep theirs up to date.


5. Use @claude in Code Review

During code review, I will often tag @claude on my coworkers’ PRs to add something to the CLAUDE.md as part of the PR.

Claude Updating CLAUDE.md

We use the Claude Code GitHub Action (/install-github-action) for this. It’s our version of Compounding Engineering.


6. Most Sessions Start in Plan Mode

Most sessions start in Plan mode (Shift + Tab twice).

Plan Mode

If my goal is to write a Pull Request, I will:

  1. Use Plan mode
  2. Go back and forth with Claude until I like its plan
  3. Switch into auto-accept edits mode
  4. Claude can usually 1-shot it from there

Auto-Edit Mode

A good plan is really important!


7. Use Slash Commands for Repetitive Workflows

I use slash commands for every “inner loop” workflow that I end up doing many times a day. This saves me from repeated prompting, and makes it so Claude can use these workflows, too.

Commands are checked into git and live in .claude/commands/.

Slash Command Example

Example: Claude and I use a /commit-push-pr slash command dozens of times every day. The command uses inline bash to pre-compute git status and a few other pieces of info to make the command run quickly and avoid back-and-forth with the model.

📖 Bash Command Execution


8. Use Subagents Regularly

I use a few subagents regularly:

SubagentPurpose
code-simplifierSimplifies the code after Claude is done working
verify-appHas detailed instructions for testing Claude Code end to end

Agents Directory Structure

Similar to slash commands, I think of subagents as automating the most common workflows that I do for most PRs.

📖 Subagents Documentation


9. Use PostToolUse Hook for Code Formatting

We use a PostToolUse hook to format Claude’s code.

Hooks Configuration Example

Claude usually generates well-formatted code out of the box, and the hook handles the last 10% to avoid formatting errors in CI later.


10. Pre-Allow Commands Instead of Skipping Permissions

I don’t use --dangerously-skip-permissions. Instead, I use /permissions to pre-allow common bash commands that I know are safe in my environment, to avoid unnecessary permission prompts.

Permissions Configuration Interface

Most of these are checked into .claude/settings.json and shared with the team.


11. Claude Code Uses All My Tools

Claude Code uses all my tools for me:

MCP Configuration Example

The Slack MCP configuration is checked into our .mcp.json and shared with the team.


12. Handle Long-Running Tasks

For very long-running tasks, I will either:

  1. Prompt Claude to verify its work with a background agent when it’s done
  2. Use an Agent Stop Hook to do that more deterministically
  3. Use the ralph-wiggum plugin

I will also use either --permission-mode=dontAsk or --dangerously-skip-permissions in a sandbox to avoid permission prompts for the session, so Claude can cook without being blocked on me.

📖 Hooks Guide


13. Most Important Tip: Give Claude a Way to Verify Its Work

Probably the most important thing to get great results out of Claude Code — give Claude a way to verify its work.

If Claude has that feedback loop, it will 2-3x the quality of the final result.

Claude tests every single change I land to claude.ai/code using the Claude Chrome extension. It opens a browser, tests the UI, and iterates until the code works and the UX feels good.

Verification looks different for each domain:

Make sure to invest in making this rock-solid.

📖 Chrome Extension


Summary

TipDescription
Parallel Sessions5 in terminal + 5-10 on web
Use Best ModelOpus 4.5 with thinking
Team CollaborationShared CLAUDE.md, continuously updated
Plan ModePlan first, then execute
Slash CommandsAutomate repetitive workflows
SubagentsAutomate common tasks
HooksAuto-format code
VerificationGive Claude a feedback loop

I hope this was helpful! What are your tips for using Claude Code?