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
npx -y skills add POSTTTT/SKILLs --skill pre-pushAssembled 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
gitignoreskill (which writes ignore rules) orsecurity-audit(deep OWASP review). When this gate finds a rules gap or wants depth, it defers: "Your.gitignoreis missing X — want me to run thegitignoreskill?" 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.gitignorecan'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/.pypircwith tokens. - Check both: is the secret file tracked (
git ls-files)? Is a secret hardcoded in committed source? Either is a blocker even if.gitignorelists 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.logdumps,debugger,print()debugging,TODO/FIXMEthat 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
gitignoreskill.
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) orsecurity-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 --cachedrather 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
gitignoreandsecurity-auditfor fixes/depth.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.