| name | dotfiles-init-update |
| description | Initialize or refresh zish dotfiles and AstroNvim, including relinking home configs and ensuring TPM is installed. |
Dotfiles Init Update
Bootstrap and refresh zish local shell/editor/tmux config from the personal dotfiles repo and the personal AstroNvim repo. Prefer the bundled script for any repo, backup, or symlink change so behavior stays consistent and reviewable.
Workflow
- Read
references/environment.md for the canonical repo paths, remotes, and managed links.
- Inspect the current state before changing anything:
git -C ~/GitHubRepos/dotfiles status -sb when the repo exists
git -C ~/GitHubRepos/zish-rob-crur/AstroNvim status -sb when the repo exists
readlink ~/.config/nvim
test -d ~/.tmux/plugins/tpm
- Choose a mode:
init when one or both repos are missing, a managed symlink is missing, or the machine has not been bootstrapped yet.
update when the repos already exist and the goal is to pull the latest changes, refresh submodules, and re-assert links.
- Dry-run first:
scripts/bootstrap_dotfiles.sh --mode init --dry-run
scripts/bootstrap_dotfiles.sh --mode update --dry-run
- If the dry-run plan matches the request, rerun without
--dry-run.
- Validate after execution:
readlink ~/.config/nvim
readlink ~/.tmux.conf
readlink ~/.zshrc
test -d ~/.tmux/plugins/tpm
test -x ~/GitHubRepos/dotfiles/tmux/assistant-launcher.sh
test -x ~/GitHubRepos/dotfiles/tmux/restart-assistant-panes.py
tmux source-file -n ~/.tmux.conf when tmux is available
readlink ~/.config/ghostty/config on macOS
- Report any skipped repo updates. The script intentionally refuses to
pull --ff-only on dirty repos.
Behavior Rules
- Treat
~/GitHubRepos/zish-rob-crur/AstroNvim as the default Neovim target.
- Do not use the dotfiles repo's legacy
dotfiles/nvim link path for this skill.
- Do not delete
~/.local/share/nvim, ~/.local/state/nvim, or other Neovim caches unless the user explicitly asks for a clean reset.
- Backup conflicting files and directories by renaming them with a timestamp suffix before creating a managed symlink.
- Keep personal/project skills in
dotfiles/.agents/skills.
- Treat
<prefix> + M-a as the managed tmux shortcut for launching temporary Codex/Claude popup sessions and background tasks.
- Treat
<prefix> + A as the managed tmux shortcut for restarting saved Codex/Claude Code panes after account or environment changes.
- Stop if an expected repo path already exists but is not a git repository. Do not overwrite unknown directories.
- For package-manager work such as
brew install or apt install, prefer the repo's existing platform bootstrap scripts only when the user explicitly wants package installation. This skill's bundled script focuses on repo sync, symlinks, TPM, Ghostty, and AstroNvim.
Script Entry Point
Use scripts/bootstrap_dotfiles.sh.
Common commands:
scripts/bootstrap_dotfiles.sh --mode init --dry-run
scripts/bootstrap_dotfiles.sh --mode init
scripts/bootstrap_dotfiles.sh --mode update --dry-run
scripts/bootstrap_dotfiles.sh --mode update
Useful overrides:
scripts/bootstrap_dotfiles.sh \
--mode init \
--dotfiles-repo "$HOME/GitHubRepos/dotfiles" \
--astro-repo "$HOME/GitHubRepos/zish-rob-crur/AstroNvim"
The script also honors DOTFILES_REPO, DOTFILES_REMOTE, ASTRO_REPO, ASTRO_REMOTE, and TPM_DIR.
Resources
scripts/bootstrap_dotfiles.sh: Idempotent init/update orchestration with timestamped backups and dry-run support.
references/environment.md: Canonical paths, remotes, managed links, and platform notes.