Installs into .claude/skills of the current project.
Are you the author of Vibe Pre Commit Audit?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/ash1794-vibe-pre-commit-audit)
---
name: vibe-pre-commit-audit
description: Scans staged changes for secrets, debug statements, TODOs without references, and other common commit mistakes. Use before creating any commit.
user-invocable: true
---
# vibe-pre-commit-audit
Catch the easy mistakes before they enter history.
## When to Use This Skill
- Before creating a git commit
- When reviewing your own staged changes
- Before pushing to a shared branch
## When NOT to Use This Skill
- Commits to personal scratch branches
- When the user explicitly says to skip checks
- Auto-generated code commits (lock files, etc.)
- Private or draft content leaking through built output (use `vibe-publication-leak-guard`)
## Tools First, Eyeballing Second
Pattern-matching a diff by eye misses things that a deterministic scanner catches. Before the manual checks:
1. **Run what the repo already has** — `pre-commit run`, `lefthook`, `husky`, or a lint/`check` script. Check `.pre-commit-config.yaml`, `package.json`, and the `Makefile`.
2. **Run a secret scanner** if one is installed (`gitleaks protect --staged`, `trufflehog git file://. --since-commit HEAD`) or `vibe-cli pre-commit` from this repo.
3. **If nothing is set up**, suggest adding one (for example `vibe-cli hook install`, or a gitleaks pre-commit hook), then fall back to the manual checks below.
Tool findings are blocking. The manual checks cover what the tools don't.
## Checks
### 1. Secrets & Credentials
Scan for patterns:
- `API_KEY=`, `SECRET=`, `PASSWORD=`, `TOKEN=`
- AWS keys: `AKIA[0-9A-Z]{16}`
- Private keys: `-----BEGIN.*PRIVATE KEY-----`
- Connection strings with credentials
- `.env` files being staged
### 2. Debug Statements
- `console.log(`, `fmt.Println(`, `print(`, `debugger;`
- `// DEBUG`, `# DEBUG`, `/* DEBUG`
- `log.Debug` in non-debug code paths
### 3. TODOs Without References
- `TODO` without issue number: `TODO: fix this` (bad)
- `TODO(#123): fix this` (good)
- `FIXME`, `HACK`, `XXX` — flag all
### 4. Disabled Tests
- `t.Skip(`, `xit(`, `xdescribe(`, `@pytest.mark.skip`
- Commented-out test functions
- `//nolint` without justification
### 5. Large Files
- Files > 1MB
- Binary files (images, compiled assets)
- Lock files with excessive changes
### 6. Commented-Out Code
- Blocks of 3+ consecutive commented-out lines of code
- Not comments explaining code, but actual code that's commented out
## Output Format
### Pre-Commit Audit
**Status**: CLEAN / WARNINGS / BLOCKED
**Tools run**: [e.g., `pre-commit run`, `gitleaks protect --staged`, or "none configured"]
| Check | Status | Findings |
|-------|--------|----------|
| Scanner / hooks | ✓/✗/n/a | X findings |
| Secrets | ✓/✗ | X patterns found |
| Debug statements | ✓/✗ | X occurrences |
| TODOs | ✓/◐ | X without references |
| Disabled tests | ✓/✗ | X found |
| Large files | ✓/✗ | X over limit |
| Commented code | ✓/◐ | X blocks |
### Blocking Issues (must fix)
1. [Secret found in file.go:42]
### Warnings (should fix)
1. [TODO without reference in handler.ts:15]