diff --git a/README.md b/README.md index 411d199..25243f1 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # claude-code-best-practice practice makes claude perfect -![updated with Claude Code](https://img.shields.io/badge/updated_with_Claude_Code-v2.1.86%20(Mar%2029%2C%202026%208%3A00%20PM%20PKT)-white?style=flat&labelColor=555) GitHub Stars
+![updated with Claude Code](https://img.shields.io/badge/updated_with_Claude_Code-v2.1.87%20(Mar%2030%2C%202026%2011%3A44%20AM%20PKT)-white?style=flat&labelColor=555) GitHub Stars
[![Best Practice](!/tags/best-practice.svg)](best-practice/) [![Implemented](!/tags/implemented.svg)](implementation/) [![Orchestration Workflow](!/tags/orchestration-workflow.svg)](orchestration-workflow/orchestration-workflow.md) [![Boris](!/tags/boris-cherny.svg)](#-tips-and-tricks) ![Click on these badges below to see the actual sources](!/tags/click-badges.svg)
= Agents · = Commands · = Skills @@ -106,7 +106,7 @@ All major workflows converge on the same architectural pattern: **Research → P - [Ralph Wiggum Loop](https://www.youtube.com/watch?v=eAtvoGlpeRU) [![Implemented](!/tags/implemented.svg)](https://github.com/shanraisshan/novel-llm-26) - [Andrej Karpathy (Founding Member, OpenAI) Workflow](https://x.com/karpathy/status/2015883857489522876) - [Peter Steinberger (Creator of OpenClaw) Workflow](https://youtu.be/8lF7HmQ_RgY?t=2582) -- Boris Cherny (Creator of Claude Code) Workflow — [13 Tips](tips/claude-boris-13-tips-03-jan-26.md) · [10 Tips](tips/claude-boris-10-tips-01-feb-26.md) · [12 Tips](tips/claude-boris-12-tips-12-feb-26.md) · [2 Tips](tips/claude-boris-2-tips-25-mar-26.md) [![Boris](!/tags/boris-cherny.svg)](https://x.com/bcherny) +- Boris Cherny (Creator of Claude Code) Workflow — [13 Tips](tips/claude-boris-13-tips-03-jan-26.md) · [10 Tips](tips/claude-boris-10-tips-01-feb-26.md) · [12 Tips](tips/claude-boris-12-tips-12-feb-26.md) · [2 Tips](tips/claude-boris-2-tips-25-mar-26.md) · [15 Tips](tips/claude-boris-15-tips-30-mar-26.md) [![Boris](!/tags/boris-cherny.svg)](https://x.com/bcherny)

section divider @@ -260,6 +260,7 @@ All major workflows converge on the same architectural pattern: **Research → P | Article / Tweet | Source | |-----------------|--------| +| [15 Hidden & Under-Utilized Features in Claude Code (Boris) \| 30/Mar/26](tips/claude-boris-15-tips-30-mar-26.md) | [Tweet](https://x.com/bcherny/status/2038454336355999749) | | [Squash Merging & PR Size Distribution (Boris) \| 25/Mar/26](tips/claude-boris-2-tips-25-mar-26.md) | [Tweet](https://x.com/bcherny/status/2038552880018538749) | | [Lessons from Building Claude Code: How We Use Skills (Thariq) \| 17/Mar/26](tips/claude-thariq-tips-17-mar-26.md) | [Article](https://x.com/trq212/status/2033949937936085378) | | [Code Review & Test Time Compute (Boris) \| 10/Mar/26](tips/claude-boris-2-tips-10-mar-26.md) | [Tweet](https://x.com/bcherny/status/2031089411820228645) | diff --git a/tips/assets/boris-30-mar-26/0.png b/tips/assets/boris-30-mar-26/0.png new file mode 100644 index 0000000..1f7e334 Binary files /dev/null and b/tips/assets/boris-30-mar-26/0.png differ diff --git a/tips/assets/boris-30-mar-26/1.png b/tips/assets/boris-30-mar-26/1.png new file mode 100644 index 0000000..28d911a Binary files /dev/null and b/tips/assets/boris-30-mar-26/1.png differ diff --git a/tips/assets/boris-30-mar-26/10.png b/tips/assets/boris-30-mar-26/10.png new file mode 100644 index 0000000..abbf2b5 Binary files /dev/null and b/tips/assets/boris-30-mar-26/10.png differ diff --git a/tips/assets/boris-30-mar-26/11.png b/tips/assets/boris-30-mar-26/11.png new file mode 100644 index 0000000..3ff5406 Binary files /dev/null and b/tips/assets/boris-30-mar-26/11.png differ diff --git a/tips/assets/boris-30-mar-26/12.png b/tips/assets/boris-30-mar-26/12.png new file mode 100644 index 0000000..424c345 Binary files /dev/null and b/tips/assets/boris-30-mar-26/12.png differ diff --git a/tips/assets/boris-30-mar-26/13.png b/tips/assets/boris-30-mar-26/13.png new file mode 100644 index 0000000..69e23d1 Binary files /dev/null and b/tips/assets/boris-30-mar-26/13.png differ diff --git a/tips/assets/boris-30-mar-26/14.png b/tips/assets/boris-30-mar-26/14.png new file mode 100644 index 0000000..70989f9 Binary files /dev/null and b/tips/assets/boris-30-mar-26/14.png differ diff --git a/tips/assets/boris-30-mar-26/15.png b/tips/assets/boris-30-mar-26/15.png new file mode 100644 index 0000000..59c0ad7 Binary files /dev/null and b/tips/assets/boris-30-mar-26/15.png differ diff --git a/tips/assets/boris-30-mar-26/2.png b/tips/assets/boris-30-mar-26/2.png new file mode 100644 index 0000000..150ec35 Binary files /dev/null and b/tips/assets/boris-30-mar-26/2.png differ diff --git a/tips/assets/boris-30-mar-26/3.png b/tips/assets/boris-30-mar-26/3.png new file mode 100644 index 0000000..1488d7a Binary files /dev/null and b/tips/assets/boris-30-mar-26/3.png differ diff --git a/tips/assets/boris-30-mar-26/4.png b/tips/assets/boris-30-mar-26/4.png new file mode 100644 index 0000000..f2d2ee7 Binary files /dev/null and b/tips/assets/boris-30-mar-26/4.png differ diff --git a/tips/assets/boris-30-mar-26/5.png b/tips/assets/boris-30-mar-26/5.png new file mode 100644 index 0000000..360156b Binary files /dev/null and b/tips/assets/boris-30-mar-26/5.png differ diff --git a/tips/assets/boris-30-mar-26/6.png b/tips/assets/boris-30-mar-26/6.png new file mode 100644 index 0000000..b7c3e5c Binary files /dev/null and b/tips/assets/boris-30-mar-26/6.png differ diff --git a/tips/assets/boris-30-mar-26/7.png b/tips/assets/boris-30-mar-26/7.png new file mode 100644 index 0000000..cfcb761 Binary files /dev/null and b/tips/assets/boris-30-mar-26/7.png differ diff --git a/tips/assets/boris-30-mar-26/8.png b/tips/assets/boris-30-mar-26/8.png new file mode 100644 index 0000000..a5a1f5a Binary files /dev/null and b/tips/assets/boris-30-mar-26/8.png differ diff --git a/tips/assets/boris-30-mar-26/9.png b/tips/assets/boris-30-mar-26/9.png new file mode 100644 index 0000000..78aea33 Binary files /dev/null and b/tips/assets/boris-30-mar-26/9.png differ diff --git a/tips/claude-boris-15-tips-30-mar-26.md b/tips/claude-boris-15-tips-30-mar-26.md new file mode 100644 index 0000000..ccf19f5 --- /dev/null +++ b/tips/claude-boris-15-tips-30-mar-26.md @@ -0,0 +1,220 @@ +# 15 Hidden & Under-Utilized Features in Claude Code — From Boris Cherny + +A summary of tips shared by Boris Cherny ([@bcherny](https://x.com/bcherny)), creator of Claude Code, on March 30, 2026. + + + + + + +
← Back to Claude Code Best PracticeClaude
+ +--- + +## Context + +Boris shared a bunch of his favorite hidden and under-utilized features in Claude Code, focusing on the ones he uses the most. + +Boris Cherny intro tweet + +--- + +## 1/ Claude Code Has a Mobile App + +Did you know Claude Code has a mobile app? Boris writes a lot of his code from the iOS app — it's a convenient way to make changes without opening a laptop. + +- Download the Claude app for iOS/Android +- Navigate to the **Code** tab on the left +- You can review changes, approve PRs, and write code directly from your phone + +Claude Code mobile app + +--- + +## 2/ Move Sessions Between Mobile/Web/Desktop and Terminal + +Run `claude --teleport` or `/teleport` to continue a cloud session on your machine. Or run `/remote-control` to control a locally running session from your phone/web. + +- **Teleport**: pulls a cloud session down to your local terminal +- **Remote Control**: lets you control a local session from any device +- Boris has **"Enable Remote Control for all sessions"** set in his `/config` + +Teleport and Remote Control + +--- + +## 3/ /loop and /schedule — Two of the Most Powerful Features + +Use these to schedule Claude to run automatically at a set interval, for up to a week at a time. Boris has a bunch of loops running locally: + +- `/loop 5m /babysit` — auto-address code review, auto-rebase, and shepherd PRs to production +- `/loop 30m /slack-feedback` — automatically put up PRs for Slack feedback every 30 mins +- `/loop /post-merge-sweeper` — put up PRs to address code review comments he missed +- `/loop 1h /pr-pruner` — close out stale and no longer necessary PRs +- ...and lots more! + +Experiment with turning workflows into skills + loops. It's powerful. + +/loop and /schedule + +--- + +## 4/ Use Hooks to Deterministically Run Logic + +Use hooks to run logic as part of the agent lifecycle. For example: + +- **Dynamically load** in context each time you start Claude (`SessionStart`) +- **Log every bash command** the model runs (`PreToolUse`) +- **Route permission prompts** to WhatsApp for you to approve/deny (`PermissionRequest`) +- **Poke Claude** to keep going whenever it stops (`Stop`) + +Use hooks + +--- + +## 5/ Cowork Dispatch + +Boris uses Dispatch every day to catch up on Slack and emails, manage files, and do things on his laptop when he's not at a computer. When he's not coding, he's dispatching. + +- Dispatch is a **secure remote control** for the Claude Desktop app +- It can use your MCPs, browser, and computer, with your permission +- Think of it as a way to delegate non-coding tasks to Claude from anywhere + +Cowork Dispatch + +--- + +## 6/ Use the Chrome Extension for Frontend Work + +The most important tip for using Claude Code: **give Claude a way to verify its output.** Once you do that, Claude will iterate until the result is great. + +- Think of it like asking someone to build a website but they aren't allowed to use a browser — the result probably won't look good +- Give Claude a browser and it will write code and iterate until it looks good +- Boris uses the Chrome extension every time he works on web code — it tends to work more reliably than other similar MCPs + +Chrome extension for frontend + +--- + +## 7/ Use the Claude Desktop App to Auto-Start and Test Web Servers + +Along the same vein, the Desktop app bundles in the ability for Claude to **automatically run your web server and even test it in a built-in browser.** + +- You can set up something similar in CLI or VSCode using the Chrome extension +- Or just use the Desktop app for the integrated experience + +Desktop app web server testing + +--- + +## 8/ Fork Your Session + +People often ask how to fork an existing session. Two ways: + +1. Run `/branch` from your session +2. From the CLI, run `claude --resume --fork-session` + +`/branch` creates a branched conversation — you are now in the branch. To resume the original, use `claude -r `. + +Fork your session + +--- + +## 9/ Use /btw for Side Queries + +Boris uses this all the time to answer quick questions while the agent works. `/btw` lets you ask a side question without interrupting the agent's current task. + +Example: +``` +/btw how do I spell dachshund? +> dachshund — German for "badger dog" (dachs + badger, hund + dog). +↑/↓ to scroll · Space, Enter, or Escape to dismiss +``` + +/btw for side queries + +--- + +## 10/ Use Git Worktrees + +Claude Code ships with deep support for git worktrees. Worktrees are essential for doing lots of parallel work in the same repository. Boris has **dozens of Claudes running at all times**, and this is how he does it. + +- Use `claude -w` to start a new session in a worktree +- Or hit the **"worktree" checkbox** in the Claude Desktop app +- For non-git VCS users, use the `WorktreeCreate` hook to add your own logic for worktree creation + +Git worktrees + +--- + +## 11/ Use /batch to Fan Out Massive Changesets + +`/batch` interviews you, then has Claude fan out the work to as many **worktree agents** as it takes (dozens, hundreds, even thousands) to get it done. + +- Use it for large code migrations and other kinds of parallelizable work +- Each worktree agent works independently on its own copy of the codebase + +/batch for massive changesets + +--- + +## 12/ Use --bare to Speed Up SDK Startup by Up to 10x + +By default, when you run `claude -p` (or the TypeScript or Python SDKs), Claude searches for local CLAUDE.md's, settings, and MCPs. But for non-interactive usage, most of the time you want to explicitly specify what to load via `--system-prompt`, `--mcp-config`, `--settings`, etc. + +- This was a design oversight when the SDK was first built +- In a future version, they will flip the default to `--bare` +- For now, opt in with the flag to get up to **10x faster startup** + +```bash +claude -p "summarize this codebase" \ + --output-format=stream-json \ + --verbose \ + --bare +``` + +--bare flag for SDK startup + +--- + +## 13/ Use --add-dir to Give Claude Access to More Folders + +When working across multiple repositories, Boris usually starts Claude in one repo and uses `--add-dir` (or `/add-dir`) to let Claude see the other repo. + +- This not only tells Claude about the repo, but also **gives it permissions** to work in the repo +- Or, add `"additionalDirectories"` to your team's `settings.json` to always load in additional folders when starting Claude Code + +--add-dir for multiple repos + +--- + +## 14/ Use --agent to Give Claude Code a Custom System Prompt & Tools + +Custom agents are a powerful primitive that often gets overlooked. To use it, just define a new agent in `.claude/agents/`, then run: + +```bash +claude --agent= +``` + +- Agents can have restricted tools, custom descriptions, and specific models +- They're great for creating read-only agents, specialized review agents, or domain-specific tools + +--agent for custom system prompts + +--- + +## 15/ Use /voice to Enable Voice Input + +Fun fact: Boris does most of his coding by speaking to Claude, rather than typing. + +- Run `/voice` in CLI then hold the space bar to speak +- Press the voice button on Desktop +- Or enable dictation in your iOS settings + +/voice for voice input + +--- + +## Sources + +- [Boris Cherny (@bcherny) on X — March 30, 2026](https://x.com/bcherny/status/2038454336355999749)