Skip to main content

Command menu

Jump to a page or search the catalog

AI Tools & Scripts

Repo Hygiene Check

Check a repository before you push or publish it: merge conflict markers, files over GitHub's 100 MiB limit, CRLF shell scripts, names that break clones on Windows and macOS, and keys, env files and dumps that git still tracks.

$5.00

What you get: 1 file · 48.07 KB · ZIP

See purchase options

Product description

A push fails because a 120 MiB model file slipped into the last commit. A teammate on Windows clones the repository and git stops with "invalid path 'lib/aux.js'". A container exits with "exec /entrypoint.sh: no such file or directory" because the script was committed with CRLF line endings. A .env file that .gitignore lists was committed before the rule existed, and every fork still gets it. This skill finds those and the other repository hygiene mistakes below, and tells you how to fix each one.

Your agent runs a scanner on the repository folder. It walks every file except vendored and generated folders (node_modules, vendor, dist, build, .venv and the like), nested repositories and the files .gitignore ignores, and it reads .git/index directly, without running git, to learn which paths git tracks and how big they are. That is how it sees two names that differ only by case, or a Windows-reserved name, even on a Windows or macOS checkout where those files cannot exist on disk, and how it tells a script git stores with CRLF (a real problem) from one that only this Windows checkout has with CRLF because of core.autocrlf (a local one). It follows .gitattributes (text, eol, filter=lfs, conflict-marker-size) and .git/info/exclude. It never runs git or the project's code and never uses the network. It returns BLOCK, REVIEW, or NOT FLAGGED, with the file, line, reason, and a safer approach. File contents and secret values are never printed.

What it checks

BLOCK (fix before shipping)

  • R01: merge conflicts left in files (<<<<<<<, =======, >>>>>>>), not heading underlines or examples in Markdown code fences
  • R02: files over 100 MiB that are not stored with Git LFS
  • R03: CRLF line endings in shell scripts, shell startup files, sh/bash/node #! files and extensionless #! files (bin/deploy, git hooks) when git stores them that way, .gitattributes sets eol=crlf, or there is no .git/index to compare with
  • R04: paths that differ only by case or Unicode normalization, or a file named like a folder in another case (the finding says a project never checked out on Windows or macOS can keep them)
  • R05: names Windows cannot create: CON, PRN, AUX, NUL, COM1-9, LPT1-9 (also aux.js, nul.txt), < > : " | ? * \ and control characters, names ending in a space or a period
  • R06: credential files git tracks: SSH private keys, .ppk, .p12, .pfx, .jks, .keystore, .kdbx, AuthKey_*.p8, PEM private keys, service-account JSON keys, .git-credentials, .netrc, terraform.tfstate, and env files with secret values that are named .local or ignored by .gitignore (in test folders, see R22)

REVIEW (check before release)

  • R11: files over 50 MiB that are not stored with Git LFS
  • R12: mixed CRLF and LF line endings with no .gitattributes rule for the file
  • R13: a UTF-8 byte order mark in JSON, PHP, shell scripts and #! files
  • R14: paths over 200 characters from the repository root, or names over 255 bytes
  • R15: symlinks that point outside the repository
  • R16: .sh files without a #! line on line 1
  • R17: .orig, .rej and merge-tool _BASE_/_LOCAL_/_REMOTE_/_BACKUP_ leftovers
  • R18: database dumps and local databases git tracks (.sql.gz, .dump, dump.sql, dump.rdb, .bson, .sqlite3, .mdf)
  • R19: files git tracks although .gitignore or .git/info/exclude ignores them (one finding per ignored folder)
  • R20: a LICENSE file but no SECURITY.md in the root, docs/ or .github/
  • R21: shell scripts with CRLF only in this checkout: git stores them with LF (core.autocrlf=true on Windows), so the push and Linux CI are fine but WSL and Docker builds from the folder are not
  • R22: test keys and key stores in test, spec and fixtures folders, and trust stores (truststore.jks, cacerts): confirm they are not used anywhere real

What's included

  • The scanner (Python 3.9+, standard library only), with a reader for git's index format (versions 2, 3 and 4, SHA-1 and SHA-256 repositories, split indexes, linked worktrees)
  • A rules guide with the reason, safer approach and official source for each rule
  • A risky and a safe example project, and the real report the scanner produces on the risky one (the example shows six of the rules; the others need things a ZIP cannot carry, such as a 100 MiB file, a symlink or a .git folder)

Limits

It reads the files as they are now and the list of tracked paths in .git/index. Git history, other branches and stored objects are not read, so a file deleted in a later commit but still in history is not found. Without a .git folder (a downloaded source archive) the rules about tracked files (R06, R18, R19, R22) do not run, and a CRLF script is reported as R03 because the committed copy cannot be compared. A global excludes file, global attributes and file modes such as the executable bit are not checked. It does not search file text for secrets. NOT FLAGGED is not a guarantee.

Contents

One ZIP file with 28 files: SKILL.md, the scanner in scripts/ (8 Python files), references/rules.md (every rule with its reason and safer approach), and examples/ (19 example files plus report.md, the real scanner output on the risky example).

How to use: This is an agent skill: a folder with a SKILL.md file and Python scripts that an AI coding agent such as Claude Code, Cursor, or Codex CLI can run. Unzip it into your agent's skills folder (for Claude Code: ~/.claude/skills/), then ask your agent to check your project. The scripts also run on their own with Python 3.9 or newer, with nothing to install. They read your files only: no network access, and nothing is sent anywhere.

What you get

1 file · 48.07 KB

  • repo-hygiene-check-1.0.0.zipZIP · 48.07 KB
LicenseCommercial use allowed
Package checkPassed

Getly opened the uploaded files and found nothing that would stop them opening. It is not a virus scan or a quality rating.

PublishedNov 12, 2026
File size48.07 KB
File formatZIP
Versionv1.0

Tags

gitrepositoryhygieneline-endingsdevopsai agent skill
R
RR HH

Frequently asked questions

Do I get access instantly?

Yes. This is a digital product - you can download it right after checkout, straight from your library.

Can I use it for commercial projects?

Yes. Commercial use is allowed: use it in your own business and in things you sell. You may not resell or redistribute the file itself.

What's your refund policy?

You can request a refund within 30 days. If something isn't right, request it from your order and the Getly team reviews it.

What file formats and sizes will I get?

You'll download 1 file - ZIP - 48.07 KB in total.

Do I get free updates?

Yes - when the seller ships a new version, you can re-download the latest files from your library at no extra cost. Check the changelog for recent updates.

Price

$5.00