Every rule was compared with its official docs and tried in freshly created projects; the CLI can no longer delete files outside the project or lose your text.
What changed
Data loss: Manifest entries outside the rule folders are ignored. Unbalanced AGENTS.md markers stop the run and leave the file untouched.
AGENTS.md: The persona and guardrails are gone. It now holds commands, including install and single-file tests, precedence and the rule map.
Barrels: The rules ban barrel files in application code and use one @/* alias. New suffix *.action.ts, and messages live in src/messages/.
Loading: Server Action files load nextjs, server function files load tanstack-start, and routes load i18n. State rules moved to react so they reach components.
Rule corrections:satisfies, useShallow, React Compiler, font-display, startTransition, Zod 4 APIs, TanStack Queryquery(), .validator, Base UI patterns, the cn package.
i18n: The rule now asks for localization instead of word-for-word translation and shows locale-aware case and sorting APIs.
Cursor: Output uses globs as its docs describe; rule sources became .md so they read well on GitHub.
CLI: Overwriting and deleting are asked separately and symlinks stay symlinks. A project with only @tanstack/react-router no longer counts as TanStack Start, Yarn 1 uses npx, and the lockfile is found up to the repository root.
Why
A cloned repository was dangerous: The manifest is a committed file. A ../outside.txt entry made init and remove delete a file outside the project without asking, and a lone marker deleted user text. We reproduced both in tests.
Persona: We found no controlled study comparing an agent in a real repository with and without a role line, so its effect is unknown. Single-call studies show no consistent gain in correctness. The Claude docs recommend this file hold only what the code cannot show. Anthropic recommends a role for system prompts, and this file is not one.
Wrong loading: Action security rules were not in context while writing actions, and state rules did not load while writing components.
Wrong content:startTransition runs its function immediately, so it does not speed up heavy work. ensureQueryData and prefetchQuery are being removed. nuqs does not cover TanStack Start. font-display: swap caused CLS 0.207 in our own template; a fallback brought it to 0.001.
Examples: The forms example broke the build when rendered from a Server Component, the relative URL in api failed on the server, and the nextjs example broke the build in new create-next-app projects.
Limits: In freshly created Next.js and TanStack Start projects we ran Claude twice per task, with and without the rules. Every run with rules passed types, lint, build and the page check; runs without rules on TanStack wrote the old .inputValidator and returned 500. This is a small check, not a claim about code quality. Cursor output follows its docs and was not run in Cursor.
Run the command; there is nothing to migrate by hand. Rules you did not change are updated, and rules you changed are kept and listed. Existing barrel files and aliases are not errors; no refactor is needed, and new code follows the new rules. If you use only @tanstack/react-router, pass --framework.