The judge, in your CI. Every change scored 0 to 100, merges gated on critical design defects, fixes handed back as patches your agents apply themselves.
Claude Code, Codex, Cursor — they already produce most of the interface code in a modern repo. Fast, plausible, and unreviewed.
The engine reads the changed UI files and scores them 0–100 against 291 design rules — accessibility, hierarchy, motion, craft. Criticals cap the score: one holds it to 59, two to 49, three or more to 39.
Findings come back as structured JSON plus git-applyable patches. Your own agent step applies them — Rams never touches your code.
fail-on: critical blocks the merge until the defect is fixed. The loop keeps its speed; the product keeps its standard.
- uses: actions/checkout@v4
with: { fetch-depth: 0 }
- uses: rams-design/rams-action@v1
with:
api-key: ${{ secrets.RAMS_API_KEY }}
fail-on: critical # or score<80, or neverOr run it on a schedule with mode: since-last-run — it reviews only what changed since the last sweep and leaves findings plus patches in rams-review/ for your own agent step to apply.
design rules, versioned and public · see them
reviews run on real pull requests
of the most-starred UI repos we scored carry a critical defect · see them
Every public score is a live page you can read — the finding, the file, the fix. The same engine, the same bar:
critical · accessibility
Icon-only button ships without an accessible name — screen readers announce nothing.
src/components/Toolbar.tsx:41
Patch written to rams-review/patches/ — your agent applies it, pushes, and the gate turns green.
Rendered example — the format is exactly what lands on your PR.
One YAML block. Free key, 30 reviews a month, no card.
Frameworks