This is a collection of configuration files for the tools that I like to use during software development: Neovim, Tmux (not so much anymore due to Neovide and my homegrown session management), Alacritty.
This project uses GNU Stow to create symlinks from this repository to your $HOME directory.
NOTE:
- This script will ask for sudo permissions, which are then used for brew and apt (if applicable) installs
- This script will create symlinks to ~/.zshrc, ~/.config/nvim and ~/.config/tmux, see GNU Stow for how conflicts will be handled
git clone https://github.com/WizardStark/dotfiles.git
cd dotfiles
./setup.shUse ./sync.sh after changing dotfiles-managed scripts or adding dependencies.
That includes newly added CLI dependencies such as worktrunk: keep them in the
repo-managed install sources (Brewfile or scripts/manifest.tsv) so setup.sh
and sync.sh bootstrap them automatically.
Pi is part of that reproducible setup:
- the Pi CLI is installed from
scripts/manifest.tsv - repo-local Pi extensions live under
home/.pi/agent/extensions/ - public Pi packages/extensions are declared in
home/.pi/agent/settings.jsonand./sync.shinstalls any missing entries viapi install - the repo-local Pi extensions include an
edittool override so edit diffs keep the customized full-width, syntax-highlighted TUI rendering without patching Pi’s installed files <C-a> <C-o>opens the session-grouped Pi notification inbox in a tmux popup. Usej/kto move,Enterto expand a session or open a historical notification,oto open,rto mark through the selection read,Rto mark the session read,Tabto change views,ato toggle the default seven-day window/all-time history, and/to search. Notifications show the session/directory and submitted Pi task; the durable log is~/.pi/agent/notifications.jsonl.
./sync.sh./sync.sh applies changes by default; use --check for verification only.
If Homebrew/Linuxbrew is missing or not executable on the current host, ./sync.sh
now skips Brewfile-managed install/check steps and continues with the rest of the
repo-managed sync work on a best-effort basis.
Useful variants:
./sync.sh --check # verify Brewfile, extra tools, Pi packages, and stow state
./sync.sh --check --verbose
./sync.sh --with-sudo # also update login shell with sudo-backed chshSetup script variants depending on machine state:
./setup.sh # new machine bootstrap
./setup.sh --post-brew # brew already installed
./setup.sh --post-brew --no-sudohome/.pi/agent/skills/grill-me/SKILL.md provides an opt-in design interview:
/skill:grill-me Build a notification preferences UI
The agent inspects relevant repository facts, asks focused rounds of questions, challenges assumptions, and follows consequential branches through scope, UX, interfaces, data, failure modes, security, operations, and validation. It keeps a working decision ledger and produces an implementation brief for your approval. No implementation changes happen before you explicitly approve the final brief. You can ask for interview-only output, shorten the interview, or stop at any time.
The skill is explicit-only, so ordinary implementation requests are unaffected.
The stow-managed skills directory makes it available in Pi; run /reload in an
existing session after adding or editing it. This is an instruction-based workflow,
not a tool-level enforcement mechanism.
Run PI_OFFLINE=1 JITI_FS_CACHE=0 node --test tests/pi-grill-me-skill.test.mjs
to check native Pi discovery, metadata, and exclusion from automatic invocation.
The GPT-6 models in home/.pi/agent/settings.json compact when context exceeds
272,000 tokens. Pi uses contextTokens > contextWindow - reserveTokens, so each
exact model ID needs its own override calculated from its catalog context window:
- GPT-6 Astra/Sol/Luna:
1,000,000 - 728,000 = 272,000. - GPT-6.1 Sol:
1,050,000 - 778,000 = 272,000.
The global 27,200-token reserve and 20,000 recent-token retention remain unchanged.
Reserve tokens also influence summarization output limits, capped by the model's
maximum output. After editing settings, run /reload in Pi.
Run PI_OFFLINE=1 JITI_FS_CACHE=0 node --test tests/pi-compaction-settings.test.mjs
to verify native settings resolution and the checkpoint boundaries against the
installed offline catalog. Run it after model/catalog upgrades or adding an enabled
GPT-6 ID; a changed context window must not silently shift the checkpoint.
The repo now uses a hybrid approach:
- Homebrew still installs system packages from
Brewfile stowstill manages the dotfiles underhome/miseruns the repo tasks declared inmise.tomlscripts/manifest.tsvtracks the non-brew extras managed by the sync flow
Common task entrypoints:
mise run bootstrap # new machine after setup.sh bootstraps mise itself
mise run sync # sync an existing machine
mise run sync-sudo # sync and update login shell with sudo
mise run sync-adopt # sync and let stow adopt existing unmanaged files
mise run sync-adopt-sudo
mise run check # verify current machine stateThe most important keybinds are <space><space> in Neovim for the command palette,
wherein you can fuzzy find your way through most available commands, and <C-a>? for
a list of tmux binds - this is much less nice to use as I have not found a way to add
descriptions, but the commands are pretty self explanatory.
The tmux config is set up to use OSC 52 clipboard sync so tmux -> ssh -> tmux
copy operations update the local machine clipboard through the outer tmux client.
Requirements:
- tmux 3.6 or newer on both the local and remote machine
- a terminal that supports OSC 52 clipboard writes and clipboard reads; this is
what tmux uses for
set-clipboard,refresh-client -l, and nested passthrough - reload tmux or reattach clients after updating the config so the terminal feature detection is refreshed
Useful tmux clipboard actions:
- copy from copy-mode updates the local clipboard through OSC 52
<C-a> yrequests the current terminal clipboard and stores it in a new tmux paste buffer
To prevent the Hyper key in windows opening copilot, run the following reg-edit command:
REG ADD HKCU\Software\Classes\ms-officeapp\Shell\Open\Command /t REG_SZ /d rundll32