← ClaudeAtlas

trpclisted

tRPC for type-safe APIs. Covers routers, procedures, and React Query integration. Use for end-to-end type-safe APIs. USE WHEN: user mentions "tRPC", "type-safe API", "end-to-end types", "procedures", "tRPC router", "tRPC React Query", asks about "how to build type-safe API", "tRPC with Next.js", "tRPC middleware", "tRPC context" DO NOT USE FOR: REST APIs - use `rest-api` instead; GraphQL - use `graphql` instead; OpenAPI specs - use `openapi` instead; Non-TypeScript projects
claude-dev-suite/claude-dev-suite · ★ 33 · AI & Automation · score 80
Install: claude install-skill claude-dev-suite/claude-dev-suite
# tRPC Core Knowledge > **Deep Knowledge**: Use `mcp__documentation__fetch_docs` with technology: `trpc` for comprehensive documentation. ## Router Definition ```typescript import { initTRPC, TRPCError } from '@trpc/server'; import { z } from 'zod'; const t = initTRPC.context<Context>().create(); export const appRouter = t.router({ user: t.router({ list: t.procedure.query(async ({ ctx }) => { return ctx.db.users.findMany(); }), byId: t.procedure .input(z.string()) .query(async ({ ctx, input }) => { const user = await ctx.db.users.find(input); if (!user) throw new TRPCError({ code: 'NOT_FOUND' }); return user; }), create: t.procedure .input(z.object({ name: z.string().min(1), email: z.string().email(), })) .mutation(async ({ ctx, input }) => { return ctx.db.users.create(input); }), }), }); export type AppRouter = typeof appRouter; ``` ## Client Usage (React) ```tsx import { trpc } from '../utils/trpc'; function UserList() { const { data, isLoading } = trpc.user.list.useQuery(); const createUser = trpc.user.create.useMutation({ onSuccess: () => { utils.user.list.invalidate(); }, }); if (isLoading) return <Spinner />; return ( <div> {data?.map(user => <UserCard key={user.id} user={user} />)} <button onClick={() => createUser.mutate({ name: 'John', email: 'j@example.com' })}> Add User </button> <