From odin
Initializes or revises a repo's .gitignore by composing templates from gitignore.io, AI/IDE patterns, and confirmed untracked files from git status.
How this skill is triggered — by the user, by Claude, or both
Slash command
/odin:setup-gitignoreThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Initialize or idempotently revise the current repo's `.gitignore` — never the global excludesfile.
Initialize or idempotently revise the current repo's .gitignore — never the global excludesfile.
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.
references/AI-TOOLING.mdreferences/IDE-EDITOR.mdgit status, confirmed interactivelygit rev-parse --show-toplevel
Abort with a clear error if not inside a git repo.
Read references/LANGUAGE-DETECTION.md for the manifest → gitignore.io key table. Scan manifests:
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).
If .gitignore exists, snapshot it before any modification:
cp .gitignore /tmp/gitignore-snapshot-$(date +%s).bak
git status -s -uall | rg '^\?\?' | rg -v '^\?\? \.gitignore'
Cluster untracked paths by top-level directory or extension. Present clusters to the user and wait for explicit confirmation. Do not add any empirical pattern without confirmation.
Run scripts/compose-gitignore.sh <csv> to fetch and merge gitignore.io templates. If the network call fails, tell the user and ask whether to continue with bundled-only mode.
Append the bundled blocks after the API output in order:
# === AI TOOLING ===
<contents of references/AI-TOOLING.md>
# === IDE / EDITOR ===
<contents of references/IDE-EDITOR.md>
# === EMPIRICAL ===
<user-confirmed patterns, one per line>
.gitignore: write the composed output directly..gitignore: merge each # === SECTION === block idempotently — patterns already present in the file are deduplicated (first occurrence wins). Preserve all user content outside section headers. Show the full diff via difft; write only after user confirms.git status -s -uall | rg '^\?\?' | wc -l
Report untracked count before and after. List any paths still untracked so the user can decide whether to add further patterns.
Re-running the skill on a repo where the skill already ran produces no diff. Section headers act as stable merge anchors. User content outside sections is never modified.
npx claudepluginhub outlinedriven/odin-claude-plugin --plugin odinCreates or updates .gitignore using git-agent AI, preserving custom rules, handling auth errors with free retry, and showing diff. For initializing or adding ignore rules.
Initializes .gitignore with exclusion patterns based on detected project technologies via file globs for Node.js, Python, Go, Rust, Java, Docker, Next.js, and more. Use for new repos to exclude artifacts.
Detects single-project or monorepo structure, creates .groundwork.yml config for monorepos, updates .gitignore, and persists project selection for Groundwork.