All eight scores Source on GitHub
For maintainers

Put your score
in your README.

AI coding assistants write library code from memory. When a library ships a big release that renames or removes things, the assistant keeps writing the old version. It reads fine & it doesn't build.

SDKProof measures how often that happens. It gives a model real coding jobs for one library, then compiles every answer against the real installed package with tsc, the TypeScript compiler. A task passes only if it compiles — no AI judges another AI.

A badge publishes that number. One line of markdown, and it reads the same run as the scorecard, so it can't claim a number the page doesn't show.

Grab yours

Copy the line, paste it near the top of your README

Each badge links back to its full scorecard, so anyone reading it can check the number instead of taking it on faith.

SDKProof: 100/100 TanStack Query v5 5.101.4
[![SDKProof: 100/100](https://sdkproof.dev/badge/tanstack-query.svg)](https://sdkproof.dev/tanstack-query.html?ref=badge)
SDKProof: 71/100 Vercel AI SDK 7 7.0.30
[![SDKProof: 71/100](https://sdkproof.dev/badge/aisdk.svg)](https://sdkproof.dev/aisdk.html?ref=badge)
SDKProof: 100/100 Zod 4 4.4.3
[![SDKProof: 100/100](https://sdkproof.dev/badge/zod.svg)](https://sdkproof.dev/zod.html?ref=badge)
SDKProof: 93/100 React Router 8 8.3.0
[![SDKProof: 93/100](https://sdkproof.dev/badge/react-router.svg)](https://sdkproof.dev/react-router.html?ref=badge)
SDKProof: 92/100 Next.js 16 16.2.11
[![SDKProof: 92/100](https://sdkproof.dev/badge/nextjs.svg)](https://sdkproof.dev/nextjs.html?ref=badge)
SDKProof: 87/100 Prisma 7 7.8.0
[![SDKProof: 87/100](https://sdkproof.dev/badge/prisma7.svg)](https://sdkproof.dev/prisma7.html?ref=badge)
SDKProof: 0/100 TanStack React Table 9 9.1.2
[![SDKProof: 0/100](https://sdkproof.dev/badge/react-table.svg)](https://sdkproof.dev/react-table.html?ref=badge)
Read this first

Three things the number does not mean

The score can go down
It is re-measured when a new model ships, and when your library ships a big release that removes or renames things. The badge follows the run — that is the whole point of it. A rename with no deprecation period will move your number, and I will not ask before it does.
It measures the model, not your library
A low score means today's assistants write an older version of your API from memory. That is usually a signal your newest major is too recent for the training data, which is not a defect in your code.
It is one model on 10–15 tasks
Every score on this site is Claude Opus 5, type-checked against the installed package. Passing means it compiles clean — which cannot catch code that compiles and means something else.
Prefer shields.io?

Every badge is also a shields endpoint

Same numbers, same source file, if you would rather your README pointed at shields than at my domain.

shields.io endpoint swap the slug for yours
![SDKProof](https://img.shields.io/endpoint?url=https://sdkproof.dev/badge/zod.json)

Every score is also published as JSON at sdkproof.dev/scores.json, with both rates and a 95% interval on each.

Not scored yet?

Open an issue with your library & I'll add it to the queue. React Router 8 is on the board because someone asked for it.

There's no npm package. Clone the repo, point it at a library, run it. The compiler is the judge.