Claude Code Creator Shares These 22 Tips
Section titled “Claude Code Creator Shares These 22 Tips”
Boris Cherny Claude Code
If you want to master Claude Code, one developer you should listen to is Boris Cherny, the actual creator of Claude Code.
Recently, Boris shared the setup he uses daily and the tips that power his workflow. I took time to review everything and tested most of these myself to compile them into this single reference article.
You can use it to check if your setup covers these basics or pick what fits your use case.
As Boris himself puts it, there’s no single “right way” to use Claude Code — the team intentionally built it so you can customize and hack it however you like.
Boris created Claude Code as a side project back in September 2024.
What started as an experiment has grown into a core dev tool for thousands of engineers.
His recent numbers: in just 30 days, he landed 259 PRs — that’s 497 commits, 40k lines added, and 38k lines removed. Every single line was written by Claude Code paired with Opus 4.5.
These aren’t theoretical tips. They come from someone shipping production code at this scale daily.
Let’s break down the 22 tricks he recommends.
Running Multiple Claudes in Parallel
Section titled “Running Multiple Claudes in Parallel”Tip 1: Run 5 Claudes in Parallel with System Notifications
Section titled “Tip 1: Run 5 Claudes in Parallel with System Notifications”Boris doesn’t run a single Claude session. He runs five simultaneously in his terminal, with tabs numbered 1–5.
To keep track of which session needs attention, he enables system notifications. This way he knows when a Claude is waiting for input without checking each tab.
You can set this up in iTerm2 by following the official guide: ==[https://code.claude.com/docs/en/terminal-config#iterm-2-system-notifications](https://code.claude.com/docs/en/terminal-config#iterm-2-system-notifications)==
Tip 2: Run Additional Sessions on claude.ai/code + Use — teleport
Section titled “Tip 2: Run Additional Sessions on claude.ai/code + Use — teleport”It doesn’t stop at the terminal.
He also runs 5–10 additional sessions
**claude.ai/code**in parallel with his local Claudes. He hands off sessions between the terminal and the web using the**&**command, and uses**--teleport**to move back and forth between them.
He even starts sessions from his phone using the Claude iOS app — kicking off tasks in the morning and checking in on them later.
This parallel approach means he’s never blocked waiting for one task to finish before starting another.
Tip 3: Use Opus 4.5 with Thinking
Section titled “Tip 3: Use Opus 4.5 with Thinking”Boris uses Opus 4.5 with thinking enabled for everything.
His reasoning: even though it’s bigger and slower than Sonnet, you steer it less, and it’s better at tool use. The result is faster because you spend less time correcting mistakes.
In his words, it’s the best coding model he’s ever used.
CLAUDE.md as Team Memory
Section titled “CLAUDE.md as Team Memory”The CLAUDE.md file acts like Claude’s memory for your project.
It’s where you document rules, patterns, and preferences so Claude doesn’t repeat the same mistakes.
Tip 4: Maintain a Shared CLAUDE.md Checked into Git
Section titled “Tip 4: Maintain a Shared CLAUDE.md Checked into Git”Boris and his team maintain a single shared CLAUDE.md for the Claude Code repo. It’s checked into git, and the whole team contributes to it multiple times a week.
Tip 5: Update It Whenever Claude Does Something Wrong
Section titled “Tip 5: Update It Whenever Claude Does Something Wrong”The rule is simple: anytime Claude does something wrong, they add it to CLAUDE.md so it knows not to do it next time.
Tip 6: Tag @claude on PRs to Add Learnings
Section titled “Tip 6: Tag @claude on PRs to Add Learnings”Here’s a workflow he uses that compounds knowledge over time.
During code review, he tags
**@claude**on his coworkers’ PRs to add learnings to**CLAUDE.md**as part of the PR itself. This uses the Claude Code GitHub action.
To set this up, run:
/install-github-actionEvery merged PR makes the repo’s memory smarter. Whatever nit happened on that pull request won’t need to happen again.
Tip 7: Keep CLAUDE.md Concise (~2.5k Tokens)
Section titled “Tip 7: Keep CLAUDE.md Concise (~2.5k Tokens)”Boris keeps his CLAUDE.md around 2.5k tokens. It covers:
Common bash commands
Code style conventions
UI and content design guidelines
State management patterns
Logging and error handling
Gating and debugging approaches
Pull request template
You don’t need to dump everything in there. Focus on the patterns and mistakes specific to your codebase.
Plan Mode & Slash Commands
Section titled “Plan Mode & Slash Commands”Tip 8: Start Sessions in Plan Mode
Section titled “Tip 8: Start Sessions in Plan Mode”Most of his sessions start in Plan mode. To enter it, press shift+tab twice.
In Plan mode, Claude can only read your codebase — it can’t write anything. You have a back-and-forth conversation until both you and Claude agree on the approach.
Tip 9: Refine the Plan Before Switching to Auto-Accept
Section titled “Tip 9: Refine the Plan Before Switching to Auto-Accept”Once he likes the plan, he switches into auto-accept edits mode. From there, Claude can usually one-shot the entire implementation.
His key insight: a good plan is really important. Spend time getting it right before letting Claude execute.
Tip 10: Use Slash Commands for Repeated Workflows
Section titled “Tip 10: Use Slash Commands for Repeated Workflows”Boris uses slash commands for every “inner loop” workflow he does many times a day.
This saves repeated prompting and lets Claude use these workflows too. Commands live in
**.claude/commands/**and are checked into git.
For example, he and Claude use a /commit-push-pr slash command dozens of times every day.
Tip 11: Use Inline Bash in Commands to Pre-Compute Info
Section titled “Tip 11: Use Inline Bash in Commands to Pre-Compute Info”Here’s a trick to make slash commands run faster.
You can embed bash commands directly in your slash command using backticks. Instead of Claude asking for git status, it already knows — no wasted tokens on back-and-forth.
Example structure for a commit command:
Here's the current git status:\`git status\`
Here are the recent commits:\`git log --oneline -5\`Create a commit based on these staged changes.The bash output gets injected before Claude processes the command.
Subagents, Permissions & Hooks
Section titled “Subagents, Permissions & Hooks”Tip 12: Use Subagents for Common Tasks
Section titled “Tip 12: Use Subagents for Common Tasks”Boris uses a few subagents often:
- code-simplifier — simplifies code after Claude is done working
- verify-app — has detailed instructions for testing Claude Code end-to-end
Think of subagents as automating the most common workflows you do for most PRs.
Tip 13: Store Commands in.claude/commands/ and Check into Git
Section titled “Tip 13: Store Commands in.claude/commands/ and Check into Git”Both slash commands and subagents live in the .claude/commands/ directory.
Check them into git so your whole team shares the same workflows.
When someone improves a command, everyone benefits.
Tip 14: Use /permissions instead of — dangerously-skip-permissions
Section titled “Tip 14: Use /permissions instead of — dangerously-skip-permissions”Boris doesn’t use --dangerously-skip-permissions.
Instead, he uses
**/permissions**to pre-allow common bash commands that he knows are safe in his environment. This avoids unnecessary permission prompts without giving Claude unlimited access.
Run /permissions to add specific commands you trust.
Tip 15: Share Allowed Permissions via.claude/settings.json
Section titled “Tip 15: Share Allowed Permissions via.claude/settings.json”Most of Boris’s allowed permissions are checked into .claude/settings.json and shared with the team.
This means everyone has the same safe commands pre-approved, and new team members get a sensible default setup immediately.
Tip 16: Use PostToolUse Hooks to Auto-Format Code
Section titled “Tip 16: Use PostToolUse Hooks to Auto-Format Code”Claude usually generates well-formatted code out of the box. But Boris uses a PostToolUse hook to handle the last 10%.
This catches formatting issues before they fail CI later.
To set up a formatting hook, run /hooks and configure a PostToolUse hook that runs your formatter (like Prettier or Black) after Claude edits files.
MCP, Long Tasks & Verification
Section titled “MCP, Long Tasks & Verification”Tip 17: Connect Claude to Your Tools via MCP
Section titled “Tip 17: Connect Claude to Your Tools via MCP”Claude Code uses all the tools: It searches and posts to Slack, runs BigQuery queries for analytics questions, and grabs error logs from Sentry.
This is done through MCP (Model Context Protocol) servers that connect Claude to external services.
Tip 18: Check MCP Config into.mcp.json for Team Sharing
Section titled “Tip 18: Check MCP Config into.mcp.json for Team Sharing”The Slack MCP configuration is checked into .mcp.json and shared with the team.
This way, everyone has access to the same integrations without manual setup.
Tip 19: Use Stop Hooks for Long-Running Tasks
Section titled “Tip 19: Use Stop Hooks for Long-Running Tasks”For very long-running tasks, he uses Stop hooks to verify Claude’s work automatically.
He’ll either prompt Claude to verify its work with a background agent when it’s done, or use an agent Stop hook to do it more deterministically.
Tip 20: Use the Ralph-Wiggum Plugin for Autonomous Loops
Section titled “Tip 20: Use the Ralph-Wiggum Plugin for Autonomous Loops”For tasks that need to run for hours, Boris uses the ralph-wiggum plugin (created by Geoffrey Huntley).
This keeps Claude working in loops until it succeeds, rather than stopping after one attempt.
I covered this in my recent tutorial — Ralph Wiggum: Claude Code New Way to Run Autonomously (For Hours Without Drama)
For autonomous sessions, he’ll also use --permission-mode=dontAsk or --dangerously-skip-permissions in a sandbox so Claude can work without being blocked on permission prompts.
Tip 21: Give Claude a Way to Verify Its Work
Section titled “Tip 21: Give Claude a Way to Verify Its Work”This is his most important tip for getting great results.
If Claude has a feedback loop to verify its work, it will 2–3x the quality of the final result.
Verification looks different for each domain:
- Running a bash command
- Running a test suite
- Testing the app in a browser or phone simulator
Invest in making this work!
Tip 22: Use Chrome Extension for UI Testing
Section titled “Tip 22: Use Chrome Extension for UI Testing”Claude tests every single change Boris lands using the Claude Chrome extension.
It opens a browser, tests the UI, and iterates until the code works and the UX feels good.
I covered this in my recent tutorial here — I Tested (New) Claude Code Browser Feature (Claude Code Can Now Control Your Browser)
This closes the loop between writing code and validating that it works as intended.
Final Thoughts
Section titled “Final Thoughts”These 22 tips come from Boris Cherny’s workflow — the same setup he uses to ship hundreds of PRs monthly.
You don’t need to adopt all of them at once. Start with one or two that fit your current workflow, like Plan mode or setting up a shared CLAUDE.md.
The core principle running through all these tips: give Claude structure, feedback loops, and the tools it needs.
That’s what separates a good Claude Code setup from a great one.
Which of these tips were you missing in your workflow?
Claude Code Course
Section titled “Claude Code Course”Every day, I’m working hard to build the ultimate Claude Code course, which demonstrates how to create workflows that coordinate multiple agents for complex development tasks. It’s due for release soon.
It will take what you have learned from this article to the next level of complete automation.
New features are added to Claude Code daily, and keeping up is tough.
The course explores Agents, Hooks, advanced workflows, and productivity techniques that many developers may not be aware of.
Once you join, you’ll receive all the updates as new features are rolled out.
This course will cover:
- Advanced subagent patterns and workflows
- Production-ready hook configurations
- MCP server integrations for external tools
- Team collaboration strategies
- Enterprise deployment patterns
- Real-world case studies from my consulting work
If you’re interested in getting notified when the Claude Code courselaunches**,** click here to join the early access list →
( Currently, I have 3000+ already signed-up developers)
I’ll share exclusive previews, early access pricing, and bonus materials with people on the list.
Let’s Connect!
Section titled “Let’s Connect!”If you are new to my content, my name is Joe Njenga
Join thousands of other software engineers, AI engineers, and solopreneurs who read my content daily on Mediu m and on YouTube where I review the latest AI engineering tools and trends. If you are more curious about my projects and want to receive detailed guides and tutorials, join thousands of other AI enthusiasts in my weekly AI Software engineer newsletter
If you would like to connect directly, you can reach out here:## AI Integration Software Engineer (10+ Years Experience )
Software Engineer specializing in AI integration and automation. Expert in building AI agents, MCP servers, RAG…
njengah.com
Follow me on Medium | YouTube Channel | X | LinkedIn
Software & AI Automation Engineer, Tech Writer & Educator. Vision: Enlighten, Educate, Entertain. One story at a time. Work with me: mail.njengah@gmail.com
Responses (2)
Section titled “Responses (2)”Talbot Stevens
What are your thoughts?
What a goldmine! 🎉 I loved how Joe broke down Boris Cherny’s 22 tip‑sheet into bite‑size nuggets you can actually start using today. The part about “thinking in primitives” totally changed how I structure my prompts, and the little reminder to…1
Helloo, very nice article. I just have one question. Here i don’t understand the difference between subagent and command.More from Joe Njenga
Section titled “More from Joe Njenga”Recommended from Medium
Section titled “Recommended from Medium”[
See more recommendations