Agent skill

Nodejs Backend Patterns

by ever-works in ever-works/ever-works

Build production-ready Node.js backend services with Express/Fastify, implementing middleware patterns, error handling, authentication, database integration, and API design best practices.

AGPL-3.0Auto-check passedBackend & APIs

Install Nodejs Backend Patterns

skills CLI
$ npx skills add ever-works/ever-works --skill nodejs-backend-patterns -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install ever-works/ever-works nodejs-backend-patterns --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/ever-works/ever-works.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/nodejs-backend-patterns .claude/skills/nodejs-backend-patterns && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
nodejs-backend-patterns
GitHub stars
158
Used in
17 other repos
Token cost
~4k tokens
SKILL.md length
349 words
Files
2 (incl. references)
Skills in repo
14
Repo updated
First seen
Licence
AGPL-3.0

At a glance

Build production-ready Node.js backend services with Express/Fastify, implementing middleware patterns, error handling, authentication, database integration, and API design best practices.

  • Works in 12 steps: Use TypeScript: Type safety prevents… → Implement proper error handling: Use… → Validate input: Use libraries like Zod… → …
  • Creating Node.js servers
  • SKILL.md covers When to Use This Skill, Core Frameworks, Architectural Patterns and Middleware Patterns, plus 7 more sections
  • Needs JWT_SECRET

What it does

Nodejs Backend Patterns is an agent skill from ever-works/ever-works. Build production-ready Node.js backend services with Express/Fastify, implementing middleware patterns, error handling, authentication, database integration, and API design best practices. Use when creating Node.js servers, REST APIs, GraphQL backends, or microservices architectures.

Its SKILL.md is about 4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/advanced-patterns.md`).

It sits in Backend & APIs, covering Backend development, REST APIs and Microservices. It works with Node.js, Fastify and GraphQL. The repository describes itself as: Ever® Works™ - The Workshop for AI. An open agentic runtime that autonomously researches, ships, and maintains entire businesses, 24/7 - https://ever.works. The licence is AGPL-3.0.

When your agent uses it

  • Creating Node.js servers
  • GraphQL backends
  • Microservices architectures

Example prompts

  • “/nodejs-backend-patterns”

Requirements

  • Node.js
  • A credential in JWT_SECRET

Workflow steps

12 steps, taken from the first numbered list in SKILL.md.

  1. Use TypeScript: Type safety prevents runtime errors
  2. Implement proper error handling: Use custom error classes
  3. Validate input: Use libraries like Zod or Joi
  4. Use environment variables: Never hardcode secrets
  5. Implement logging: Use structured logging (Pino, Winston)
  6. Add rate limiting: Prevent abuse
  7. Use HTTPS: Always in production
  8. Implement CORS properly: Don't use * in production
  9. Use dependency injection: Easier testing and maintenance
  10. Write tests: Unit, integration, and E2E tests
  11. Handle graceful shutdown: Clean up resources
  12. Use connection pooling: For databases

What it can do on your machine

Read from SKILL.md and the folder at commit 11d15aa. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are typescript).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • JWT_SECRET

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Nodejs Backend Patterns loads about 4k tokens when it runs, and up to ~6.2k if it reads all its reference files. Until then it costs about 77 tokens; SKILL.md has 349 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~77
When it runs · the whole SKILL.md, loaded when a task matches
~4k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~6.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from ever-works/ever-works at commit 11d15aa, republished under its AGPL-3.0 licence (© ever-works). 349 words, ~4,022 tokens.

Download SKILL.mdSave it as .claude/skills/nodejs-backend-patterns/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
nodejs-backend-patterns
description
Build production-ready Node.js backend services with Express/Fastify, implementing middleware patterns, error handling, authentication, database integration, and API design best practices. Use when creating Node.js servers, REST APIs, GraphQL backends, or microservices architectures.

Node.js Backend Patterns

Comprehensive guidance for building scalable, maintainable, and production-ready Node.js backend applications with modern frameworks, architectural patterns, and best practices.

When to Use This Skill

  • Building REST APIs or GraphQL servers
  • Creating microservices with Node.js
  • Implementing authentication and authorization
  • Designing scalable backend architectures
  • Setting up middleware and error handling
  • Integrating databases (SQL and NoSQL)
  • Building real-time applications with WebSockets
  • Implementing background job processing

Core Frameworks

Express.js - Minimalist Framework

Basic Setup:

typescript
import express, { Request, Response, NextFunction } from 'express';
import helmet from 'helmet';
import cors from 'cors';
import compression from 'compression';

const app = express();

// Security middleware
app.use(helmet());
app.use(cors({ origin: process.env.ALLOWED_ORIGINS?.split(',') }));
app.use(compression());

// Body parsing
app.use(express.json({ limit: '10mb' }));
app.use(express.urlencoded({ extended: true, limit: '10mb' }));

// Request logging
app.use((req: Request, res: Response, next: NextFunction) => {
	console.log(`${req.method} ${req.path}`);
	next();
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
	console.log(`Server running on port ${PORT}`);
});
Fastify - High Performance Framework

Basic Setup:

typescript
import Fastify from 'fastify';
import helmet from '@fastify/helmet';
import cors from '@fastify/cors';
import compress from '@fastify/compress';

const fastify = Fastify({
	logger: {
		level: process.env.LOG_LEVEL || 'info',
		transport: {
			target: 'pino-pretty',
			options: { colorize: true }
		}
	}
});

// Plugins
await fastify.register(helmet);
await fastify.register(cors, { origin: true });
await fastify.register(compress);

// Type-safe routes with schema validation
fastify.post<{
	Body: { name: string; email: string };
	Reply: { id: string; name: string };
}>(
	'/users',
	{
		schema: {
			body: {
				type: 'object',
				required: ['name', 'email'],
				properties: {
					name: { type: 'string', minLength: 1 },
					email: { type: 'string', format: 'email' }
				}
			}
		}
	},
	async (request, reply) => {
		const { name, email } = request.body;
		return { id: '123', name };
	}
);

await fastify.listen({ port: 3000, host: '0.0.0.0' });

Architectural Patterns

Pattern 1: Layered Architecture

Structure:

src/
├── controllers/     # Handle HTTP requests/responses
├── services/        # Business logic
├── repositories/    # Data access layer
├── models/          # Data models
├── middleware/      # Express/Fastify middleware
├── routes/          # Route definitions
├── utils/           # Helper functions
├── config/          # Configuration
└── types/           # TypeScript types

Controller Layer:

typescript
// controllers/user.controller.ts
import { Request, Response, NextFunction } from 'express';
import { UserService } from '../services/user.service';
import { CreateUserDTO, UpdateUserDTO } from '../types/user.types';

export class UserController {
	constructor(private userService: UserService) {}

	async createUser(req: Request, res: Response, next: NextFunction) {
		try {
			const userData: CreateUserDTO = req.body;
			const user = await this.userService.createUser(userData);
			res.status(201).json(user);
		} catch (error) {
			next(error);
		}
	}

	async getUser(req: Request, res: Response, next: NextFunction) {
		try {
			const { id } = req.params;
			const user = await this.userService.getUserById(id);
			res.json(user);
		} catch (error) {
			next(error);
		}
	}

	async updateUser(req: Request, res: Response, next: NextFunction) {
		try {
			const { id } = req.params;
			const updates: UpdateUserDTO = req.body;
			const user = await this.userService.updateUser(id, updates);
			res.json(user);
		} catch (error) {
			next(error);
		}
	}

	async deleteUser(req: Request, res: Response, next: NextFunction) {
		try {
			const { id } = req.params;
			await this.userService.deleteUser(id);
			res.status(204).send();
		} catch (error) {
			next(error);
		}
	}
}

Service Layer:

typescript
// services/user.service.ts
import { UserRepository } from '../repositories/user.repository';
import { CreateUserDTO, UpdateUserDTO, User } from '../types/user.types';
import { NotFoundError, ValidationError } from '../utils/errors';
import bcrypt from 'bcrypt';

export class UserService {
	constructor(private userRepository: UserRepository) {}

	async createUser(userData: CreateUserDTO): Promise<User> {
		// Validation
		const existingUser = await this.userRepository.findByEmail(userData.email);
		if (existingUser) {
			throw new ValidationError('Email already exists');
		}

		// Hash password
		const hashedPassword = await bcrypt.hash(userData.password, 10);

		// Create user
		const user = await this.userRepository.create({
			...userData,
			password: hashedPassword
		});

		// Remove password from response
		const { password, ...userWithoutPassword } = user;
		return userWithoutPassword as User;
	}

	async getUserById(id: string): Promise<User> {
		const user = await this.userRepository.findById(id);
		if (!user) {
			throw new NotFoundError('User not found');
		}
		const { password, ...userWithoutPassword } = user;
		return userWithoutPassword as User;
	}

	async updateUser(id: string, updates: UpdateUserDTO): Promise<User> {
		const user = await this.userRepository.update(id, updates);
		if (!user) {
			throw new NotFoundError('User not found');
		}
		const { password, ...userWithoutPassword } = user;
		return userWithoutPassword as User;
	}

	async deleteUser(id: string): Promise<void> {
		const deleted = await this.userRepository.delete(id);
		if (!deleted) {
			throw new NotFoundError('User not found');
		}
	}
}

Repository Layer:

typescript
// repositories/user.repository.ts
import { Pool } from 'pg';
import { CreateUserDTO, UpdateUserDTO, UserEntity } from '../types/user.types';

export class UserRepository {
	constructor(private db: Pool) {}

	async create(userData: CreateUserDTO & { password: string }): Promise<UserEntity> {
		const query = `
      INSERT INTO users (name, email, password)
      VALUES ($1, $2, $3)
      RETURNING id, name, email, password, created_at, updated_at
    `;
		const { rows } = await this.db.query(query, [userData.name, userData.email, userData.password]);
		return rows[0];
	}

	async findById(id: string): Promise<UserEntity | null> {
		const query = 'SELECT * FROM users WHERE id = $1';
		const { rows } = await this.db.query(query, [id]);
		return rows[0] || null;
	}

	async findByEmail(email: string): Promise<UserEntity | null> {
		const query = 'SELECT * FROM users WHERE email = $1';
		const { rows } = await this.db.query(query, [email]);
		return rows[0] || null;
	}

	async update(id: string, updates: UpdateUserDTO): Promise<UserEntity | null> {
		const fields = Object.keys(updates);
		const values = Object.values(updates);

		const setClause = fields.map((field, idx) => `${field} = $${idx + 2}`).join(', ');

		const query = `
      UPDATE users
      SET ${setClause}, updated_at = CURRENT_TIMESTAMP
      WHERE id = $1
      RETURNING *
    `;

		const { rows } = await this.db.query(query, [id, ...values]);
		return rows[0] || null;
	}

	async delete(id: string): Promise<boolean> {
		const query = 'DELETE FROM users WHERE id = $1';
		const { rowCount } = await this.db.query(query, [id]);
		return rowCount > 0;
	}
}
Pattern 2: Dependency Injection

Use a DI container to wire up repositories, services, and controllers. For a full container implementation, see references/advanced-patterns.md.

Middleware Patterns

Authentication Middleware
typescript
// middleware/auth.middleware.ts
import { Request, Response, NextFunction } from 'express';
import jwt from 'jsonwebtoken';
import { UnauthorizedError } from '../utils/errors';

interface JWTPayload {
	userId: string;
	email: string;
}

declare global {
	namespace Express {
		interface Request {
			user?: JWTPayload;
		}
	}
}

export const authenticate = async (req: Request, res: Response, next: NextFunction) => {
	try {
		const token = req.headers.authorization?.replace('Bearer ', '');

		if (!token) {
			throw new UnauthorizedError('No token provided');
		}

		const payload = jwt.verify(token, process.env.JWT_SECRET!) as JWTPayload;

		req.user = payload;
		next();
	} catch (error) {
		next(new UnauthorizedError('Invalid token'));
	}
};

export const authorize = (...roles: string[]) => {
	return async (req: Request, res: Response, next: NextFunction) => {
		if (!req.user) {
			return next(new UnauthorizedError('Not authenticated'));
		}

		// Check if user has required role
		const hasRole = roles.some((role) => req.user?.roles?.includes(role));

		if (!hasRole) {
			return next(new UnauthorizedError('Insufficient permissions'));
		}

		next();
	};
};
Validation Middleware
typescript
// middleware/validation.middleware.ts
import { Request, Response, NextFunction } from 'express';
import { AnyZodObject, ZodError } from 'zod';
import { ValidationError } from '../utils/errors';

export const validate = (schema: AnyZodObject) => {
	return async (req: Request, res: Response, next: NextFunction) => {
		try {
			await schema.parseAsync({
				body: req.body,
				query: req.query,
				params: req.params
			});
			next();
		} catch (error) {
			if (error instanceof ZodError) {
				const errors = error.errors.map((err) => ({
					field: err.path.join('.'),
					message: err.message
				}));
				next(new ValidationError('Validation failed', errors));
			} else {
				next(error);
			}
		}
	};
};

// Usage with Zod
import { z } from 'zod';

const createUserSchema = z.object({
	body: z.object({
		name: z.string().min(1),
		email: z.string().email(),
		password: z.string().min(8)
	})
});

router.post('/users', validate(createUserSchema), userController.createUser);
Rate Limiting Middleware
typescript
// middleware/rate-limit.middleware.ts
import rateLimit from 'express-rate-limit';
import RedisStore from 'rate-limit-redis';
import Redis from 'ioredis';

const redis = new Redis({
	host: process.env.REDIS_HOST,
	port: parseInt(process.env.REDIS_PORT || '6379')
});

export const apiLimiter = rateLimit({
	store: new RedisStore({
		client: redis,
		prefix: 'rl:'
	}),
	windowMs: 15 * 60 * 1000, // 15 minutes
	max: 100, // Limit each IP to 100 requests per windowMs
	message: 'Too many requests from this IP, please try again later',
	standardHeaders: true,
	legacyHeaders: false
});

export const authLimiter = rateLimit({
	store: new RedisStore({
		client: redis,
		prefix: 'rl:auth:'
	}),
	windowMs: 15 * 60 * 1000,
	max: 5, // Stricter limit for auth endpoints
	skipSuccessfulRequests: true
});
Request Logging Middleware
typescript
// middleware/logger.middleware.ts
import { Request, Response, NextFunction } from 'express';
import pino from 'pino';

const logger = pino({
	level: process.env.LOG_LEVEL || 'info',
	transport: {
		target: 'pino-pretty',
		options: { colorize: true }
	}
});

export const requestLogger = (req: Request, res: Response, next: NextFunction) => {
	const start = Date.now();

	// Log response when finished
	res.on('finish', () => {
		const duration = Date.now() - start;
		logger.info({
			method: req.method,
			url: req.url,
			status: res.statusCode,
			duration: `${duration}ms`,
			userAgent: req.headers['user-agent'],
			ip: req.ip
		});
	});

	next();
};

export { logger };

Error Handling

Custom Error Classes
typescript
// utils/errors.ts
export class AppError extends Error {
	constructor(
		public message: string,
		public statusCode: number = 500,
		public isOperational: boolean = true
	) {
		super(message);
		Object.setPrototypeOf(this, AppError.prototype);
		Error.captureStackTrace(this, this.constructor);
	}
}

export class ValidationError extends AppError {
	constructor(
		message: string,
		public errors?: any[]
	) {
		super(message, 400);
	}
}

export class NotFoundError extends AppError {
	constructor(message: string = 'Resource not found') {
		super(message, 404);
	}
}

export class UnauthorizedError extends AppError {
	constructor(message: string = 'Unauthorized') {
		super(message, 401);
	}
}

export class ForbiddenError extends AppError {
	constructor(message: string = 'Forbidden') {
		super(message, 403);
	}
}

export class ConflictError extends AppError {
	constructor(message: string) {
		super(message, 409);
	}
}
Global Error Handler
typescript
// middleware/error-handler.ts
import { Request, Response, NextFunction } from 'express';
import { AppError } from '../utils/errors';
import { logger } from './logger.middleware';

export const errorHandler = (err: Error, req: Request, res: Response, next: NextFunction) => {
	if (err instanceof AppError) {
		return res.status(err.statusCode).json({
			status: 'error',
			message: err.message,
			...(err instanceof ValidationError && { errors: err.errors })
		});
	}

	// Log unexpected errors
	logger.error({
		error: err.message,
		stack: err.stack,
		url: req.url,
		method: req.method
	});

	// Don't leak error details in production
	const message = process.env.NODE_ENV === 'production' ? 'Internal server error' : err.message;

	res.status(500).json({
		status: 'error',
		message
	});
};

// Async error wrapper
export const asyncHandler = (fn: (req: Request, res: Response, next: NextFunction) => Promise<any>) => {
	return (req: Request, res: Response, next: NextFunction) => {
		Promise.resolve(fn(req, res, next)).catch(next);
	};
};

Database Patterns

Node.js supports both SQL and NoSQL databases. Use connection pooling for all production databases.

Key patterns covered in references/advanced-patterns.md:

  • PostgreSQL with connection pool — pg Pool configuration and graceful shutdown
  • MongoDB with Mongoose — connection management and schema definition
  • Transaction pattern — BEGIN/COMMIT/ROLLBACK with pg client

Authentication & Authorization

JWT-based auth with access tokens (short-lived, 15m) and refresh tokens (7d). Full AuthService implementation with bcrypt password comparison in references/advanced-patterns.md.

Caching Strategies

Redis-backed CacheService with get/set/delete/invalidatePattern, plus a @Cacheable decorator for method-level caching. See references/advanced-patterns.md.

API Response Format

Standardized ApiResponse helper with success, error, and paginated static methods. See references/advanced-patterns.md.

Best Practices

  1. Use TypeScript: Type safety prevents runtime errors
  2. Implement proper error handling: Use custom error classes
  3. Validate input: Use libraries like Zod or Joi
  4. Use environment variables: Never hardcode secrets
  5. Implement logging: Use structured logging (Pino, Winston)
  6. Add rate limiting: Prevent abuse
  7. Use HTTPS: Always in production
  8. Implement CORS properly: Don't use * in production
  9. Use dependency injection: Easier testing and maintenance
  10. Write tests: Unit, integration, and E2E tests
  11. Handle graceful shutdown: Clean up resources
  12. Use connection pooling: For databases
  13. Implement health checks: For monitoring
  14. Use compression: Reduce response size
  15. Monitor performance: Use APM tools

Testing Patterns

See javascript-testing-patterns skill for comprehensive testing guidance.

© ever-works, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (references) in .agents/skills/nodejs-backend-patterns of ever-works/ever-works.

  • SKILL.md
  • references/advanced-patterns.md

Open the folder on GitHubat commit 11d15aa

Used in 17 other repositories

We found 31 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 17 other GitHub owners. This page covers the copy in ever-works/ever-works, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Nodejs Backend Patterns next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Nodejs Backend Patterns compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Nodejs Backend Patterns this skillever-works/ever-works15817 repos~4kAutomated safety check: PassAGPL-3.0
Senior Backendalirezarezvani/claude-skills28k1 repos~3.8kAutomated safety check: PassMIT
API Design InterviewerPrepLabsAI/InterviewMentor112—~2.6kAutomated safety check: PassMIT
Senior Backenddavila7/claude-code-templates32k1 repos~1.1kAutomated safety check: NotesMIT
API Designericrisco/rsc-harness156—~3.1kAutomated safety check: PassMIT
Senior Backendborghei/Claude-Skills874—~1.6kAutomated safety check: PassMIT

Similar skills

  • Senior Backend

    alirezarezvani/claude-skills

    Designs and implements backend systems including REST APIs, microservices, database architectures, authentication flows, and security hardening.

    28k GitHub starsUsed in 1 repo~3.8k tokens
    Backend & APIsAuto-check passed
  • API Design Interviewer

    PrepLabsAI/InterviewMentor

    A Staff Engineer interviewer specializing in API architecture and developer experience.

    112 GitHub stars~2.6k tokensUpdated today
    Backend & APIsAuto-check passed
  • Senior Backend

    davila7/claude-code-templates

    Comprehensive backend development skill for building scalable backend systems using NodeJS, Express, Go, Python, Postgres, GraphQL, REST APIs.

    32k GitHub starsUsed in 1 repo~1.1k tokens
    Backend & APIsAuto-check: notes
  • API Design

    ericrisco/rsc-harness

    A skill your agent uses when settling the contract of an API you expose, before implementation: resources/URLs, REST vs GraphQL, versioning, one RFC 9457 error envelope, pagination, idempotency —…

    156 GitHub stars~3.1k tokensUpdated today
    Backend & APIsAuto-check passed
  • Senior Backend

    borghei/Claude-Skills

    Backend development with Node.js/Express/Fastify and PostgreSQL.

    874 GitHub stars~1.6k tokensUpdated today
    Backend & APIsAuto-check passed
  • Backend Developer

    theneoai/awesome-skills

    Elite Backend Developer skill with expertise in API design (REST, GraphQL, gRPC), microservices architecture, database optimization (PostgreSQL, MongoDB, Redis), and distributed systems.

    183 GitHub stars~2.1k tokensUpdated 4 mo ago
    Backend & APIsAuto-check passed

More from ever-works/ever-works

All 14 skills in this repo
  • Accessibility

    ever-works/ever-works

    Audit and improve web accessibility following WCAG 2.2 guidelines.

    158 GitHub starsUsed in 6 repos~3.2k tokens
    Auto-check passed
  • Tailwind CSS Patterns

    ever-works/ever-works

    Provides comprehensive Tailwind CSS utility-first styling patterns including responsive design, layout utilities, flexbox, grid, spacing, typography, colors, and modern CSS best practices.

    158 GitHub starsUsed in 3 repos~1.6k tokens
    Auto-check: notes
  • SEO

    ever-works/ever-works

    Optimize for search engine visibility and ranking. An agent skill from ever-works/ever-works.

    158 GitHub starsUsed in 10 repos~2.9k tokens
    Auto-check passed
  • Nodejs Express Server

    ever-works/ever-works

    Build production-ready Express.js servers with middleware, authentication, routing, and database integration.

    158 GitHub stars~965 tokensUpdated yesterday
    Auto-check passed
  • Tailwind V4 Shadcn

    ever-works/ever-works

    Production-tested setup for Tailwind CSS v4 with shadcn/ui, Vite, and React.

    158 GitHub starsUsed in 2 repos~3.8k tokens
    Auto-check passed
  • Configure email verification, implement password reset flows, set password policies, and customise hashing algorithms for Better Auth email/password authentication.

    158 GitHub starsUsed in 3 repos~1.5k tokens
    Auto-check passed

Categories

Questions about Nodejs Backend Patterns

What does Nodejs Backend Patterns do?

Build production-ready Node.js backend services with Express/Fastify, implementing middleware patterns, error handling, authentication, database integration, and API design best practices. Nodejs Backend Patterns is an agent skill from ever-works/ever-works.js backend services with Express/Fastify, implementing middleware patterns, error handling, authentication, database integration, and API design best practices.

When should I use Nodejs Backend Patterns?

Nodejs Backend Patterns fits situations like: creating Node.js servers; graphQL backends; microservices architectures.

How do I install Nodejs Backend Patterns in Claude Code?

Run `npx skills add ever-works/ever-works --skill nodejs-backend-patterns -a claude-code`. Or copy the skill folder (.agents/skills/nodejs-backend-patterns in ever-works/ever-works) into .claude/skills/nodejs-backend-patterns in your project. Claude Code loads it when a task matches its description.

How do I install Nodejs Backend Patterns in Codex?

Run `npx skills add ever-works/ever-works --skill nodejs-backend-patterns -a codex`. Or copy the skill folder (.agents/skills/nodejs-backend-patterns in ever-works/ever-works) into .agents/skills/nodejs-backend-patterns in your project. Codex loads it when a task matches its description.

Can I use Nodejs Backend Patterns in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ever-works/ever-works --skill nodejs-backend-patterns -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/nodejs-backend-patterns, .gemini/skills/nodejs-backend-patterns, .github/skills/nodejs-backend-patterns and .opencode/skills/nodejs-backend-patterns in your project.

What does Nodejs Backend Patterns need to run?

Going by SKILL.md and its folder, Nodejs Backend Patterns needs credentials named JWT_SECRET. Our summary lists: Node.js; A credential in JWT_SECRET.

Does Nodejs Backend Patterns access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Nodejs Backend Patterns safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Nodejs Backend Patterns use?

Nodejs Backend Patterns is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Nodejs Backend Patterns use?

About 4k tokens (SKILL.md is roughly 16k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 2.2k tokens, read only when the agent opens those files.

What are the alternatives to Nodejs Backend Patterns?

Skills that share tags, products or a category with Nodejs Backend Patterns: Senior Backend (alirezarezvani/claude-skills, 28k stars), API Design Interviewer (PrepLabsAI/InterviewMentor, 112 stars), Senior Backend (davila7/claude-code-templates, 32k stars) and API Design (ericrisco/rsc-harness, 156 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Nodejs Backend Patterns?

ever-works (a GitHub organization) maintains it in ever-works/ever-works, which has 158 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on October 5, 2026.

Source: ever-works/ever-works on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.