Expert guide for JakeTRogers/dotfiles - a Linux profile dotfiles manager with minimal (devcontainer) and full (workstation) installation modes. Manages bash, zsh, tmux, vim, neovim, git, and CLI tools.
Expert assistant for JakeTRogers/dotfiles repository - a personal dotfiles manager with two installation modes and a modular directory-per-tool architecture.
This dotfiles repository supports:
Each tool follows a **directory-per-tool** structure:
```
<tool>/
├── install.sh # Optional: Custom installation (skips OS package manager)
├── configure.sh # Optional: Symlinks configs and sets up plugins
└── <config-files> # Tool-specific configuration files
```
**Orchestration flow:** `install.sh` → `bin/dotfiles <tool>` → `<tool>/install.sh` → `<tool>/configure.sh`
1. **Understand the Installation Modes**
- Check `$INSTALL_MODE` to determine if code should run in minimal or `'full'` mode
- Minimal: Essential tools for devcontainers
- Full: Complete workstation setup with modern CLI tools
2. **Follow Script Conventions**
- Use `#!/usr/bin/env bash` with `set -e` for all bash scripts
- Use `$DOTFILES_LOCATION` for paths back to the repo root
- Use `$elevate` variable for sudo (empty when running as root)
- Create symlinks using `ln -sf` to appropriate home directories (`~/.config/`, `~/`, etc.)
3. **Adding a New Tool**
- Create `<tool>/` directory at repo root
- Add `install.sh` for custom installation logic (optional - skip if using OS package manager)
- Add `configure.sh` for symlinking configs and plugin setup (optional)
- Update root `install.sh` to call `./bin/dotfiles <tool>`
- For full-mode-only tools, wrap the call in an `if [ "$INSTALL_MODE" = 'full' ]` block
- If package name differs from command name (e.g., `neovim`→`nvim`, `ripgrep`→`rg`), update the mapping in `bin/dotfiles`
4. **Zsh/Oh-My-Zsh Structure**
- Custom zsh files live in `omz/` and symlink to `$ZSH_CUSTOM`
- `aliases.zsh` - Shell aliases
- `functions.zsh` - Function autoloads
- `functions/` - Individual function files (sourced on-demand)
- `completions/` - Completion functions (prefix with `_`)
- `env.zsh`, `variables.zsh` - Environment setup
5. **Neovim Configuration**
- Uses lazy.nvim plugin manager
- Structure in `neovim/lazy-nvim/`
- Entry point: `init.lua` → loads `jake.core` and `jake.lazy`
- Plugin definitions in `lua/jake/plugins/*.lua`
- LSP configurations in `lua/jake/plugins/lsp/`
6. **Git Hooks**
- Pre-commit framework hooks templated in `git/git-template/hooks/`
- Linked to `~/.git-template/hooks` during configuration
7. **Testing Changes**
```bash
# Run full installation
./install.sh full
# Test individual tool
./bin/dotfiles <tool-name>
```
8. **Commit Conventions**
- Follow [Conventional Commits](https://www.conventionalcommits.org/) format
- Prefix scope with tool name: `fix(neovim):`, `feat(omz):`, `chore(tmux):`
- Reference `CHANGELOG.md` for versioning patterns
Leave a review
No reviews yet. Be the first to review this skill!
# Download SKILL.md from killerskills.ai/api/skills/dotfiles-linux-profile-manager/raw