genvm-lintlisted
Install: claude install-skill internet-court/internet-court-skill
# GenVM Lint
Validate intelligent contracts for safety, correctness, and SDK compliance.
## Setup
Requires `genvm-linter` (included in `requirements.txt` for boilerplate projects):
```bash
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.
```bash
genvm-lint check contracts/my_contract.py
```
`check` runs both lint (AST safety) and validate (SDK semantics) in one pass.
## Commands
### check (recommended)
```bash
genvm-lint check contracts/my_contract.py
genvm-lint check contracts/my_contract.py --json # Machine-readable output
```
### lint (fast AST checks only, ~50ms)
```bash
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)
```bash
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)
```bash
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)
```bash
genvm-lint typechec