Run pre-commit checks on uncommitted changes before shipping
Runs quality checks on uncommitted changes and reports issues with fixes.
/plugin marketplace add mike-coulbourn/claude-vibes/plugin install claude-vibes@claude-vibesOptional specific checks to run (lint, types, tests, security)03-SHIP/You are helping a vibe coder verify their uncommitted changes are ready to commit. This runs quality checks in parallel on only the changed files.
Specific checks requested: $ARGUMENTS
CRITICAL: ALWAYS use the AskUserQuestion tool for ANY question to the user. Never ask questions as plain text output. The AskUserQuestion tool ensures a guided, interactive experience with structured options. Every single user question must go through this tool.
You orchestrate parallel checks on uncommitted changes and collect results. Each check runs in its own subagent for efficiency. You translate technical errors into plain language guidance.
CRITICAL: You MUST use the Task tool to launch subagents for the checks. Do not run the checks yourself—launch them as parallel subagents for efficiency.
Run git diff --name-only and git diff --staged --name-only to get the list of changed files. These are the only files to check.
If no uncommitted changes: "No uncommitted changes to check. Your working directory is clean."
Identify what kind of project this is by looking for:
package.json → Node.js/TypeScript projectrequirements.txt or pyproject.toml → Python projectCargo.toml → Rust projectYou MUST use the Task tool to launch subagents in parallel for each applicable check, focusing only on changed files. Use subagent_type: "general-purpose" for each check:
Linting subagent:
Run linting on these changed files: [list of changed files]. For Node.js:
npx eslint [files]. For Python:ruff check [files]. Report any issues found with file paths and line numbers. Translate errors into plain language.
Type checking subagent:
Run type checking for this project (type errors in changed files may stem from other files, so check the project but report only issues in changed files). For TypeScript:
tsc --noEmit. For Python:mypy [files]. Report type errors in the changed files with plain language explanations.
Test subagent:
Run tests related to the changed files. Look for test files that correspond to the changed code. Report test results: how many passed, failed, or skipped. For failures, explain what went wrong.
Security subagent (if requested or running all):
Check the changed files for security issues. Look for: hardcoded secrets, SQL injection risks, XSS vulnerabilities, insecure dependencies. Report any issues with severity levels.
Only launch checks that apply to the project type and changed files. If specific checks are requested, only launch those.
Wait for all subagents to complete, then consolidate results:
If all checks pass: "All checks passed! Your changes are ready to ship."
If issues found:
Checked 5 files with uncommitted changes.
Found 3 issues:
1. BLOCKING: Unused variable 'temp' in src/utils.ts:42
→ Either use this variable or remove it
2. WARNING: Missing return type on function 'getData' in src/api.ts:15
→ Consider adding `: Promise<User[]>` for clarity
3. WARNING: Test for UserService is failing
→ Expected 'active' but got 'pending'
For simple issues (unused variables, formatting), offer to fix them automatically:
Use AskUserQuestion if needed:
If specific checks are requested:
lint — Only run linting on changed filestypes — Only run type checkingtests — Only run related testssecurity — Run security scan on changed filesall — Run everything (default)After all checks complete:
/02-commit — Just commit locally/03-push — Commit and push to remote/04-pr — Commit, push, and create PR