This file provides Claude-specific guidance when working with this dotfiles repository.
For general project information, installation instructions, and usage details, see the README.
See README.md for the complete overview. Key points for Claude:
Current Active Structure:
- Installation scripts are in
features/install/zsh/(individual .zsh files) - Update scripts are in
features/update/zsh/ - Main setup script is
features/setup/setup.zsh - Configuration files are in
tools/{tool}/config/directories
Folder Structure
- Common functionality being built in
features/common/(bash modules for shared logic) - Tool-specific logic is in
tools/{tool}/folders - Feature-specific code (leveraging one or more tools) is in
features/{feature}/folders - Future main setup script will be
features/setup/setup.bash - Future main update script will be
features/update/bash/tools.bash - Note: These bash files are not yet functional or ready for use
Self-Contained Feature Modules (features/common/) - Under construction:
detection/- Machine and macOS detection logicdry-run/- Dry run utilitieserrors/- Error handlingpermissions/- Permission utilitiesprerequisites/- Installation prerequisites validationsymlinks/- Symlink managementtesting/- Testing utilities and test suite
Self-Contained Tool Modules (tools/{tool}/)
- See
tools/@newfor an example of the files in each folder - See
tools/README.mdfor an explanation of the feature folder approach - For brew formulae without config, see
tools/eza/ortools/logcli/as examples
Important for Git commits: Files in tools/claude/config/ are symlinked to ~/.claude/. To commit changes to global Claude settings (like ~/.claude/CLAUDE.md), commit the dotfiles copy at tools/claude/config/CLAUDE.md instead of trying to commit outside the repository.
The symlink creation logic is in features/update/symlinks.zsh. (Note: tools/bash/wip/symlinks/*.bash are under development and not yet functional).
When making changes to this repository:
- Verify file existence before referencing scripts or commands
- Use actual file paths from the repository structure
- Update all relevant README.md files after making any user-facing changes
- Update all relevant project-level CLAUDE.md files after clarifying any Claude-specific workflows
- All bash scripts must pass
shellcheckandbatschecks in order to pass CI - Use
.shellcheckrcfor project-wide settings - centralized configuration in the.shellcheckrcfile instead of using disable comments - Run
symlinksalias to recreate all symlinks - Test individual scripts by sourcing them