Files
Understand-Anything/understand-anything-plugin/skills/understand/frameworks/express.md
T
Sreeram b5eb2e6041 feat: language-agnostic analysis with config-driven registry and framework detection
Replace the TypeScript/JavaScript-biased analysis pipeline with a truly
language-agnostic system. The core architecture was already language-neutral
(graph schema, dashboard, search) — the bias lived in agent prompts,
tree-sitter plugin, and language-lesson system.

Core changes:
- LanguageConfig + FrameworkConfig types with Zod validation
- LanguageRegistry (12 languages) and FrameworkRegistry (10 frameworks)
- Config-driven TreeSitterPlugin replacing hardcoded TS/JS grammars
- PluginRegistry now delegates to LanguageRegistry for extension mapping
- Language-lesson system uses config for display names and concepts

Prompt system:
- SKILL.md generalized: dynamic injection of language snippets and
  framework addendums instead of hardcoded if/else conditionals
- 12 language prompt snippets (languages/*.md) with concepts, patterns,
  frameworks per language
- 10 framework addendums (frameworks/*.md) with canonical file roles,
  edge patterns, architectural layers — Django/FastAPI/Flask preserved
  and split, plus React/Next.js/Express/Vue/Spring/Rails/Gin added
- Extended entry points, directory patterns, and test patterns across
  all 12 language ecosystems in base prompts
2026-03-23 12:35:09 +05:30

4.3 KiB

Express Framework Addendum

Injected into file-analyzer and architecture-analyzer prompts when Express is detected. Do NOT use as a standalone prompt — always appended to the base prompt template.

Express Project Structure

When analyzing an Express project, apply these additional conventions on top of the base analysis rules.

Canonical File Roles

File / Pattern Role Tags
app.js, app.ts Application entry point — creates Express app, mounts middleware and routes entry-point, config
server.js, server.ts, index.js, index.ts Server bootstrap — starts HTTP listener, may import app entry-point, config
routes/*.js, routes/*.ts Route definitions — map HTTP methods and paths to handlers api-handler, routing
controllers/*.js, controllers/*.ts Request handlers — process requests, orchestrate services, return responses api-handler, service
models/*.js, models/*.ts Data models — Mongoose schemas, Sequelize models, or plain data definitions data-model
middleware/*.js, middleware/*.ts Middleware functions — authentication, logging, validation, error handling middleware
services/*.js, services/*.ts Business logic — domain operations decoupled from HTTP layer service
db/*.js, db/*.ts, database/*.js Database connection and configuration data-model, config
config/*.js, config/*.ts Application configuration — environment variables, feature flags config
validators/*.js, validators/*.ts Request validation schemas (Joi, Zod, express-validator) validation, utility
utils/*.js, utils/*.ts Shared utility functions utility
tests/*.js, test/*.js, __tests__/*.js Unit and integration tests test

Edge Patterns to Look For

Route mounting — When app.use('/api/users', usersRouter) mounts a router, create depends_on edges from the main app to the router module. These edges represent the HTTP routing tree.

Middleware chain — When app.use(cors()), app.use(authMiddleware), or router.use(validate) registers middleware, create middleware edges from the app or router to the middleware function. Order matters — middleware executes in registration order.

Controller-to-service calls — When a controller imports and calls a service function, create depends_on edges from the controller to the service. This represents the separation between HTTP handling and business logic.

Model relationships — When models reference each other (Mongoose ref, Sequelize associations), create depends_on edges between model files with descriptions indicating the relationship type.

Architectural Layers for Express

Assign nodes to these layers when detected:

Layer ID Layer Name What Goes Here
layer:api API Layer routes/, controllers/, request validators
layer:data Data Layer models/, db/, migration files, seeders
layer:service Service Layer services/, business logic modules
layer:middleware Middleware Layer middleware/, error handlers, authentication, logging
layer:config Config Layer app.js, config/, environment setup, server.js
layer:utility Utility Layer utils/, helpers/, shared pure functions
layer:test Test Layer tests/, __tests__/, *.test.js, *.spec.js

Notable Patterns to Capture in languageLesson

  • Middleware chain (req, res, next): Express processes requests through a pipeline of middleware functions — each receives the request, response, and a next() callback to pass control forward
  • Error-handling middleware (4 params): Middleware with signature (err, req, res, next) catches errors — must be registered after all routes to act as a global error handler
  • Router modularity: express.Router() creates modular, mountable route handlers that can be composed into the main app at different path prefixes
  • MVC pattern: Express apps commonly separate concerns into Models (data), Views (response formatting), and Controllers (request handling)
  • Body parsing and validation: Request body parsing (express.json(), express.urlencoded()) and validation (Joi, Zod, express-validator) are middleware concerns applied before route handlers