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.
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.
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.
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.
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.
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.
{#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.
Install the GitHub App, open a pull request, and read the first review about a minute later.
Frameworks
Compare