# Sigil usage (for agents) This repo is managed by **Sigil**, a minimal symlink-based dotfile tool. ## Repo layout ``` ~/.dotfiles/ / config.lua files/ # common files (all OSes) files.linux/ # Linux-specific overrides files.macos/ # macOS-specific overrides files.windows/ # Windows-specific overrides ``` Each package has a `config.lua` that defines its target path per OS. ### Per-OS file variants Create `files./` directories alongside `files/` for OS-specific overlays: ``` pi-agent/ files/ settings.json # shared config files.linux/ agent.json # Linux-specific files.macos/ agent.json # macOS-specific ``` On Linux, `agent.json` links to `files.linux/agent.json`. On macOS, it links to `files.macos/agent.json`. Files in `files/` are applied first, then OS-specific variants overlay on top. ## Common commands - `sigil apply` — apply symlinks (prompts for stale links) - `sigil apply --prune` — prune stale links without prompting - `sigil add ` — add a file/dir to the repo and symlink it - `sigil status` — show stale links - `sigil unlink ` — restore file(s) to target and remove from repo - `sigil remove ` — same as unlink, plus remove package/subpath from repo ## Spec formats `unlink/remove` accept these: - `package` (entire package) - `package:relative/path` - repo path: `~/.dotfiles//files/...` - target path: e.g. `~/.config//...` Examples: ``` sigil unlink wezterm sigil unlink wezterm:lua sigil unlink ~/.dotfiles/wezterm/files/wezterm.lua sigil unlink ~/.config/wezterm/wezterm.lua ``` ## Notes - If a repo file is missing, stale links should be pruned. - Prefer `sigil add` over manual moves into `files/`. ## Development - When modifying this repo, rebuild and install the binary: `go build -o ~/.local/bin/sigil .` - Bump the version constant in `main.go` for every change (follow semver: bugfix = patch, feature = minor, breaking = major) ## IMPORTANT: Update AGENTS.md files when Sigil changes Whenever Sigil is modified (new features, behavior changes, new commands), you MUST update the AGENTS.md documentation in BOTH locations: 1. This repo: `/home/thomasgl/programming/sigil/AGENTS.md` 2. Dotfiles repo: `/home/thomasgl/.dotfiles/AGENTS.md` Keep them in sync so agents have correct instructions regardless of which directory they're working in.