chezmoi
Guides dotfile management with chezmoi when the user says "set up dotfiles", "manage my dotfiles", "bootstrap a new machine", "chezmoi", "encrypt my SSH key…
Skill by paulnsorensen
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/paulnsorensen-chezmoi
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: security
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 26, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/chezmoi
Tools it pre-approves 10
From allowed-tools in SKILL.md: the agent may use these without asking you each time.
mcp__tilth__tilth_read,mcp__tilth__tilth_search,mcp__tilth__tilth_write,Bash(chezmoi:*),Bash(git:*),Bash(age:*),Bash(gpg:*),mcp__context7__resolve-library-id,mcp__context7__query-docs,mcp__tavily__tavily_extract
What's inside
- Skill name
chezmoi- Description
- Guides dotfile management with chezmoi when the user says "set up dotfiles", "manage my dotfiles", "bootstrap a new machine", "chezmoi", "encrypt my SSH key in dotfiles", "template dotfiles per OS", "add secrets to dotfiles", "what should be in my .chezmoi.toml.tmpl", or asks how to share configs across macOS, Linux, and servers. Also use when the user wants the one-liner that sets up a fresh machine, or is about to commit something sensitive to a dotfiles repo. Covers source-state filename attributes (`dot_`, `private_`, `encrypted_`, `run_once_`), Go templates, scripts, and secret backends. Do NOT use for stow, yadm, rcm, or other dotfile managers, generic git repo setup, or password-manager setup unrelated to dotfiles.
- License
- MIT
- Allowed tools
- mcp__tilth__tilth_read,, mcp__tilth__tilth_search,, mcp__tilth__tilth_write,, Bash(chezmoi:*),, Bash(git:*),, Bash(age:*),, Bash(gpg:*),, mcp__context7__resolve-library-id,, mcp__context7__query-docs,, mcp__tavily__tavily_extract
- Instructions
- 188 lines in SKILL.md · view on GitHub
Before installing
- Pre-approves some shell commands
- Instructions call the network
- Instructions read files in your home folder (~/.ssh, ~/.aws…)
Files (8)
- SKILL.md
- bootstrap.md · references/
- docs-index.md · references/
- partial-files.md · references/
- pitfalls.md · references/
- scripts.md · references/
- secrets.md · references/
- templating.md · references/
SKILL.md (first lines)
# chezmoi Manage dotfiles across machines with [chezmoi](https://chezmoi.io/): source-state semantics, Go templates, and at-rest encryption. ## Mental model chezmoi maps a **source directory** (`~/.local/share/chezmoi`, a git repo) to a **target directory** (the user's home). Source filenames carry attribute prefixes that set the target name and behavior. chezmoi renders a source file with a `.tmpl` suffix as a Go `text/template`. Files under `.chezmoitemplates/` are reusable fragments; they produce no target files. A per-machine config file holds machine variables. In this repo, the source tree is `$DOTFILES/chezmoi`. Edit its plain and `.tmpl` files directly, then run `dots sync` to deploy (see `AGENTS.md`). Only `encrypted_` files need `chezmoi edit`. Most trouble has two causes: 1. Editing an `encrypted_` source file directly instead of `chezmoi edit $TARGET`. This breaks the decrypt round-trip. Editing a plain or `.tmpl` source file directly is normal; `chezmoi edit` only adds editor convenience there. 2. Committing plaintext secrets "because the repo is private". Repos leak, forks leak, and history is permanent. ## Config file vs. config template Both accept `toml`, `yaml`, `json`, or `jsonc`, detected by extension. Two formats present at the same time is an error, not "first one wins". | File | Path | Who writes it | |---|---|---| | `chezmoi.<fmt>` (the *config*) | `$XDG_CONFIG_HOME/chezmoi/`, default `~/.config/chezmoi/`. **Not** in the source repo. | `chezmoi init` (or `apply --init`) generates it from the template. Per-machine. Holds tokens and machine settings; never commit it. | | `.chezmoi.<fmt>.tmpl` (the *config template*) | Source-state root. **Committed** to the dotfiles repo. | You write it. Use `promptBoolOnce` / `promptChoiceOnce` / `promptStringOnce` so a fresh machine answers once on first init. | Override the location with `--config <path>`; add `--config-format <fmt>` for an unusual extension. Inspect effective values with `chezmoi cat-config` and `chezmoi dump-config`. ## Protocol ### 1. Route the request | User says | Go to | |---|---| | "set up chezmoi from scratch" / "new machine" | §2, then `references/bootstrap.md` | | "add this file to my dotfiles" | §3 | | "make this dotfile depend on OS / host" | `references/templating.md` | | "encrypt this" / "store this token" | `references/secrets.md` | | "run a script on first apply" / script order | `references/scripts.md` | | "only manage part of this file" | `references/partial-files.md` | | "chezmoi did something weird" | `references/pitfalls.md` | ### 2. Bootstrap a new machine This one-liner clones, renders templates, and applies: ```bash sh -c "$(curl -fsLS get.chezmoi.io)" -- init --apply $GITHUB_USERNAME ``` ### 3. Add a file ```bash chezmoi add ~/.zshrc # plain copy chezmoi add --template ~/.gitconfig # add as a template (.tmpl suffix added) chezmoi add --encrypt ~/.ssh/config # encrypted at rest chezmoi chattr +template ~/.zshrc # turn a managed file into a template chezmoi edit ~/.zshrc # edit the SOURCE; handles decrypt + .tmpl ``` Then run the safe-apply ritual (§5). ### 4. File-naming reference Prefixes must appear in a fixed order, and the allowed set depends on the target type. The canonical source is `/reference/source-state-attributes/`. | Prefix | Effect on target | |---|---| | `dot_` | Add a leading `.` (`dot_zshrc` → `~/.zshrc`) | | `private_` | Remove group and world permissions (0600 / 0700) | | `readonly_` | Remove all write bits | | `executable_` | Add the executable bit | | `empty_` | Keep an empty file (the default removes it) | | `encrypted_` | Decrypt the source with age/gpg before writing the target | | `symlink_` | Create a symlink; the file content is the link target | | `exact_` (dirs) | Delete target entries that the source does not have | | `create_` | Create the target only when it is missing; never overwrite | | `modify_` | The source is a script or template that produces the target content | | `run_` | The source is a script to run, not a target file | | `before_` / `after_` | Order scripts relative to file updates | | `once_` (scripts) | Run only when these contents never ran successfully | | `onchange_` (scripts) | Run only when the contents change for this filename | | `remove_` | Remove the target if it exists | | `external_` (dirs) | Mark an external directory (pairs with `.chezmoiexternal.<fmt>`); child attributes are ignored | | `literal_` (anywhere) | Stop parsing attributes from this point | Allowed order per target type (another order is a parse error): | Target type | Allowed prefixes (in order) | Optional suffix | |---|---|---| | Directory | `remove_`, `external_`, `exact_`, `private_`, `readonly_`, `dot_` | — | | Regular file | `encrypted_`, `private_`, `readonly_`, `empty_`, `executable_`, `dot_` | `.tmpl` | | Create file | `create_`, `encrypted_`, `private_`, `readonly_`, `empty_`, `executable_`, `dot_` | `.tmpl` | | Modify file | `modify_`, `encrypted_`, `private_`, `readonly_`, `executable_`, `dot_` | `.tmpl` | | Remove file | `remove_`, `dot_` | — | | Script | `run_`, `once_` or `onchange_`, `before_` or `after_` | `.tmpl` | | Symlink | `symlink_`, `dot_` | `.tmpl` | chezmoi strips `.age` / `.asc` when the matching encryption is configured. ### 5. Safe-apply ritual Before an apply that touches important files, inspect the plan: ```bash chezmoi status # one line per changed file chezmoi diff # unified diff of pending changes chezmoi apply --dry-run -v # full plan, including scripts that would run chezmoi apply # only after the above looks right ``` For routine pulls on a trusted machine:
From paulnsorensen/dotfiles, MIT.
More from paulnsorensen/dotfiles
- 0.603score
bin-doctor
paulnsorensen
Audit and repair installed binaries so each tool has one install path, a clean cache, and a current pin, across mise, Homebrew, cargo, uv, npm, pnpm, bun…
SkillAFreshness: A★ 2Claude Code +9 - 0.603score
build-optimize
paulnsorensen
Optimize local build, test, and check commands with measured wall-time evidence.
SkillAFreshness: A★ 2Claude Code +9 - 0.600score
ci-optimize
paulnsorensen
Optimize GitHub Actions workflow wait time with measured evidence.
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
cheese-board-loop
paulnsorensen
Runs the cheese-board workflow and asks the user each question it raises.
SkillAFreshness: A★ 2Claude Code +9 - 0.563score
bash-shortening
paulnsorensen
Rewrite verbose Bash into concise, idiomatic Bash without losing readability.
SkillBFreshness: B★ 2Claude Code +9 - 0.557score
spec-verify
paulnsorensen
Verify a spec's implementation against its requirements using Serena structural analysis, build verification, and test coverage.
SkillBFreshness: B★ 2Claude Code +9 - 0.507score
grok-codebase
paulnsorensen
Use when the user wants deep, multi-session internalization of an unfamiliar codebase — not just an orientation, but the goal of being able to explain it on a…
SkillCFreshness: C★ 2Claude Code +9 - 0.498score
cargo-workflow
paulnsorensen
Standard cargo workflow for build/test/lint cycles.
SkillCFreshness: C★ 2Claude Code +9 - 0.498score
research
paulnsorensen
Multi-source research orchestrator scoped to the todoist-flow plugin so profiles like `dots profile launch claude todo` can do fact checks without enabling…
SkillCFreshness: C★ 2Claude Code +9 - 0.482score
tour
paulnsorensen
Use when the user wants a quick, single-session read-only tour of an unfamiliar codebase or a specific feature — orientation, not memorization.
SkillCFreshness: C★ 2Claude Code +9 - 0.482score
design-doc
paulnsorensen
Use when the user wants to draft, revise, critique, or shepherd a design document, RFC, ADR, tech spec, or design proposal.
SkillCFreshness: C★ 2Claude Code +9 - 0.482score
read-mode-probe
paulnsorensen
Use when the user wants to interrogate an unfamiliar codebase with structured probes rather than a summary — invariants, data flow, error paths, hot paths…
SkillCFreshness: C★ 2Claude Code +9
Signals
- Stars
- 2
- Forks
- 0
- Open issues
- 69
- Last commit (this folder)
- Oct 2, 2026 (27 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/paulnsorensen/dotfiles
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from paulnsorensen
- 0.603score
bin-doctor
paulnsorensen
Audit and repair installed binaries so each tool has one install path, a clean cache, and a current pin, across mise, Homebrew, cargo, uv, npm, pnpm, bun…
SkillAFreshness: A★ 2Claude Code +9 - 0.603score
build-optimize
paulnsorensen
Optimize local build, test, and check commands with measured wall-time evidence.
SkillAFreshness: A★ 2Claude Code +9 - 0.600score
ci-optimize
paulnsorensen
Optimize GitHub Actions workflow wait time with measured evidence.
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
cheese-board-loop
paulnsorensen
Runs the cheese-board workflow and asks the user each question it raises.
SkillAFreshness: A★ 2Claude Code +9 - 0.592score
skillz
paulnsorensen
Add, improve, audit, wedge, or autoimprove a skill.
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
python-authoring
paulnsorensen
Write, edit, refactor, or review Python as concise, stdlib-first, fully typed code that validates input at the boundary and passes basedpyright.
SkillAFreshness: A★ 1Claude Code +9
Cite this page
chezmoi skill. Agent Mart. https://agentmart.dev/skills/paulnsorensen-chezmoi (last updated 2026-10-24)