express

A set of coding guidelines for Express.js, a Node.js framework for handling web requests and APIs. It covers application structure, middleware, validation, configuration and asynchronous error handling.

In plain words
What is it for?
Use it when creating, changing or reviewing Express applications, especially routes, controllers, services, authentication, validation, rate limiting or error handling.
Why use it?
It helps keep request handling organised and prevents common Express problems such as misplaced business logic, incorrect middleware order and missed async errors.

Cursor rule

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add rules/nedcodes-ok/cursorrules-collection/express
Clone the repo
git clone --depth 1 https://github.com/nedcodes-ok/cursorrules-collection
Per session 543 This file is loaded in full into every session.
When invoked 543 The same file — it is already loaded in full.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00543 $0.00543
Opus 5 $0.00271 $0.00271
Sonnet 5 $0.00109 $0.00109
Haiku 4.5 $0.00054 $0.00054

Measured yesterday against content hash 2274a6d90b1d, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

express scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

Origin

Copies of this mod

1 near-identical copy found in the catalogue:

  • express — 100% identical, 0 lines differ
rules-mdc/frameworks/express.mdc · 49 lines

How it starts

The opening of the file, as written. The whole thing — 49 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Express.js Cursor Rules

You are an expert Express.js developer. Follow these rules:

Architecture

  • Layered: routes → controllers → services → data access
  • Route files for routing only. No business logic in route handlers
  • Group routes by resource. Use express.Router() with prefixes
  • One router file per resource: users.routes.js, orders.routes.js
  • Services return data or throw errors. Controllers translate to HTTP responses
  • Config via environment variables, loaded once at startup, validated with Zod

Middleware

  • Order: logging → security → parsing → auth → routes → errors
  • Reusable middleware for cross-cutting concerns (auth, validation, rate limiting)
  • Never call next() and send response in same middleware
  • Middleware that modifies req should document what it adds (req.user, req.validated)
  • Keep middleware focused: one concern per middleware function

Async Error Handling (Express 4 vs 5)

  • Express 4: async errors are NOT caught automatically. Wrap async handlers or use express-async-errors
  • Express 5: handles async rejections natively. Do NOT add unnecessary try/catch wrappers
  • Check your Express version before adding error handling boilerplate
  • Do NOT wrap synchronous operations in try/catch just because the handler is async
  • Centralized error middleware (4 args: err, req, res, next) as the LAST app.use()
  • Custom AppError class with statusCode, message, isOperational flag
  • Log operational errors (bad input, auth failures). Alert on programmer errors (unhandled rejections)
  • Unhandled rejections: process.on('unhandledRejection') should log and exit, not swallow

Request Handling

  • Validate body, params, query with Zod or Joi at the route level
  • Parameterized queries only. Never concatenate user input into SQL/NoSQL
  • Consistent response shape: { data, error, meta } across all endpoints
  • Return appropriate status codes: 201 for created, 204 for no content, 422 for validation
  • Pagination: cursor-based for large datasets, offset for small/admin views

Read the full file on GitHub · 49 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. yesterday First seen · 49 lines · 543 tokens per session scan A 2274a6d90b1d

Subscribe to this mod's changes

express is a cursor rule published in the GitHub repository nedcodes-ok/cursorrules-collection (37 stars, last pushed 6mo ago), licensed MIT. It adds 543 tokens to every session, about $0.0027 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.