4meta5

gitignore-hygiene

0
0
# Install this skill:
npx skills add 4meta5/skills --skill "gitignore-hygiene"

Install specific skill from multi-skill repository

# Description

|

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

# 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 <[email protected]>"

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

# Supported AI Coding Agents

This skill is compatible with the SKILL.md standard and works with all major AI coding agents:

Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.