skills/tanstack/SKILL.md
Reference catalogue of every TanStack library with verified status (2026-05-01) and adopt-today / wait / skip verdicts for the user's stack. Load when the user mentions TanStack Query, TanStack Table, TanStack Form, TanStack Router, TanStack Start, TanStack Virtual, TanStack DB, TanStack AI, TanStack Pacer, TanStack Intent, TanStack CLI, TanStack Hotkeys, TanStack Store, TanStack Devtools, asks "what TanStack library for X", "is TanStack X stable", "TanStack catalogue", "TanStack ecosystem", or considers adopting any individual TanStack library. Reference skill, not an action skill. Different from /ro:new-tanstack-app (which scaffolds a TanStack Start app); this is the umbrella catalogue.
npx skillsauth add RonanCodes/ronan-skills tanstackInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Verified at 2026-05-01 from vaults/llm-wiki-research/wiki/concepts/tanstack-libraries.md and tanstack-scaffolder-integrations.md. Source of truth for any "should I adopt TanStack X" question. Lift verdicts from here rather than guessing from training data; TanStack ships in alpha and beta openly and statuses move.
| Library | What it is | Status (2026-05-01) | Verdict | |---|---|---|---| | Start | Type-safe full-stack meta-framework, file routes + server fns | RC | In canon, default | | Router | Type-safe file-based routing, search-param schemas | Stable | In canon (under Start) | | Query | Server-state cache, framework agnostic | Stable | In canon, default for server state | | Form | Headless type-safe form state, no schema-coupling | Stable (newly graduated) | Use today for any non-trivial form | | Table | Headless data-grid primitives | Stable | In canon for app-internal tables | | Virtual | Windowing for huge lists / grids | Stable | Use today for any list past 1K rows | | Store | Tiny framework-agnostic reactive store | Alpha (mature; powers Form + Router) | Use today for global state | | DB | Reactive client-store layered over your existing API | Beta | Worth investigating (sits between Drizzle and Convex) | | AI | Vercel-AI-SDK competitor, multi-provider | Alpha | Wait (Vercel AI SDK is more mature today) | | Pacer | Debounce / throttle / rate-limit / queue / batch | Beta | Use today for any rate-limited UI | | Hotkeys | Type-safe shortcuts + sequences + recording | Alpha | Wait for beta unless you need recording | | Intent | Ship Agent Skills (procedural knowledge) with npm packages | Alpha | Frontier (paradigm-shift potential for skill distribution) | | CLI | Scaffolder + MCP server for TanStack docs | Alpha | Use today for new TanStack apps | | Devtools | Standalone debugging surface across Query / Router / Store | Alpha | Use in dev as adopted libraries mature |
/ro:new-tanstack-app.g d for go-to-dashboard) or user-rebindable keys./ro:nango could one day live inside @nangohq/node itself, this is why.pnpm dlx create-tsrouter-app for greenfield. The MCP-server-for-docs angle is the watch-this part.| Library | Most-people alternative | When the alternative wins | |---|---|---| | Query | SWR | Smaller bundle, simpler API, fine for trivial fetches | | Table | AG Grid | Pivoting, master-detail, server-side row models, integrated charts (and you do not want to build them) | | Form | react-hook-form | More mature, more StackOverflow answers, larger community | | Virtual | react-window | Smaller surface, you only need basic windowing | | Store | Zustand | Simpler API, larger community, you do not need framework-agnostic | | Router | React Router | Industry default, the team already knows it | | DB | Convex (full backend), Drizzle (server ORM) | Convex when you want a full reactive backend; Drizzle when you only need server-side SQL. DB sits in between as a client-only sync layer | | AI | Vercel AI SDK | Today, almost always; AI is alpha | | Pacer | lodash.throttle, p-throttle | Trivial cases where you want one function, not a library | | Hotkeys | react-hotkeys-hook, tinykeys | Stable, well-documented; you do not need recording |
Store is the foundation; Form and Router depend on it internally. Start sits on Router and bundles server functions. Query is the primary data primitive most apps reach for first; DB is an optional reactive layer one level up that wraps Query collections with optimistic mutations. Form, Table, Virtual are headless primitives composed into UI. Hotkeys and Pacer are cross-cutting UX helpers. CLI, Devtools, Intent, AI are the tooling layer; Intent and AI are still settling.
flowchart TB
APP([Your app]):::source
subgraph META[Meta-framework]
ST[Start]:::engine
RT[Router]:::engine
end
subgraph DATA[Data]
QY[Query]:::engine
DB[DB]:::engine
end
subgraph PRIM[Headless primitives]
FM[Form]:::engine
TB[Table]:::engine
VR[Virtual]:::engine
end
subgraph FOUND[Foundation]
SR[Store]:::output
end
subgraph UX[UX helpers]
HK[Hotkeys]:::engine
PC[Pacer]:::engine
end
APP --> ST
ST --> RT
ST --> QY
RT --> SR
FM --> SR
QY -.->|optional| DB
TB --> VR
classDef source fill:#e0af40,stroke:#c09030,color:#000
classDef engine fill:#5bbcd6,stroke:#4090b0,color:#000
classDef output fill:#7dcea0,stroke:#5da080,color:#000
g d) or user-rebinding.TanStack is not always the right call. Pick on merit per library, not on brand affinity.
Beta. Debounce, throttle, rate-limit, queue, batch with sync and async variants, type-safe, framework-agnostic, reactive React adapters. Sounds trivial; writing a correct async-debounce is harder than people think. Drop into any rate-limited UI: search-as-you-type, autosave, scroll-driven loads. Today is the right time.
Beta. Reactive client-side store layered over your existing API. Collections, live queries, optimistic mutations. Sits between Drizzle (server SQL) and Convex (full backend). Lets you keep D1 + Drizzle on the server and add optimistic-mutation feel on the client without paying the Convex lock-in tax. Worth a real test on the next greenfield app where the UX wants to feel real-time but the backend stays normal HTTP.
Alpha. Library maintainers ship Agent Skills inside npm packages, version-aligned, auto-discovered when you pnpm add the package. Same shape as our /ro:* skills, but distributed via npm. Paradigm-shift potential: /ro:nango could one day live inside @nangohq/node itself, maintained by Nango. Subscribe to TanStack newsletter and watch for first non-TanStack libraries shipping Intent skills.
/ro:new-tanstack-app to scaffold a new app on TanStack Start/ro:migrate-to-tanstack to port an existing app onto TanStack Start/ro:clerk, /ro:nango, /ro:stripe, /ro:cf-ship for the rest of the canonical stackllm-wiki-research/wiki/concepts/tanstack-libraries.md (full catalogue with composition diagram)llm-wiki-research/wiki/concepts/tanstack-scaffolder-integrations.md (Tanner's vendor picks + "things you haven't thought about" curation)testing
--- name: linear-pipeline description: The Fable orchestrator for a single dispatched Linear ticket. Holds almost no context itself; it receives `--issue <ID> --detached`, decides the stage sequence, and fans out a sub-agent per stage, passing forward only each stage's artifact (never re-derived, never inlined into its own context). Step zero, before any planning or stage routing, is a boundary triage against `canon/security-boundary.md` (#199): a match tags Ronan Connolly and stops the run, no
development
--- name: in-your-face description: Capture a chat-only answer into a durable artifact (markdown + HTML, PDF when cheap) and launch it automatically so the user cannot miss it. Use when user says "in your face", "don't let me lose this", "save that answer", "make that durable", or right after answering a substantive side question (a recipe, comparison, how-to, or generated prompt) that would otherwise die with the context. category: workflow argument-hint: [--no-open] [--vault <short>] [hint of
tools
One-shot headless OpenAI Codex CLI calls for background/admin AI tasks — summaries, classification, extraction, admin glue. The default engine for anything that runs AI constantly in the background (daemon-driven, per-event), because it bills the flat ChatGPT subscription instead of Claude usage or per-token API spend, and it keeps working while Claude is rate-limited. NEVER for coding — coding stays Claude. Use when a skill or daemon needs a cheap always-on AI call, when the user says "use codex", "ask codex", "codex as backup", or when building a background summarizer/classifier into a listener or loop. Reads auth from ~/.codex/auth.json (ChatGPT account, no API key).
research
Turn a warranty rejection, repair quote, or RMA email into a cited decision brief — legal read (NL/EU consumer law), is the part user-serviceable, live part and new-unit prices, repair-vs-DIY-vs-new economics, before-you-send-it checklist, deadlines. Use when the user pastes or screenshots a repair quote, warranty rejection, "not covered" email, onderzoekskosten fee, or asks "should I repair or replace this".