← ClaudeAtlas

expresslisted

Express.js minimal Node.js web framework. Covers routing, middleware, error handling, and API design. Use when building Express APIs. USE WHEN: user mentions "Express", "express.js", "app.use", "middleware", "express Router", asks about "minimalist Node.js framework", "simple REST API", "lightweight web server", "Node.js middleware pattern" DO NOT USE FOR: Enterprise applications with DI - use `nestjs` instead, High-performance APIs - use `fastify` instead, Edge runtimes - use `hono` instead, Deno - use `oak` or `fresh` instead
claude-dev-suite/claude-dev-suite · ★ 33 · API & Backend · score 80
Install: claude install-skill claude-dev-suite/claude-dev-suite
# Express Core Knowledge > **Deep Knowledge**: Use `mcp__documentation__fetch_docs` with technology: `express` for comprehensive documentation. ## Basic Setup ```ts import express from 'express'; import cors from 'cors'; import helmet from 'helmet'; const app = express(); // Middleware app.use(helmet()); app.use(cors()); app.use(express.json()); // Routes app.use('/api/users', userRoutes); // Error handler (must be last) app.use(errorHandler); app.listen(3000); ``` ## Route Patterns ```ts import { Router } from 'express'; const router = Router(); router.get('/', async (req, res, next) => { try { const users = await db.users.findMany(); res.json(users); } catch (err) { next(err); } }); router.post('/', async (req, res, next) => { try { const user = await db.users.create(req.body); res.status(201).json(user); } catch (err) { next(err); } }); router.get('/:id', async (req, res, next) => { const user = await db.users.find(req.params.id); if (!user) return res.status(404).json({ error: 'Not found' }); res.json(user); }); ``` ## Middleware Pattern ```ts // Auth middleware const authenticate = async (req, res, next) => { const token = req.headers.authorization?.split(' ')[1]; if (!token) return res.status(401).json({ error: 'Unauthorized' }); try { req.user = await verifyToken(token); next(); } catch { res.status(401).json({ error: 'Invalid token' }); } }; router.get('/protected', authenticate, handler