What problem does it solve? Operately's web app has two competing data-fetching patterns: legacy imperative Api.* calls in loaders, generated tuple hooks, and Pages.useRefresh, versus the newer TanStack Query approach. This Skill gives an AI agent the exact rules and skeletons to write new pages with TanStack Query and to migrate an existing surface's API calls in the same change, avoiding mixed loaders and stale caches. ## Core Features & Use Cases - Loader migration rules: Prefetch with generated fooQuery helpers, return query inputs instead of payloads, and read data with useLoadedQuery so pages do not refetch on mount. - Mutation lifecycle wrappers: Create useMutation hooks in model lifecycle files that invalidate the right query key prefixes on success, with canonical file references. - Testing guidance: Colocated Jest tests that seed the query client, run invalidation helpers, and assert isInvalidated on intended and unrelated keys. - Use Case: When fixing a bug on a project page that still uses Api.projects.useCreate, migrate that page's loader and mutation to TanStack Query in the same PR, following the provided old-to-new mapping table. ## Quick Start Use the tanstack-query skill to convert this page's loader and mutation from raw Api calls to TanStack Query.