agentsclimarketplace

Pre push

Skill POSTTTT/SKILLs/.claude/skills/pre-push

Pre-flight safety gate that checks whether the project is actually safe to commit/push to GitHub (or any remote) RIGHT NOW. Use when the user asks "is this ready to push?", "can I commit this?", "check before I push", "did I leave any secrets in", "ready for GitHub?". Inspects the real git state — staged diff, tracked files, source, and history — for secrets/API keys, .env/.venv being tracked, PII, leftover debug/conflict markers, and .gitignore gaps. Read-only; reports a clear ready/blockers verdict and defers to the gitignore and security-audit skills for fixes.From its SKILL.md

Install
npx -y skills add POSTTTT/SKILLs --skill pre-push

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

3 things to look at

  • reads credentialsReads from 4 credential sources: `.env` and 3 more.
  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
  • runs commandsInstructs the agent to run 4 commands, including `git status --porcelain` and 3 more.

SKILL.md

5.2 KB, ~1.3k tokens by cl100k_base, as published. Nobody here has run it

Pre-Push Readiness Gate

Answer one question: "If I push right now, will I regret it?" This is a fast, focused pre-flight check of what is actually about to be published — not a deep code review. Run read-only, then give a clear verdict.

Key principle: a file being in .gitignore does NOT mean it's safe. .gitignore only affects untracked files. A secret that was committed before being ignored, a key hardcoded in source, or a secret in history will still push. This gate checks reality (git state), not just the rules.

What this skill is (and isn't)

  • It is a gate: a quick checklist run right before commit/push.
  • It is not the gitignore skill (which writes ignore rules) or security-audit (deep OWASP review). When this gate finds a rules gap or wants depth, it defers: "Your .gitignore is missing X — want me to run the gitignore skill?" Skills can't call each other programmatically, so recommend and let the user trigger them.

Step 1 — Read the real git state

  • git status --porcelain — what's staged / modified / untracked.
  • git diff --cached — exactly what the next commit will contain.
  • git ls-files — what's already tracked (the stuff .gitignore can't save you from).
  • Current branch (git branch --show-current) and whether commits are ahead of remote.

Step 2 — Run the checklist

A. Secrets about to ship (highest priority)

Scan the staged diff, tracked files, AND source contents for:

  • API keys / tokens: api[_-]?key, secret, token, Bearer , AKIA[0-9A-Z]{16} (AWS), Google/Stripe/GitHub token shapes, high-entropy strings.
  • Private keys: -----BEGIN (RSA |EC |OPENSSH )?PRIVATE KEY-----.
  • Hardcoded passwords / connection strings (password=, mongodb://user:pass@).
  • Secret files being tracked: .env, .env.* (except .env.example), *.pem, *.key, credential JSON, .npmrc/.pypirc with tokens.
  • Check both: is the secret file tracked (git ls-files)? Is a secret hardcoded in committed source? Either is a blocker even if .gitignore lists the file.

B. Environment / dependency dirs being tracked

  • .venv/ venv/ env/ (Python), node_modules/, __pycache__/, build output (dist/, build/, .next/, target/). If tracked, that's bloat/leakage — flag it.

C. Personal / sensitive information (PII)

  • Real emails, full names, phone numbers, addresses, real customer data, internal hostnames/IPs in committed content. Distinguish placeholders from real data.

D. Repo hygiene

  • Leftover merge-conflict markers: <<<<<<<, =======, >>>>>>>.
  • Debug leftovers: console.log dumps, debugger, print() debugging, TODO/FIXME that block release, commented-out secrets.
  • Large/binary files that shouldn't be in git (consider Git LFS).
  • Empty or nonsense commit, or committing on the wrong branch (e.g. straight to main).

E. .gitignore sanity

  • Are .env, .venv, node_modules, build dirs ignored and not already tracked?
  • If rules are missing → defer to the gitignore skill.

Step 3 — Verdict

Give a clear, scannable result:

Pre-push check — <branch> — <date>

⛔ BLOCKERS (do not push)
  - [SECRET] AWS key hardcoded in src/config.js:12
  - [TRACKED] .env is tracked (git ls-files) — will publish DB password

⚠️  WARNINGS (review)
  - .venv/ is tracked (412 files) — bloat
  - Leftover console.log at src/app.js:88

✅ OK
  - No conflict markers, .gitignore covers build output

Verdict: NOT READY — 2 blockers.

Always end with the safe next actions, e.g.:

  • Untrack a committed file (keep it locally):
    git rm --cached .env && echo ".env" >> .gitignore
    
  • If a secret already reached a commit/history: removing it from tracking does NOT scrub history. Recommend rotating the secret immediately, and history rewrite (git filter-repo / BFG) if it must be purged.
  • Offer to run gitignore (fix rules) or security-audit (deep review) as follow-ups.

Rules

  • Read-only. Report the verdict; don't commit, push, or edit. Fix only what the user approves, and surface git rm --cached rather than running it silently.
  • Blocker vs warning: secrets/keys/PII about to publish = BLOCKER. Bloat, debug leftovers, style = WARNING. Be explicit which is which.
  • Don't echo full secret values — show the location and a masked snippet; the goal is to flag, not to reprint the secret.
  • Rotate, don't just delete: any secret that already reached a commit must be treated as compromised — say so.
  • Defer, don't duplicate: lean on gitignore and security-audit for fixes/depth.

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.