Based on Boris Cherny's workflow (Creator of Claude Code)


Quick Setup Checklist

  • [ ] Create CLAUDE.md in your repo root
  • [ ] Set up .claude/commands/ for slash commands
  • [ ] Configure .claude/settings.json for permissions
  • [ ] Add .mcp.json for tool integrations
  • [ ] Enable terminal notifications (iTerm2/equivalent)
  • [ ] Set up PostToolUse formatting hooks

Session Management

| Practice | How | |----------|-----| | Run parallel sessions | 5 terminal tabs numbered 1-5 | | Browser sessions | 5-10 on claude.ai/code | | Switch contexts | Use --teleport between local/web | | Stay notified | Enable system notifications for input requests | | Mobile sessions | Start from Claude iOS app, check in later |

Model choice: Use Opus 4.5 with thinking for everything. Smarter model = less steering = faster overall.


The CLAUDE.md File

Location: Repository root

# Project: [Name]

## Commands
- pnpm test --filter <n>: run focused test
- pnpm lint: run before pushing

## Code Style
- Prefer early returns over nested ifs
- Use named exports
- [Add patterns specific to your project]

## Workflow
- Write tests first for non-trivial changes
- Update docs when behavior changes

## Known Issues
- [Document recurring mistakes here]

Rule: When Claude makes a mistake → add it to CLAUDE.md → tag @claude in PR reviews to update guidelines.


Workflow Modes

Plan Mode (Shift+Tab twice)

  1. Start every non-trivial task in Plan Mode
  2. Iterate on plan until it's solid
  3. Switch to auto-accept edits mode
  4. Claude executes in one shot

Principle: Plan quality is the real work. If the plan isn't crisp, keep refining.

Auto-Accept Mode

  • Use after plan is approved
  • Claude executes without confirmation prompts
  • Best for implementation after planning

Slash Commands

Location: .claude/commands/

Essential: /commit-push-pr

Use inline bash to pre-compute context:

# .claude/commands/commit-push-pr.md
Git status: $(git status --short)
Current branch: $(git branch --show-current)
Recent commits: $(git log --oneline -5)

Create a commit with a clear message, push, and open a PR.

Pattern: Any workflow you repeat daily → make it a slash command.


Subagents

| Subagent | Purpose | |----------|---------| | code-simplifier | Clean up architecture after main work | | verify-app | Run end-to-end tests before shipping |

Create in .claude/commands/ with detailed instructions for each phase.


Verification (Most Important)

"Give Claude a way to verify its work. It 2-3x the quality of the final result." — Boris Cherny

Verification Methods

  • Browser testing (Chrome extension)
  • Test suites
  • CLI validation
  • Phone simulators
  • Smoke tests in Stop hooks

Example Stop Hook

{
  "hooks": {
    "Stop": [{
      "type": "command",
      "command": "pnpm test && echo 'Tests passed'"
    }]
  }
}

Hooks & Automation

PostToolUse Hook (Auto-formatting)

{
  "hooks": {
    "PostToolUse": [{
      "matcher": "Write|Edit",
      "hooks": [{
        "type": "command",
        "command": "bun run format || true"
      }]
    }]
  }
}

Catches the last 10% of formatting issues before CI.


Permissions

Don't use: --dangerously-skip-permissions

Do use: /permissions to pre-allow safe commands

Location: .claude/settings.json (shared with team)

{
  "permissions": {
    "allow": [
      "pnpm test",
      "pnpm lint",
      "pnpm build",
      "git status",
      "git diff"
    ]
  }
}

MCP Integrations

Location: .mcp.json (check into git)

Common integrations:

  • Slack — Search and post messages
  • BigQuery — Run analytics queries
  • Sentry — Grab error logs
  • GitHub — PR management

Start with one system that removes a daily annoyance, then expand.


Quick Reference

| Action | Command/Method | |--------|----------------| | Plan mode | Shift+Tab twice | | Teleport session | --teleport | | Background handoff | & | | Slash commands | /command-name | | Permissions menu | /permissions |


The Core Philosophy

  1. Parallel over sequential — Run multiple sessions, context-switch when value is ready
  2. Plan before execute — Invest in planning, execution becomes one-shot
  3. Document mistakes — Every error becomes a CLAUDE.md entry
  4. Verify everything — Feedback loops are non-negotiable
  5. Automate repetition — If you do it daily, make it a command

Deep Dive: Learn More


Official Documentation


Source: Boris Cherny's Twitter thread (January 2025) and VentureBeat coverage