git-maintain

v2026.09.24

Repo maintenance — incremental repack, gc, branch pruning, stash cleanup, fsck. Use when asked to clean up the repo, run git maintenance/gc, delete merged branches, prune stashes, or shrink .git.

GitHub
Install command
npx skhub add laurigates/git-maintain
Markdown
SKILL.md

When to Use This Skill

Use this skill when...Use the alternative when...
Running git gc, repacking objects, or shrinking the .git directoryUse git-coworker-check first if other agents may be writing to the same checkout
Pruning merged local branches and old stashesUse git-cli-agentic for read-only branch/stash queries without mutating state
Verifying repo integrity with git fsckUse git-security-checks for secret scanning rather than object integrity
Cleaning up a checkout before a long-lived feature branch goes staleUse git-rebase-patterns to clean up commit history rather than the object store

Context

  • Current branch: !git branch --show-current
  • Git status: !git status --porcelain=v2 --branch
  • Local branches: !git branch -vv --format='%(refname:short) %(upstream:short) %(upstream:track)'
  • Stash list: !git stash list
  • Repository size: !du -sh .git

Parameters

Parse these parameters from the command (all optional):

  • --prune: Remove unreachable objects and run an incremental geometric repack
  • --gc: Force a full git gc consolidation (only when a repo has degraded badly — prefer the incremental repack)
  • --background: Register the repo for hourly background maintenance (git maintenance start) instead of a blocking one-shot pass
  • --verify: Verify integrity of git objects
  • --branches: Clean up merged branches only
  • --stash: Clean up stashes only
  • --all: Run all maintenance tasks (default if no flags specified)

Your task

Perform repository maintenance and cleanup based on the flags provided.

Step 1: Check for accidentally committed files

  • Environment files, IDE files, dependencies, build artifacts, secrets
  • Suggest adding to .gitignore and removing with git rm --cached

Step 2: Update .gitignore

  • Suggest common patterns if missing
  • Offer to append missing patterns

Step 3: Delete merged branches (if --branches or --all)

  • List and clean branches merged via GitHub PR
  • Protect main, master, develop, staging, production
  • Delete local branches safely with git branch -d
  • Require user confirmation before deleting branches

Step 4: Clean up redundant stashes (if --stash or --all)

  • Show stash ages and context
  • Suggest cleanup for old stashes (>30 days)
  • Drop stashes from deleted branches
  • Require user confirmation before dropping stashes

Step 5: Repository optimization (if --prune, --gc, --background, or --all)

Prefer incremental maintenance over gc --aggressive. Modern Git (2.31+) replaced the blocking, rewrite-everything git gc --aggressive pass with git maintenance and geometric repacking, which organizes packfiles in logarithmic layers by object count. Geometric repacking is the default for manual maintenance in recent Git (2.52+) and avoids the destructive, time-consuming "all-in-one" repack. Default to it.

# Incremental geometric repack — logarithmic pack layering + on-disk
# multi-pack index; far cheaper than `gc --aggressive`, safe to run often
git repack --geometric=2 -d --write-midx

# Prune unreachable objects older than the default grace window
git prune --expire=2.weeks.ago

# Show size improvement
du -sh .git

For hands-off upkeep (--background), register the repo so Git quietly pre-fetches, optimizes the commit-graph, and repacks loose objects on a schedule instead of blocking on a manual pass:

# Register hourly background maintenance (one-time, per repo)
git maintenance start

# Or run the standard task set once, on demand (non-blocking, incremental)
git maintenance run --task=commit-graph --task=incremental-repack --task=loose-objects

Reserve a full git gc for a repo that has genuinely degraded (only with --gc); skip --aggressive unless a one-off deep repack is explicitly needed:

# Full consolidation — only when --gc is requested and the repo is degraded
git gc

Step 6: Verify repository integrity (if --verify or --all)

git fsck --full --strict

Report any issues found.

Step 7: Final summary

  • Report all actions taken
  • Show before/after metrics

Safe Operations

These operations are safe and non-destructive:

  • git repack --geometric=2 -d --write-midx - Incremental geometric repack (preferred)
  • git maintenance run / git maintenance start - Incremental background upkeep
  • git gc - Full garbage collection (reserve for degraded repos)
  • git prune - Prune unreachable objects
  • git fsck - Verify integrity

These require user confirmation:

  • git branch -d - Delete branches
  • git stash drop - Drop stashes

Agentic Optimizations

ContextCommand
Routine optimizegit repack --geometric=2 -d --write-midx
Hands-off upkeepgit maintenance start
One-shot incremental passgit maintenance run --task=incremental-repack --task=commit-graph
Integrity checkgit fsck --full --strict
Size before/afterdu -sh .git

See Also

  • git-branch-pr-workflow skill for branch management patterns
Discovery
Tags

No tags published for this skill.

Version
Latest version metadata

Version

v2026.09.24

Published

Sep 24, 2026

Category

Uncategorized

License

MIT

Source path

git-plugin/skills/git-maintain

Default branch

main

Latest commit

1668324

Tree SHA

b2d4cc3