Agent skill
gitignore-hygiene
Automatic gitignore maintenance and cleanup. Use when: (1) after commits, (2) new file types appear in project, (3) build artifacts get committed, (4) before pushing to remote. Scans for unwanted files and suggests gitignore additions.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/gitignore-hygiene
SKILL.md
Gitignore Hygiene
Maintains gitignore patterns and cleans cached files from git tracking.
Trigger Conditions
Invoke when:
- After making commits
- New file types appear (build artifacts, logs)
- Before pushing to remote
- User says "check gitignore", "clean git"
Also invoke explicitly with:
/gitignore-hygiene- "clean up gitignore"
- "check for unwanted files"
Procedure
Step 1: Scan for Unwanted Files
Check for common patterns that should be ignored:
# Check for tracked files that should be ignored
git ls-files | grep -E '\.(log|env|pem|key)$'
git ls-files | grep -E '^(node_modules|dist|build|coverage)/'
Step 2: Check Current Gitignore
Read .gitignore and identify missing patterns:
| Category | Patterns to Check |
|---|---|
| Dependencies | node_modules/, .pnpm-store/, vendor/ |
| Build | dist/, build/, .svelte-kit/, .next/, .nuxt/ |
| Test | coverage/, test-results/, playwright-report/ |
| IDE | .idea/, .vscode/, *.swp |
| OS | .DS_Store, Thumbs.db |
| Environment | .env, .env.local, .env.*.local |
| Logs | .log, npm-debug.log |
| Cache | .cache/, .turbo/, .eslintcache |
| Credentials | *.pem, *.key, credentials.json |
Step 3: Detect Project Type
Adjust patterns based on detected stack:
Node.js / TypeScript:
node_modules/
dist/
.turbo/
Svelte / SvelteKit:
.svelte-kit/
build/
Next.js:
.next/
out/
Python:
__pycache__/
*.pyc
.venv/
.pytest_cache/
Rust:
target/
Cargo.lock # for libraries
Step 4: Report Findings
If issues found:
Gitignore hygiene check:
Missing patterns:
+ coverage/ (test artifacts)
+ playwright-report/ (test artifacts)
+ .turbo/ (cache)
Tracked files that should be ignored:
- coverage/lcov.info
- test-results/results.xml
Recommended actions:
1. Add missing patterns to .gitignore
2. Remove cached files from tracking
Run: git rm -r --cached coverage/ test-results/
If no issues:
Gitignore hygiene check: All clear
No unwanted files tracked.
All common patterns present.
Step 5: Apply Fixes (With Confirmation)
Add missing patterns:
echo "coverage/" >> .gitignore
echo "test-results/" >> .gitignore
Remove cached files:
git rm -r --cached coverage/
git rm -r --cached test-results/
Commit the cleanup:
git add .gitignore
git commit -m "chore: update gitignore patterns
Added:
- coverage/
- test-results/
- playwright-report/
Removed from tracking:
- coverage/lcov.info
- test-results/results.xml
Co-Authored-By: Claude <noreply@anthropic.com>"
Pattern Categories
Always Include
These patterns should be in every project:
# OS files
.DS_Store
Thumbs.db
# IDE
.idea/
.vscode/
*.swp
*.swo
# Environment
.env
.env.local
.env.*.local
# Logs
*.log
Language-Specific
Node.js:
node_modules/
.pnpm-store/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
TypeScript:
dist/
*.tsbuildinfo
Testing:
coverage/
.nyc_output/
test-results/
playwright-report/
Framework-Specific
SvelteKit:
.svelte-kit/
build/
Next.js:
.next/
out/
Vite:
dist/
.vite/
Dangerous Patterns
Never ignore these (warn if present):
| Pattern | Risk |
|---|---|
src/ |
Ignoring source code |
*.ts |
Ignoring all TypeScript |
package.json |
Ignoring manifest |
.gitignore |
Recursive ignore |
Skill Chaining
After Commits
Run hygiene check after commits to catch:
- Accidentally committed build artifacts
- Missing patterns for new file types
Before Push
Run hygiene check before pushing:
- Ensure no credentials are tracked
- Verify build artifacts are ignored
With project-init
project-init creates comprehensive .gitignore. This skill maintains it over time.
Terminal Chain
After any commit session: repo-hygiene (final cleanup)
Rationalizations (Do Not Skip)
| Rationalization | Why It's Wrong | Required Action |
|---|---|---|
| "Just one file" | One file becomes many | Add pattern |
| "I'll clean later" | Later is never | Clean now |
| "It's not sensitive" | Build artifacts bloat repo | Remove from tracking |
| "Gitignore is fine" | Projects evolve | Verify regularly |
Example Session
/gitignore-hygiene
Scanning project...
Found issues:
1. Missing patterns:
+ .turbo/ (detected turbo usage)
+ playwright-report/ (detected playwright)
2. Tracked files to remove:
- .turbo/cache/abc123
- playwright-report/index.html
Actions:
[1] Add patterns to .gitignore
[2] Remove cached files
[3] Skip
> 1
Updated .gitignore with:
+ .turbo/
+ playwright-report/
> 2
Removed from tracking:
- .turbo/cache/ (42 files)
- playwright-report/ (15 files)
Ready to commit? [y/n]
Notes
- Never modifies .git directory
- Preserves existing .gitignore structure
- Warns about potentially dangerous patterns
- Creates backup before modifying
- Works with both root and package gitignores in monorepos
Didn't find tool you were looking for?