| name | pre-push-self-review |
| description | BEFORE every `git push`, run a systematic self-review on the diff against a checklist of the recurring footguns Copilot has flagged in this codebase. The goal is to catch issues that would otherwise consume Copilot review cycles. Trigger BEFORE typing `git push`, after `git commit`, when about to open a PR with `gh pr create`, when running the local test gate, or when the user asks to "review my changes" / "lint diff" / "check diff". |
Pre-push self-review checklist — MANDATORY
Why this skill exists
Copilot (the GitHub PR reviewer) is excellent at catching footguns the
agent missed. But every Copilot review cycle costs minutes of waiting
and a CI run, and signals to the reviewer that the agent's first pass
was sloppy. The agent must catch these issues itself before pushing.
This skill codifies the recurring failure patterns Copilot has flagged
on Padosoft / lopadova repos. Running through the checklist before
every push has two effects:
- The push goes in clean (Copilot says "0 comments generated") on the
first or second round, not the fifth.
- The agent gets faster over time because the checklist becomes
internalised.
When to invoke
Before git push to a PR branch. The flow:
git add → git commit → [INVOKE THIS SKILL → check the diff against the checklist] → git push
If any item fails, fix it, amend or add a commit, and re-run the
checklist before pushing.
The checklist
Read the diff with git diff HEAD~1..HEAD (or git diff --staged if
not yet committed) and walk through every item below.
A — Type safety on user input
B — Env-var lookup
C — Defaults and precedence
D — Markdown / GitHub rendering
E — Test assertions
F — Reflection on final classes
G — Quality gates
Before pushing run the full local quality gate the repo ships:
If any of these is red, do NOT push. Fix locally first.
H — Diff hygiene
I — Recurring footguns specific to this codebase
Anti-patterns
- ❌ Pushing first, fixing what Copilot finds. The agent must catch
these issues in the first round.
- ❌ Treating "PHPUnit green" as sufficient. PHPUnit will not catch a
bare
(int) cast on a non-numeric env var until the env var is
actually misconfigured in production.
- ❌ "Copilot will tell me if there's a problem." Copilot is the
safety net, not the first line of defence. Each Copilot iteration
costs CI time, reviewer attention, and confidence.
Application example
The reference moment for this rule is padosoft/laravel-ai-regolo
PR #7 (Apr 2026). Five Copilot review rounds were spent on issues
that this checklist would have caught at round one:
| Round | Issue | Checklist item that catches it |
|---|
| 1 | 47 / 100 assertions outdated count | C — docblock matches code |
| 2 | gh pr push not a real CLI | C — docblock matches code |
| 3 | Anchor #-ai-vibe-coding-pack-included | D — emoji heading slug |
| 4 | Http::timeout(0) from (int) cast | A — type safety on user input |
| 5 | embeddingsDimensions() same (int) cast | A — type safety on user input |
After this skill ships, the equivalent Round 1 should generate 0–1
Copilot must-fix comments instead of 5–6.
Maintenance
When Copilot flags a new recurring footgun on any Padosoft / lopadova
repo, append it to the relevant section of this checklist in a follow-
up PR. The checklist grows by experience.