agentsclimarketplace

Do maverick alignment

Skill thermiteau/maverick/skills/do-maverick-alignment

Analyze a project's codebase against Maverick standard practices and write a findings report. Checks linting, unit tests, integration tests, documentation, CI/CD, security, dependency management, observability, source control, and more. Run when onboarding an existing project or on demand.From its SKILL.md

Install
npx -y skills add thermiteau/maverick --skill do-maverick-alignment

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 11 stars11 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

17.8 KB, as published. Nobody here has run it

Codebase Audit

Analyze the current project's codebase against Maverick standard practices and write a findings report to docs/maverick-audit.md.

Preflight (mandatory)

Run this first. If it exits non-zero, halt and report the stderr output to the user verbatim. Do not proceed.

uv run maverick preflight do-maverick-alignment

The check verifies the project is initialised and uv is on PATH.

When to Run

  • User invokes /maverick:do-maverick-alignment
  • May also be triggered automatically by the Maverick plugin when no .maverick/ directory exists in the project root (first session in an uninitialised project)

Process

digraph audit {
    "Detect project stack" [shape=box];
    "Check each category" [shape=box];
    "Score findings" [shape=box];
    "Write report" [shape=box];
    "Summarise to user" [shape=box];

    "Detect project stack" -> "Check each category";
    "Check each category" -> "Score findings";
    "Score findings" -> "Write report";
    "Write report" -> "Summarise to user";
}

Step 1: Detect project stack

Identify the project type by checking for key files:

  • package.json -> Node.js (check dependencies for react, fastify, etc.)
  • tsconfig.json -> TypeScript
  • pyproject.toml or requirements.txt -> Python
  • build.gradle.kts -> Kotlin
  • Dockerfile -> Docker

Record the detected stack for the report header.

Monorepos: If workspaces is defined in package.json, or pnpm-workspace.yaml / nx.json / turbo.json exists, treat the root config as the primary audit target. Note per-package gaps in the Details section but do not produce a separate report per package.

Step 2: Check each category

Run the checks below in order. For each category, determine a status:

  • PASS -- meets Maverick standards
  • WARN -- partially meets standards, improvement needed
  • FAIL -- does not meet standards

Record the evidence (file paths, dependency names, snippets) for each finding.


Audit Coverage

The categories below are the audit-backed practice areas — each maps to a best-practice skill whose hard requirements this audit checks. The remaining bp skills are advisory (applied during implementation and review, not audited here): mav-bp-operability (beyond category 11's error-handling check), mav-bp-api-design, mav-bp-accessibility, mav-bp-environment-management, and mav-bp-infrastructure-as-code. Do not report on advisory areas — absence of an audit category is deliberate, not an oversight.

Audit Categories

1. Linting

Search for:

WhatWhere to look
ESLint config.eslintrc*, eslint.config.*
Ruff config[tool.ruff] in pyproject.toml, ruff.toml, .ruff.toml
Other linters.flake8, .pylintrc, ktlint in build.gradle.kts
Linter dependencyeslint in devDependencies, ruff/flake8/pylint in Python deps
Lint script"lint" script in package.json, lint commands in Makefile or pyproject [project.scripts]

Scoring:

StatusCriteria
PASSLinter config exists AND linter is in dependencies AND a lint script/command is defined
WARNLinter is in dependencies but no config file or no lint script
FAILNo linter found in dependencies or config

2. Unit Tests

Search for:

WhatWhere to look
Test filesGlob: **/*.test.ts, **/*.test.tsx, **/*.test.js, **/*.spec.*, **/test_*.py, **/*_test.py
Test runnervitest, jest, mocha in devDependencies; pytest in pyproject/requirements
Test script"test" script in package.json; [tool.pytest] in pyproject.toml

Scoring:

StatusCriteria
PASSTest files exist (3+) AND test runner is configured AND test script is defined AND a coverage threshold is enforced (runner config or CI gate) — the mav-bp-testing 60% unit gate
WARNTests exist and run but no coverage gate is enforced, or fewer than 3 test files
FAILNo test files found

Additional detail: Count the number of test files found and note their location pattern (co-located with source, or in a separate tests/ directory).

3. Integration Tests

Search for:

WhatWhere to look
Integration directoriestests/integration/, test/integration/, tests/e2e/, test/e2e/, e2e/, __integration__/
Integration files*.integration.test.*, *.integration.spec.*, *.e2e.test.*, *.e2e.spec.*
Separation from unit testsIntegration tests in a distinct location from unit tests

Scoring:

StatusCriteria
PASSDedicated integration or e2e test directory with test files inside
WARNFiles with integration/e2e in the name exist but no dedicated directory
FAILNo integration or e2e tests found

4. Documentation

Search for:

WhatWhere to look
READMEREADME.md at project root
Docs directorydocs/ directory with content
README qualityRead the README -- does it have more than 10 lines of meaningful content (not just a title)?

Scoring:

StatusCriteria
PASSREADME.md exists with meaningful content (10+ lines) AND docs/ directory exists with files
WARNREADME.md exists but is minimal (under 10 lines), or no docs/ directory
FAILNo README.md

5. CI/CD

Search for:

WhatWhere to look
GitHub Actions.github/workflows/*.yml or .github/workflows/*.yaml
JenkinsJenkinsfile
Bitbucketbitbucket-pipelines.yml
CircleCI.circleci/config.yml
GitLab.gitlab-ci.yml
Pipeline contentRead the pipeline config -- does it run linting? Does it run tests?

Scoring:

StatusCriteria
PASSPipeline config exists AND it runs both linting and tests
WARNPipeline config exists but only runs one of linting/tests, or is incomplete
FAILNo pipeline configuration found

Additional detail: Note which CI/CD platform is used and what steps the pipeline runs.

6. Remote Code Review Workflow (Optional CI Gate)

Per mav-bp-remote-code-review, the remote workflow is an optional CI-side re-run of the local agent-code-reviewer. By default, the local subagent's verdict (run during do-issue-solo Phase 9) is the gate the auto-merge path trusts. Some projects opt into the remote workflow for an independent CI check — multi-machine fleets, untrusted dev environments, regulatory audit trails — but its absence is not a compliance failure.

Search for:

WhatWhere to look
Marker commentA line equal to # maverick:code-review (after stripping leading whitespace) in any file under .github/workflows/
PR triggeron: pull_request: block in the same file as the marker
Reference actionanthropics/claude-code-action reference in the workflow body (informational; not required for compliance — teams may use their own integration)

Scoring:

StatusCriteria
PASSA workflow file under .github/workflows/ contains the # maverick:code-review marker AND has an on: pull_request: trigger — the project has opted into the CI-side gate and the wiring looks right
WARNA workflow with the marker exists but is missing the pull_request trigger, OR a pull_request-triggered workflow exists but no marker (likely a different review pipeline that needs the marker added) — the team's intent is unclear
INFONo workflow under .github/workflows/ contains the marker — the project is on the local-review default. Note this in the report and move on; do not flag it as a finding

Recommendation on WARN: fix the marker / trigger so the workflow's role is unambiguous. Recommendation on INFO: none required. If the team later decides they want the optional CI gate, point them at mav-bp-remote-code-review for the manual scaffold steps and the ANTHROPIC_API_KEY setup.

7. Source Control

Search for:

WhatWhere to look
Remote configuredgit remote -v output
.gitignore.gitignore at project root
Sensitive files.env, credentials*, *.key, *.pem in tracked files

Scoring:

StatusCriteria
PASSRemote configured AND .gitignore exists AND no sensitive files tracked
WARNRemote configured but .gitignore missing or incomplete
FAILNo remote configured (local-only repository)

8. Application Security

Search for:

WhatWhere to look
Security headershelmet, csp, Content-Security-Policy in code or dependencies
Input validationValidation libraries in dependencies, sanitisation patterns in code
Auth middlewareAuthentication/authorisation middleware or decorators
Secrets scanning.github/dependabot.yml, .snyk, trivy config, pre-commit hooks
SAST/DASTSecurity scanning steps in CI pipeline

Scoring:

StatusCriteria
PASSInput validation present AND auth middleware present AND security scanning in CI
WARNSome security measures present but gaps (e.g., no CI scanning, or no input validation)
FAILNo security measures found

9. Dependency Management

Search for:

WhatWhere to look
Lock filepackage-lock.json, pnpm-lock.yaml, yarn.lock, uv.lock, Cargo.lock, go.sum, poetry.lock
Automated updates.github/dependabot.yml, renovate.json, .renovaterc*
Vulnerability scanningnpm audit, pip-audit, snyk, trivy in CI pipeline

Scoring:

StatusCriteria
PASSLock file committed AND automated updates configured AND vulnerability scanning in CI
WARNLock file committed but no automated updates or no vulnerability scanning
FAILNo lock file committed

10. Database Management

Search for:

WhatWhere to look
Migration files**/migrations/**, **/migrate/**, Prisma/Alembic/Flyway/Knex directories
ORM/query builderprisma, drizzle, knex, sequelize, typeorm, sqlalchemy, diesel, gorm in dependencies
Seed data**/seed*.*, **/fixtures/**

Scoring:

StatusCriteria
PASSMigration tool configured AND migration files exist AND seed data present
WARNDatabase dependencies present but no migrations or incomplete migration setup
FAILDatabase dependencies present with no migration tooling at all
N/ANo database dependencies found

11. Error Handling

Search for:

WhatWhere to look
Global error handlerError middleware, exception filters, error boundaries in code
Custom error classesClasses extending Error/Exception in source
Retry logicRetry/backoff patterns in code or dependencies

Scoring:

StatusCriteria
PASSGlobal error handler present AND custom error types defined
WARNSome error handling present but inconsistent (e.g., mix of try/catch with no global handler)
FAILNo structured error handling found

Step 3: Write the report

All scoring in Step 2 is based on the state of the project BEFORE this report is written. Creating the docs/ directory for the report does not change the Documentation score.

Create docs/maverick-audit.md (create the docs/ directory if it does not exist). Use this exact format:

# Maverick Codebase Audit

**Project:** <project-name>
**Date:** <YYYY-MM-DD>
**Stack:** <detected stack, e.g. "Node.js, TypeScript, Vitest">

## Summary

| Category              | Status                | Finding            |
| --------------------- | --------------------- | ------------------ |
| Linting               | <PASS/WARN/FAIL>      | <one-line summary> |
| Unit tests            | <PASS/WARN/FAIL>      | <one-line summary> |
| Integration tests     | <PASS/WARN/FAIL>      | <one-line summary> |
| Documentation         | <PASS/WARN/FAIL>      | <one-line summary> |
| CI/CD                 | <PASS/WARN/FAIL>      | <one-line summary> |
| Source control        | <PASS/WARN/FAIL>      | <one-line summary> |
| Application security  | <PASS/WARN/FAIL>      | <one-line summary> |
| Dependency management | <PASS/WARN/FAIL>      | <one-line summary> |
| Database management   | <PASS/WARN/FAIL/N/A>  | <one-line summary> |
| Error handling        | <PASS/WARN/FAIL>      | <one-line summary> |

**Score: <N>/10 passing** (N/A categories excluded from count)

## Details

### Linting -- <STATUS>

<Evidence: config file paths, dependency names, script definitions>
<If WARN/FAIL: one-line recommendation>

### Unit Tests -- <STATUS>

<Evidence: number of test files, runner, script, file pattern>
<If WARN/FAIL: one-line recommendation>

### Integration Tests -- <STATUS>

<Evidence: directory/file paths found, or absence noted>
<If WARN/FAIL: one-line recommendation>

### Documentation -- <STATUS>

<Evidence: README line count, docs/ contents>
<If WARN/FAIL: one-line recommendation>

### CI/CD -- <STATUS>

<Evidence: platform, config file, steps found>
<If WARN/FAIL: one-line recommendation>

### Remote Code Review Workflow -- <STATUS>

<Evidence: workflow file path containing the `# maverick:code-review` marker, or absence noted>
<If WARN/FAIL: one-line recommendation pointing at the reference template>

### Source Control -- <STATUS>

<Evidence: remote URL, .gitignore presence, sensitive file check>
<If WARN/FAIL: one-line recommendation>

### Application Security -- <STATUS>

<Evidence: security measures found, gaps identified>
<If WARN/FAIL: one-line recommendation>

### Dependency Management -- <STATUS>

<Evidence: lock file, update tool, vulnerability scanning>
<If WARN/FAIL: one-line recommendation>

### Database Management -- <STATUS>

<Evidence: migration tool, migration files, seed data — or N/A if no database>
<If WARN/FAIL: one-line recommendation>

### Error Handling -- <STATUS>

<Evidence: global handler, error types, retry patterns>
<If WARN/FAIL: one-line recommendation>

## Recommendations

<Numbered list of actionable recommendations for WARN and FAIL items only.
Each recommendation should be specific: what to create/change, where, and why.>

Step 4: Summarise to user

After writing the report, print a brief summary:

  • The score (e.g. "8/10 passing")
  • Which categories are WARN or FAIL
  • The path to the full report

Step 5: Record the milestone

Once the report is written, record that the alignment audit has run on this project so other skills (and humans running maverick integration get) can see it:

uv run maverick integration set alignment true

This commits the milestone into .maverick/config.json — the file is in git so the state is durable across machines and contributors.

<!-- maverick-plugin-version: 4.0.1 -->

Keep looking

Skills are one crate of 627,801. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.