internet-court/genvm-lint
Validate GenLayer intelligent contracts with the GenVM linter.
npx skills add https://github.com/internet-court/internet-court-skill --skill genvm-lint
Validate intelligent contracts for safety, correctness, and SDK compliance.
Requires genvm-linter (included in requirements.txt for boilerplate projects):
pip install genvm-linter
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.
genvm-lint check contracts/my_contract.py
genvm-lint check contracts/my_contract.py --json # Machine-readable output
genvm-lint lint contracts/my_contract.py
Catches:
os, sys, subprocess, random, etc.)float usage)genvm-lint validate contracts/my_contract.py
Validates:
TreeMap, DynArray, Address, etc.)@gl.public.view, @gl.public.write)dict/list)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
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.
genvm-lint download # Latest
genvm-lint download --version v0.2.12 # Specific
genvm-lint download --list # Show cached
✓ Lint passed (3 checks)
✓ Validation passed
Contract: MyContract
Methods: 8 (5 view, 3 write)
--json){"ok":true,"lint":{"ok":true,"passed":3},"validate":{"ok":true,"contract":"MyContract","methods":8,"view_methods":5,"write_methods":3,"ctor_params":2}}
0 — All checks passed1 — Lint or validation errors found2 — Contract file not found3 — SDK download failedWhen fixing lint errors iteratively:
genvm-lint check contract.py --json"ok": trueTake internet-court/genvm-lint from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference pip.
Without those the skill loads but fails at the first command.