Skip to content
Back to skills

Gitignore Hygiene

ASecurity

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.

  • 666 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added February 8, 2026
developmenttypescriptpythonrustgobashnextjsnodetestinggit

Works with

  • vscode
  • terminal

Security analysis

A100/100

Scanned February 12, 2026

npx -y skills add majiayu000/claude-skill-registry --skill gitignore-hygiene --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Gitignore Hygiene?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Gitignore Hygiene
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/majiayu000-gitignore-hygiene/badge)](https://www.skillsdirectory.com/skills/majiayu000-gitignore-hygiene)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: gitignore-hygiene
description: |
  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.
category: development
user-invocable: true
---

# 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:

```bash
# 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:**
```gitignore
node_modules/
dist/
.turbo/
```

**Svelte / SvelteKit:**
```gitignore
.svelte-kit/
build/
```

**Next.js:**
```gitignore
.next/
out/
```

**Python:**
```gitignore
__pycache__/
*.pyc
.venv/
.pytest_cache/
```

**Rust:**
```gitignore
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:**
```bash
echo "coverage/" >> .gitignore
echo "test-results/" >> .gitignore
```

**Remove cached files:**
```bash
git rm -r --cached coverage/
git rm -r --cached test-results/
```

**Commit the cleanup:**
```bash
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:

```gitignore
# OS files
.DS_Store
Thumbs.db

# IDE
.idea/
.vscode/
*.swp
*.swo

# Environment
.env
.env.local
.env.*.local

# Logs
*.log
```

### Language-Specific

**Node.js:**
```gitignore
node_modules/
.pnpm-store/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
```

**TypeScript:**
```gitignore
dist/
*.tsbuildinfo
```

**Testing:**
```gitignore
coverage/
.nyc_output/
test-results/
playwright-report/
```

### Framework-Specific

**SvelteKit:**
```gitignore
.svelte-kit/
build/
```

**Next.js:**
```gitignore
.next/
out/
```

**Vite:**
```gitignore
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

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.