skills/ariegoldkin/trpc-scaffolder/SKILL.md
Scaffolds tRPC routers, procedures, and Zod schemas with full type safety following DevPrep AI patterns
npx skillsauth add aiskillstore/marketplace trpc-scaffolderInstall 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.
Automate creation of type-safe tRPC endpoints with Zod validation.
TL;DR: Run scripts to create routers/schemas, register in _app.ts, validate with scripts.
Auto-triggered by keywords:
lib/trpc/routers/
_app.ts # Register all routers here ⚠️
{name}.ts # Router files
lib/trpc/schemas/
{entity}.schema.ts # Zod schemas
export const nameRouter = router({
doThing: publicProcedure
.input(inputSchema)
.output(outputSchema)
.mutation(async ({ input }) => { /* logic */ }),
});
export const inputSchema = z.object({
field: z.string().min(1),
});
export type Input = z.infer<typeof inputSchema>; // ⚠️ Required!
// In _app.ts
export const appRouter = router({
ai: aiRouter,
name: nameRouter, // ⬅️ Add new routers here
});
./.claude/skills/trpc-scaffolder/scripts/create-router.sh user
# Creates: lib/trpc/routers/user.ts
# ⚠️ Remember to register in _app.ts!
./.claude/skills/trpc-scaffolder/scripts/add-procedure.sh ai getHints query
# Outputs code snippet to add to router
./.claude/skills/trpc-scaffolder/scripts/create-schema.sh hint
# Creates: lib/trpc/schemas/hint.schema.ts
./.claude/skills/trpc-scaffolder/scripts/validate-trpc.sh
# Checks: router registration, type exports
| Type | Use For | Method |
|------|---------|--------|
| Query | Fetch data (GET) | .query(async ({ input }) => ...) |
| Mutation | Modify data (POST/PUT/DELETE) | .mutation(async ({ input }) => ...) |
| Type | Pattern | Example |
|------|---------|---------|
| String | z.string().min(1).max(100) | Name validation |
| Number | z.number().int().min(0).max(10) | Difficulty 0-10 |
| Email | z.string().email() | Email validation |
| Optional | z.string().optional() | Optional field |
| Array | z.array(z.string()).min(1) | At least 1 item |
| Enum | z.enum(["a", "b", "c"]) | Fixed choices |
| Object | z.object({ field: z.string() }) | Nested object |
{domain}Router (e.g., aiRouter, userRouter)camelCase (e.g., generateQuestions, getHints){action}{Entity}{Input\|Output}Schema{entity}.schema.ts, {domain}.ts| Code | When | Example |
|------|------|---------|
| NOT_FOUND | Resource doesn't exist | User not found |
| BAD_REQUEST | Invalid input | Validation failed |
| UNAUTHORIZED | Not authenticated | Login required |
| FORBIDDEN | Not authorized | Access denied |
| INTERNAL_SERVER_ERROR | Server error | API failure |
// ❌ Forgot this step
// ✅ Add to _app.ts:
import { userRouter } from "./user";
export const appRouter = router({ ai: aiRouter, user: userRouter });
// ❌ Schema without types
export const userSchema = z.object({ name: z.string() });
// ✅ Always export inferred types
export type User = z.infer<typeof userSchema>;
// ❌ Using mutation for fetching data
getData: publicProcedure.mutation(...)
// ✅ Use query for GET operations
getData: publicProcedure.query(...)
// ❌ No validation
field: z.string()
// ✅ Add constraints
field: z.string().min(1, "Field is required")
SKILL.md is self-sufficient for:
Load additional docs when needed:
| Need | Load |
|------|------|
| Step-by-step tutorial | docs/quick-start-guide.md |
| Advanced Zod patterns | docs/trpc-patterns.md (lines 1-80) |
| Error handling strategies | docs/trpc-patterns.md (lines 150-220) |
| Testing procedures | docs/trpc-patterns.md (lines 220-270) |
| Context & middleware | docs/trpc-patterns.md (lines 80-150) |
Code examples:
examples/good-router.ts, examples/good-schema.tsFull project docs: Docs/api-design.md, Docs/api-transition/trpc-migration.md
Version: 1.0.0 | Updated: October 2025 Pattern: Follows quality-reviewer structure (optimized)
development
Apple Human Interface Guidelines for content display components. Use this skill when the user asks about charts component, collection view, image view, web view, color well, image well, activity view, lockup, data visualization, content display, displaying images, rendering web content, color pickers, or presenting collections of items in Apple apps. Also use when the user says how should I display charts, what's the best way to show images, should I use a web view, how do I build a grid of items, what component shows media, or how do I present a share sheet. Cross-references: hig-foundations for color/typography/accessibility, hig-patterns for data visualization patterns, hig-components-layout for structural containers, hig-platforms for platform-specific component behavior.
tools
Automate HelpDesk tasks via Rube MCP (Composio): list tickets, manage views, use canned responses, and configure custom fields. Always search tools first for current schemas.
testing
Expert Haskell engineer specializing in advanced type systems, pure functional design, and high-reliability software. Use PROACTIVELY for type-level programming, concurrency, and architecture guidance.
tools
GraphQL gives clients exactly the data they need - no more, no less. One endpoint, typed schema, introspection. But the flexibility that makes it powerful also makes it dangerous. Without proper controls, clients can craft queries that bring down your server. This skill covers schema design, resolvers, DataLoader for N+1 prevention, federation for microservices, and client integration with Apollo/urql. Key insight: GraphQL is a contract. The schema is the API documentation. Design it carefully.