← ClaudeAtlas

data-validationlisted

Use when implementing data validation for API payloads, form inputs, or database writes. Triggers for: Pydantic models, Zod schemas, input sanitization, type validation, field constraints, or request/response schemas. NOT for: business logic (use domain services) or authentication/authorization.
aiskillstore/marketplace · ★ 329 · API & Backend · score 79
Install: claude install-skill aiskillstore/marketplace
# Data Validation Skill Expert data validation for Python backends (Pydantic) and TypeScript frontends (Zod) with type-safe validation pipelines. ## Quick Reference | Layer | Tool | Purpose | |-------|------|---------| | Backend | Pydantic v2 | Request/response validation | | Frontend | Zod | Form validation, schema inference | | Sanitization | bleach, strip-html | Input cleaning | | Types | mypy, TypeScript | Compile-time safety | ## Project Structure ``` backend/ ├── app/ │ ├── schemas/ │ │ ├── __init__.py │ │ ├── student.py # StudentCreate, StudentUpdate, StudentOut │ │ ├── fee.py # FeeCreate, FeeOut │ │ └── common.py # PaginationParams, ErrorDetail │ └── models/ # SQLModel (separate from schemas) frontend/ ├── lib/ │ ├── schemas/ │ │ ├── student.schema.ts │ │ └── index.ts # Export all schemas │ └── validation.ts # Shared validation utilities └── types/ └── shared.ts # Inferred types from Zod ``` ## Backend: Pydantic Models ### Separate In/Out Models ```python # backend/app/schemas/student.py from datetime import datetime from typing import Optional from pydantic import BaseModel, EmailStr, Field, ConfigDict # === CREATE Models (Input) === class StudentCreate(BaseModel): """Payload for creating a new student.""" first_name: str = Field( ..., min_length=1, max_length=100, examples=["John"], description="Student's first name",