| name | yadm |
| description | Use this skill when the user wants to manage dotfiles, initialize a dotfiles repository, clone dotfiles, encrypt/decrypt private config files, or use alternative file templates. |
yadm Plugin
Yet Another Dotfiles Manager — manage dotfiles with Git, encryption, Jinja2 templates, and per-machine alternative files.
Commands
Repository Management
yadm repo init — Initialize a new dotfiles repository
yadm repo clone — Clone an existing dotfiles repository
File Management
yadm file add — Add files to the repository
yadm file list — List tracked files
Encryption
yadm crypto encrypt — Encrypt private files
yadm crypto decrypt — Decrypt private files
Configuration
yadm config bootstrap — Run bootstrap script
yadm alt create — Create alternative file symlinks
Utility
yadm _ _ — Passthrough to yadm CLI
Usage Examples
- "Initialize a dotfiles repo"
- "Clone my dotfiles from GitHub"
- "Add .bashrc to my dotfiles"
- "Encrypt my SSH keys"
- "Run the bootstrap script"
Installation
brew install yadm
Or on Linux:
sudo apt install yadm
Or manually:
curl -fsSL https://github.com/yadm-dev/yadm/raw/master/yadm -o /usr/local/bin/yadm && chmod +x /usr/local/bin/yadm
Examples
yadm repo init
yadm repo clone https://github.com/user/dotfiles.git
yadm file add ~/.bashrc ~/.gitconfig ~/.vimrc
yadm _ _ commit -m "Add shell config"
yadm _ _ push
yadm file list
yadm crypto encrypt
yadm crypto decrypt
yadm alt create
yadm config bootstrap
yadm _ _ status
yadm _ _ version
Key Features
- Git-based — Full Git feature set for dotfiles
- Alternative files — Per-machine, per-OS, per-host configs with
## suffix syntax
- Templates — Jinja2 template processing for dynamic configs
- Encryption — Private data via GPG, OpenSSL, transcrypt, or git-crypt
- Bootstrap — Customizable first-time setup script
- Hooks — Before/after hook support for any operation
- Portable — Single file, no dependencies beyond Git and Bash