Svelte

Design review for every Svelte pull request.

Rams reads your .svelte files as written: markup, script, and style blocks. Every PR gets inline one-click fix suggestions and a summary, usually in about a minute. No CI config, no screenshots, no runtime.

Clickable divs in your markup

A <div on:click> with no role, tabindex, or keydown handler. Mouse users can click it. Keyboard and screen reader users cannot reach it at all.

Body text below 4.5:1

Contrast is computed from the real hex values in your style block. A #999 label on #fff fails at 2.8:1; small text needs 4.5:1. The finding quotes the exact line.

Transitions that ignore reduced motion

transition:fly and transition:fade run for everyone, including users who set prefers-reduced-motion. Rams flags entrance animations that need a reduced-motion path.

The AI-generated look

Purple-to-blue gradients, glow shadows, three identical filled buttons in a row. A whole craft category of the 174 rules targets the patterns generated UI defaults to.

Hardcoded colors next to tokens

background: #6b7280 in a component style block when app.css already defines --color-muted. Rams reads your custom properties first, so real token references are never flagged.

Unkeyed each blocks

{#each items as item} with no key reuses DOM nodes by index, so focus, input state, and animations stick to the wrong row when the list reorders.

The same 174 rules, on every Svelte pull request.

Install the GitHub App, open a pull request, and read the first review about a minute later.

Review my public repo for free