zod-schema-validation — скилл для Claude Code: что делает
Скилл задаёт правила валидации данных через Zod и вывода типов TypeScript на границах системы: в API, формах и внешних ответах. Помогает писать схемы без лишнего дублирования.
npx skills add Mindrally/skills --skill zod-schema-validation -a claude-codeЧто делает zod-schema-validation
Скилл учит агента проверять входящие данные на границах приложения. В правила зашиты требования выводить типы TypeScript прямо из схем через z.infer. Данные проверяются методом safeParse. Для вывода ошибок применяется форматирование .error.format().
Внутри собраны шаблоны композиции схем через .extend(), .merge(), .pick() и .omit(), а также инструкции для сложных структур. Это размеченные объединения z.discriminatedUnion(), рекурсивные типы через z.lazy() и трансформации с .refine(). Для пользовательских интерфейсов предусмотрена интеграция с react-hook-form через пакет @hookform/resolvers/zod.
Создание схем прямо внутри функций рендера приведёт к падению производительности. Инструкции требуют выносить частые схемы наружу и заранее их компилировать.
Какие задачи решает
- описать валидацию тела и параметров запроса для API
- вывести типы TypeScript из готовой схемы через
z.infer - связать схемы Zod с react-hook-form через резольвер
- настроить рекурсивную схему для древовидных данных через
z.lazy
Примеры запросов агенту
- Напиши схему Zod для регистрации пользователя с проверкой email, uuid и роли, затем выведи тип через z.infer
- Сделай валидацию формы обновления профиля для react-hook-form с частичными полями через .partial()
- Создай схему ответа API на основе discriminated union для статусов success и error
Как установить zod-schema-validation
1Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill zod-schema-validation -a claude-code2Вручную: положить файлы
~/.claude/skills/zod-schema-validation/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/zod-schema-validation/
1Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill zod-schema-validation -a codex2Вручную: положить файлы
.agents/skills/zod-schema-validation/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill zod-schema-validation -a cursor2Вручную: положить файлы
.cursor/skills/zod-schema-validation/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install Mindrally/skills zod-schema-validation2Вручную: положить файлы
.github/skills/zod-schema-validation/SKILL.md1Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill zod-schema-validation -a gemini-cli2Командой платформы
gemini skills install https://github.com/Mindrally/skills --path zod-schema-validationВручную: положить файлы
.devin/skills/zod-schema-validation/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill zod-schema-validation -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Из того же набора160
Похожие
Рядом в теме «Бэкенд и API»
Всё по теме «Бэкенд и API» →Вопросы о zod-schema-validation
Как установить zod-schema-validation в Claude Code?
Выполните команду npx skills add Mindrally/skills --skill zod-schema-validation -a claude-code. Агент получит файл навыка в свою рабочую директорию.
Что делает скилл zod-schema-validation?
Он передаёт ИИ-агенту набор проверенных шаблонов и правил для работы с библиотекой Zod в TypeScript: от безопасного парсинга через safeParse до настройки рекурсивных структур и интеграции с формами.
Как скилл рекомендует подключать Zod к формам?
Через пакет @hookform/resolvers/zod для react-hook-form. Также правила предписывают повторять структуру полей формы в схеме и применять .partial() для форм частичного обновления.
Исходный текст
SKILL.md · Apache-2.0
---
name: zod-schema-validation
description: Best practices for Zod schema validation and type inference in TypeScript applications.
metadata:
maintainer: Mindrally
source: https://github.com/Mindrally/skills
---
# Zod Schema Validation
You are an expert in Zod schema validation and type inference for TypeScript applications.
## Core Principles
- Utilize Zod for schema validation and type inference
- Validate data at system boundaries (API, forms, external data)
- Leverage TypeScript type inference from Zod schemas
- Implement early returns and guard clauses for validation errors
## Schema Design
### Basic Schema
```typescript
import { z } from 'zod'
const UserSchema = z.object({
id: z.string().uuid(),
email: z.string().email(),
name: z.string().min(1).max(100),
age: z.number().int().positive().optional(),
role: z.enum(['admin', 'user', 'guest']),
createdAt: z.date(),
})
type User = z.infer<typeof UserSchema>
```
### Best Practices
- Define schemas close to where they're used
- Use `.infer` to derive TypeScript types
- Compose schemas using `.extend()`, `.merge()`, `.pick()`, `.omit()`
- Create reusable base schemas for common patterns
## Validation Patterns
### Safe Parsing
```typescript
const result = UserSchema.safeParse(data)
if (!result.success) {
console.error(result.error.format())
return
}
// result.data is typed as User
```
### Transform and Refine
```typescript
const schema = z.string()
.transform((val) => val.trim().toLowerCase())
.refine((val) => val.length > 0, 'Cannot be empty')
```
## Form Integration
- Use Zod with react-hook-form via `@hookform/resolvers/zod`
- Define form schemas that match your form structure
- Handle validation errors in UI appropriately
- Use `.partial()` for optional update forms
## API Validation
- Validate request bodies in API routes
- Validate query parameters and path params
- Return structured error responses
- Use discriminated unions for different response types
## Error Handling
- Implement custom error messages for better UX
- Use `.format()` for structured error output
- Create custom error maps for i18n support
- Handle nested object errors appropriately
## Advanced Patterns
### Discriminated Unions
```typescript
const ResultSchema = z.discriminatedUnion('status', [
z.object({ status: z.literal('success'), data: UserSchema }),
z.object({ status: z.literal('error'), message: z.string() }),
])
```
### Recursive Schemas
```typescript
const CategorySchema: z.ZodType<Category> = z.lazy(() =>
z.object({
name: z.string(),
children: z.array(CategorySchema),
})
)
```
## Performance
- Precompile schemas that are used frequently
- Avoid creating schemas inside render functions
- Use `.passthrough()` or `.strict()` intentionally
- Consider partial validation for large objects
© Mindrally · Apache-2.0 · Mindrally/skills