Most of a Rails AI toolchain is LLM-driven — coders, reviewers. These are the other half: fast, exact, reproducible, gate-able in CI. They also run as a grounding pre-pass for the LLM reviewers in dte-skills before its lenses fire.
This repo is a staging home. Checkers land here first; once a category can stand on its own it graduates into a focused plugin — the way the Hotwire checkers became hotwire-rails-toolkit.
Skills
Five shipped. Each script runs standalone against any Rails app and exits non-zero on findings.
layer-boundary-lint
Rails layering violations the architecture books describe but no tool gates:
Current. read in models
request/params in the domain layer (services and interactors)
claude plugin marketplace add davidteren/dte-rails-toolkit
claude plugin install dte-rails-toolkit@dte-rails-toolkit-marketplace
layer-boundary-lint: rules are individually skippable by label; STRICT=1 fails on advisories; CURRENT_ATTR_MAX tunes the threshold. rails-test-smell-checker: high-confidence smells fail; heuristics only fail under --strict.
The bar for adding a checker
Three rules. A checker ships only if it clears all three.
Deterministic, names its ceiling
Heuristic text/AST scans, not full parsers — each script says so. A clean run is a gate, not a proof.
Verified both ways
Run against a real app (must be truthful — no false positives) and a synthetic broken case (must flag it).
False positives are the failure mode
A rule that can't be made high-confidence cheaply is demoted to a caveated heuristic or dropped — never shipped loose.
Backlog
Candidate checkers distilled from a review of 8 Rails reference books. The v0.2.0 batch (rails-n1-guardrail-check, rails-csv-io, cable-stream-security) shipped — see Skills above. ◐ parked
◐
geocoding-guard / ruby-hotspot-finder— likely fold into existing skills (performance-reviewer / rails-testing) rather than ship standalone. Not a TODO.