Skip to content

ibarsi/dotfiles

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

991 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Igor's dotfiles

A modern, topic-based dotfile configuration for macOS. Optimized for Apple Silicon and productivity.

Installation

git clone https://github.com/ibarsi/dotfiles.git ~/dotfiles
cd ~/dotfiles
./bootstrap.sh

bootstrap.sh is path-safe and uses the repository root internally, so it can be re-run reliably even when invoked from different working directories.

Quick Commands

Use mise run ... directly for project workflows:

  • mise run check → full validation pipeline
  • mise run verify → AI doctor + bootstrap link verification
  • mise run ai-doctor → AI CLI/tooling health check
  • mise run docs-build → regenerate the docs site data from repo sources
  • mise run docs-check → fail if regenerating docs would change docs/site-data.*
  • mise run docs-serve → serve the docs site locally with mise-managed Python
  • dotdocs → start the docs site from any directory and open it in the browser
  • mise run lint-shell / mise run fmt-shell / mise run fmt-check
  • mise run precommit-install / mise run precommit-run
  • mise run secrets-scan → run explicit repo secret scan
  • upall → upgrade Homebrew packages/casks, converge the Brewfile, upgrade mise-managed tools, and refresh BUMBLEBEE_CATALOG_DIR if it points into a git checkout
  • dsync → safe dotfiles update preview (fetch/status + next commands)
  • groot → jump to git repo root quickly
  • wtnew <branch> [base] → create a worktree under ~/worktrees/<repo>/<branch> and enter it
  • wtsesh → attach/create a tmux session for the current repo+branch
  • pr → open existing PR in browser or create one

Structure

The repository is organized into topics, making it easy to modularize your configuration:

  • git/: Git configuration and aliases.
  • ssh/: SSH client configuration for GitHub and related tooling.
  • macos/: macOS system defaults and UI/UX settings.
  • system/: Global environment variables, paths, and generic aliases.
  • vim/: Vim configuration.
  • tmux/: tmux configuration (symlinked to ~/.tmux.conf).
  • ghostty/: Ghostty terminal configuration (symlinked to ~/.config/ghostty/).
  • gitmoji/: Global gitmoji-cli preferences (symlinked to ~/Library/Preferences/gitmoji-nodejs/).
  • k9s/: Kubernetes TUI configuration (symlinked to ~/Library/Application Support/k9s/config.yaml).
  • zed/: Zed editor settings and keybindings (symlinked to ~/.config/zed/).
  • mise/: Mise global config (symlinked to ~/.config/mise/).
  • codex/: Codex CLI configuration (symlinked to ~/.codex/).
  • cmux/: cmux app configuration (symlinked to ~/.config/cmux/).
  • claude/: Claude Code settings (symlinked to ~/.claude/).
  • docs/: Lightweight static documentation app for aliases, functions, tasks, links, and features.
  • scripts/: Repository automation scripts (doctor-ai, bootstrap-verify).
  • zsh/: Zsh configuration, plugins, and modular initialization.
  • AGENTS.md: Agent operating guidance for this repository.

Features

  • Topic-based organization: Modular and easy to maintain.
  • Modern CLI tools: Integrated with eza, bat, glow, fzf, zoxide, and starship.
  • Lean networking toolkit: Modern DNS/HTTP/traffic inspection helpers (doggo, mtr, iperf3, tcpdump, netcat).
  • FZF workflows: Fast file/dir navigation, branch switching, ripgrep jump-to-file, and process kill helpers.
  • Zsh Power-ups: Catppuccin Mocha syntax highlighting/autosuggestions plus faster completion startup and improved history behavior.
  • tmux workflow: Catppuccin-styled tmux with AI-friendly pane/window ergonomics and Claude quiet-window notifications.
  • Auto-update: Automatically checks for updates to your dotfiles once a day.
  • macOS keyboard tuning: Bootstrap applies fast key repeat, short repeat delay, disables press-and-hold accent popups, and reloads a Caps Lock to Control remap at login.
  • Mise integration: Configured global settings + project tool/tasks for reproducible shell workflows.
  • AI workflow diagnostics: One-command checks for toolchain health and bootstrap verification.
  • Generated reference site: A searchable docs app under docs/ inventories aliases, functions, git shortcuts, mise tasks, bootstrap links, and major repo capabilities from source files.
  • Deterministic guardrails: Optional pre-commit hooks for shell lint/format, merge hygiene, and secret scanning.
  • Advanced Git: Includes gh-dash and powerful log visualization.
  • Gitmoji subject format: Global gitmoji-cli defaults keep the message in the commit subject as ✨ (feat): Title instead of pushing it into the body.
  • SSH commit signing: Git signs commits with ~/.ssh/id_ed25519.pub via gpg.format=ssh.
  • SSH compatibility helper: sshx forces TERM=xterm-256color for hosts that break on xterm-ghostty during interactive sessions.
  • Ghostty terminal: GPU-accelerated terminal with Catppuccin theme, Fira Code font, and custom keybindings — fully configured as dotfiles.
  • k9s defaults: Bootstrap links a repo-managed k9s config that uses the Catppuccin Mocha skin, shows the last 1000 log lines, and wraps log lines by default.
  • Zed editor: Primary editor with Catppuccin theme, Fira Code font, Prettier formatting, and custom keybindings — all managed as dotfiles.
  • Obsidian theme notes: Obsidian stays in Brewfile, and the Catppuccin docs include the manual CLI commands if you want Obsidian to match.
  • Codex CLI workflow: Safe-by-default Codex config, shell shortcuts, and completion for day-to-day AI coding.
  • Claude Code workflow: Claude Code settings + shell shortcuts tuned for regular use alongside Codex.

Shell quality-of-life defaults

  • Completion caching via .zcompdump (faster shell startup)
  • Better history ergonomics (HIST_IGNORE_SPACE, EXTENDED_HISTORY)
  • History-backed zsh autosuggestions: type the start of a previous command, then press Shift-Tab to accept the gray suggestion; use Tab for normal expansion/completion
  • Interactive completion menu + clearer completion descriptions
  • Startup smart tips: On new terminal sessions, generate one practical AI tip from your dotfiles context (can be disabled).

Docs Site

The repo includes a lightweight static docs app in docs/ for browsing the current shell surface area and major dotfiles capabilities.

  • Source-driven generator: scripts/generate-docs.py
  • Generated data file: docs/site-data.json
  • Includes: aliases, functions, git shortcuts from git/.gitconfig plus git-focused shell helpers, mise tasks, bootstrap-managed symlinks, and curated repo feature summaries

Refresh the docs after any feature, alias, function, task, or bootstrap link change:

mise run docs-build

Serve the site locally from the repo root:

mise install
mise run docs-serve

Then open http://localhost:4173.

From any directory, dotdocs will start the server if needed and open the same URL automatically.

Ghostty Terminal

Ghostty is configured as the primary terminal. Config lives in ghostty/ and is symlinked to ~/.config/ghostty/ by bootstrap.sh.

File Destination Purpose
ghostty/config ~/.config/ghostty/config Terminal settings, theme, keybindings

Key settings:

  • Theme: Catppuccin Mocha (dark) / Catppuccin Latte (light), follows system appearance — built-in to Ghostty, no extra install needed
  • Font: Fira Code 13px with ligatures (calt, liga)
  • Cursor: Blinking bar (ported from iTerm2)
  • Shell integration: Auto-detected — enables semantic zones, prompt detection, sudo passthrough
  • Privacy: Crash reporting disabled

Keybindings (ported from iTerm2):

Shortcut Action
cmd+] / cmd+[ Next / previous tab
cmd+shift+← / cmd+shift+→ Split pane left / right
cmd+shift+↑ / cmd+shift+↓ Split pane up / down
cmd+w Close pane / tab
cmd+k cmd+z Toggle fullscreen (zen mode)
cmd+= / cmd+- Increase / decrease font size
cmd+0 Reset font size

Note: theme/iterm2-catppuccin.json is preserved in the repo for historical reference but is no longer used.

cmux

cmux is installed from the manaflow-ai/cmux Homebrew tap and configured from the repo-managed JSONC file in cmux/. Bootstrap also runs cmux themes set --dark "Catppuccin Mocha" so the dark theme is applied consistently. The workspace color picker is file-managed with Catppuccin Mocha colors matching the Ghostty palette used by cmux themes.

File Destination Purpose
cmux/cmux.json ~/.config/cmux/cmux.json App settings and configurable defaults

Obsidian Workflow

Obsidian is installed from Brewfile, but this repo does not automate its CLI setup or theme activation.

If you want Obsidian to match the Catppuccin theme used elsewhere, enable Obsidian's CLI yourself and then run:

Theme commands used:

obsidian theme:install name=Catppuccin
obsidian theme:set name=Catppuccin

Markdown Workflow

glow is installed from Brewfile and configured from glow/glow.yml with the Catppuccin Mocha Glamour style for paged terminal Markdown rendering.

Markdown functions (system/.functions):

  • md [file|url|repo] → render Markdown with Glow; with no argument it opens README.md when present, otherwise starts Glow's current-directory browser
  • mdf → fuzzy-pick a local Markdown file and preview it with Glow before rendering
  • mdrepo <owner/repo> → render a GitHub/GitLab README; shorthand like mdrepo charmbracelet/glow expands to github.com/charmbracelet/glow

This gives you a fast terminal path for local READMEs, generated docs, changelogs, and remote project docs without leaving the shell.

Supply Chain Inventory Workflow

bumblebee can scan the current project against the maintained threat-intel exposure catalogs bundled with the installed Go module.

Supply-chain functions (system/.functions):

  • bbscan [bumblebee scan flags...] → run a project-profile Bumblebee exposure scan against the current $PWD, writing timestamped findings and diagnostics NDJSON files in that directory

Set BUMBLEBEE_CATALOG_DIR to override the default catalog lookup path. When BUMBLEBEE_CATALOG_DIR points inside a git checkout, upall refreshes that checkout with git pull --ff-only.

tmux Workflow

tmux is configured for a keyboard-first, AI-session-friendly terminal workflow.

File Destination Purpose
tmux/.tmux.conf ~/.tmux.conf Session/window/pane behavior + statusline

Key choices:

  • Prefix: Ctrl+a
  • Split panes in current working directory
  • Pane movement with arrow keys
  • Fast pane resizing (Shift+Arrow)
  • Catppuccin-inspired statusline and borders
  • Copy mode with vim keys
  • AI helpers:
    • Ctrl+a M toggles quiet-window monitoring (monitor-silence) for the current window
    • Ctrl+a A renames the current window and enables a 15s quiet alert for AI sessions

Claude Teams fit:

  • Includes a quiet-window notification hook (alert-silence) for windows using monitor-silence.
  • Useful pattern per Claude window:
    • Ctrl+a A and name it claude-impl, claude-review, etc.
    • Or toggle it manually with Ctrl+a M
    • Shell equivalent: tmux setw monitor-silence 15

Recommended Claude layout:

  • One tmux session per project (tn <project>)
  • Window 1: editor/build/test loop
  • Window 2: claude-impl for implementation work
  • Window 3: claude-review for code review, debugging, or a second thread
  • Window 4: logs, watch mode, or git operations

Prefer separate windows over many panes for independent Claude threads so quiet notifications and window switching stay clean. Use panes when two terminals belong to the same task in the same directory.

tmux aliases:

  • tl → list sessions
  • ta <name> → attach session
  • tn <name> → create new named session

SSH Workflow

Use sshx instead of ssh for remote hosts that mis-handle Ghostty's default xterm-ghostty terminal type.

  • sshx user@host → run SSH with TERM=xterm-256color
  • sshx -p 2222 user@host → same behavior with explicit port/flags

This is mainly useful for older appliances and NAS shells that render broken line editing or arrow-key behavior over SSH.

Networking Workflow

This repo now includes a lightweight, practical network-debug toolkit for daily use.

Added tools (Brewfile):

  • doggo — modern DNS client (dig alternative)
  • mtr — traceroute + ping combined
  • iperf3 — throughput testing

Use your existing aliases for basics (ip, lip, ips, flushdns), and call modern tools directly (doggo, curl, tcpdump). (flushdns runs both dscacheutil and mDNSResponder refresh.)

Network functions (system/.functions):

  • dnstrace <domain> — DNS trace path
  • httptime <url> — DNS/connect/TLS/TTFB/total timing
  • listeners — compact open listener view
  • nclisten [port] / ncprobe <host> <port> — netcat helpers
  • pcap [iface] [file] [filter...] — capture packets to .pcap (for Wireshark/offline analysis)
  • sniffweb [iface] — quick live console view for web ports (80/443), no file output
  • netpath <host> — MTR report (20 cycles, quick path/latency snapshot)
  • netspeed <iperf3-server> [seconds] — iperf3 client run

This keeps the setup lean: mostly thin wrappers over proven tools, with sensible defaults.

Kubernetes Workflow

kubectl, k9s, and jq are installed from Brewfile; the shell adds a small Kubernetes shortcut set for common inspect, log, rollout, and context-switching work.

Kubernetes aliases (system/.aliases):

  • k -> kubectl
  • kgp / kgpa -> get pods in the current namespace / all namespaces
  • kd -> describe resources
  • klf / klp -> follow logs with a 1000-line tail / show previous container logs
  • kex -> interactive exec
  • ke -> cluster events
  • krs / krr -> rollout status / restart
  • kctx / kctxs / kuc / kns -> show context, list contexts, switch context, or set the current namespace

Kubernetes functions (system/.functions):

  • klogj <pod|resource/name> [kubectl logs flags...] -> follow logs through jq in less, pretty-printing JSON lines while leaving plain text untouched

Use KLOG_TAIL=200 klogj pod/my-pod -n my-namespace to override the default 1000-line tail for a single command. Inside less, press Ctrl-C to pause live follow mode, / to search, and Shift-F to resume following.

FZF Workflow

fzf is already installed via Brewfile; this repo now includes practical shell functions in system/.functions tailored for your setup (bat, rg, zed, git-heavy workflow).

Included functions:

  • ff → fuzzy-find file and open in Zed (fallback: $EDITOR)
  • fcd → fuzzy-find directory and cd into it
  • fbr → fuzzy-switch git branches (supports remote tracking branches)
  • frg [query] → fuzzy-select from rg results and jump to file+line
  • fkill → fuzzy-select running process and kill it
  • fwt → fuzzy-pick a git worktree from the current repo and cd into it
  • fwtr → fuzzy-pick a sibling git worktree and remove it with git wtr

These are designed for daily terminal usage with your current tooling stack and should work across your repos out of the box.

Git Worktree Workflow

The shell and git config now include a minimal worktree layer aimed at parallel agent sessions without adding much ceremony.

Git aliases:

  • git rh → hard reset the current branch to origin/<current-branch>
  • git wt → raw git worktree
  • git wtl → list worktrees
  • git wtp → prune stale worktree metadata
  • git wtr <path> → remove a worktree
  • git wtx → porcelain worktree listing for scripting
  • git bparent [base-ref] → print the parent commit of the oldest commit on the current branch not found in the given base
  • git onto [base-ref] → rebase the current branch onto origin/<base> using git bparent as the boundary

Shell helpers:

  • wtpath [name] → print the conventional path for the current repo under ~/worktrees/<repo>/<name>
  • wtnew <branch> [base] → create a new worktree at that path, print the exact branch/base/path used, and cd into it
  • fwt → fuzzy-pick any worktree from the current repo and cd into it
  • wtsesh → attach/create a tmux session named from the current repo and branch
  • fwtr → fuzzy-search removable worktrees from the current repo and pass the selected path to git wtr

Recommended flow:

  • From any repo root, run wtnew feature/my-task
  • Use fwt any time you want to jump between existing worktrees for that repo
  • Start or attach your worktree tmux session with wtsesh
  • Run your agent inside that session so each branch/worktree has isolated terminal context
  • If wtnew fails, it now prints whether the problem is missing git, missing repo context, or a rejected git worktree add
  • When the repo contains .mise.toml or mise.toml, wtnew also runs mise trust inside the new worktree

Three-feature routing example:

  • wtnew feat/auth-refresh
  • wtnew feat/billing-export
  • wtnew feat/mobile-nav
  • Run wtsesh inside each worktree and keep one Claude session per worktree
  • Treat each worktree as the local checkout for exactly one branch and PR

When feature work is done in a worktree:

  • Review and commit from inside that worktree:
git status
git add -A
git commit -m "Implement feature"
git push -u origin "$(git rev-parse --abbrev-ref HEAD)"
pr
  • The branch already exists at that point; the worktree is just the local directory attached to it
  • pr opens the existing PR or creates one for the current branch

After the PR is merged:

  • Leave the merged worktree and return to the main repo checkout
  • Remove the worktree, then delete the local branch
git wtl
git wtr ~/worktrees/<repo>/feat/auth-refresh
git branch -d feat/auth-refresh
git wtr ~/worktrees/<repo>/feat/billing-export
git branch -d feat/billing-export
git wtr ~/worktrees/<repo>/feat/mobile-nav
git branch -d feat/mobile-nav
git wtp
  • If you also want to delete merged remote branches manually:
git push origin --delete feat/auth-refresh
git push origin --delete feat/billing-export
git push origin --delete feat/mobile-nav

Use git wtl before cleanup so you can verify the exact worktree paths and avoid removing the wrong checkout. If you prefer an interactive cleanup flow, run fwtr from any checkout in the repo to fuzzy-pick a sibling worktree and remove it directly.

Pi Coding Agent Workflow

Pi is configured as the primary local-model coding agent, with defaults matched to this repo's Codex safety posture and local oMLX endpoint.

File Destination Purpose
pi/settings.json ~/.pi/agent/settings.json Default provider/model, compaction, UI, model cycling
pi/models.json ~/.pi/agent/models.json Local OpenAI-compatible model providers

Defaults configured:

  • Provider: local omlx
  • Endpoint: http://127.0.0.1:1234/v1
  • Model: gemma-4-e4b-it-MLX-4bit
  • Thinking level: medium
  • Compaction enabled with larger response reserve for coding tasks
  • Startup telemetry disabled; use PI_OFFLINE=1 or pi --offline to skip startup network checks

Local model setup:

  • Run omlxs before starting Pi
  • Pi reads OMLX_API_KEY for the local provider bearer token; system/.exports defaults it to omlx for fresh shells
  • Export OMLX_API_KEY in your local shell/private env if your oMLX server requires a different bearer token
  • SkillSpector defaults are exported from system/.exports to use http://127.0.0.1:1234/v1 with the local oMLX Gemma model, the skillspector shell wrapper passes OMLX_API_KEY as the OpenAI-compatible bearer token for that endpoint, and skillspector/model_registry.yaml caps the local model context for stable scans
  • Re-run ./bootstrap.sh to install the symlinked config

Usage:

  • pi → interactive coding session
  • pie "prompt" → non-interactive print mode
  • pic "prompt" → continue previous session
  • pir → pick a previous session to resume
  • piro -p "review src/" → read-only review mode with read/search/list tools
  • pimodels → inspect available configured models

Extension shortlist to evaluate:

  • pi-subagents for delegated/parallel agent work
  • pi-mcp-adapter to reuse MCP tooling where Pi is the daily driver
  • pi-lens for LSP/linter/type-check feedback inside Pi
  • @juicesharp/rpiv-todo for a persistent task overlay that survives compaction
  • pi-ask-user or @juicesharp/rpiv-ask-user-question for structured clarifying questions
  • pi-btw for side questions without polluting the main session

Install only after reviewing source:

pi install npm:pi-subagents
pi install npm:pi-mcp-adapter
pi install npm:pi-lens
pi install npm:@juicesharp/rpiv-todo
pi install npm:pi-ask-user
pi install npm:pi-btw

Security note: Pi extensions and packages run with full local permissions. Treat them like shell plugins or editor extensions, not inert prompts.

mini-SWE-agent Workflow

mini-SWE-agent is installed through the global mise config as pipx:mini-swe-agent and uses the same local oMLX Gemma endpoint as Pi.

Defaults configured:

  • Endpoint: http://127.0.0.1:1234/v1
  • Model: gemma-4-e4b-it-MLX-4bit
  • Config overlay: mini-swe-agent/omlx.yaml
  • Config discovery: MSWEA_CONFIG_DIR=$DOTFILES/mini-swe-agent
  • Cost tracking ignored for the local zero-cost model

Usage:

  • mni → interactive mini-SWE-agent session using upstream mini.yaml plus the oMLX overlay
  • mnie "prompt" → run a task non-interactively with the same local model config
  • mniyolo → start mini-SWE-agent in yolo mode with the same local model config
  • aiup → upgrades pipx:mini-swe-agent through mise along with the other AI coding tools

Run omlxs before starting mini-SWE-agent. Fresh shells replace the old OPENAI_API_KEY=omlx placeholder with the real OMLX_API_KEY, and the mini-SWE-agent aliases also pass OMLX_API_KEY as OPENAI_API_KEY for that command so LiteLLM authenticates against the local oMLX endpoint with the same bearer token Pi uses.

AI Diagnostics

Scripts under scripts/:

  • doctor-ai.sh → checks binaries, config presence, and env presence
  • bootstrap-verify.sh → validates expected post-bootstrap symlinks/files

Deterministic Checks (Pre-commit)

Optional pre-commit config is included in .pre-commit-config.yaml:

  • merge conflict checks
  • trailing whitespace / EOF hygiene
  • shellcheck
  • shfmt
  • gitleaks secret scanning on staged changes

Setup:

pre-commit install
pre-commit run --all-files

Mise Workflow

mise is now wired as an active part of this repo instead of just being installed.

File Destination Purpose
mise/config.toml ~/.config/mise/config.toml Global mise behavior/settings
mise.toml ~/dotfiles/mise.toml Project tools + tasks for dotfiles maintenance

Best-practice defaults applied (from official mise docs):

  • auto_install = true for smoother mise run / mise exec workflows
  • env_cache = true and env_cache_ttl = "2h" for faster repeated prompt/env resolution
  • color_theme = "catppuccin" to match terminal/editor theme choices
  • min_version soft floor in project config to reduce config drift

Project tools managed by mise:

  • shellcheck
  • shfmt

Project tasks:

  • mise run mise-install → install configured tools
  • mise run lint-shell → lint shell scripts
  • mise run fmt-shell → format shell scripts
  • mise run fmt-check → check formatting without writing
  • mise run check → full local validation pipeline
  • mise run bootstrap-verify → verify expected post-bootstrap links/files
  • mise run ai-doctor → verify AI toolchain binaries/config/env
  • mise run verify → run both AI doctor + bootstrap verification
  • mise run doctor → run mise diagnostics

Shell helpers:

  • ms / msi / msu / msr / msd

Note: mise activate zsh is intentionally loaded near the end of .zshrc so later PATH edits don’t override mise-managed tool versions.

Local Environment Conventions

  • Use .env.example as the reference for expected local AI environment variables.
  • Keep real values in untracked local files/shell env (for example .env.local or your shell profile).

Codex CLI Workflow

Codex CLI is configured for a secure, fast terminal-first AI coding flow.

File Destination Purpose
codex/config.toml ~/.codex/config.toml Default model, approvals/sandbox, search mode, feature toggles

Install Codex CLI:

brew install --cask codex
npm i -g @openai/codex  # cross-platform alternative

Key defaults in this repo:

  • model = "gpt-5.5"
  • approval_policy = "on-request"
  • sandbox_mode = "workspace-write"
  • web_search = "cached" (safer default than live web)
  • /review uses review_model = "gpt-5.3-codex"
  • Native TUI footer enabled for non-tmux use (model-with-reasoning, git-branch, project, context-window, five-hour)

Enabled quality-of-life features:

  • shell_snapshot (faster repeated command runs)
  • unified_exec (improved command execution path)
  • undo (safer edit iteration)
  • voice_transcription (hold Space to speak in supported Codex CLI builds)

TUI footer:

  • Use /statusline in Codex to interactively reorder or trim footer items.
  • The repo default shows model/reasoning, git branch, project, context-window usage, and the 5-hour usage meter.

Zsh shortcuts:

  • cxcodex
  • cxecodex exec
  • cxrcodex resume --last
  • cxreview → start Codex with /review
  • cxup → upgrade Codex CLI (uses Homebrew cask when Codex was installed with brew; otherwise npm)

Security note: This setup intentionally avoids danger-full-access / --yolo defaults, and sandbox_mode = "workspace-write" prevents destructive commands like rm -rf ~/ from writing outside the workspace.

Claude Code Workflow

Claude Code is configured for a reliable daily-driver workflow that can coexist with Codex.

File Destination Purpose
claude/settings.json ~/.claude/settings.json Update channel and attribution preferences

Install Claude Code CLI:

brew install --cask claude-code
# or native installer (recommended by Anthropic):
curl -fsSL https://claude.ai/install.sh | bash

Key defaults in this repo:

  • $schema enabled for editor validation/autocomplete
  • autoUpdatesChannel = "stable" to reduce surprise regressions
  • cleanupPeriodDays = 30 to avoid keeping transcripts indefinitely
  • respectGitignore = true to keep ignored/private files out of file suggestions
  • permissions.disableBypassPermissionsMode = "disable" to block bypass mode
  • permissions.ask prompts on high-risk network/sensitive reads (git push, curl, wget, .env, ./secrets/**)
  • permissions.deny blocks obviously dangerous shell patterns (sudo *, rm -rf /, rm -rf ~/)
  • attribution.commit / attribution.pr are blanked to avoid automatic AI bylines in commits/PRs

Zsh shortcuts:

  • ccclaude
  • cceclaude -p
  • ccrclaude --continue
  • ccreview → start Claude with /review
  • ccyoloclaude --dangerously-skip-permissions
  • ccdoctorclaude doctor
  • ccupdate → upgrade Claude Code (brew cask if installed via Homebrew, otherwise claude update)

Workflow note: Codex and Claude configs are independent (~/.codex/ and ~/.claude/), so switching between them is frictionless.

Agy CLI Workflow

Agy is wired into the zsh shortcut set with aliases that mirror the Codex and Claude Code patterns where the CLI exposes matching flags.

Zsh shortcuts:

  • agyeagy -p
  • agyragy --continue
  • agyreview → start Agy with /review
  • agyyoloagy --dangerously-skip-permissions

Zed Editor

Zed is configured as the primary editor. Config files live in zed/ and are symlinked to ~/.config/zed/ by bootstrap.sh.

File Destination Purpose
zed/settings.json ~/.config/zed/settings.json Editor settings, theme, formatting
zed/keymap.json ~/.config/zed/keymap.json Custom keybindings

Key settings:

  • Theme: Catppuccin Mocha (dark) / Catppuccin Latte (light), follows system appearance
  • Font: Fira Code 13px with ligatures
  • Formatting: Prettier on save for JS/TS/TSX/JSON/HTML/Markdown
  • Extensions: Auto-installed on first launch (Catppuccin, Prettier, ESLint, Dockerfile, etc.)
  • Telemetry: Disabled

Keybindings:

Shortcut Action
cmd+] / cmd+[ Next / previous terminal pane
cmd+d New terminal
cmd+w Close active item
cmd+k cmd+z Toggle centered layout (zen mode)

About

My personal defaults for macOS, forked from https://mths.be/dotfiles

Resources

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages

  • Shell 64.9%
  • Python 22.4%
  • Vim Script 10.6%
  • Ruby 2.1%