setup-gitignorelisted
Install: claude install-skill OutlineDriven/odin-claude-plugin
Initialize or idempotently revise the current repo's `.gitignore` — never the global excludesfile.
## Scope
Per-repo only. Never read or write `~/.gitignore`, `~/.config/git/ignore`, or run `git config --global`. The user's global excludesfile handles cross-machine noise; this skill handles language/tool specifics for the current repo.
## Sources composed (in order)
1. **gitignore.io** — templates keyed by detected language/framework (requires network)
2. **AI tooling** — bundled patterns from `references/AI-TOOLING.md`
3. **IDE / editor** — bundled patterns from `references/IDE-EDITOR.md`
4. **Empirical** — untracked paths from `git status`, confirmed interactively
## Workflow
### 1. Detect repo root
```sh
git rev-parse --show-toplevel
```
Abort with a clear error if not inside a git repo.
### 2. Detect languages
Read `references/LANGUAGE-DETECTION.md` for the manifest → gitignore.io key table. Scan manifests:
```sh
fd --max-depth 2 -t f
```
Match filenames against the detection table; build a comma-separated key list (e.g., `rust,node,typescript`). If no manifests detected, use an empty key list (bundled blocks still apply).
### 3. Snapshot existing .gitignore
If `.gitignore` exists, snapshot it before any modification:
```sh
cp .gitignore /tmp/gitignore-snapshot-$(date +%s).bak
```
### 4. Surface empirical noise
```sh
git status -s -uall | rg '^\?\?' | rg -v '^\?\? \.gitignore'
```
Cluster untracked paths by top-level directory or extension. **Present clu