Skip to content
AI agent writes code code chisel check . runs after, deterministically exit 0 clean violations name the skill SKILL.md · chisel explain the pattern it skipped read · fix · retry

Chisel

Your AI agent writes the code. Chisel enforces the architecture. Deterministic checks, a fix for every violation.

The agent writes. Chisel checks. Every violation points to the skill that teaches the pattern.

Deterministic, not vibes

No scoring, no LLM judge. chisel check . returns the same violations every run, each with its fix. An agent can’t argue with it, and neither can a flaky reviewer.

Skills read when they matter

You don’t have to hope the agent reads your docs up front. The check runs after the code is written, and every violation names the bundled skill that teaches the pattern it skipped.

One rulebook, both stacks

chisel for Python backends, chisel-js for TypeScript frontends. Same rule shape, same JSON output, same architectural intent.

chisel

Python · FastAPI backends

Terminal window
pip install chisel
chisel check .

chisel-js

TypeScript · SvelteKit frontends

Terminal window
npm install -g chisel-js
chisel-js check .

Import boundaries

services never import sqlalchemy. ORM types stay in repositories.

Structural invariants

getattr/setattr banned, dataclasses use slots=True.

Component & colour rules

Raw HTML tags must use shadcn replacements, arbitrary Tailwind values banned.

Reactivity rules

$effect without cleanup flagged, onMount must touch a browser API.

Complexity limits

Route handler ≤ 20 LoC, page ≤ 100 LoC.

Testing discipline

One assert per test, mocking libraries banned.

~55 rules in total: Python rules · TypeScript rules

  1. Get a passing check Install a checker and go from violations to exit 0 in five minutes.

  2. Understand the loop The checker, the skills, and the severities in one page.

  3. Put it in your agent’s loop Install the skills and block violations before they land.