skills-templates/chezmoi/SKILL.md
# chezmoi - Dotfiles Manager > Manage your dotfiles across multiple machines, securely. ## Quick Reference ### Installation ```bash # macOS brew install chezmoi # Linux (snap) snap install chezmoi --classic # Linux (binary) sh -c "$(curl -fsLS get.chezmoi.io)" # Windows winget install twpayne.chezmoi # or choco install chezmoi ``` ### Essential Commands | Command | Description | |---------|-------------| | `chezmoi init` | Initialize chezmoi on new machine | | `chezmoi add ~/.bashrc` | A
npx skillsauth add enuno/claude-command-and-control skills-templates/chezmoiInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Manage your dotfiles across multiple machines, securely.
# macOS
brew install chezmoi
# Linux (snap)
snap install chezmoi --classic
# Linux (binary)
sh -c "$(curl -fsLS get.chezmoi.io)"
# Windows
winget install twpayne.chezmoi
# or
choco install chezmoi
| Command | Description |
|---------|-------------|
| chezmoi init | Initialize chezmoi on new machine |
| chezmoi add ~/.bashrc | Add file to source state |
| chezmoi edit ~/.bashrc | Edit file in source state |
| chezmoi diff | Preview changes before apply |
| chezmoi apply | Apply changes to home directory |
| chezmoi update | Pull from remote and apply |
| chezmoi cd | Open shell in source directory |
| chezmoi doctor | Check for common problems |
# Initialize from GitHub (combines clone + apply)
chezmoi init --apply $GITHUB_USERNAME
# Or with full URL
chezmoi init --apply https://github.com/username/dotfiles.git
# Add new dotfile
chezmoi add ~/.config/starship.toml
# Edit and apply in one command
chezmoi edit --apply ~/.bashrc
# Check what would change
chezmoi diff
# Apply all changes
chezmoi apply -v
# Push changes (in source directory)
chezmoi cd
git add . && git commit -m "Update dotfiles" && git push
| Prefix | Effect | Example |
|--------|--------|---------|
| dot_ | Adds . to filename | dot_bashrc → .bashrc |
| private_ | Mode 0600 (user only) | private_dot_ssh/ |
| executable_ | Mode +x | executable_dot_local/bin/script |
| readonly_ | Mode -w | readonly_dot_config |
| encrypted_ | Encrypted file | encrypted_private_dot_ssh/id_rsa |
| empty_ | Keep empty file | empty_dot_gitkeep |
| create_ | Create only if missing | create_dot_config |
| modify_ | Modify existing file | modify_dot_bashrc |
| remove_ | Remove from target | remove_dot_old_config |
| symlink_ | Create symlink | symlink_dot_vimrc |
| exact_ | Remove unlisted items | exact_dot_config/ |
Add .tmpl to process as Go template:
dot_gitconfig.tmpl
private_dot_ssh/config.tmpl
| Prefix | Behavior |
|--------|----------|
| run_ | Run every apply |
| run_once_ | Run once (tracks hash) |
| run_onchange_ | Run when content changes |
| before_ | Run before file updates |
| after_ | Run after file updates |
Example: run_once_before_install-packages.sh.tmpl
{{ .chezmoi.hostname }}
{{ .chezmoi.os }}
{{ .chezmoi.arch }}
{{ .chezmoi.username }}
{{ .chezmoi.homeDir }}
{{ if eq .chezmoi.os "darwin" }}
# macOS specific
export HOMEBREW_PREFIX="/opt/homebrew"
{{ else if eq .chezmoi.os "linux" }}
# Linux specific
export PATH="$HOME/.local/bin:$PATH"
{{ end }}
{{ if and (eq .chezmoi.os "linux") (eq .chezmoi.hostname "workstation") }}
# Work machine Linux config
{{ end }}
{{- .variable -}} # Trim both sides
{{- .variable }} # Trim left only
{{ .variable -}} # Trim right only
chezmoi data
chezmoi execute-template '{{ .chezmoi.hostname }}'
chezmoi cat ~/.bashrc # Preview rendered template
{{ onepassword "item-name" }}
{{ onepasswordRead "op://vault/item/field" }}
{{ onepasswordDocument "document-uuid" }}
{{ onepasswordDetailsFields "item-name" }}
Modes: account (default), connect, service (for CI/CD)
{{ bitwarden "item" "example.com" }}
{{ (bitwarden "item" "example.com").login.password }}
{{ bitwardenFields "item" "example.com" }}
{{ bitwardenAttachment "id_rsa" "item-uuid" }}
{{ bitwardenSecrets "secret-id" }}
{{ rbw "item-name" }}
Auto-unlock (chezmoi.toml):
[bitwarden]
unlock = "auto"
{{ pass "path/to/secret" }}
{{ passFields "path/to/secret" }}
{{ gopass "path/to/secret" }}
{{ lastpass "item-id" }}
{{ awsSecretsManager "secret-name" }}
{{ azureKeyVault "secret-name" }}
{{ vault "secret/path" }}
# Generate key
age-keygen -o ~/.config/chezmoi/key.txt
# Configure chezmoi.toml
[age]
identity = "~/.config/chezmoi/key.txt"
recipient = "age1..."
# Configure chezmoi.toml
[gpg]
recipient = "your-gpg-key-id"
chezmoi add --encrypt ~/.ssh/id_rsa
chezmoi add --encrypt ~/.config/secrets.yaml
Encrypted files use encrypted_ prefix automatically.
Location: ~/.config/chezmoi/chezmoi.toml
# Source directory (default: ~/.local/share/chezmoi)
sourceDir = "~/.dotfiles"
# Default editor
[edit]
command = "nvim"
# Git auto-commit and push
[git]
autoCommit = true
autoPush = true
# Diff settings
[diff]
pager = "delta"
# Merge tool
[merge]
command = "nvim"
args = ["-d", "{{ .Destination }}", "{{ .Source }}", "{{ .Target }}"]
# age encryption
[age]
identity = "~/.config/chezmoi/key.txt"
recipient = "age1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
[data]
email = "[email protected]"
name = "Your Name"
[data.work]
proxy = "http://proxy.work.com:8080"
Access in templates: {{ .email }}, {{ .work.proxy }}
.chezmoi.toml.tmpl)Create in source root for interactive setup:
[data]
email = {{ promptString "email" | quote }}
name = {{ promptString "name" | quote }}
{{- if eq .chezmoi.hostname "work-laptop" }}
work = true
{{- end }}
.chezmoidata.yaml)packages:
common:
- git
- tmux
- neovim
work:
- docker
- kubectl
Access: {{ .packages.common }}
.chezmoiignore)# Ignore on non-Linux
{{ if ne .chezmoi.os "linux" }}
.config/i3/
.xinitrc
{{ end }}
# Ignore work config on personal machines
{{ if not .work }}
.config/work/
{{ end }}
#!/bin/bash
# run_onchange_install-packages.sh.tmpl
{{ if eq .chezmoi.os "darwin" -}}
brew bundle --file=/dev/stdin <<EOF
{{ range .packages.common -}}
brew "{{ . }}"
{{ end -}}
EOF
{{ else if eq .chezmoi.os "linux" -}}
sudo apt-get update
sudo apt-get install -y {{ range .packages.common }}{{ . }} {{ end }}
{{ end -}}
#!/bin/bash
# run_once_before_setup-directories.sh
mkdir -p ~/.local/bin
mkdir -p ~/.config
mkdir -p ~/.cache
#!/bin/bash
# run_onchange_reload-shell.sh.tmpl
# Hash: {{ include "dot_bashrc.tmpl" | sha256sum }}
source ~/.bashrc
# dot_ssh/authorized_keys.tmpl
{{ range gitHubKeys "username" }}
{{ . }}
{{ end }}
# .chezmoitemplates/git-config
[user]
name = {{ .name }}
email = {{ .email }}
# dot_gitconfig.tmpl
{{ template "git-config" . }}
[core]
editor = nvim
# .chezmoiexternal.yaml
".vim/autoload/plug.vim":
type: file
url: "https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim"
refreshPeriod: 168h
".oh-my-zsh":
type: archive
url: "https://github.com/ohmyzsh/ohmyzsh/archive/master.tar.gz"
stripComponents: 1
Core: add, apply, archive, cat, cd, data, diff, edit, forget, init, manage, managed, merge, re-add, remove, source-path, status, target-path, unmanage, unmanaged, update, verify
Config: cat-config, dump-config, edit-config, edit-config-template
Encryption: age, age-keygen, decrypt, edit-encrypted, encrypt, secret
Utility: chattr, completion, destroy, doctor, dump, generate, git, help, ignored, import, license, list, merge-all, purge, ssh, state, upgrade
Container: docker
chezmoi doctor
chezmoi apply -v
chezmoi diff -v
chezmoi apply -n # Preview without changes
chezmoi execute-template < file.tmpl
chezmoi cat ~/.config/file # Show rendered content
chezmoi state delete-bucket --bucket=scriptState # Re-run scripts
chezmoi forget ~/.config/file # Stop managing file
tools
MemPalace local-first AI memory system. Use when setting up persistent memory for Claude Code sessions, mining project files or conversation transcripts, querying past context, configuring MCP tools, managing the knowledge graph, or troubleshooting palace operations.
tools
LangSmith Python SDK — trace, evaluate, and monitor LLM applications. Covers @traceable decorator, trace context manager, Client API, evaluate() / aevaluate(), comparative evaluation, custom evaluators, dataset management, prompt caching, ASGI middleware, and pytest plugin.
development
LangGraph (Python) — build stateful, controllable agent graphs with checkpointing, streaming, persistence, interrupts, fault tolerance, and durable execution. Covers both Graph API (StateGraph) and Functional API (@entrypoint/@task).
development
LangGraph Graph API (Python) — build explicit DAG agent workflows with StateGraph, typed state, nodes, edges, Command routing, Send fan-out, checkpointers, interrupts, and streaming. Use when you need explicit control flow and graph topology.