Skill metadata
Reference: full SKILL.md
The following is the complete skill definition that Mibyan loads when this skill is triggered. This is what the agent sees as instructions when the skill is active.
Pre-Commit Code Verification
Automated verification pipeline before code lands. Static scans, baseline-aware quality gates, an independent reviewer subagent, and an auto-fix loop. Core principle: No agent should verify its own work. Fresh context finds what you miss.When to Use
- After implementing a feature or bug fix, before
git commitorgit push - When user says “commit”, “push”, “ship”, “done”, “verify”, or “review before merge”
- After completing a task with 2+ file edits in a git repo
- After each task in subagent-driven-development (the two-stage review)
github reviews OTHER people’s PRs on GitHub with inline comments.
Step 1 — Get the diff
git diff then git diff HEAD~1 HEAD.
If git diff --cached is empty but git diff shows changes, tell the user to
git add <files> first. If still empty, run git status — nothing to verify.
If the diff exceeds 15,000 characters, split by file:
Step 2 — Static security scan
Scan added lines only. Any match is a security concern fed into Step 5.Step 3 — Baseline tests and linting
Detect the project language and run the appropriate tools. Capture the failure count BEFORE your changes as baseline_failures (stash changes, run, pop). Only NEW failures introduced by your changes block the commit. Test frameworks (auto-detect by project files):Step 4 — Self-review checklist
Quick scan before dispatching the reviewer:- No hardcoded secrets, API keys, or credentials
- Input validation on user-provided data
- SQL queries use parameterized statements
- File operations validate paths (no traversal)
- External calls have error handling (try/catch)
- No debug print/console.log left behind
- No commented-out code
- New code has tests (if test suite exists)
Step 5 — Independent reviewer subagent
Interactive sessions only. In a one-shot run (mibyan chat -q, --oneshot, a
benchmark harness) there is no one to hand the verdict to and a fresh subagent re-pays
the whole system prompt plus a repo re-read: skip Steps 5 and 7, apply the Step 4
checklist to the diff yourself, run the tests, and go to Step 8.
Call delegate_task directly — it is NOT available inside execute_code or scripts.
The reviewer gets ONLY the diff and static scan results. No shared context with
the implementer. Fail-closed: unparseable response = fail.
Step 6 — Evaluate results
Combine results from Steps 2, 3, and 5. All passed: Proceed to Step 8 (commit). Any failures: Report what failed, then proceed to Step 7 (auto-fix).Step 7 — Auto-fix loop
Maximum 2 fix-and-reverify cycles. Interactive sessions only (see Step 5). Spawn a THIRD agent context — not you (the implementer), not the reviewer. It fixes ONLY the reported issues:- Passed: proceed to Step 8
- Failed and attempts < 2: repeat Step 7
- Failed after 2 attempts: escalate to user with the remaining issues and
suggest
git stashorgit resetto undo
Step 8 — Commit
If verification passed:[verified] prefix indicates an independent reviewer approved this change.
Reference: Common Patterns to Flag
Python
JavaScript
Integration with Other Skills
subagent-driven-development: Run this after EACH task as the quality gate. The two-stage review (spec compliance + code quality) uses this pipeline. test-driven-development: This pipeline verifies TDD discipline was followed — tests exist, tests pass, no regressions. plan: Validates implementation matches the plan requirements.Pitfalls
- Empty diff — check
git status, tell user nothing to verify - Not a git repo — skip and tell user
- Large diff (>15k chars) — split by file, review each separately
- delegate_task returns non-JSON — retry once with stricter prompt, then treat as FAIL
- False positives — if reviewer flags something intentional, note it in fix prompt
- No test framework found — skip regression check, reviewer verdict still runs
- Lint tools not installed — skip that check silently, don’t fail
- Auto-fix introduces new issues — counts as a new failure, cycle continues

