express

A set of coding rules for Express.js, a Node.js framework for building web servers and APIs. It covers route structure, middleware, configuration, validation, and errors.

In plain words
What is it for?
Use it when designing Express routes, controllers, services, middleware, authentication, validation, configuration, or error handling.
Why use it?
It helps keep Express applications organized and prevents common problems such as mishandled asynchronous errors or mixed routing and business logic.

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/cursor-doctor/express
Clone the repo
git clone --depth 1 https://github.com/nedcodes-ok/cursor-doctor
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 100% copy Near-identical to another mod 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 2d ago 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 2d ago.

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

This is a copy

100% identical to express — 0 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.

pro-kit/templates/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. 2d ago 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/cursor-doctor (9 stars, last pushed 5mo 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. It is 100% identical to express, differing in 0 lines, and is treated as a copy.