dotfiles
AGENTS.md15 starsChanged 13 months agoISCView on GitHub
@AGENTS.local.md Personal dotfiles managed by coding agents via Chezmoi. Targets macOS (darwin) and Fedora Linux. See docs/vision.md and docs/core-principles.md for the philosophy behind this setup. What it feels like: Ghostty launches into tmux, tmux runs zsh with Starship prompt, Neovim is the editor. Vim keybindings work everywhere — shell, multiplexer, editor. Navigation between tmux panes and Neovim splits is seamless via tmux-navigator. Edit in home/, never in ~ or ~/.config/. Chezmoi owns the home directory — destination edits get overwritten…
- Reads credentials
- Installs packages
Where files are headingNew AGENTS.md files have more rules about keeping secrets out of the code, and fewer about code style.
Of the AGENTS.md files we read, the 31,542 first seen in the last six months, against the older ones: the kind of rule that gained most share, and the kind that lost most. About files like this in general, not this one, and an estimate, since a kind is a pattern in the words.
In this repository6 other files it gives its agents.
- agents-local-mdSkill
- allowSkill
- label-issueSkill
- miseSkill
- nvimSkill
- updateSkill
The file
We split this AGENTS.md into the rules it gives an agent
3 rules. About 0 are common, 1 is distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 63
Verify in a tmux PTY when touching shell/terminal config:
- Very specific: line 137
Understand a config file: Read the source in home/ — templates use Go text/template (.chezmoi.os, lookPath)
- Very specific: line 138
Platform-specific logic: Check .chezmoiignore and .tmpl files for {{ if eq .chezmoi.os "darwin" }} guards
≈ “Common” is an estimate: at least 1 in 5 of the 40,246 AGENTS.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
AGENTS.md
@AGENTS.local.md
Personal dotfiles managed by coding agents via Chezmoi. Targets macOS (darwin) and Fedora Linux. See docs/vision.md and docs/core-principles.md for the philosophy behind this setup.
The Stack
| Layer | Component | Config source |
| Terminal | Ghostty | home/dot_config/ghostty/config.tmpl |
| Multiplexer | tmux | home/dot_config/tmux/tmux.conf |
| Agent runtime | herdr | home/dot_config/herdr/config.toml |
| Shell | zsh + Oh-My-Zsh | home/dot_zshrc.tmpl |
| Editor | Neovim / LazyVim | home/dot_config/nvim/ |
| Tools | mise (aqua backend) | home/dot_config/mise/config.toml |
| Git | git + delta | home/dot_config/git/config.tmpl |
| AI agents | Claude Code | home/dot_claude/ (user) + .claude/ (project) |
| SSH | 1Password agent | home/private_dot_ssh/ |
| Services | Docker Compose | home/dot_config/docker-compose/ |
| Updates | Renovate | renovate.json5 |
What it feels like: Ghostty launches into tmux, tmux runs zsh with Starship prompt, Neovim is the editor. Vim keybindings work everywhere — shell, multiplexer, editor. Navigation between tmux panes and Neovim splits is seamless via tmux-navigator.
Repo Map
home/ # All managed dotfiles (Chezmoi source)
dot_config/ # -> ~/.config/
dot_claude/ # -> ~/.claude/ (user-scope skills, agents, settings)
dot_local/bin/ # -> ~/.local/bin/
private_dot_ssh/ # -> ~/.ssh/
private_Library/ # -> ~/Library/ (macOS only)
bin/ # Repo scripts: setup, test, sync-claude-*
test/ # BATS test suite
docs/ # Architecture docs; decisions in docs/adrs/
.claude/ # Project-scope agent config (this repo only)
skills/ # Project slash-commands
hooks/ # Pre/post tool hooks
agents/ # Subagent definitions
hk.pkl # Lint/format hooks (pre-commit, pre-push, CI)
mise.toml # Dev tool pins + `mise run` tasksHow to Work Here
The One Rule
Edit in home/, never in ~ or ~/.config/. Chezmoi owns the home directory — destination edits get overwritten on next apply.
| To change... | Edit this |
~/.zshrc | home/dot_zshrc.tmpl |
~/.config/mise/config.toml | home/dot_config/mise/config.toml |
~/.config/ghostty/config | home/dot_config/ghostty/config.tmpl |
Change Workflow
- Edit source files in
home/ chezmoi diff— review; only your changes should appearchezmoi apply [target ...]— apply (selectively if diff shows unrelated changes)chezmoi status— confirm clean state- Verify in a tmux PTY when touching shell/terminal config:
tmux new-session -d -s verify -x 200 -y 50 "zsh -l"
sleep 2 && tmux capture-pane -t verify -p
tmux kill-session -t verifyCommands
./bin/setup # Bootstrap dev tools via mise
./bin/test # Run all tests (what CI runs)
bats test/<file>.bats # Run one test file
mise run lint # Lint + auto-fix (hk fix)
hk check # Lint without fixing (what CI runs)Before opening a PR: hk check && ./bin/test
hk also runs automatically on pre-commit and pre-push — it stashes unstaged
changes, auto-fixes, and enforces conventional commit messages. See hk.pkl.
Skills
Two scopes, two sources — edit the source, never ~/.claude/:
- User (available everywhere):
home/dot_claude/skills/→~/.claude/skills/on apply - Project (this repo only):
.claude/skills/
Most-used:
| Skill | Purpose |
/install <name> | Add a tool, package, Claude Code plugin, or MCP server — detects type, routes by scope (user→dotfiles, project→repo), pins/updates manifests |
/nvim | Troubleshoot Neovim plugin errors or update after breaking changes |
/update | Morning routine — merge Renovate PRs, rebase, apply chezmoi |
/commit | Commit with conventional message and intentional file selection |
Browse the two dirs above for the full set (~35 skills).
Change Hygiene
- Pin versions — every dependency gets an exact version; Renovate handles updates
- Prefer mise /
/install— add tools, plugins, and MCP servers via/install; ad-hoc installers (npx/pipx/pip install/npm -g/…) are blocked by a guard hook, so don't reach for them. See docs/claude-code.md - One change per commit — small, conventional commits via
/commit - Package Manager subagent — use for version conflicts, container images, bulk updates, or GitHub Actions digests (see docs/renovate.md)
Deep Dives
| Topic | Doc |
| Package management | docs/package-management.md |
| Renovate & version pinning | docs/renovate.md |
| Neovim / LazyVim | docs/neovim.md |
| tmux | docs/tmux.md |
| tmux-powerline (notification rail) | docs/tmux-powerline.md |
| Zsh | docs/zsh.md |
| macOS preferences | docs/macos.md |
| Claude Code integration | docs/claude-code.md |
| QMD vault search | docs/qmd.md |
| Codebase memory (code graph over ~/src) | docs/codebase-memory-mcp.md |
| Core principles | docs/core-principles.md |
| Vision | docs/vision.md |
| Chezmoi operations | docs/agents/chezmoi.md |
| Architecture decisions | docs/adrs/ |
| Skill autonomy migration (in progress) | docs/skill-autonomy-migration.md |
| Supply chain security | docs/supply-chain-security.md |
| GitHub labels & triage | docs/labels.md |
Where to Look First
- Add a tool:
/install <name>— it handles everything - Fix a broken Neovim plugin:
/nvim - Understand a config file: Read the source in
home/— templates use Go text/template (.chezmoi.os,lookPath) - Platform-specific logic: Check
.chezmoiignoreand.tmplfiles for{{ if eq .chezmoi.os "darwin" }}guards - Morning catchup:
/updatemerges Renovate PRs and applies changes - Chezmoi internals: docs/agents/chezmoi.md covers templates, scripts, prefixes, and troubleshooting
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

