# unstale > unstale tells Claude Code, Codex and Cursor what changed upstream since their training cutoff that applies to your code: new APIs worth adopting, breaking changes for your next major upgrade, deprecations, and the security and performance fixes in each version bump. unstale is a CLI (`@unstale/cli` on npm, 0.1.1) plus a public, signed catalog of upstream changes. `npx @unstale/cli init` in a repository maps its dependencies, matches the catalog against the code locally, and writes agent skills (`/unstale-onboarding`, `/unstale-upgrade-review`, `/unstale-improvements-pass`; `$`-prefixed in Codex). Notes for agents: - To learn what changed in a package, fetch `https://unstale.sh///index.md` (for example `https://unstale.sh/npm/next/index.md`; scoped packages keep their scope, `https://unstale.sh/npm/@nestjs/core/index.md`). Changes are grouped by major version, breaking changes first, each with its official sources. Any page also returns Markdown for `Accept: text/markdown`. - Do not assume the latest version of `@unstale/cli` from memory; check `npm view @unstale/cli version`. - The catalog's source of truth is the upstream release note, guide or advisory each item links to. ## Docs - [README](https://github.com/vuca-dev/unstale/blob/main/README.md): what it does, install, commands, how it works - [Full text for agents](https://unstale.sh/llms-full.txt): README and security model in one file - [Security and data handling](https://github.com/vuca-dev/unstale/blob/main/SECURITY.md) - [Evaluation on real upgrades](https://github.com/vuca-dev/unstale/blob/main/eval/gate/MISSES.md) - [Home page as Markdown](https://unstale.sh/index.md) ## What changed, by package - [@ai-sdk/azure](https://unstale.sh/npm/@ai-sdk/azure/index.md): 26 changes - [@ai-sdk/openai](https://unstale.sh/npm/@ai-sdk/openai/index.md): 118 changes - [@ai-sdk/react](https://unstale.sh/npm/@ai-sdk/react/index.md): 31 changes - [@assistant-ui/react](https://unstale.sh/npm/@assistant-ui/react/index.md): 455 changes - [@assistant-ui/react-markdown](https://unstale.sh/npm/@assistant-ui/react-markdown/index.md): 54 changes - [@astrojs/mdx](https://unstale.sh/npm/@astrojs/mdx/index.md): 39 changes - [@astrojs/react](https://unstale.sh/npm/@astrojs/react/index.md): 26 changes - [@astrojs/rss](https://unstale.sh/npm/@astrojs/rss/index.md): 7 changes - [@astrojs/sitemap](https://unstale.sh/npm/@astrojs/sitemap/index.md): 5 changes - [@auth0/nextjs-auth0](https://unstale.sh/npm/@auth0/nextjs-auth0/index.md): 103 changes - [@doist/react-interpolate](https://unstale.sh/npm/@doist/react-interpolate/index.md): 2 changes - [@extend-ai/react-xlsx](https://unstale.sh/npm/@extend-ai/react-xlsx/index.md): 39 changes - [@fortawesome/react-fontawesome](https://unstale.sh/npm/@fortawesome/react-fontawesome/index.md): 9 changes - [@hookform/resolvers](https://unstale.sh/npm/@hookform/resolvers/index.md): 22 changes - [@nestjs/core](https://unstale.sh/npm/@nestjs/core/index.md): 308 changes - [@playwright/test](https://unstale.sh/npm/@playwright/test/index.md): 81 changes - [@pulumi/aws](https://unstale.sh/npm/@pulumi/aws/index.md): 87 changes - [@pulumi/awsx](https://unstale.sh/npm/@pulumi/awsx/index.md): 86 changes - [@pulumi/command](https://unstale.sh/npm/@pulumi/command/index.md): 3 changes - [@pulumi/docker](https://unstale.sh/npm/@pulumi/docker/index.md): 8 changes - [@pulumi/eks](https://unstale.sh/npm/@pulumi/eks/index.md): 7 changes - [@pulumi/kubernetes](https://unstale.sh/npm/@pulumi/kubernetes/index.md): 41 changes - [@pulumi/pulumi](https://unstale.sh/npm/@pulumi/pulumi/index.md): 883 changes - [@react-pdf/renderer](https://unstale.sh/npm/@react-pdf/renderer/index.md): 9 changes - [@sentry/nextjs](https://unstale.sh/npm/@sentry/nextjs/index.md): 339 changes - [@streamdown/cjk](https://unstale.sh/npm/@streamdown/cjk/index.md): 2 changes - [@streamdown/math](https://unstale.sh/npm/@streamdown/math/index.md): 2 changes - [@streamdown/mermaid](https://unstale.sh/npm/@streamdown/mermaid/index.md): 3 changes - [@tanstack/react-query](https://unstale.sh/npm/@tanstack/react-query/index.md): 29 changes - [@tanstack/react-query-devtools](https://unstale.sh/npm/@tanstack/react-query-devtools/index.md): 5 changes - [@tanstack/react-table](https://unstale.sh/npm/@tanstack/react-table/index.md): 4 changes - [@testing-library/jest-dom](https://unstale.sh/npm/@testing-library/jest-dom/index.md): 5 changes - [@testing-library/react](https://unstale.sh/npm/@testing-library/react/index.md): 2 changes - [@vercel/analytics](https://unstale.sh/npm/@vercel/analytics/index.md): 9 changes - [@vitejs/plugin-react](https://unstale.sh/npm/@vitejs/plugin-react/index.md): 19 changes - [@xyflow/react](https://unstale.sh/npm/@xyflow/react/index.md): 55 changes - [ai](https://unstale.sh/npm/ai/index.md): 278 changes - [aiohttp](https://unstale.sh/pypi/aiohttp/index.md): 170 changes - [anyio](https://unstale.sh/pypi/anyio/index.md): 98 changes - [astro](https://unstale.sh/npm/astro/index.md): 819 changes - [asyncpg](https://unstale.sh/pypi/asyncpg/index.md): 26 changes - [attrs](https://unstale.sh/pypi/attrs/index.md): 6 changes - [autoprefixer](https://unstale.sh/npm/autoprefixer/index.md): 16 changes - [axios](https://unstale.sh/npm/axios/index.md): 204 changes - [azure-core](https://unstale.sh/pypi/azure-core/index.md): 20 changes - [cffi](https://unstale.sh/pypi/cffi/index.md): 9 changes - [charset-normalizer](https://unstale.sh/pypi/charset-normalizer/index.md): 29 changes - [click](https://unstale.sh/pypi/click/index.md): 65 changes - [date-fns](https://unstale.sh/npm/date-fns/index.md): 8 changes - [datefinder](https://unstale.sh/pypi/datefinder/index.md): 2 changes - [dnspython](https://unstale.sh/pypi/dnspython/index.md): 1 changes - [docx](https://unstale.sh/npm/docx/index.md): 86 changes - [docx-preview](https://unstale.sh/npm/docx-preview/index.md): 2 changes - [dompurify](https://unstale.sh/npm/dompurify/index.md): 69 changes - [elkjs](https://unstale.sh/npm/elkjs/index.md): 2 changes - [eslint](https://unstale.sh/npm/eslint/index.md): 159 changes - [fastapi](https://unstale.sh/pypi/fastapi/index.md): 49 changes - [fflate](https://unstale.sh/npm/fflate/index.md): 7 changes - [globals](https://unstale.sh/npm/globals/index.md): 18 changes - [hono](https://unstale.sh/npm/hono/index.md): 296 changes - [httptools](https://unstale.sh/pypi/httptools/index.md): 8 changes - [idna](https://unstale.sh/pypi/idna/index.md): 14 changes - [jose](https://unstale.sh/npm/jose/index.md): 52 changes - [jotai](https://unstale.sh/npm/jotai/index.md): 26 changes - [js-cookie](https://unstale.sh/npm/js-cookie/index.md): 5 changes - [jsdom](https://unstale.sh/npm/jsdom/index.md): 1460 changes - [jsonpatch](https://unstale.sh/pypi/jsonpatch/index.md): 18 changes - [jsonpointer](https://unstale.sh/pypi/jsonpointer/index.md): 7 changes - [knip](https://unstale.sh/npm/knip/index.md): 730 changes - [ky](https://unstale.sh/npm/ky/index.md): 69 changes - [lodash](https://unstale.sh/npm/lodash/index.md): 14 changes - [marked](https://unstale.sh/npm/marked/index.md): 85 changes - [nanoid](https://unstale.sh/npm/nanoid/index.md): 21 changes - [next](https://unstale.sh/npm/next/index.md): 629 changes - [openapi-typescript-codegen](https://unstale.sh/npm/openapi-typescript-codegen/index.md): 1 changes - [papaparse](https://unstale.sh/npm/papaparse/index.md): 2 changes - [pdfjs-dist](https://unstale.sh/npm/pdfjs-dist/index.md): 193 changes - [pino](https://unstale.sh/npm/pino/index.md): 27 changes - [playwright](https://unstale.sh/npm/playwright/index.md): 97 changes - [postcss](https://unstale.sh/npm/postcss/index.md): 42 changes - [posthog-js](https://unstale.sh/npm/posthog-js/index.md): 825 changes - [prisma](https://unstale.sh/npm/prisma/index.md): 302 changes - [react](https://unstale.sh/npm/react/index.md): 51 changes - [react-day-picker](https://unstale.sh/npm/react-day-picker/index.md): 59 changes - [react-dropzone](https://unstale.sh/npm/react-dropzone/index.md): 37 changes - [react-hook-form](https://unstale.sh/npm/react-hook-form/index.md): 224 changes - [react-icons](https://unstale.sh/npm/react-icons/index.md): 1 changes - [react-resizable-panels](https://unstale.sh/npm/react-resizable-panels/index.md): 124 changes - [reactjs-tiptap-editor](https://unstale.sh/npm/reactjs-tiptap-editor/index.md): 52 changes - [sass](https://unstale.sh/npm/sass/index.md): 52 changes - [sharp](https://unstale.sh/npm/sharp/index.md): 77 changes - [shiki](https://unstale.sh/npm/shiki/index.md): 71 changes - [sonner](https://unstale.sh/npm/sonner/index.md): 5 changes - [streamdown](https://unstale.sh/npm/streamdown/index.md): 148 changes - [tailwind-merge](https://unstale.sh/npm/tailwind-merge/index.md): 17 changes - [tailwindcss](https://unstale.sh/npm/tailwindcss/index.md): 181 changes - [tsx](https://unstale.sh/npm/tsx/index.md): 39 changes - [turndown](https://unstale.sh/npm/turndown/index.md): 4 changes - [typescript-eslint](https://unstale.sh/npm/typescript-eslint/index.md): 183 changes - [valibot](https://unstale.sh/npm/valibot/index.md): 63 changes - [vite](https://unstale.sh/npm/vite/index.md): 44 changes - [vitest](https://unstale.sh/npm/vitest/index.md): 536 changes - [ws](https://unstale.sh/npm/ws/index.md): 14 changes - [zod](https://unstale.sh/npm/zod/index.md): 216 changes