Skip to content
Back to skills

Mav Local Verification

ASecurity

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.

  • 11 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added June 1, 2026
testingpythongobashnodegitdocumentation

Security analysis

A100/100

Scanned June 1, 2026

npx -y skills add thermiteau/maverick --skill mav-local-verification --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Mav Local Verification?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Mav Local Verification
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/thermiteau-mav-local-verification/badge)](https://www.skillsdirectory.com/skills/thermiteau-mav-local-verification)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: mav-local-verification
description: 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.
---

# Local Verification

Run lint, typecheck, and tests locally before every push. Never push code that fails local checks.

## Principles

1. **Verify locally first** — never push code that fails lint, typecheck, or tests
2. **Never skip git hooks** — never use `--no-verify` with git commands
3. **Fix before proceeding** — stop at the first failure, fix it, then continue

## Process

```dot
digraph 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";
}
```

## Discovering Verification Commands

Projects use different tooling. Discover the available commands by checking these sources in order:

1. **`package.json` scripts** (Node.js projects):
   ```bash
   cat package.json | jq '.scripts | keys[]' 2>/dev/null
   ```
   Look for: `lint`, `typecheck`, `type-check`, `tsc`, `test`, `test:unit`, `check`

2. **`Makefile` targets**:
   ```bash
   grep -E '^[a-zA-Z_-]+:' Makefile 2>/dev/null
   ```
   Look for: `lint`, `check`, `test`, `verify`, `validate`

3. **Monorepo root** (if applicable):
   ```bash
   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.

4. **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 ./...` |

## Running Verification

Run in this order — each stage catches different classes of issues:

1. **Lint** — catches style issues, unused imports, formatting
2. **Typecheck** — catches type errors, missing properties, wrong arguments
3. **Tests** — catches logic errors, regressions, broken integrations

Stop at the first failure. Fix it before proceeding to the next stage.

## Scope-Appropriate Verification

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.5 -->

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.