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.
npx agentmods add rules/thesethrose/devrules/nodeexpressgit clone --depth 1 https://github.com/TheSethRose/DevRulesWhat 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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00000 | $0.01492 |
| Opus 5 | $0.00000 | $0.00746 |
| Sonnet 5 | $0.00000 | $0.00298 |
| Haiku 4.5 | $0.00000 | $0.00149 |
Grade A, and why
NodeExpress 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.
How it starts
The opening of the file, as written. The whole thing — 102 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Node.js and Express.js Best Practices
Module System (ESM vs CommonJS)
- Prefer ES Modules (ESM) for new projects (
import/export). Set"type": "module"inpackage.json. - Use
.mjsextension for ESM files ifpackage.jsonlacks"type": "module"or is set to"commonjs". - Use
.cjsextension for CommonJS files ifpackage.jsonis set to"type": "module". - Be explicit: Always include the
"type"field inpackage.json("module"or"commonjs"). - Use full file paths with extensions in
importstatements (e.g.,import { func } from './utils.js';). Directory imports (e.g.,./utils) might behave differently between CJS and ESM. - Understand differences: ESM does not have
require,module.exports,__filename, or__dirname. Useimport.meta.url,import.meta.resolve, and utilities likepath.dirname(fileURLToPath(import.meta.url))instead. - For interoperability:
- You can
importCommonJS modules from ESM. - You cannot directly
require()ES Modules from CommonJS. Use dynamicimport()instead.
- You can
package.json Configuration
- Define package entry points using the
"exports"field (Node.js 12+). This offers more control than"main"and allows defining subpath exports and conditional exports (e.g., different entries forrequirevsimport).- Example:
{ "exports": { ".": "./index.js", "./utils": "./lib/utils.js" } } - Conditional Example:
{ "exports": { "import": "./index.mjs", "require": "./index.cjs" } }
- Example:
- All paths in
"exports"must start with./. - Use
"imports"(Node.js 14.6+) for internal package mappings (e.g.,#utils->./lib/utils.js). - Keep dependencies (
dependencies,devDependencies) up-to-date and remove unused ones. - Specify the Node.js engine version(s) required:
"engines": { "node": ">=18.0.0" }.
Project Structure
- Organize code logically by feature or domain (e.g.,
/src/users,/src/products). - Separate routes, controllers/services, models, utilities, and configuration.
- Example Structure:
/src/api(or/routes): Express route definitions/controllers(or/services): Business logic/models: Data access layer / schemas/middleware: Express middleware/config: Application configuration/utils: Shared utility functions
/testsserver.js(orindex.js,app.js): Main application entry pointpackage.json.envDockerfile(if applicable)
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.
- yesterday First seen · 102 lines · 1,492 tokens per session scan A baf50b6cab3c
NodeExpress is a cursor rule published in the GitHub repository TheSethRose/DevRules (25 stars, last pushed 1y ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 1,492 tokens. 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.
Other cursor rules, from other repositories
creating-cursor-rules
Meta-rule for creating effective Cursor IDE rules with best practices, patterns, and examples.
prpm-json-best-practices
Best practices for structuring prpm.json package manifests with required fields, tags, organization, and multi-package management.
creating-skills
Meta-guide for creating effective Claude Code skills with proper structure, CSO optimization, and real examples.
beanstalk-deploy
Robust deployment patterns for Elastic Beanstalk with GitHub Actions, Pulumi, and edge case handling.
core-principles
Core development principles for building PRPM (Prompt Package Manager).
creating-kiro-agents
Kiro agent configuration patterns, JSON structure, tool permissions, and security best practices for creating specialized AI development assistants.