trpc-type-safety

Warn

Audited by Runlayer on Feb 21, 2026

Risk Level: MEDIUM
Scan Summary
Max Score
78%
Files
2
Flagged
2
Chunks
7
Flagged Files (2)
SKILL.mdHIGH
78.3%

Malicious tool definition detected

Tool: SKILL.md [1/6] Description: --- name: trpc-type-safety description: "tRPC end-to-end type-safe APIs for TypeScript with React Query integration and full-stack type safety" progressive_disclosure: entry_point: summary: "tRPC end-to-end type-safe APIs for TypeScript with React Query integration and full-stack type safety" when_to_use: "When working with trpc-type-safety or related functionality." quick_start: "1.

Tool: SKILL.md [2/6] Description: getUser: t.procedure .input(z.string()) .query(({ input }) => { return db.user.findUnique({ where: { id: input } }); }), // Query with multiple inputs searchUsers: t.procedure .input(z.object({ query: z.string(), limit: z.number().default(10), })) .query(({ input }) => { return db.user.findMany({ where: { name: { contains: input.query } }, take: input.limit, }); }), }); ``` ### Mutation Procedures (Write Operations) ```typescript const router = t.router({ create

Tool: SKILL.md [3/6] Description: | Server error | ### Custom Error Handling ```typescript const router = t.router({ deleteUser: t.procedure .input(z.string()) .mutation(async ({ input, ctx }) => { try { return await ctx.db.user.delete({ where: { id: input } }); } catch (error) { if (error.code === 'P2025') { // Prisma not found throw new TRPCError({ code: 'NOT_FOUND', message: 'User not found', cause: error, }); } throw new TRPCError({ code: 'INTERNAL_SERVER_ERROR', message: 'Failed to delete u

Tool: SKILL.md [4/6] Description: } from '@trpc/server/adapters/ws'; import ws from 'ws'; const wss = new ws.Server({ port: 3001 }); applyWSSHandler({ wss, router: appRouter, createContext, }); console.log('WebSocket server listening on port 3001'); ``` ### Subscription Procedure ```typescript import { observable } from '@trpc/server/observable'; import { EventEmitter } from 'events'; const ee = new EventEmitter(); const router = t.router({ onPostAdd: t.procedure.subscription(() => { return obse

Tool: SKILL.md [5/6] Description: createPaginatedProcedure((cursor, limit) => db.post.findMany({ skip: cursor, take: limit }) ), users: createPaginatedProcedure((cursor, limit) => db.user.findMany({ skip: cursor, take: limit }) ), }); ``` --- ## Testing Strategies ### Unit Testing Procedures ```typescript import { createCaller } from '../routers'; describe('User Router', () => { it('should create user', async () => { const ctx = { db: mockDb, session: null, }; const caller = createCaller(ctx); c

Tool: SKILL.md [6/6] Description: (req.method === 'GET') { const user = await db.user.findUnique({ where: { id: req.query.id } }); res.json(user); } else if (req.method === 'PATCH') { const user = await db.user.update({ where: { id: req.query.id }, data: req.body, }); res.json(user); } } // Client const response = await fetch(`/api/users/${id}`); const user = await response.json(); // No types!

metadata.jsonHIGH
78.3%

Malicious tool definition detected

Tool: metadata.json Description: { "name": "trpc", "version": "1.0.0", "category": "toolchain", "toolchain": "typescript", "tags": [ "trpc", "api", "typescript", "type-safety", "react-query", "nextjs", "end-to-end-types", "rpc", "websocket", "real-time" ], "entry_point_tokens": 70, "full_tokens": 12046, "related_skills": [ "../../validation/zod", "../../../nextjs", "../../state/zustand", "../../testing/vitest" ], "author": "claude-mpm-skills", "license": "MIT", "subcategory": "api", "requires":

Audit Metadata
Max File Score
78%
Classification
UNKNOWN_SERVER
Files Scanned
2
Files Flagged
2
Chunks Analyzed
7
Analyzed
Feb 21, 2026, 06:56 PM
Security Audit — runlayer — trpc-type-safety