Personal dotfiles for macOS, with Ubuntu 24.x/Linuxbrew support for the shell, tmux, Herdr, and agent-tooling setup.
git clone https://github.com/mikeastock/dotfiles.git ~/code/personal/dotfiles
cd ~/code/personal/dotfiles
make dot-allInstall Homebrew/Linuxbrew first, then:
git clone https://github.com/mikeastock/dotfiles.git ~/code/personal/dotfiles
cd ~/code/personal/dotfiles
make dot-allmake dot-all skips macOS-only defaults on Linux.
This repo also contains reusable skills, prompt templates, and extensions for Amp, Claude Code, and Pi Coding Agent.
- Python 3.11+
- Git
- Homebrew or Linuxbrew for
make dot-install
make install # install agent skills/prompts/themes/extensions and Amp plugins
make install-tools # install pinned external agent tools such as dcg
make install-skills
make install-amp-plugins
make install-prompts
make install-themes
make install-extensions
make install-configs
make build # build agent artifacts only
make clean # clean agent build/install artifacts
make plugin-update # update plugin submodulesExternal native tools are pinned under [external_tools] in plugins.toml. They are installed into ~/.local/bin without allowing upstream installers to modify agent settings; this repository owns those settings through make install-configs. The full make install workflow installs tools before configs.
Personal Amp plugins live in amp-plugins/*.ts. make install-amp-plugins copies them into ~/.config/amp/plugins/. This repo also includes a local TypeScript declaration refresh so plugin files can import PluginAPI from @ampcode/plugin without publishing or installing a separate package.
make amp-plugin-types # generate types/ampcode-plugin.d.ts from this Amp CLI
make amp-plugin-check # refresh plugin types and run TypeScript
make install-amp-plugins # copy amp-plugins/*.ts into ~/.config/amp/plugins/After changing a plugin, rerun make install-amp-plugins, then run plugins: reload from Amp's command palette or restart Amp. See amp-plugins/README.md for the plugin development loop and example.
Amp settings live in amp-configs/settings.json. make install-configs merges those managed settings into ~/.config/amp/settings.json while preserving any other local Amp settings already present.
make install preserves manually installed skills, Amp plugins, Pi extensions, prompts, subagents, and themes that live beside dotfiles-managed artifacts. The installer tracks top-level managed names in ~/.local/state/dotfiles/agent-install-manifest.json, overwrites those managed artifacts on each install, and removes managed artifacts that are no longer built. If a built artifact conflicts with an existing unmanaged path, the install fails; rerun the underlying build script with --force only when you want dotfiles to claim that path.
Plugin skills can be restricted to explicit user invocation with skills_user_invocable_only in plugins.toml. The build emits disable-model-invocation: true for Claude and Pi, plus policy.allow_implicit_invocation: false in agents/openai.yaml for Codex. The Codex metadata is included in the Pi/shared build because Codex also scans ~/.agents/skills.
pi-install
pi- Canonical Pi tool:
npm:@earendil-works/pi-coding-agent@latestin global mise config pi-installinstalls or updates Pi through mise, runsmake install-configs, and appliespi-configs/pi-patch/to the mise-managed package rootpiis provided by mise after installation/reshim
brainstorming,writing-plans,executing-plans,requesting-code-review,receiving-code-review, andfetch-ci-build— vendored superpower skills frombuildrtech/dotagents; the three planning skills are temporarily excluded from installationbabysit-pr— GitHub PR monitoring/babysitting workflow imported fromopenai/codexcommit7e569f1editorial-sketches— editorial article illustration skill vendored fromhelloianneo/ian-xiaohei-illustrationscommit91b5608oracle— @steipete/oracle CLI workflow for second-model reviews with selected repo contextfable-review— trusted Claude Fable code review workflow usingclaude -p --model claude-fable-5grok-review— safe Grok Build review workflow delegating branch and explicit dirty-tree reviews to Grok's native/reviewskillwriting-mike-ruby-style— Mike's personal Ruby/Rails style (mirrors his canonical style rules)effect-ts— repository-first Effect v4 implementation, review, debugging, and source researchprepare-branch-context— read-only branch diff, commit, and PR context gathering skill vendored fromjnsahaj/skillszmx— guidance for managing persistent background terminal worktmux— remote control tmux sessions through the active server, with an agent-neutral fallback socket when no server is runningbuildr-artifacts— publish browser-viewable Buildr artifacts as static S3-hosted HTML/assets or stateful Vite apps served from Codexbox withbld.runURLs
shaping,breadboarding, andbreadboard-reflection— explicit-only product shaping and breadboard workflows fromrjs/shaping-skillsprototype,grill-with-docs,teach, andwriting-great-skills— workflow and teaching skills frommattpocock/skillsimprove— codebase audit and self-contained implementation planning skill fromshadcn/improveimpeccable— frontend design, critique, polish, and live iteration skill frompbakaus/impeccablethermo-nuclear-code-review— strict structural and architectural code review skill fromintercom/2x-skills
/bdev-qa- run Buildrbdev qa, diagnose failures, and optionally post results to a PR/commit- create a focused Conventional Commit from task-related changes/merge-main- merge the latest base branch into the current branch with conflict and verification guardrails/open-pr- push the current branch and open a PR with summary and verification/pr-comments- fetch PR review comments and evaluate them before changing code/review-loop- run a parent-orchestrated adversarial review loop
architecture-reviewer— reviews designs and plans for ownership, boundaries, invariants, failure modes, compatibility paths, and architecture-level tests before implementation
buildr-artifacts— installed frombuildrtech/dotagents; providesshare_artifactand/share_artifactfor publishing local HTML artifacts to Buildr artifact storageopenai-fast— installed frombuildrtech/dotagents; provides a/fasttoggle that applies OpenAIservice_tier=priorityfor configured modelspi-prompt-shelf— local copy oftanishqkancharla/pi-prompt-shelf; shelves editor prompts per session with shortcuts and/shelfpi-codex-conversion— local copy ofIgorWarzocha/pi-codex-conversion; adds Codex-style tools and prompt adaptation for OpenAI/Codex models in Pifull-read-for-paths— upgrades partialreadcalls to full reads for configured resource-file pathsrevdiff— adds/revdiffto launch the revdiff TUI and send captured annotations back to Pimac-system-theme— syncs Pi to macOS dark/light appearance locally, or to a remote override pushed withpi-theme-push/pi-theme-watchfor SSH/mosh/tmux sessions
dotfiles/
├── .config/ # shell/editor/terminal configs
├── skills/ # custom agent skills
├── amp-configs/ # managed Amp settings
├── amp-plugins/ # custom Amp plugins
├── subagents/ # custom Pi subagents
├── pi-extensions/ # Pi extensions
├── pi-themes/ # Pi themes
├── prompts/ # Pi prompt templates
├── plugins/ # plugin submodules
├── scripts/build.py # agent build/install system
├── tests/ # agent tooling tests
└── Makefile # dotfiles + agent commands
Recommended apt packages before or after make dot-all:
sudo apt update
sudo apt install -y fish tmux ripgrep fd-find xclip wl-clipboard xsel fonts-firacode- Linux clipboard integration in tmux uses the first available tool from:
wl-copy,xclip,xsel - Herdr config is symlinked to
~/.config/herdr/config.tomland uses tmux-likeCtrl-aprefix bindings tmux-mem-cpu-loadis optional; the tmux status bar falls back touptime- Install the configured fonts (
Fira Code/FiraCode Nerd Font) if you want terminal rendering to match macOS - If you prefer one package manager across macOS and Linux, install Homebrew/Linuxbrew and use
make dot-install
When Pi runs on an Ubuntu server through SSH/mosh/tmux, the server cannot query macOS appearance directly. From the Mac, install dark-notify and run:
brew install cormacrelf/tap/dark-notify
pi-theme-watch user@serverpi-theme-watch pushes dark/light changes over SSH to ~/.pi/agent/theme-sync-override.json; the mac-system-theme Pi extension reads that file and applies the matching Catppuccin theme.
If having issues with VIM and paths in macOS:
sudo mv /etc/zshenv /etc/zprofileSee: http://stackoverflow.com/questions/13708719/vim-path-configuration-in-os-x