ignore
/ignore – Project-Aware .gitignore
Intent
This skill helps the agent create or update a .gitignore file based on the actual project layout and tech stack, instead of using a one-size-fits-all template.
Use it when:
- The user types
/ignore - The user asks to create, update, or audit a
.gitignore - A new project is initialized and no
.gitignoreexists yet
High-Level Workflow
- Discover project type and tools
- Decide which ignore templates apply
- Generate a
.gitignorecandidate - Safely merge with any existing
.gitignore - Show a short summary of what was added/changed
Keep changes minimal and reversible (back up existing .gitignore before modifying).
Step 1 – Discover Project Stack
Work from the repository root.
- Detect languages / frameworks (examples, not exhaustive):
- Node/JS/TS:
package.json,pnpm-lock.yaml,yarn.lock,node_modules/ - Python:
pyproject.toml,requirements.txt,.venv/,__pycache__/ - Go:
go.mod,go.sum - Rust:
Cargo.toml,Cargo.lock,target/ - Java / JVM:
pom.xml,build.gradle,.gradle/,*.iml - Frontend frameworks:
next.config.*,vite.config.*,webpack.config.*
- Node/JS/TS:
- Detect tools / editors:
- VS Code:
.vscode/ - JetBrains:
.idea/ - OS junk:
.DS_Store,Thumbs.db
- VS Code:
- Detect build / artifact directories:
dist/,build/,.turbo/,.next/,coverage/,out/,tmp/,logs/
You do not need to be perfect; detect the obvious signals and choose sensible defaults.
Step 2 – Choose Ignore Coverage
Based on discovery, decide which groups to include:
- Core OS / editor noise: macOS, Windows, IDEs
- Language / runtime specific: Node, Python, Go, Rust, etc.
- Tooling / build artifacts: bundlers, coverage, temporary directories
Prefer including too little over too much:
- Do not ignore lockfiles (
package-lock.json,pnpm-lock.yaml,yarn.lock,Cargo.lock, etc.). - Do not ignore source directories (
src/,app/, etc.). - Only ignore
env/.env.*if consistent with workspace conventions and security rules; never remove existing entries that intentionally ignore env files.
Step 3 – Generate .gitignore Content
Create an in-memory list of lines for the candidate .gitignore with small, focused sections.
Suggested structure (keep each section short):
# OS
.DS_Store
Thumbs.db
# Editors
.vscode/
.idea/
# Node
node_modules/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
# Build output
dist/
build/
coverage/
.next/
.turbo/
out/
# Environments
.env.local
.env.development.local
.env.test.local
.env.production.local
Add or remove sections depending on the detected stack (for non-Node projects, skip Node‑specific lines, etc.).
Step 4 – Merge with Existing .gitignore
When a .gitignore already exists:
- Read existing contents into a set of lines.
- Back up the file to
.gitignore.bakin the repository root before modifying. - For each candidate line:
- If the line is already present (exact string match, ignoring trailing whitespace), do nothing.
- If it is new, append it at the end in the appropriate section, preserving section comments as much as possible.
- Avoid deleting or rewriting user-defined patterns; never remove custom rules unless explicitly asked.
When no .gitignore exists:
- Create a new
.gitignorein the project root. - Write only the lines relevant to the detected stack and tools.
Step 5 – Report Back to the User
After writing the file, summarize:
- Created vs updated: whether
.gitignorewas new or modified. - Key sections added: e.g., “Node artifacts”, “macOS junk files”, “VS Code project settings”.
- Number of new patterns added.
Example summary:
Result: Updated existing
.gitignore(backed up to.gitignore.bak).
Added: Node build artifacts, macOS.DS_Store, VS Code workspace folder ignores.
Patterns added: 14 new entries.
Notes & Safety
- Be conservative when inferring what to ignore; it is better to under‑ignore and let the user add more entries than to hide important files.
- Never ignore the entire project directory,
.*generically, or critical configuration directories unless the repository already does so. - If the user asks to regenerate from scratch, confirm by backing up the existing
.gitignoreand clearly stating that you are replacing its contents.
More from discountry/ritmex-skills
use-ctx7
Fetch up-to-date library documentation via the ctx7 CLI. Use PROACTIVELY whenever any code change, feature design, or implementation or user request involves a project dependency — always query the matching version's docs first before writing code.
30codex-prompt-optimize
>
8slack
Control Slack via the `slack` CLI to read, search, and manage messages, threads, files, reactions, channels, DMs, and canvases. Trigger on requests involving Slack messages, threads, URLs, channel history, unread or recent DMs, or sending/replying to messages (English or Chinese queries mentioning Slack).
3debug
>
2refactor
>
2clickup
Use for ClickUp tasks and docs. Trigger on ClickUp URLs, task IDs, list IDs, doc IDs, page IDs, assignees, statuses, due dates, comments, checklists, and document workflows. Use the global `clickup` CLI.
2