← All skills
remix
97 / 100 · Low risk
Fine to try.
By TanStack/ai (GitHub) · coding · 3,345 stars · scanned at commit 975ec3e
Build and review Remix 3 applications using the `remix` npm package and subpath imports. Use when working on Remix app structure, routes, controllers, middleware, validation, data access, auth, sessions, file uploads, server setup, UI components, hydration, HMR, navigation, or tests.
Works with any agent that supports SKILL.md skills.
What this skill can do
Connects to the internet
This is disclosed by the author in the skill's SKILL.md or README.
Found in 21 places.
Show 17 more
- examples/ts-remix-chat/.agents/skills/remix/SKILL.md, line 285
- `remix/node-fetch-server/test` — `createTestServer` for end-to-end tests that need a real local HTTP server around a Fetch handler - examples/ts-remix-chat/.agents/skills/remix/references/assets-and-browser-modules.md, line 54
(await assets.fetch(request)) ?? - examples/ts-remix-chat/.agents/skills/remix/references/component-model.md, line 117
let response = await fetch(nextUrl, { signal }) - examples/ts-remix-chat/.agents/skills/remix/references/hydration-frames-navigation.md, line 26
await fetch(routes.cart.add.href(), { - examples/ts-remix-chat/.agents/skills/remix/references/hydration-frames-navigation.md, line 108
By default, `run()` resolves frames with `fetch()`, requests `text/html`, and forwards the submitted - examples/ts-remix-chat/.agents/skills/remix/references/hydration-frames-navigation.md, line 123
- **`resolveFrame(src, options)`** (optional) — overrides the default `fetch()` resolver when a `<Frame>` loads or reloads content and for intercepted link and - examples/ts-remix-chat/.agents/skills/remix/references/middleware-and-server.md, line 224
New apps already include a `server.ts` that adapts the app router with `remix/node-fetch-server`. Keep that generated server unless the task specifically needs - examples/ts-remix-chat/.agents/skills/remix/references/middleware-and-server.md, line 226
Use `remix/node-fetch-server` when you want to keep owning a standard Node `http`, `https`, or `http2` server directly. - examples/ts-remix-chat/.agents/skills/remix/references/middleware-and-server.md, line 241
import { createRequestListener } from 'remix/node-fetch-server' - examples/ts-remix-chat/.agents/skills/remix/references/mixins-styling-events.md, line 29
let response = await fetch(`/search?q=${query}`, { signal }) - examples/ts-remix-chat/.agents/skills/remix/references/routing-and-controllers.md, line 255
return (await assets.fetch(request)) ?? new Response('Not Found', { status: 404 }) - examples/ts-remix-chat/.agents/skills/remix/references/testing-patterns.md, line 7
- Driving the router with `router.fetch(new Request(...))` and asserting on the returned `Response` - examples/ts-remix-chat/.agents/skills/remix/references/testing-patterns.md, line 20
- **Server / router tests** — drive the router with `router.fetch(new Request(...))` and assert on the returned `Response`. No DOM, no browser harness. - examples/ts-remix-chat/.agents/skills/remix/references/testing-patterns.md, line 37
let response = await router.fetch( - examples/ts-remix-chat/.agents/skills/remix/references/testing-patterns.md, line 59
Use `createTestServer` from `remix/node-fetch-server/test` when the behavior depends on a real HTTP origin, redirects, streaming, cookies through a network boun - examples/ts-remix-chat/.agents/skills/remix/references/testing-patterns.md, line 62
import { createTestServer } from 'remix/node-fetch-server/test' - examples/ts-remix-chat/.agents/skills/remix/references/testing-patterns.md, line 64
let server = await createTestServer((request) => router.fetch(request))
and 1 more places
Install
Paste this into your terminal. It downloads exactly the version we scanned, not whatever is newest.
if [ -e ~/.agents/skills/'remix' ] || [ -L ~/.agents/skills/'remix' ]; then echo 'A skill folder named remix already exists — not replacing it' >&2; false; else d=$(mktemp -d) && git clone --quiet --filter=blob:none --no-checkout 'https://github.com/TanStack/ai' "$d" && git -C "$d" checkout --quiet '975ec3ef1e3c24ba8ef2e6421278a6ac5fd55492' -- 'examples/ts-remix-chat/.agents/skills/remix' && mkdir -p ~/.agents/skills && cp -R "$d"/'examples/ts-remix-chat/.agents/skills/remix' ~/.agents/skills/'remix' && rm -rf "$d"; fi
Codex reads ~/.agents/skills directly. For Claude Code, Cursor, Copilot, Gemini CLI, Antigravity or OpenCode, also link it. For Claude Code: ln -s ~/.agents/skills/'remix' ~/.claude/skills/'remix' (other agents: ~/.cursor/skills, ~/.copilot/skills, ~/.gemini/skills, ~/.gemini/config/skills, ~/.config/opencode/skills). Or install through the finder skill, which does both.
Badge for your README
The badge for TanStack/ai shows the score of its lowest-scoring skill.

[](https://zalavijaysinh.github.io/skilltrust/repos/TanStack/ai/)
Score history
| Date | Version | Score |
|---|
| 2026-11-11 | 975ec3e | 97 |
| 2026-11-08 | c32f641 | 97 |
| 2026-11-07 | c32f641 | 87 |