My dotfiles. They've gone through many ups and downs over the years, but at the moment they're:
- text and terminal centric (hx, zellij, yazi)
- cross-platform (macOS and linux)
- designed to work just as well over ssh as run locally
Where I've taken anything from the web I've tried to give credit appropriate to the licence. If I've missed giving you a shout out, then let me know and I'll gladly add one in.
Bootstrap a new machine with:
curl -fsSL https://raw.githubusercontent.com/benswift/.dotfiles/main/install.sh | bashThis installs Homebrew and mise, clones the repo, creates symlinks, and installs mise-managed tools.
If you prefer to set things up manually:
git clone https://github.com/benswift/.dotfiles.git ~/.dotfiles
~/.dotfiles/create_symlinks.shCheck that everything is set up correctly:
dotfiles doctorWorks on macOS (Apple Silicon) and Linux. The setup is zsh-only and mise-first for tool management, using Homebrew on macOS and native package managers on Linux.
This repo provides provider-agnostic configuration for multiple AI coding agents, allowing them to share the same instruction files:
- Global instructions:
GLOBAL-AGENTS.mdcontains instructions used across all projects - Project instructions:
AGENTS.mdcontains project-specific instructions (checked into each project's repo)
- Claude Code: Symlinks
GLOBAL-AGENTS.md→~/.claude/CLAUDE.mdandAGENTS.md→CLAUDE.md(gitignored) - Codex CLI: Symlinks
GLOBAL-AGENTS.md→~/.codex/instructions.mdandAGENTS.md→codex.md(gitignored) - Gemini CLI: Configured via
~/.gemini/settings.jsonto readAGENTS.mddirectly (no symlinks needed)
The create_symlinks.sh script sets up all necessary symlinks and directories.
My personal Claude Code skills library (pkb, benswift-writer, github-explorer,
etc.) lives in a separate private repo,
benswift/claude-plugin-personal,
loaded as a Claude Code plugin. The setup:
- Registered via
install.sh/dotfiles updateusingclaude plugin marketplace add benswift/claude-plugin-personalandclaude plugin install --scope user ben@ben, then enabled inclaude/settings.jsonviaenabledPlugins: {"ben@ben": true}--- portable across machines, no hardcoded paths. - Claude Code clones it to
~/.claude/plugins/marketplaces/ben/on first use. That directory is the single source of truth --- edit skills there, commit and push from there. - Codex reads from the same directory via a
~/.codex/skillssymlink (set up byinstall.shanddotfiles updatesince the target doesn't exist until Claude Code has cloned the marketplace). - Skills appear to the model as
ben:<skill-name>(e.g.ben:github-explorer).
To propagate changes across machines: push from the marketplace clone, then run
dotfiles update elsewhere (which runs
claude plugin update --scope user ben@ben). Requires SSH auth to GitHub (the
repo is private).
The Usage Rules package is excellent for
injecting project-specific rules into your AGENTS.md file:
mix usage_rules.sync AGENTS.md --all --inline usage_rules:all --link-to-folder deps --link-style at --remove-missingAll email-related configuration has been organized into the mail/ directory.
This includes configurations for mbsync (IMAP sync), msmtp (SMTP), neomutt
(email client), and OAuth2 authentication scripts.
For detailed setup instructions, see mail/README.md.
(c) 2012-2025 Ben Swift
MIT License