Codebase intelligence & anti-AI-slop for Dart & Flutter.
loam.dev is the product;
loamis this CLI command and pub.dev package. Web: getloam.dev ยท Source: github.com/silvio-l/loam
loam catches the structural drift and AI-generated slop that
dart analyze never sees โ behind a baseline/ratchet CI gate that never paints a
grown codebase red on day one. Built on the Dart analyzer package: semantically
accurate, project-wide, offline by default.
What it catches
| Structural drift (deterministic, semantic) | AI-slop (deterministic + optional LLM) |
|---|---|
| Unused public exports, files, members | Empty / swallowing catch blocks |
| Circular dependencies | Narrative filler comments |
| Code duplication (AST-normalised) | Ungrounded // ignore: |
| Complexity hotspots + health score | Duplicated helpers, dead guards |
| Architecture-boundary violations | Hallucinated / superfluous abstractions |
What makes it different
- ๐ฑ Semantic, not regex โ resolved Dart element model + project-wide graphs.
- ๐ Baseline / ratchet gate (default) โ freeze today's findings; only new ones fail CI.
- โป๏ธ Reproducible even with an LLM โ verdicts cached by
sha(code)+prompt@ver, fixed thresholds decide. Same code = cache hit = stable verdict, zero token cost. - ๐ Self-contained HTML report โ one offline file; toggle findings, copy a fix-prompt for your AI agent.
Install
dart pub global activate loam
Quick start
๐ง Early development. The walking skeleton wires the pipeline and the tracer rule (
unused-public-exports); the remaining capabilities land as individual rules. Commands below are the target surface.
loam scan # full audit: every active rule, whole repo
loam baseline --write # freeze the accepted state
loam gate # CI: ratchet โ only new findings fail
Status
Walking skeleton in progress. Founding spec, domain glossary and architecture decisions live in the repository.
License
MIT ยฉ 2026 Silvio Lindstedt
Libraries
- loam
- loam.dev โ codebase intelligence & anti-AI-slop for Dart/Flutter.