trpc

tRPC end-to-end type safety, procedures, routers, middleware, and React integration.

509 stars

Best use case

trpc is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

tRPC end-to-end type safety, procedures, routers, middleware, and React integration.

Teams using trpc should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/trpc/SKILL.md --create-dirs "https://raw.githubusercontent.com/a5c-ai/babysitter/main/library/specializations/web-development/skills/trpc/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/trpc/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How trpc Compares

Feature / AgenttrpcStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

tRPC end-to-end type safety, procedures, routers, middleware, and React integration.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# tRPC Skill

Expert assistance for building type-safe APIs with tRPC.

## Capabilities

- Create type-safe procedures and routers
- Implement middleware for auth/validation
- Set up tRPC with Next.js/React
- Handle subscriptions
- Configure error handling
- Build type-safe client hooks

## Usage

Invoke this skill when you need to:
- Build end-to-end type-safe APIs
- Integrate with React/Next.js
- Replace REST with type-safe RPC
- Implement real-time features

## Patterns

### Router Definition

```typescript
// server/trpc/routers/user.ts
import { z } from 'zod';
import { router, publicProcedure, protectedProcedure } from '../trpc';
import { TRPCError } from '@trpc/server';

export const userRouter = router({
  list: protectedProcedure
    .input(z.object({
      page: z.number().min(1).default(1),
      limit: z.number().min(1).max(100).default(10),
      search: z.string().optional(),
    }))
    .query(async ({ ctx, input }) => {
      const users = await ctx.prisma.user.findMany({
        where: input.search
          ? { name: { contains: input.search } }
          : undefined,
        skip: (input.page - 1) * input.limit,
        take: input.limit,
      });
      return users;
    }),

  byId: protectedProcedure
    .input(z.string())
    .query(async ({ ctx, input }) => {
      const user = await ctx.prisma.user.findUnique({
        where: { id: input },
      });
      if (!user) {
        throw new TRPCError({ code: 'NOT_FOUND' });
      }
      return user;
    }),

  create: protectedProcedure
    .input(z.object({
      name: z.string().min(1),
      email: z.string().email(),
    }))
    .mutation(async ({ ctx, input }) => {
      return ctx.prisma.user.create({ data: input });
    }),
});
```

### React Integration

```typescript
// In component
const { data, isLoading } = trpc.user.list.useQuery({ page: 1 });
const createUser = trpc.user.create.useMutation();

<button onClick={() => createUser.mutate({ name, email })}>
  Create
</button>
```

## Best Practices

- Use Zod for input validation
- Implement proper middleware
- Leverage type inference
- Handle errors consistently

## Target Processes

- t3-stack-development
- nextjs-full-stack
- type-safe-api