npx skills add https://github.com/dmmulroy/.dotfiles --skill frontend-designInstall this skill with the CLI and start using the SKILL.md workflow in your workspace.
A comprehensive, automated dotfiles management system for macOS development environments. Features a powerful CLI tool for setup, maintenance, and AI-powered development insights.
This repository contains my personal development environment configuration, managed through a custom CLI tool called dot. It uses GNU Stow for symlink management, Homebrew for package installation, and includes configurations for Fish shell, Neovim, Tmux, Git, and other essential development tools.
# Clone the repository
git clone https://github.com/dmmulroy/.dotfiles.git ~/.dotfiles
cd ~/.dotfiles
# Full setup (installs everything)
./dot init
# Or customize the installation
./dot init --skip-ssh --skip-font
After installation, the dot command will be available globally for ongoing management. Running dot without arguments shows help.
~/.dotfiles/
โโโ dot # Main CLI tool
โโโ home/ # Configuration files (stowed to ~)
โ โโโ .config/
โ โ โโโ fish/ # Fish shell configuration
โ โ โโโ git/ # Git configuration
โ โ โโโ nvim/ # Neovim configuration
โ โ โโโ tmux/ # Tmux configuration
โ โ โโโ ...
โ โโโ .ideavimrc # IntelliJ IDEA Vim config
โโโ packages/
โ โโโ bundle # Base Brewfile
โ โโโ bundle.work # Work-specific packages
โโโ CLAUDE.md # Instructions for AI assistants
โโโ README.md # This file
dot CLI ToolThe dot command is a comprehensive management tool for your dotfiles. It handles everything from initial setup to ongoing maintenance and provides AI-powered insights.
dot init - Initial SetupComplete environment setup with all tools and configurations.
# Full installation
dot init
# Skip SSH key generation
dot init --skip-ssh
# Skip font installation
dot init --skip-font
# Skip both SSH and font setup
dot init --skip-ssh --skip-font
What it does:
dot update - Update Everythingdot update
dot doctor - Health Checkdot doctor
Comprehensive diagnostics including:
dot check-packages - Package Statusdot check-packages
Shows which packages are installed vs. missing from your Brewfiles.
dot retry-failed - Retry Failed Installationsdot retry-failed
Attempts to reinstall packages that failed during initial setup.
dot summary - Commit AnalysisUses OpenCode to generate intelligent summaries of recent git commits.
# Summarize last 3 commits (default)
dot summary
# Summarize specific number of commits
dot summary -n 5
# Include file diffs for detailed analysis
dot summary -d
# Verbose mode with commit details
dot summary -v
# Combine options
dot summary -n 10 -d -v
Example Output:
=> Summary of Recent Changes
Development Focus: Recent work centers on improving the diagnostic navigation
system in Neovim, updating deprecated API calls to use modern vim.diagnostic.jump()
functions. This includes better error handling and user experience improvements.
Technical Patterns: The commits show incremental configuration refinements
with a focus on tooling updates and environment optimization...
dot benchmark-shell - Fish Shell Performance Benchmarking# Run 10 benchmarks (default)
dot benchmark-shell
# Run specific number of benchmarks
dot benchmark-shell -r 20
# Show verbose output with individual timings
dot benchmark-shell -v
# Combine options
dot benchmark-shell -r 15 -v
Measures Fish shell startup performance with detailed analysis:
Example Output:
=> Fish Shell Startup Benchmark Results
Configuration:
Shell: fish, version 4.0.2
Runs: 10
Test: Empty script execution
Performance Results:
Average time: 0.061 seconds
Fastest time: 0.048 seconds
Slowest time: 0.078 seconds
Time range: 0.030 seconds
Performance Assessment:
โ Good startup performance (โค100ms)
dot completions - Generate Fish Shell Completionsdot completions
Generates comprehensive Fish shell completions for the dot command, including:
dot edit - Open in Editordot edit
Opens the dotfiles directory in your default editor (defined by $EDITOR).
dot stow - Update Dotfiles Symlinks# Create/update symlinks for configuration files
dot stow
Re-creates symlinks from home/ directory to your home directory (~). Use this after editing configuration files.
dot link / dot unlink - Global dot Command Installation# Install dot command globally (add to PATH)
dot link
# Remove global installation
dot unlink
Makes the dot command available from any directory by creating a symlink in /usr/local/bin or ~/.local/bin.
The system provides comprehensive package management through the dot package command and uses two Brewfiles for different contexts:
# List packages
dot package list # List all packages
dot package list base # List base packages only
dot package list work # List work packages only
# Add packages
dot package add git # Add git formula to base bundle
dot package add docker cask # Add docker cask to base bundle
dot package add kubectl brew work # Add kubectl to work bundle
# Update packages
dot package update # Update all installed packages
dot package update git # Update specific package
dot package update all base # Update only base bundle packages
dot package update all work # Update only work bundle packages
# Remove packages
dot package remove git # Remove git from any bundle
dot package remove docker base # Remove docker from base bundle only
packages/bundle - Base packages for all machines:
packages/bundle.work - Work-specific additions:
home/ to ~~/Code/work/Clone repository:
git clone https://github.com/dmmulroy/.dotfiles.git ~/.dotfiles
cd ~/.dotfiles
Run installation:
./dot init
Restart shell or source Fish config:
# In Fish shell
source ~/.config/fish/config.fish
# Or restart terminal
Verify installation:
dot doctor
Method 1: Using package commands (recommended):
# Add package using the package command
dot package add new-tool # Adds to base bundle
dot package add new-app cask # Adds cask to base bundle
dot package add work-tool brew work # Adds to work bundle
Method 2: Manual editing:
Edit packages/bundle or packages/bundle.work:
# Add to packages/bundle
brew "new-tool"
cask "new-app"
Then run:
dot init # or brew bundle --file=./packages/bundle
home/ directory (not your actual home directory)dot stow (or dot init for full setup)The system automatically applies work-specific Git configuration for repositories under ~/Code/work/.
Command not found: dot
# Source Fish configuration
source ~/.config/fish/config.fish
# Or add to PATH manually
export PATH="$HOME/.dotfiles:$PATH"
Package installation failures:
# Check what failed
dot check-packages
# Retry failed packages
dot retry-failed
Broken symlinks:
# Diagnose issues
dot doctor
# Re-create symlinks
dot stow
OpenCode configuration:
# If summary command fails, configure a provider
opencode
# Then use /connect to set up a provider
OpenCode installation issues:
# Install via Homebrew (recommended)
brew install opencode
# Or via native installer
curl -fsSL https://opencode.ai/install | bash
# Or reinstall via Bun
bun install -g opencode-ai
# Or via npm
npm install -g opencode-ai
dot help for command overviewdot <command> --help for specific command helpdot doctor for environment issuespackages/failed_packages_*.txthome/ directory structuredot doctor and dot check-packages# Make modifications to dotfiles
# ...
# Test changes
dot doctor
# Re-stow if needed
dot stow
# Install only base packages, skip optional components
dot init --skip-ssh --skip-font
# Check what's missing
dot check-packages
# Install work packages later
brew bundle --file=./packages/bundle.work
# Generate Fish shell completions
dot completions
# Completions include dynamic suggestions for:
# - Package names when using package remove/update
# - All commands, subcommands, and options
# Review recent work
dot summary -v
# Detailed analysis for release notes
dot summary -n 10 -d
# Quick daily standup summary
dot summary -n 5
This repository is for personal use. Feel free to fork and adapt for your own needs.