Compact Zsh setup that wires in
Antidote for plugins and
Starship as the prompt. Everything is driven by a single
zshrc.sh so you can drop it into any machine quickly.
-
Clone the repo (defaults to
~/.zdotfiles):git clone git@github.com:jcyamacho/zdotfiles.git "$HOME/.zdotfiles" -
Source the main file from your
~/.zshrc:source "${ZDOTFILES_DIR:-$HOME/.zdotfiles}/zshrc.sh"
- Keep the repo elsewhere by setting
ZDOTFILES_DIRbefore sourcing. - Change the editor used by helper commands by exporting
EDITOR. - Adjust where self-managed tools install by overriding
CUSTOM_TOOLS_DIR. - Set
GIT_WORKTREE_BASEto change wheregwt-newcreates worktrees (see git-worktree).
Starship is the required prompt and installs automatically on first load. Set
STARSHIP_CONFIG before sourcing zshrc.sh to override the default
~/.config/starship.toml.
update-starshipupdates Starship and reloads the shell.starship-configedits the active configuration and reloads the shell.starship-preset-customapplies the customstarship.toml.starship-preset-nerd-fonts,starship-preset-no-nerd-font, andstarship-preset-plain-textapply built-in Starship presets.
By default, zsh-you-should-use reminds you when you type a command that has an alias. To disable these suggestions:
# In ~/.zshrc, before the source line:
export ZSH_DISABLE_YOU_SHOULD_USE=1
source "${ZDOTFILES_DIR:-$HOME/.zdotfiles}/zshrc.sh"Antidote reads .zsh_plugins.txt and builds a static .zsh_plugins.zsh. The default setup enables:
- Always-on shell UX: prompt theme (see above),
zsh-autosuggestions, syntax highlighting (F-Sy-H), and “you-should-use”. - Local plugin helpers: small
plugins/*scripts that addinstall-*,update-*,uninstall-*, and*-confighelpers.
Many integrations are conditional (they only activate when the underlying binary exists) to keep startup fast and avoid errors.
These are the install-* helpers (run the command to install; integrations load on reload/next shell start). Tools are grouped by how useful they are for the default shell experience.
Run install-recommended to install every missing tool in this group.
install-fzf– fzf fuzzy finder (enablesfzf-tabif present)install-zoxide(orinstall-z) – zoxide smartercdinstall-atuin– Atuin synced, searchable historyinstall-carapace– Carapace completionsinstall-jq– jqinstall-yazi– yazi terminal file manager (Ctrl+o, andyto cd on exit)
install-aspire- Aspire CLI for distributed appsinstall-bat– batcatcloneinstall-btop- btop resource monitorinstall-bun– Bun runtimeinstall-claude-code– Claude Code CLIinstall-code– VS Codeinstall-codex– OpenAI Codex CLIinstall-cmux– cmux native macOS terminal for AI agentsinstall-cursor– Cursorinstall-deno– Deno runtimeinstall-direnv– direnv + hookinstall-docker– Docker CLIinstall-dotnet- .NET SDK developer platform (dotnet)install-dotenvx– dotenvx a secure dotenvinstall-varlock– varlock AI-safe .env filesinstall-fabric– Fabricinstall-flutter– Flutter SDKinstall-fnm(orinstall-node) – fnm + LTS activationinstall-gemini– Gemini CLIinstall-ghostty– Ghostty terminal + config restoreinstall-wezterm– WezTerm terminal + config restoreinstall-gh– GitHub CLIinstall-go– Go + golangci-lintinstall-herdr- Herdr agent multiplexer that lives in your terminalinstall-just– just command runnerinstall-lsd– lsd + config/themeinstall-memo- memo durable memory CLI; includes Claude and Codexmemo contexthook helpersinstall-mise– miseinstall-nub- Nub all-in-one toolkit for Node.jsinstall-ollama– Ollamainstall-openspec– OpenSpec workflow CLI (openspec)install-opencode– OpenCodeinstall-orbstack- OrbStack Docker Desktop alternativeinstall-pi- Pi minimal terminal coding harnessinstall-television– Television fuzzy finder; bindsCtrl+Tto channel-aware completion (Ctrl+Rgoes to Atuin when present). Also installsfdandbat, which its channels shell out toinstall-rbenv(orinstall-ruby) – rbenvinstall-rust– rustupinstall-uv(orinstall-python) – uv + Python tooling (python)install-viteplus– Vite+ unified web toolchaininstall-worktrunk– Worktrunk git worktree managementinstall-zed– Zedinstall-zsh-bench– zsh-bench benchmark for interactive zshinstall-zellij– Zellij terminal workspace (zellij)install-zig– Ziginstall-antigravity– Antigravityinstall-agent-browser– agent-browser browser automation CLIinstall-fonts– Homebrew font casks
Additional helper functions (no external tool required):
- git –
g,gaa,gf,gcb,gcmsg,gc!,ggl,ggpshorthands plusgit-pull-allandgit-hook - git-worktree –
gwt-*helpers for managing Git worktrees
Shell helpers from _utils.zsh:
mkcd <dir>– create a directory and cd into itedit <file>– open a file in$EDITOR(defaults to vim)home– cd to$HOMEzsh-config– edit~/.zshrcand reloadkill-port <port>– kill the process listening on a given portzdotfiles-cache-clean– remove all zdotfiles caches and reloadcls– alias forclearrmf– alias forrm -rfcd..– alias forcd ..
Sync files and directories to/from private GitHub Gists. See github-cli for details on save-file-to-gist, load-file-from-gist, and related functions.
reload– reload the configuration.update-zdotfiles– pull the latest repo changes and reload.update-antidote– update Antidote and reload.update-all– run all registered updaters and reload.
update-all iterates over the updates array and calls each registered function. Plugins register their updaters like this:
_update_mytool() {
info "Updating mytool..."
# update logic here
}
updates+=(_update_mytool)Use an internal _update_* function (no reload) so update-all can batch updates and reload once at the end. Tools installed via Homebrew don't need individual updaters since update-brew runs brew upgrade --greedy.
- Benchmark before/after changes with
zsh-startup-bench. - Use
zsh-startup-profilefor a quick zprof-enabled timing run. - Quick sanity check without launching an interactive shell:
zsh -lic exit.