Safely edit tool config files in this dotfiles repo (Zed, Neovim, Ghostty, tmux, lazygit, etc.) by looking up real current docs for exact option/keybind/action names instead of guessing, then validating per file format. Use when changing editor or terminal settings or keybindings, adding/remapping a shortcut, toggling a panel/dock, or whenever the user references a config file like keymap.json, settings.json, init.lua, config.toml, or asks "what's the action/option for X in <tool>".
Scanned 9/2/2026
Install to Claude Code
npx -y skills add magnusrodseth/dotfiles --skill manage-dotfiles-config --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Manage Dotfiles Config?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/magnusrodseth-manage-dotfiles-config)More formats (shields.io, HTML) on the badges page.
---
name: manage-dotfiles-config
description: Safely edit tool config files in this dotfiles repo (Zed, Neovim, Ghostty, tmux, lazygit, etc.) by looking up real current docs for exact option/keybind/action names instead of guessing, then validating per file format. Use when changing editor or terminal settings or keybindings, adding/remapping a shortcut, toggling a panel/dock, or whenever the user references a config file like keymap.json, settings.json, init.lua, config.toml, or asks "what's the action/option for X in <tool>".
user-invokable: true
---
# manage-dotfiles-config
Edit machine config in `~/dotfiles` without guessing. Three rules: **look up the real
option/action name, make the edit, validate before declaring done.** Never invent a
config key or action identifier from memory — they drift between versions.
## Workflow
1. **Locate** the file in the Tool catalog below (paths are stow-managed in `~/dotfiles`).
2. **Look up** the exact key/action/option via the `find-docs` skill (Context7) — see
"Docs lookup" per tool. Don't guess identifiers like `editor::GoToDefinition` or a
settings key; confirm them against current docs.
3. **Edit** the file (preserve the surrounding comment/idiom style).
4. **Validate**: `bash scripts/validate-config.sh <file>` (auto-detects format). Fix until ✓.
5. **Check the Gotchas catalog** for the tool before finishing.
## Tool catalog
| Tool | Config path(s) | Format | Docs lookup (find-docs) |
|------|----------------|--------|-------------------------|
| Zed | `~/.config/zed/keymap.json`, `settings.json` | JSONC | lib `/websites/zed_dev` — query for action ids / setting keys |
| Neovim (LazyVim) | `~/.config/nvim/lua/**` | Lua | `ctx7 library "Neovim"` / `"LazyVim"` |
| Ghostty | `~/.config/ghostty/config` | key=value | `ctx7 library "Ghostty"` |
| tmux | `~/.tmux.conf` | tmux conf | `ctx7 library "tmux"` |
| lazygit | `~/.config/lazygit/config.yml` | YAML | `ctx7 library "lazygit"` |
Add new tools as rows here; add their quirks to Gotchas.
## Gotchas catalog
### Zed
- `keymap.json` / `settings.json` are **JSONC** (comments + sometimes trailing commas).
Plain `jq` / `JSON.parse` chokes on `//` comments — use `validate-config.sh` (it strips
comments first). Keymap is an array of `{ "context"?, "bindings" }` blocks; chords are
space-separated, e.g. `"cmd-g cmd-d"`.
- **Dock-toggle keybinds depend on which dock a panel is assigned**, set in `settings.json`.
Each panel (`agent`, `project_panel`, `outline_panel`, `git_panel`, …) has a
`"dock": "left" | "right" | "bottom"`. `workspace::ToggleLeftDock` /
`ToggleRightDock` toggle *whatever panel lives in that dock*, not a named panel. **Always
read the panel `dock` values before binding a dock toggle.** In this repo: `agent` is
left-docked, `project_panel` (file tree) is right-docked → `cmd-b` =
`workspace::ToggleRightDock` (file tree), `cmd-j` = `workspace::ToggleLeftDock` (AI panel).
- Prefer `workspace::Toggle{Left,Right}Dock` for clean open/close. `*::ToggleFocus` only
moves focus (won't reliably close a panel), which feels like a broken toggle.
- Zed applies config on save — no restart needed to test.
### (add other tools' gotchas as you hit them)
## Notes
- These configs are symlinked from `~/dotfiles` via stow, and `~/.claude` itself symlinks
into the repo. Editing the real file under `~/.config/...` edits the repo copy.
- Commit per concern (keybinds vs theme are separate commits). To mirror a change onto
another branch, cherry-pick the specific commit rather than merging.
- See [scripts/validate-config.sh](scripts/validate-config.sh) for the validator.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!