
Nodejs Backend Typescript
Scaffold and implement a TypeScript Node API with Express or Fastify, middleware, JWT auth, and ORM integration.
Overview
Node.js Backend TypeScript is an agent skill for the Build phase that guides TypeScript Express/Fastify APIs, middleware, auth, and database integration.
Install
npx skills add https://github.com/bobmatnyc/claude-mpm-skills --skill nodejs-backend-typescriptWhat is this skill?
- Express and Fastify server patterns with TypeScript typing
- Routing, middleware, and JWT authentication flows
- Database integration pointers to Drizzle, Kysely, and Prisma sibling skills
- Production deployment and testing patterns for Node services
- Progressive disclosure entry (~75 tokens) vs full guidance (~5576 tokens)
- Progressive disclosure entry ~75 tokens; full skill body ~5576 tokens
- Related data skills: drizzle, kysely, prisma
Adoption & trust: 748 installs on skills.sh; 53 GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
You need a consistent Node + TypeScript API structure but do not want to re-derive routing, auth, and ORM patterns from scratch in every session.
Who is it for?
Indie builders creating REST APIs, web app backends, or agent-facing HTTP services in TypeScript.
Skip if: Pure serverless-only stacks with no Node server, or front-end-only tasks with no API layer.
When should I use this skill?
When working with nodejs-backend-typescript or related Node TypeScript backend functionality (routing, middleware, auth, database integration).
What do I get? / Deliverables
Your agent applies documented Express/Fastify backend patterns and can chain to Drizzle, Kysely, or Prisma skills for data layers.
- Structured API route and middleware implementation
- Authentication and database integration patterns applied to the repo
Recommended Skills
Journey fit
How it compares
Opinionated skill-package patterns for Node APIs, not a one-shot OpenAPI generator or infrastructure provisioner.
Common Questions / FAQ
Who is nodejs-backend-typescript for?
Solo builders and small teams using Claude agents to implement TypeScript Node backends with Express or Fastify and standard auth/database hooks.
When should I use nodejs-backend-typescript?
Use it during Build when you are adding routes, middleware, JWT auth, ORM integration, API tests, or deployment patterns for a Node TypeScript service.
Is nodejs-backend-typescript safe to install?
Check the Security Audits panel on this Prism page for audit status and risk before enabling the skill in your agent.
SKILL.md
READMESKILL.md - Nodejs Backend Typescript
{ "name": "nodejs-backend", "version": "1.0.0", "category": "toolchain", "toolchain": "typescript", "framework": "nodejs", "tags": [ "backend", "nodejs", "express", "fastify", "rest-api", "typescript", "jwt", "authentication", "database", "orm" ], "entry_point_tokens": 75, "full_tokens": 5576, "related_skills": [ "../../typescript-core", "../../data/drizzle", "../../data/kysely", "../../data/prisma" ], "author": "Claude MPM", "license": "MIT", "description": "Comprehensive TypeScript backend development with Express and Fastify, covering routing, middleware, authentication, database integration, testing, and production deployment patterns." } --- name: nodejs-backend-typescript description: "Node.js backend development with TypeScript, Express/Fastify servers, routing, middleware, and database integration" user-invocable: false disable-model-invocation: true progressive_disclosure: entry_point: summary: "Node.js backend development with TypeScript, Express/Fastify servers, routing, middleware, and database integration" when_to_use: "When working with nodejs-backend-typescript or related functionality." quick_start: "1. Review the core concepts below. 2. Apply patterns to your use case. 3. Follow best practices for implementation." --- # Node.js Backend Development with TypeScript --- progressive_disclosure: entry_point: summary: "TypeScript backend patterns with Express/Fastify, routing, middleware, database integration" when_to_use: - "When building REST APIs with TypeScript" - "When creating Express/Fastify servers" - "When needing server-side TypeScript" - "When building microservices" quick_start: - "npm init -y && npm install -D typescript @types/node tsx" - "npm install express @types/express zod" - "Create tsconfig.json with strict mode" - "npm run dev" token_estimate: entry: 75 full: 4700 --- ## TypeScript Setup ### Essential Configuration **tsconfig.json** (strict mode recommended): ```json { "compilerOptions": { "target": "ES2022", "module": "NodeNext", "moduleResolution": "NodeNext", "outDir": "./dist", "rootDir": "./src", "strict": true, "esModuleInterop": true, "skipLibCheck": true, "forceConsistentCasingInFileNames": true, "resolveJsonModule": true, "types": ["node"] }, "include": ["src/**/*"], "exclude": ["node_modules", "dist"] } ``` **package.json scripts**: ```json { "scripts": { "dev": "tsx watch src/server.ts", "build": "tsc", "start": "node dist/server.js", "test": "vitest" } } ``` ### Development Dependencies ```bash npm install -D typescript @types/node tsx vitest npm install -D @types/express # or @types/node (Fastify has built-in types) ``` ## Express Patterns ### Basic Express Server **src/server.ts**: ```typescript import express, { Request, Response, NextFunction } from 'express'; import { z } from 'zod'; const app = express(); const port = process.env.PORT || 3000; // Middleware app.use(express.json()); app.use(express.urlencoded({ extended: true })); // Type-safe request handlers interface TypedRequest<T> extends Request { body: T; } // Routes app.get('/health', (req: Request, res: Response) => { res.json({ status: 'ok', timestamp: new Date().toISOString() }); }); // Start server app.listen(port, () => { console.log(`Server running on port ${port}`); }); ``` ### Router Pattern **src/routes/users.ts**: ```typescript import { Router } from 'express'; import { z } from 'zod'; import { validateRequest } from '../middleware/validation'; const router = Router(); const createUserSchema = z.object({ email: z.string().email(), name: z.string().min(2), age: z.number().int().positive().optional(), }); router.post( '/users', validateRequest(createUserSchema), async (req, res, next) => { try { const userData = req.body; //