| name | genvm-lint |
| description | Validate GenLayer intelligent contracts with the GenVM linter. |
| allowed-tools | ["Bash","Read"] |
GenVM Lint
Validate intelligent contracts for safety, correctness, and SDK compliance.
Setup
Requires genvm-linter (included in requirements.txt for boilerplate projects):
pip install genvm-linter
Workflow
Always lint before testing. Run genvm-lint check after writing or modifying a contract. Fix all errors before running tests.
genvm-lint check contracts/my_contract.py
check runs both lint (AST safety) and validate (SDK semantics) in one pass.
Commands
check (recommended)
genvm-lint check contracts/my_contract.py
genvm-lint check contracts/my_contract.py --json
lint (fast AST checks only, ~50ms)
genvm-lint lint contracts/my_contract.py
Catches:
- Forbidden imports (
os, sys, subprocess, random, etc.)
- Non-deterministic patterns (bare
float usage)
- Contract header structure issues
validate (SDK semantic checks, ~200ms)
genvm-lint validate contracts/my_contract.py
Validates:
- Types exist in SDK (
TreeMap, DynArray, Address, etc.)
- Decorators correctly applied (
@gl.public.view, @gl.public.write)
- Storage fields have valid types (no
dict/list)
- Method signatures correct
schema (extract ABI)
genvm-lint schema contracts/my_contract.py
genvm-lint schema contracts/my_contract.py --json
genvm-lint schema contracts/my_contract.py --output abi.json
typecheck (Pyright/Pylance)
genvm-lint typecheck contracts/my_contract.py
genvm-lint typecheck contracts/my_contract.py --json
genvm-lint typecheck contracts/my_contract.py --strict
Runs Pyright with SDK paths auto-configured. Catches type mismatches, missing attributes, undefined variables.
download (pre-download GenVM artifacts)
genvm-lint download
genvm-lint download --version v0.2.12
genvm-lint download --list
Output Formats
Human (default)
✓ Lint passed (3 checks)
✓ Validation passed
Contract: MyContract
Methods: 8 (5 view, 3 write)
JSON (--json)
{"ok":true,"lint":{"ok":true,"passed":3},"validate":{"ok":true,"contract":"MyContract","methods":8,"view_methods":5,"write_methods":3,"ctor_params":2}}
Exit Codes
0 — All checks passed
1 — Lint or validation errors found
2 — Contract file not found
3 — SDK download failed
Agent Workflow
When fixing lint errors iteratively:
- Run
genvm-lint check contract.py --json
- Parse JSON for specific errors
- Fix each error in the contract
- Re-run check until
"ok": true
- Proceed to tests