editor-project-configlisted
Install: claude install-skill hsb3/dotfiles-agents
# Editor project config — .vscode and .zed
Project-level editor config overrides user config and travels with the repo. Track both
folders in git; never put credentials in them (API-token settings, e.g. Zed
`context_servers`, belong in user-level config only).
## Surface map
| Concern | VS Code `.vscode/` | Zed `.zed/` |
|---|---|---|
| Settings overrides | `settings.json` | `settings.json` — global-only keys (theme, vim_mode, telemetry) are silently ignored at project level |
| Extension recommendations | `extensions.json` `{"recommendations": [...]}`, prompted on first open | none — Zed auto-installs language support |
| Tasks | `tasks.json` (`"version": "2.0.0"` + `tasks` array; parameterize with `inputs`/`pickString`) | `tasks.json` (flat array of `{label, command}`; `$ZED_FILE`, `$ZED_RELATIVE_FILE`, … are env vars in the task shell, so POSIX expansion like `${ZED_RELATIVE_FILE%%/*}` works) |
| Debug | `launch.json` (`"type": "debugpy"`, …) | `debug.json` (flat array; `"adapter": "Debugpy"`, `"CodeLLDB"`, …) |
Both editors parse all of these as JSONC. If the repo lints JSON strictly, write plain
JSON (both editors accept it) so the repo's existing linter covers the new files.
## Procedure
1. **Inventory the repo.** Languages present, plus everything an editor cannot identify
by extension: extensionless executables (shebang scan:
`for f in <bindir>/*; do head -1 "$f"; done`), tool-specific filenames (Brewfile,
rc files), dialect mismatches (JSONC content in