skills/mav-local-verification/SKILL.md
Pre-push code quality verification — lint, typecheck, and tests run locally before pushing. Covers discovering project verification commands, run order, scope-appropriate checks, and fixing failures. Used as a dependency from workflow skills.
npx skillsauth add thermiteau/maverick mav-local-verificationInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Run lint, typecheck, and tests locally before every push. Never push code that fails local checks.
--no-verify with git commandsdigraph verify {
"Ready to push?" [shape=diamond];
"Discover verification commands" [shape=box];
"Run lint" [shape=box];
"Lint passes?" [shape=diamond];
"Fix lint issues" [shape=box];
"Run typecheck" [shape=box];
"Typecheck passes?" [shape=diamond];
"Fix type errors" [shape=box];
"Run tests" [shape=box];
"Tests pass?" [shape=diamond];
"Fix failing tests" [shape=box];
"Push to remote" [shape=box];
"Ready to push?" -> "Discover verification commands" [label="yes"];
"Discover verification commands" -> "Run lint";
"Run lint" -> "Lint passes?";
"Lint passes?" -> "Run typecheck" [label="yes"];
"Lint passes?" -> "Fix lint issues" [label="no"];
"Fix lint issues" -> "Run lint";
"Run typecheck" -> "Typecheck passes?";
"Typecheck passes?" -> "Run tests" [label="yes"];
"Typecheck passes?" -> "Fix type errors" [label="no"];
"Fix type errors" -> "Run typecheck";
"Run tests" -> "Tests pass?";
"Tests pass?" -> "Push to remote" [label="yes"];
"Tests pass?" -> "Fix failing tests" [label="no"];
"Fix failing tests" -> "Run tests";
}
Projects use different tooling. Discover the available commands by checking these sources in order:
package.json scripts (Node.js projects):
cat package.json | jq '.scripts | keys[]' 2>/dev/null
Look for: lint, typecheck, type-check, tsc, test, test:unit, check
Makefile targets:
grep -E '^[a-zA-Z_-]+:' Makefile 2>/dev/null
Look for: lint, check, test, verify, validate
Monorepo root (if applicable):
cat package.json | jq '.scripts' 2>/dev/null
Look for workspace-level commands like test:all, lint:all, or use the package manager's workspace filter.
Common patterns if no scripts are found:
| Tool | Lint | Typecheck | Test |
|---|---|---|---|
| npm/pnpm | pnpm lint | pnpm typecheck | pnpm test |
| Turborepo | pnpm turbo lint | pnpm turbo typecheck | pnpm turbo test |
| Make | make lint | make typecheck | make test |
| Python (uv) | uv run ruff check | uv run mypy . | uv run pytest |
| Go | golangci-lint run | (built into compile) | go test ./... |
Run in this order — each stage catches different classes of issues:
Stop at the first failure. Fix it before proceeding to the next stage.
Not every change needs the full suite:
| Change type | Lint | Typecheck | Tests | |---|---|---|---| | Code changes | Yes | Yes | Yes — at minimum the affected test files | | Config/YAML only | No | No | No (unless config affects runtime) | | Documentation only | No | No | No | | New dependencies added | Yes | Yes | Yes — full suite |
For the final push before PR creation, always run the full suite regardless of change type.
<!-- maverick-plugin-version: 3.3.6 -->development
--- name: do-test description: Write or update tests for a code change. Operates in two modes: `unit` (module-scoped, fast, deterministic) and `integration` (crosses module / service / database boundaries). Intended to be invoked once per testable change from inside a do-issue-* or do-epic phase. Mode is required. argument-hint: mode: unit or integration user-invocable: true disable-model-invocation: false --- **Depends on:** mav-bp-unit-testing, mav-bp-integration-testing, mav-local-verificati
development
Implement a focused code change. Use this skill as the wrapper for any implementation work so the Maverick workflow report captures what was done and so the agent applies the project's coding standards before editing. Intended to be invoked once per task from inside a do-issue-* or do-epic phase, not standalone.
testing
How to stack a PR on top of an unmerged sibling branch, and how to retarget it to the repo's default branch once the sibling merges. Prevents orphan-merge incidents when a dependent story is ready before its parent.
development
Claim, lease, heartbeat, and release protocols for when multiple Claude Code instances may act on the same issue or epic concurrently. GitHub labels and marker comments are the coordination surface; local state is a cache.