Wynter
Tech Report Every Monday

Half of this week's new tooling exists to check code an agent wrote

By Wynter Jones 6 mins read

A stack of thin translucent glass plates floating in a near-black void, cut through the middle by a razor-thin horizontal plane of cyan light that refracts through the glass and casts volumetric haze

In short

Seventy-seven libraries landed in seven days, and the strongest cluster wasn't for writing code — it was for auditing it.

Seventy-seven new libraries landed in the scout database over the last seven days. Forty-two of them were Ruby or Rails, twenty were React, and the rest were CSS and build tooling. That's a lot of noise to sort through, so here's the part that actually matters.

A meaningful chunk of the week's new tooling isn't for writing code. It's for checking code that something else wrote.

The number I couldn't ignore: 14,336 stars for a React linter

React Doctor has 14,336 stars. It was created on February 13th of this year. That's roughly six months from empty repo to a star count most established libraries never touch, and the tagline on the repo is four words long: "Your agent writes bad React. This catches it."

It doesn't replace ESLint. It sits next to it and looks for the specific failure patterns that show up when a model writes a component — effects that should have been derived state, dependency arrays that lie, keys that aren't stable, the whole family of things that pass type-check and lint clean and then re-render forty times.

The honest catch is that this is a category that didn't exist in January, which means nobody knows yet whether it's a permanent layer of the stack or a bridge you cross while models get better at React. Fourteen thousand people are betting it's the former. I'd install it on a Next.js project this month, because the cost of being wrong is one dev dependency.

Ruby had the same idea, much more quietly

Three things showed up on the Ruby side this week that are all pointed at the same problem, and none of them have the star count to prove it yet.

  • rigor — 97 stars, created April 26th, pushed today. "Inference-first static analysis for Ruby." It works out types from your actual code rather than making you write signature files first, which is the thing that killed adoption for every previous attempt at typed Ruby.
  • archspec — 17 stars, created June 2nd. Architecture checks for Rails. You declare that models don't call controllers and that your service layer doesn't reach into views, and it fails the build when someone breaks it. Someone, here, increasingly meaning an agent that had no idea your layering rules existed.
  • hunk-review-changes — zero stars, from Lucian Ghinda. Review a diff hunk-by-hunk in the browser, then hand the comments back to your coding agent. It's a tiny tool built around the assumption that reviewing machine-written diffs is now a distinct activity from reviewing a colleague's PR.

Rigor is the one I'd actually try. Ninety-seven stars and a single maintainer means don't wire it into a blocking CI gate yet, but running it locally on an existing Rails app costs you an afternoon and tells you something real.

Worth flagging: rubocop-herb was in the scout database from August 3rd and the repo now 404s. Dropped it. Same for ruby-format. Both gone in a week, which is its own data point about how much of this stuff is disposable.

The Rails ops shelf filled up in about five days

This was the strongest cluster of the week, and it's all small, sharply-scoped gems that replace a script you wrote yourself two years ago and have been quietly maintaining ever since.

  • kamal-backup — 135 stars, created April 22nd, pushed today. Scheduled Rails backups as a Kamal accessory. Replaces the cron job calling pg_dump and piping to S3 that exists in some form in every Kamal deploy I've seen. The most-adopted thing in this list, and the least exciting, which is usually how it goes.
  • solid_queue-flightdeck — 74 stars, created July 28th. A dashboard for Solid Queue with live charts, failure triage and bulk retries. Replaces mission_control-jobs, which works but looks like a scaffold. The catch: it hasn't been pushed since the day it was created. Two weeks of silence on a two-week-old project is either "it's done" or "it's abandoned" and there's no way to tell yet.
  • llm_cost_tracker — 44 stars, created April 16th, pushed today. A Rails-native ledger for LLM spend, broken out by provider, model and feature, with budget guardrails. Replaces a Helicone subscription or, more honestly, replaces a spreadsheet and a monthly surprise. If you're shipping AI features inside a Rails app and billing customers for them, this is the one from this whole list I'd install first.
  • sentiero — 10 stars, created February 17th, pushed today. Session recording for any Rack app, privacy-first, with Rails integration. A self-hosted Hotjar. Ten stars is ten stars, and self-hosting session recordings means you're now paying for the storage of every mouse movement on your site. Interesting, not yet sensible.

Two new Ruby web servers, which is two more than a normal week

raptor has 15 stars and describes itself as a high-performance Ruby web server. puma-plus has 2 stars and was created three days ago — but it's from Evan Phoenix, who wrote Puma. It's a Ruby server with a Go frontend handling HTTP/1.1, 2 and 3, and the actual idea is that it measures request queue time exactly and autoscales on that number rather than on CPU.

That's the interesting part. Queue-time-based autoscaling is what Judoscale sells as a product. Having it measured natively by the server, by the person who wrote the server you're already running, is a real shift even if the repo is three days old.

Neither of these goes anywhere near production this month. Both are worth watching, and puma-plus is worth watching specifically.

React Server Components finally got out of Next.js

Three separate things landed this week that run RSC without Next:

  • @vitejs/plugin-rsc — RSC support for Vite, currently at 0.5.34, published August 7th. The parent plugin repo has 1,136 stars and was pushed today.
  • @tanstack/react-start-rsc — 0.1.41, published August 9th. RSC for TanStack Start.
  • rshono — 19 stars, created July 20th. Hono plus Rspack plus React Server Components, as a minimal framework.

What this replaces is the assumption that RSC means Next.js. That assumption has shaped a lot of architecture decisions over the last three years, including some of mine. The catch is version numbers: 0.5, 0.1, and 19 stars. Nobody should migrate anything on the strength of this. But if you've been avoiding Server Components because you didn't want the framework attached to them, that objection has about six months left.

Things that just moved a version, which you can skip

Vite 8.2, Hono 4.13, SWR 2.5, Motion 13, Base UI 1.7 at 10,594 stars, React Aria 1.20, TanStack Table v9 at 28,305 stars, redis-rb 6.0 and RuboCop 1.89. All routine, all worth taking on your next dependency bump, none worth reading release notes for today. TanStack Table v9 is the only one with a major number, and if you're on v8 the migration is mechanical.

On the CSS side, tw-fade at 86 stars does scroll-edge fade masking for Tailwind v4 with zero JavaScript, and oxlint-tailwindcss at 67 stars ports the Tailwind lint rules to oxlint. Both are small, both do exactly one thing. Neither changes your week.

What I keep noticing

The Ruby ecosystem this week produced backup tooling, a queue dashboard, two web servers, architecture linting and a cost ledger. The React ecosystem produced a linter for machine-written components and three ways to run RSC without a framework. Different languages, and underneath, the same posture: less inventing, more instrumenting. Tools that watch what's already running rather than tools that help you write the next thing.

Which makes sense if you assume the writing part got cheap and the knowing-what-you-shipped part didn't.