Claude Skills
CollectionsCompareWorkflowsNominate
Sign inSign up
© 2026 Curated Agent Skills·Learn more about Agent Skills
Back to repository

express-validation

verified

Input validation patterns for Express.js

View on GitHub

Marketplace

alphaagent-team

the-answerai/alphaagent-team

Plugin

aai-stack-express

stack

Repository

the-answerai/alphaagent-team

plugins/aai-stack-express/skills/express-validation/SKILL.md

Last Verified

February 1, 2026

Install Skill

Select agents to install to:

Scope:
npx add-skill https://github.com/the-answerai/alphaagent-team/blob/main/plugins/aai-stack-express/skills/express-validation/SKILL.md -a claude-code --skill express-validation

Installation paths:

Claude
.claude/skills/express-validation/
Powered by add-skill CLI

Instructions

# Express Validation Skill

Patterns for validating request input in Express.js applications.

## Zod Validation

### Basic Schema

```typescript
import { z } from 'zod'

// User schema
const createUserSchema = z.object({
  name: z.string().min(1, 'Name is required').max(100),
  email: z.string().email('Invalid email format'),
  password: z.string().min(8, 'Password must be at least 8 characters'),
  age: z.number().int().positive().optional(),
})

const updateUserSchema = createUserSchema.partial()

// Product schema
const productSchema = z.object({
  name: z.string().min(1).max(200),
  description: z.string().optional(),
  price: z.number().positive(),
  category: z.enum(['electronics', 'clothing', 'books', 'other']),
  tags: z.array(z.string()).default([]),
})
```

### Validation Middleware Factory

```typescript
import { z, ZodSchema } from 'zod'
import { Request, Response, NextFunction } from 'express'

type RequestLocation = 'body' | 'query' | 'params'

function validate(schema: ZodSchema, location: RequestLocation = 'body') {
  return (req: Request, res: Response, next: NextFunction) => {
    const result = schema.safeParse(req[location])

    if (!result.success) {
      return res.status(400).json({
        error: 'Validation failed',
        details: result.error.flatten().fieldErrors,
      })
    }

    req[location] = result.data
    next()
  }
}

// Usage
router.post('/users', validate(createUserSchema), createUser)
router.get('/users', validate(paginationSchema, 'query'), listUsers)
router.get('/users/:id', validate(idParamSchema, 'params'), getUser)
```

### Combined Validation

```typescript
interface ValidationSchemas {
  body?: ZodSchema
  query?: ZodSchema
  params?: ZodSchema
}

function validateAll(schemas: ValidationSchemas) {
  return (req: Request, res: Response, next: NextFunction) => {
    const errors: Record<string, unknown> = {}

    for (const [location, schema] of Object.entries(schemas)) {
      if (schema) {
        const result = s

Validation Details

Front Matter
Required Fields
Valid Name Format
Valid Description
Has Sections
Allowed Tools
Instruction Length:
7093 chars