Kshitij (Tjay) Dhyani

Command Palette

Search for a command to run...

macOS on Steroids

The ultimate macOS setup guide for developers who want peak productivity.

This is my almanac for setting up a new macOS machine to my workflows.

Initial System Setup

Step 1: Basic macOS Configuration

Before installing any applications, let's configure macOS for optimal productivity:

1Enable tap to click:

System Settings → Trackpad → Point & Click → Tap to click

2Speed up key repeat rate:

defaults write -g InitialKeyRepeat -int 15defaults write -g KeyRepeat -int 2

3Show hidden files in Finder:

defaults write com.apple.finder AppleShowAllFiles YESkillall Finder

4Disable press-and-hold for accented characters:

defaults write -g ApplePressAndHoldEnabled -bool false

5Show path bar in Finder:

defaults write com.apple.finder ShowPathbar -bool true

6Show status bar with available space in Finder:

defaults write com.apple.finder ShowStatusBar -bool true

7Enable Quit option for Finder:

defaults write com.apple.Finder QuitMenuItem 1killall Finder

What this does: The path bar shows your current folder location at the bottom of Finder windows, while the status bar displays available disk space and item counts. Enabling the Quit menu item allows you to fully quit Finder (useful when using ForkLift as your primary file manager)!

8Dock: right edge, small, instant auto-hide, a Quick Note hot corner (bottom-right), and nothing pinned but Zen. The Hyper keys below launch everything else, so the Dock barely needs to exist:

# Position, size, auto-hide
defaults write com.apple.dock orientation -string right
defaults write com.apple.dock tilesize -int 32
defaults write com.apple.dock autohide -bool true
defaults write com.apple.dock autohide-delay -float 0
defaults write com.apple.dock autohide-time-modifier -float 0.4

# Bottom-right hot corner → Quick Note
defaults write com.apple.dock wvous-br-corner -int 14
defaults write com.apple.dock wvous-br-modifier -int 0

# Dock contents: wipe Apple's defaults, pin only Zen
brew install dockutil
dockutil --remove all --no-restart
dockutil --add /Applications/Zen.app --no-restart

killall Dock

9Turn off macOS's built-in window tiling so it doesn't fight Rectangle:

defaults write com.apple.WindowManager EnableTilingByEdgeDrag -bool false
defaults write com.apple.WindowManager EnableTopTilingByEdgeDrag -bool false
defaults write com.apple.WindowManager EnableTilingOptionAccelerator -bool false
defaults write com.apple.WindowManager EnableTiledWindowMargins -bool false

Wallpapers & Visual Setup

Desktop Wallpapers

My collection of desktop wallpapers:

SpaceX Starship lifting off through orange-lit smoke beneath a blue skyDracula Mac WallpaperMain WallpaperGojo Suguru Wallpaper

Twitter Banners

For your Twitter account banners and social media:

Twitter BannerSocial Media BannerAlternative BannerBanner OptionDark Anime Banner

Profile Pictures

For consistency across all your accounts:

Original Profile PictureLight Theme Profile PictureDark Theme Profile PictureSilver Surfer Profile PictureMatrix Agent Smith Pixel Art Profile Picture

Installing Homebrew & Core Applications

Step 1: Install Homebrew

Homebrew is the essential package manager for macOS. It simplifies installing and managing applications.

Run this command in Terminal:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

After installation, add Homebrew to your PATH:

echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofileeval "$(/opt/homebrew/bin/brew shellenv)"

Step 2: Install Essential Applications

Now let's install all the applications you'll need. I've organized them by category with detailed explanations:

One-Command Installation

Install everything at once. Formulae and casks go in two separate commands, because a --cask anywhere in a single brew install makes Homebrew treat every name as a cask:

CLI tools:

brew install node@24 python tmux git uv bun zoxide atuin yt-dlp gallery-dl fzf eza gh duti dockutil \
ffmpeg exiftool pandoc pngquant gifsicle poppler ghostscript terminal-notifier watch \
awscli azure-cli flyctl mongodb-atlas-cli sqlcmd anomalyco/tap/opencode

Apps:

brew install --cask zen-browser arc google-chrome cmux ghostty visual-studio-code cursor \
claude-code@latest codex chatgpt orbstack mongodb-compass ngrok \
notion notion-calendar obsidian bettertouchtool superkey appcleaner flux-app rectangle bartender \
alcove cotypist voiceink iloader forklift libreoffice calibre meru \
discord whatsapp slack telegram zoom cleanshot screen-studio figma iina soundsource finetune \
protonvpn little-snitch mole-app font-jetbrains-mono-nerd-font \
steipete/tap/codexbar steipete/tap/trimmy abue-ammar/tinycast/tinycast kamillobinski/thock/thock

Not in the one-liners on purpose: DaVinci Resolve (no cask, see below), Pear Desktop (pinned version, see below), Mac App Store apps, and the alternatives I list next to my picks.

Core Command Line Tools
brew install node@24 && brew link --force node@24

Node.js - JavaScript runtime, pinned to the 24 LTS line. node@24 is keg-only, so link it to put node/npm on your PATH

brew install python

Python - Essential programming language for scripting and development

brew install tmux

tmux - Terminal multiplexer for managing multiple terminal sessions

brew install git

Git - Version control system (brew version is more up-to-date than macOS default)

brew install uv

uv - Extremely fast Python package and project manager, written in Rust

brew install zoxide

zoxide - Smarter cd command that remembers your most used directories

brew install atuin

Atuin - Magical shell history with sync across machines

brew install yt-dlp

yt-dlp - Download videos/images from YouTube and 1000+ other sites

brew install gallery-dl

gallery-dl - Download image galleries and collections from Instagram, Twitter/X, Reddit, Pinterest, and hundreds of other sites

brew install fzf

fzf - Command-line fuzzy finder for files, history, and processes

brew install eza

eza - Modern, maintained replacement for ls with colors and icons

brew install gh

GitHub CLI - PRs, issues, releases, and auth from the terminal. Coding agents lean on it heavily

brew install ffmpeg exiftool pandoc pngquant gifsicle poppler ghostscript

Media & document toolbelt:

  • ffmpeg - convert, trim, and transcode any audio/video
  • exiftool - read, write, and strip photo/video metadata
  • pandoc - convert between Markdown, DOCX, HTML, PDF, and friends
  • pngquant / gifsicle - shrink PNGs and GIFs
  • poppler / ghostscript - PDF text extraction, rendering, and compression
brew install awscli azure-cli flyctl mongodb-atlas-cli sqlcmd

Cloud & database CLIs: AWS, Azure, Fly.io, MongoDB Atlas, and SQL Server

brew install terminal-notifier watch

terminal-notifier - Native macOS notifications from the shell (powers my Claude Code "task complete" hook, see below). watch - rerun a command every N seconds

Browsers
brew install --cask zen-browser

Zen Browser - Privacy-focused browser with excellent customization. My default browser

brew install --cask arc

Arc - Chromium browser with spaces and a vertical sidebar. My second browser, on Hyper + Q

brew install --cask google-chrome

Chrome - Primary browser with excellent DevTools

Development Tools
brew install --cask cursor

Cursor - AI-powered code editor built on VSCode, perfect for AI-assisted development

brew install --cask visual-studio-code

VS Code - My main editor (Hyper + A), with the Claude Code extension docked in the panel

brew install --cask claude-code@latest

Claude Code - Anthropic's terminal coding agent. The @latest cask tracks the fast release channel; plain claude-code is the stable channel. Skills, plugins, and config are covered further down

brew install --cask codex

Codex CLI - OpenAI's terminal coding agent. The desktop Codex experience lives inside the ChatGPT app (below)

brew install anomalyco/tap/opencode

opencode - Open-source, provider-agnostic terminal coding agent

brew install --cask orbstack

OrbStack - Drop-in Docker Desktop replacement plus lightweight Linux VMs. Faster, lighter on battery, and the docker CLI just works

brew install --cask mongodb-compass

MongoDB Compass - GUI for exploring and querying MongoDB

brew install --cask ngrok

ngrok - Expose a localhost port on a public URL for webhooks and demos

brew install --cask ghostty

Ghostty - Fast, feature-rich terminal emulator

brew install --cask cmux

cmux - Ghostty-based terminal built for running coding agents: vertical tabs and per-agent notifications. My daily terminal (Hyper + E)

brew install --cask steipete/tap/codexbar

CodexBar - Free, open-source menu bar app that keeps every AI coding usage window, credit balance, and reset timer in view across 40+ providers (Codex, Claude Code, Cursor, and more). No login required

Productivity & System Tools
brew install --cask notion

Notion - All-in-one workspace for notes, documents, and project management

brew install --cask obsidian

Obsidian - Local-first Markdown knowledge base. Plain files on disk, so agents can read and write my notes too (Hyper + D)

brew install --cask abue-ammar/tinycast/tinycast

Tinycast - Tiny, fully native launcher with hotkeys and clipboard history. My Raycast replacement

brew install --cask bettertouchtool

BetterTouchTool - Customize trackpad gestures, keyboard shortcuts, and Touch Bar

brew install --cask superkey

SuperKey - Transform your caps lock into a powerful productivity key

brew install --cask appcleaner

AppCleaner - Thoroughly uninstall applications and their associated files

brew install --cask flux-app

f.lux - Adjust screen color temperature based on time of day

brew install --cask rectangle

Rectangle - Window management made simple with keyboard shortcuts

brew install --cask bartender

Bartender - My go-to menu bar manager. Hide, reorder, and reveal menu bar items, with triggers, hotkeys, and per-item show/hide rules. Paid, the most polished option. Heads-up: the cask now installs Bartender 7, so check your license covers it

brew install --cask jordanbaird-ice

Ice - Free, open-source alternative to Bartender. Hide, organize, and reorder menu bar items, with an Ice Bar that tucks overflow items below the notch

Amphetamine - Keep your Mac awake. Free from the Mac App Store with advanced triggers and session control

Klack - Satisfying mechanical keyboard sounds for every keystroke. Available on the Mac App Store

brew install --cask kamillobinski/thock/thock

Thock - Klack alternative. Free, open-source keyboard sounds, installable with brew

brew install --cask steipete/tap/trimmy

Trimmy - Watches your clipboard and folds multi-line shell snippets (pipes, redirects, line continuations) into a single pasteable line. No dock icon, no network, no daemon

brew install --cask cotypist

Cotypist - On-device AI that predicts your next words in every Mac app. Press Tab to accept. Open source — make your own version

Cotabby - Cotypist alternative. Free, open-source, on-device AI autocomplete in every Mac app, using Apple Intelligence or local GGUF models. Inline ghost text, Tab to accept

brew install --cask voiceink

VoiceInk - Voice-to-text dictation into any app, transcribed on-device. Much faster than typing long prompts to agents

brew install --cask alcove

Alcove - Turns the notch into a Dynamic Island — music controls, notifications, and widgets in the dead space. Lightweight, one-time purchase

brew install --cask iloader

iloader - iOS sideloading companion for getting apps onto your iPhone from the Mac

File Management
brew install --cask forklift

ForkLift - Advanced file manager and FTP client

Office & Documents
brew install --cask libreoffice

LibreOffice - Free and powerful office suite

brew install --cask notion-calendar

Notion Calendar - Calendar for scheduling, linked to Notion docs (Hyper + C)

brew install --cask meru

Meru - Gmail as a proper desktop app: native notifications, unread badge, multiple accounts. My default mail app (Hyper + X)

For PDF editing, download PDF Gear - excellent free PDF editor with annotation tools (also on the Mac App Store). My default PDF app.

brew install --cask calibre

calibre - Ebook library manager and converter. How books get onto my Kobo

Communication
brew install --cask discord

Discord - Community and team communication

brew install --cask whatsapp

WhatsApp - Popular messaging platform

brew install --cask slack

Slack - Work and team communication

brew install --cask telegram

Telegram - Fast messaging with a native macOS client

brew install --cask zoom

Zoom - Video calls

Creative & Media Tools
brew install --cask cleanshot

CleanShot X - Advanced screenshot and screen recording tool

PixelSnap 2 - Pixel-perfect on-screen measurement tool with edge detection. Measure distances, sizes, and grab colors anywhere on screen. Integrates with CleanShot for design and dev work

brew install --cask screen-studio

Screen Studio - Professional screen recording with beautiful animations

DaVinci Resolve - Professional video editing and color grading. The Homebrew cask is gone, so download the installer from Blackmagic directly

brew install --cask figma

Figma - Collaborative design tool for UI/UX

Media Players
brew install --cask iina

IINA - Modern media player designed specifically for macOS. My default for all audio and video (setup below)

brew tap pear-devs/pear && brew install --cask pear-desktop

Pear Desktop - Unofficial YouTube Music desktop app (formerly th-ch/youtube-music) with ad-block, plugins, and a proper native window. Installs as YouTube Music.app

I'm pinned to 3.11.0. 3.12.0 was a regression for my setup, so the brew cask (which tracks latest) is not the way to restore it. Pull the exact DMG from GitHub releases instead:

cd ~/Downloads
curl -LO https://github.com/pear-devs/pear-desktop/releases/download/v3.11.0/YouTube-Music-3.11.0-arm64.dmg
MOUNT=$(hdiutil attach -nobrowse YouTube-Music-3.11.0-arm64.dmg | grep -o '/Volumes/.*')
rm -rf "/Applications/YouTube Music.app"
cp -R "$MOUNT/YouTube Music.app" /Applications/
hdiutil detach "$MOUNT"
defaults read "/Applications/YouTube Music.app/Contents/Info.plist" CFBundleShortVersionString   # → 3.11.0

Settings and plugins live in ~/Library/Application Support/YouTube Music and survive a swap of the .app. Back that folder up if you care about your config.

Keeping it pinned: plain brew upgrade skips this cask (auto_updates), so the daily routine is safe. Never run brew upgrade --greedy or brew reinstall --cask pear-desktop — both drag in latest. Inside the app, keep auto-update off (Options menu, or set "autoUpdates": false under options in config.json) and decline the update prompt if it ever shows.

Audio Utilities
brew install --cask soundsource

SoundSource - Advanced per-app volume control, audio routing, and system-wide EQ

brew install --cask finetune

FineTune - Free, open-source SoundSource alternative. Per-app volume control and audio routing in the menu bar

Security & Privacy
brew install --cask protonvpn

ProtonVPN - Secure VPN service with strong privacy focus

brew install --cask little-snitch

Little Snitch - Outbound firewall. See and block every connection every app tries to make

brew install --cask chatgpt

ChatGPT - Official OpenAI desktop app. As of July 2026, the standalone Codex app has merged into ChatGPT: one app with Chat, Work, and Codex modes. No separate Codex desktop install — update ChatGPT (or your old Codex app) and switch to the Codex view for repos, diffs, PRs, and agent coding. You can set Codex as the default view / app icon if you live in the coding agent

Terminal Setup with Oh My Zsh

Step 1: Install Oh My Zsh

Oh My Zsh is a framework for managing your Zsh configuration with tons of helpful features.

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Step 2: Install Powerlevel10k Theme

The most powerful and customizable Zsh theme:

git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

Then edit your ~/.zshrc:

nano ~/.zshrc

Change the theme line to:

ZSH_THEME="powerlevel10k/powerlevel10k"

Powerlevel10k's icons need a Nerd Font:

brew install --cask font-jetbrains-mono-nerd-font

Then pick JetBrainsMono Nerd Font as the terminal font.

Step 3: Install Essential Zsh Plugins

zsh-autosuggestions

Suggests commands as you type based on your history:

git clone https://github.com/zsh-users/zsh-autosuggestions.git $ZSH_CUSTOM/plugins/zsh-autosuggestions
zsh-syntax-highlighting

Provides syntax highlighting for your shell commands:

git clone https://github.com/zsh-users/zsh-syntax-highlighting.git $ZSH_CUSTOM/plugins/zsh-syntax-highlighting
zsh-fast-syntax-highlighting

Faster and more feature-rich syntax highlighting:

git clone https://github.com/zdharma-continuum/fast-syntax-highlighting.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/fast-syntax-highlighting
zsh-autocomplete

Real-time auto-completion as you type:

git clone --depth 1 -- https://github.com/marlonrichert/zsh-autocomplete.git $ZSH_CUSTOM/plugins/zsh-autocomplete
Enabling the Plugins

Edit your ~/.zshrc file and update the plugins line:

nvim ~/.zshrc

Find the line that says plugins=(git) and replace it with:

plugins=(git zsh-autosuggestions zsh-syntax-highlighting fast-syntax-highlighting zsh-autocomplete)

Apply the changes:

source ~/.zshrc

Configuration Wizard: After restarting your terminal, Powerlevel10k will run a configuration wizard. Choose options that match your aesthetic preferences!

Step 4: Advanced Terminal Tools Setup

Initialize Shell History with Atuin

Set up magical shell history sync:

echo 'eval "$(atuin init zsh)"' >> ~/.zshrcatuin import auto

The init line is what actually binds Ctrl+R and the up arrow to Atuin; without it Atuin is installed but does nothing. fzf (below) also claims Ctrl+R, and whichever loads last in ~/.zshrc wins, so keep this line after the fzf one. The import pulls in your existing shell history

Configure Zoxide for Smart Navigation

Initialize zoxide in your shell:

echo 'eval "$(zoxide init zsh)"' >> ~/.zshrc

Now use z instead of cd - it remembers your most used directories

Setup FZF Integration

Add fuzzy finding to your shell:

$(brew --prefix)/opt/fzf/install

Enables Ctrl+R for history search and Ctrl+T for file search

Step 5: Handy ~/.zshrc Additions

Auto-Activate Python Virtual Environments

Activates the nearest .venv whenever you cd into a project, plus pnpm on the PATH:

# Auto-activate Python virtual environment if .venv exists (no auto-deactivate)

function auto_activate_env() {
  local dir=$PWD
  while [ "$dir" != "/" ]; do
    if [ -d "$dir/.venv" ]; then
      source "$dir/.venv/bin/activate"
      echo "✅ Activated virtual environment ($dir/.venv)"
      return
    fi
    dir=$(dirname "$dir")
  done
}

autoload -U add-zsh-hook
add-zsh-hook chpwd auto_activate_env

# Also activate immediately on shell startup
auto_activate_env

# pnpm
export PNPM_HOME="$HOME/Library/pnpm"
case ":$PATH:" in
  *":$PNPM_HOME:"*) ;;
  *) export PATH="$PNPM_HOME:$PATH" ;;
esac
# pnpm end

Ghostty Terminal Configuration

Essential Ghostty Settings

My full Ghostty config. cmux is built on Ghostty and reads the same ~/.config/ghostty/config, so this one file covers both:

# Restore windows, tabs, and splits on relaunch
window-save-state = always

# ~75 MB of scrollback per terminal (the value is in bytes; agent logs get long)
scrollback-limit = 75000000

cursor-style = bar
cursor-style-blink = true

background-opacity = 0.95
background-blur-radius = 20

What this does: Ghostty remembers your window positions, sizes, open tabs, and split configurations across sessions, and keeps enough scrollback that long agent runs never fall off the top. Config reference

Hyper Key Setup & Macros

Ultimate Productivity Shortcuts

Using BetterTouchTool's Hyper Key (⌘⌥⌃⇧). Never use your eyes for navigation (vision search is slow), use your muscle memory:

Configure these shortcuts in BetterTouchTool:

  • Caps Lock → Act as Hyper Key (⌘⌥⌃⇧)
  • Hyper + Q → Launch Arc
  • Hyper + W → Launch Zen Browser
  • Hyper + E → Launch cmux
  • Hyper + R → Launch WhatsApp
  • Hyper + A → Launch VS Code
  • Hyper + S → Launch ChatGPT (includes Codex)
  • Hyper + D → Launch Obsidian
  • Hyper + F → Launch Discord
  • Hyper + G → Launch YouTube Music
  • Hyper + Z → Launch ForkLift
  • Hyper + X → Launch Meru (Gmail)
  • Hyper + C → Launch Notion Calendar
  • Hyper + V → Launch Splinter
  • Hyper + N → Launch Figma
  • Hyper + 1-5 → Switch to Desktop 1-5

Tip: The Hyper Key eliminates conflicts with existing shortcuts while giving you instant access to any app. It's the most efficient way to navigate your Mac! On a new machine, export your BetterTouchTool preset and import it instead of rebuilding these by hand.

Development Environment Setup

Bun - Fast JavaScript Runtime

Install Bun, a fast all-in-one JavaScript runtime and toolkit:

brew install bun

Bun is in homebrew-core now, so brew upgrade keeps it current. The old curl -fsSL https://bun.sh/install | bash installer still works if you prefer ~/.bun

What is Bun? Bun is a modern JavaScript runtime that's significantly faster than Node.js. It includes a bundler, test runner, and package manager all in one. Perfect for modern web development!

Python Environment with uv

We already installed uv via Homebrew earlier. Now let's use it to manage Python versions:

uv python install 3.12

Homebrew already brings a current Python 3.13/3.14 for scripts; uv manages the per-project versions. Run uv python pin 3.12 inside a project to write its .python-version

Why uv? uv is an extremely fast Python package and project manager written in Rust. It's 10-100x faster than pip and handles both package management and Python version management in one tool!

Git Configuration

Set up your Git identity and preferences:

git config --global user.name "Your Name"git config --global user.email "your.email@example.com"git config --global init.defaultBranch maingit config --global pull.rebase true

SSH Keys for GitHub

Generate and add SSH keys for secure GitHub access:

ssh-keygen -t ed25519 -C "your.email@example.com"eval "$(ssh-agent -s)"ssh-add ~/.ssh/id_ed25519pbcopy < ~/.ssh/id_ed25519.pub

Now go to GitHub → Settings → SSH Keys and paste

Or let the GitHub CLI do the key upload and auth in one go:

gh auth login

Pick GitHub.com → SSH → your id_ed25519.pub. This also gives coding agents a working gh for PRs and issues

My Global CLAUDE.md & AGENTS.md

Every coding agent I run inherits the same thinking style. I keep this prompt in my global ~/.claude/CLAUDE.md and a matching ~/.codex/AGENTS.md so Claude Code and Codex both reason the way I do by default. The block at the bottom routes work to the skills below:

Be organized, accurate, thorough, and detailed without unnecessary verbosity.

Treat me as an expert. Do not dumb things down.

Optimize for truth and correctness over approval, conformity, politeness, or harmony. If I'm wrong, say so directly.

Value good arguments over authorities or sources. Consider serious contrarian arguments alongside consensus expert views.

When useful, present the strongest counterargument to any position I appear to hold.

Do not capitulate when I push back unless I provide new evidence or a better argument.

Do not anchor on numbers, estimates, or assumptions I provide; generate your own independently.

Be skeptical by default. Look for hidden assumptions, failure modes, and ways to improve the answer, product, argument, or system.

My epistemology is the same as David Deutsch or Karl Popper. Naval Ravikant has serious resonance with my thinking loops.

Be surprisingly resourceful. Suggest non-obvious solutions. Be proactive and anticipate my needs. Assume I am high-agency and can make practically anything happen.

Cite sources. Use examples liberally.

Open-minded and impossible to offend. Be provocative, argumentative, and pointed when useful.

When copy editing, always mark changes inline.

About me: Kshitij (tjay) Dhyani (@type_tjay on X)

Co-founder of Ghostfeed, entrepreneur, technical, range of knowledge/experience.

<!-- BEGIN @agent-native/skills -->
When operating as Claude Fable, use the /efficient-fable skill always.
When using a high-cost frontier model for codebase-heavy work, use the /efficient-frontier skill always.
When writing final response status indicators, use the /quick-recap skill always.
When long-running or parallel work needs usage-limit checks, use the /stay-within-limits skill always.
<!-- END @agent-native/skills -->

Claude Code & Codex Skills

Skills are reusable instruction packs that live in ~/.claude/skills/ and load on demand. These are the ones I keep installed:

npx skills add remotion-dev/skills

The skills CLI installs a skill repo once into ~/.agents/skills/, symlinks it into Claude Code's and Codex's skill folders, and tracks sources in ~/.agents/.skill-lock.json. Swap in any owner/repo below

Code Quality

  • thermo-nuclear-code-quality-review - Brutally strict maintainability review. Blocks files past 1,000 lines, rejects ad-hoc spaghetti conditionals, questions thin abstractions and magical behavior, and enforces architectural boundaries. From Cursor's team kit

Agent Orchestration & Usage

From BuilderIO/skills:

  • efficient-fable - Run Claude Fable as the orchestrator while cheaper subagents do token-heavy research, coding, and testing
  • efficient-frontier - Same orchestration pattern for any high-cost frontier model: delegate heavy lifting, keep planning and final review on the expensive model
  • stay-within-limits - Respects 5-hour and weekly usage limits — pauses near the cap and resumes when the window clears
  • quick-recap - Red/yellow/green status block convention for final agent responses

Frontend & Design

  • frontend-design - Distinctive, production-grade frontend interfaces that avoid generic AI aesthetics
  • ui-skills - Opinionated technical constraints for building interfaces (React, TypeScript, Tailwind, composition patterns)
  • web-design-guidelines - Reviews UI code for Web Interface Guidelines compliance — accessibility, UX, and design audits
  • vercel-react-best-practices - React and Next.js performance optimization guidelines from Vercel Engineering
  • better-ui - Polish pass for existing UI: concentric border radius, optical alignment, surface depth, contextual icons, hit areas
  • emil-design-eng - Emil Kowalski's philosophy on UI polish, component design, and when (not) to animate
  • make-interfaces-feel-better - Design-engineering details that make interfaces feel polished: micro-interactions, enter/exit animations, shadows, typography, tabular numbers
  • remotion-dev/skills - The full Remotion suite (video creation in React): remotion-best-practices is the router, plus create, markup, captions, maps, multimedia, interactivity, studio, render, docs, saas, and upgrade

Writing & Content

  • humanizer - Strips signs of AI-generated writing, based on Wikipedia's "Signs of AI writing" guide
  • seo-writer - Long-form posts built to rank on Google page 1 and show up in AI Overviews: meta titles, schema markup, snippet-ready structure
  • tiktok-hooks - Generates Gen-Z / college-apps TikTok hooks for the first 1-3 seconds of a video
  • ghostfeed-ai/skills - Drive Ghostfeed over MCP: ghostfeed-avatars, ghostfeed-slideshows (TikTok photo slideshows), and ghostfeed-ugc-reactions (UGC reaction videos)

Claude Code Plugins

From the official claude-plugins-official marketplace. Install each inside Claude Code with /plugin install <name>@claude-plugins-official:

  • commit-commands - /commit and /commit-push-pr in one step
  • code-simplifier - Agent that simplifies recently changed code without changing behavior
  • context7 - Pulls current library docs instead of relying on stale training data
  • playwright - Browser automation for testing and clicking through flows
  • github, figma, vercel - First-party integrations for repos, design files, and deploys
  • frontend-design, swift-lsp - Design guidance and Swift language server support

MCP Servers & Hooks

claude mcp add --scope user --transport http linear https://mcp.linear.app/mcp

Linear issues and projects from inside any Claude Code session

And a desktop notification whenever Claude Code finishes a task, in ~/.claude/settings.json (uses terminal-notifier from the CLI tools above):

{
  "hooks": {
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "terminal-notifier -title \"Claude Code\" -subtitle \"Task Complete\" -message \"Finished working in $(basename \"$PWD\")\" -sound Blow -timeout 10"
          }
        ]
      }
    ]
  }
}

System Maintenance

Regular Updates

Keep your system and applications up to date:

# Update Homebrew and all packagesbrew update && brew upgrade# Update Oh My Zshomz update# Update npm packages globallynpm update -g

Cloud Backup: Additionally, use iCloud to sync your important folders.

Mole - Deep Clean Your Mac

Mole deep cleans and optimizes your Mac — find large files, clear caches, and reclaim disk space with a clean, fast UI.

brew install --cask mole-app

Mole - Multi-language Mac cleaner and optimizer. Mole now lives in Homebrew proper: the mole-app cask is the desktop app, and brew install mole gets the CLI

Loading...

Essential Extensions & Productivity Tools

VS Code Extensions

These are some very useful VScode Extensions:

Core Productivity Extensions

  • Claude Code - Anthropic's official extension; runs Claude Code in the editor panel with inline diffs
  • Better Comments - Styled comments with alerts, todos, and highlights
  • Color Highlight - Highlight color values in your code
  • Error Lens - See errors and warnings inline with your code
  • Path Intellisense - Autocomplete for file paths
  • TODO Highlight - Highlight TODO, FIXME comments
  • DotENV - Syntax highlighting for .env files
  • EditorConfig - Respect each repo's .editorconfig

Git Integration

  • GitLens - Supercharge Git capabilities with blame annotations
  • Git History - View git log, file history, and compare branches
  • Git Graph - Visual commit graph with branch actions
  • GitHub Actions - View runs and edit workflows with validation

Code Quality & Formatting

  • ESLint - JavaScript/TypeScript linting
  • Prettier - Code Formatter - Opinionated code formatter
  • Ruff - Rust-fast Python linter and formatter (also sorts imports, so no separate isort)

Python Development

  • Python - Core Python language support
  • Pylance - Fast, feature-rich Python language server
  • Python Debugger - Debug Python code with breakpoints
  • Python Environments - Pick and manage venvs and interpreters

Web Development

  • Tailwind CSS IntelliSense - Class autocomplete, linting, and hover previews
  • ES7+ React Snippets - Component and hook snippets
  • Auto Rename Tag - Rename the paired HTML/JSX tag as you type
  • Live Server - Launch local development server with live reload

Containers

  • Container Tools - Manage images, containers, and compose files (works with OrbStack)
  • Dev Containers - Open a repo inside a container

Data & Documentation

  • Rainbow CSV - Highlight CSV files with colors
  • Office Viewer - Open Word, Excel, PDF, and Markdown files right in VS Code

Install the whole set in one go:

for ext in \
  anthropic.claude-code aaron-bond.better-comments naumovs.color-highlight \
  usernamehw.errorlens christian-kohler.path-intellisense wayou.vscode-todo-highlight \
  mikestead.dotenv editorconfig.editorconfig \
  eamodio.gitlens donjayamanne.githistory mhutchie.git-graph github.vscode-github-actions \
  dbaeumer.vscode-eslint esbenp.prettier-vscode charliermarsh.ruff \
  ms-python.python ms-python.vscode-pylance ms-python.debugpy ms-python.vscode-python-envs \
  bradlc.vscode-tailwindcss dsznajder.es7-react-js-snippets formulahendry.auto-rename-tag \
  ritwickdey.liveserver ms-azuretools.vscode-containers ms-vscode-remote.remote-containers \
  mechatroner.rainbow-csv cweijan.vscode-office; do
  code --install-extension "$ext"
done

Final Tips & Tricks

Quick Look Enhancements

Enhance Quick Look (spacebar preview) with plugins:

brew install --cask qlmarkdown syntax-highlight

QLMarkdown renders Markdown, Syntax Highlight previews source files. Both are modern Quick Look extensions: open each app once so macOS registers it. The old qlstephen, qlcolorcode, and quicklook-json casks are disabled in Homebrew now

Touch ID for sudo

Enable Touch ID for sudo commands:

sed "s/^#auth/auth/" /etc/pam.d/sudo_local.template | sudo tee /etc/pam.d/sudo_local

Don't edit /etc/pam.d/sudo directly: macOS updates overwrite it and silently turn Touch ID back off. sudo_local is included by it and survives updates

Paste Without Formatting (Essential for Cursor)

Set up ⌘⇧V for paste without formatting - crucial when working in Cursor:

System Settings → Keyboard → Keyboard Shortcuts → App Shortcuts

Add shortcut for "Paste and Match Style" with ⌘⇧V

Paste without formatting setup

Reference: Reddit guide on paste without formatting

CleanShot X Auto Copy Setup

Enable auto copy to clipboard in CleanShot X for seamless screenshot workflow:

CleanShot X → Preferences → General → Auto copy to clipboard

Position the setting on the right side for easy access

Make CleanShot X the Default Image Viewer

macOS keeps reverting image defaults back to Preview because the "Open With → Change All" Finder dialog only binds a single UTI at a time and silently breaks when LaunchServices gets out of sync. Fix it permanently by setting every image UTI via duti:

brew install duti

A CLI for binding default apps by UTI — what the macOS GUI should have been

# CleanShot X's bundle ID is pl.maketheweb.cleanshotx
duti -s pl.maketheweb.cleanshotx public.jpeg all
duti -s pl.maketheweb.cleanshotx public.png all
duti -s pl.maketheweb.cleanshotx public.tiff all
duti -s pl.maketheweb.cleanshotx public.heic all
duti -s pl.maketheweb.cleanshotx public.heif all
duti -s pl.maketheweb.cleanshotx public.webp all
duti -s pl.maketheweb.cleanshotx com.compuserve.gif all
duti -s pl.maketheweb.cleanshotx public.image all

# Verify it stuck
duti -x jpg
duti -x png

If it still reverts, your LaunchServices database is corrupt — rebuild it and re-run the binds:

/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user
killall Finder

Why this works: Finder's "Change All" writes to a per-extension preference that other apps (and macOS updates) can stomp on. duti writes directly to the LaunchServices preferences plist using the canonical UTI, which is the same mechanism macOS itself uses internally — so the binding survives reboots, app updates, and OS upgrades.

Make IINA the Default Audio & Video Player

Same playbook as CleanShot above, but for IINA — the only macOS video player worth running. Bind every common audio/video UTI to com.colliderli.iina so QuickTime and Music stop hijacking your double-clicks:

IINA=com.colliderli.iina

# --- Video UTIs ---
for uti in \
  public.movie public.video public.audiovisual-content \
  public.mpeg-4 public.mpeg public.mpeg-2-video \
  public.avi public.3gpp public.3gpp2 \
  com.apple.quicktime-movie com.apple.m4v-video \
  com.microsoft.windows-media-wmv com.microsoft.advanced-systems-format \
  org.webmproject.webm public.flc-animation; do
  duti -s "$IINA" "$uti" all
done

# --- Audio UTIs ---
for uti in \
  public.audio public.mp3 public.mpeg-4-audio public.aac-audio \
  public.aifc-audio public.aiff-audio \
  com.apple.m4a-audio com.apple.coreaudio-format \
  com.microsoft.waveform-audio \
  org.xiph.flac org.xiph.ogg-audio com.real.realaudio; do
  duti -s "$IINA" "$uti" all
done

# --- Extension fallbacks for formats with non-canonical UTIs ---
# (.ts is deliberately left out: it's TypeScript far more often than MPEG-TS video)
for ext in mkv opus webm flac ogg m2ts mts mxf wv ape \
           rm rmvb ra asf vob flv f4v divx dv mp2 m3u m3u8; do
  duti -s "$IINA" "$ext" all
done

# Force-register IINA so LaunchServices knows its claims
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -f "/Applications/IINA.app"
killall Finder

Verify with duti -x mp4, duti -x mkv, duti -x mp3 — all three should print IINA.

Gotchas: A few obscure formats (tak, amv, xvid) have no registered UTI on macOS and will fail silently — ignore them. .pls playlists are aggressively claimed by Apple Music and IINA doesn't even declare them; not worth fighting since you'll likely never see one. Everything that matters (mp4 / mov / mkv / webm / mp3 / m4a / flac / opus / wav) sticks permanently.

Same trick for PDFs, pointing them at PDF Gear:

duti -s com.pdfeditor.pdfeditormac com.adobe.pdf all

Make VS Code the Default for Text & Code

Out of the box, macOS scatters text files everywhere: Markdown into whatever ebook app claimed it, JSON into the browser, CSV into ChatGPT, .ts into a video player. One pass fixes it, and routes Word docs to LibreOffice while we're at it:

VSCODE=com.microsoft.VSCode

# --- Text, code, config, and data UTIs ---
for uti in public.plain-text public.source-code public.script public.shell-script \
  public.json public.xml public.yaml public.comma-separated-values-text \
  net.daringfireball.markdown com.apple.property-list com.apple.log; do
  duti -s "$VSCODE" "$uti" all
done

# --- Extensions macOS knows ---
for ext in md markdown txt log json yaml yml xml plist csv tsv \
           js mjs ts py sh zsh bash swift c h cpp hpp java rb php css svg; do
  duti -s "$VSCODE" "$ext" all
done

# --- Word-processor docs -> LibreOffice (sheets and slides already go there) ---
for ext in docx doc rtf odt; do
  duti -s org.libreoffice.script "$ext" all
done

Extensions no app registers a proper type for (tsx, jsx, go, rs, toml, scss, sql, env, …) make duti fail with error -50. Write those the way Finder's "Change All" does, as extension handlers, then restart LaunchServices so it reloads them instead of saving over them:

D=com.apple.LaunchServices/com.apple.launchservices.secure
defaults export $D /tmp/ls.plist

python3 - <<'EOF'
import plistlib
p = "/tmp/ls.plist"
d = plistlib.load(open(p, "rb"))
exts = ("mdx jsonc toml cjs tsx jsx go rs kt lua scss sass less env ini conf cfg "
        "sql graphql vue svelte astro lock").split()
hs = [h for h in d.get("LSHandlers", []) if h.get("LSHandlerContentTag") not in exts]
hs += [{"LSHandlerContentTag": e,
        "LSHandlerContentTagClass": "public.filename-extension",
        "LSHandlerRoleAll": "com.microsoft.vscode",
        "LSHandlerPreferredVersions": {"LSHandlerRoleAll": "-"}} for e in exts]
d["LSHandlers"] = hs
plistlib.dump(d, open(p, "wb"))
EOF

defaults import $D /tmp/ls.plist && killall lsd

Gotchas: Run the duti commands first, then this. Editing the plist without the killall lsd doesn't stick: LaunchServices keeps its own copy in memory and writes it back over your change. macOS may pop a confirmation for a type another app already owns (.ts vs IINA); click the VS Code option. Verify with duti -x tsx.

Remove Full Screen Shortcut Conflict

Disable ⌘⇧F full screen shortcut to avoid conflicts with code search:

System Settings → Keyboard → Keyboard Shortcuts → App Shortcuts

Find "Enter Full Screen" and remove ⌘⇧F shortcut

VS Code Auto Close Tags

Enable automatic tag closing in VS Code for faster HTML/JSX editing:

VS Code → Settings → Search "auto close tags"

Enable "Auto Close Tags" setting

VS Code Settings

The handful of settings I change, via Command Palette (⌘⇧P) → "Preferences: Open User Settings (JSON)":

{
  // File tree on the right, so opening it doesn't shift the code
  "workbench.sideBar.location": "right",

  // Never lose work to a forgotten save
  "files.autoSave": "afterDelay",

  // Claude Code lives in the bottom panel instead of a sidebar
  "claudeCode.preferredLocation": "panel",

  // Use Homebrew's Python by default
  "python.defaultInterpreterPath": "/opt/homebrew/bin/python3"
}

Shortcuts to Live By

These keyboard shortcuts will save you time:

VS Code / Cursor Shortcuts

  • ⌘ + ← Collapse all folders in file explorer