# validation-patterns

Скилл подсказывает агенту, как валидировать данные в ASP.NET Core: от атрибутов до FluentValidation и проверки конфигурации на старте.

- скилл · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 537 установок · ★ 86
- Автор: wshaddix
- Лицензия: не указана · policy=link-only · показываем только описание, файл — у автора
- Исходник: https://github.com/wshaddix/dotnet-skills/tree/HEAD/skills/validation-patterns/SKILL.md
- Обновлён: 2026-02-27
- HTML: https://affpapa.org/nevibecode/skills/validation-patterns

## Что делает

Скилл описывает пять слоёв валидации: клиентскую сторону, привязку модели, бизнес-правила, проверку конфигурации и ограничения в базе. Внутри — дерево решений, которое помогает выбрать подход по сложности задачи. Для простых полей это `DataAnnotations` с атрибутами `[Required]`, `[Range]`, `[StringLength]`. Для правил, зависящих от нескольких свойств, — `IValidatableObject` или собственный `ValidationAttribute`.

Отдельно разобраны `IValidateOptions<T>` для проверки классов настроек при запуске приложения и FluentValidation для асинхронных валидаторов, которым нужна база данных. Есть примеры кода: модель запроса с атрибутами, атрибут `FutureDateAttribute`, класс-атрибут `DateRangeAttribute` для сравнения дат, реализация `Validate()` в `CreateOrderRequest` с проверкой даты отгрузки и суммы заказа.

Скилл рассчитан на проекты на ASP.NET Core. Если у вас другой стек, примеры не перенести. Часть атрибутов — `[AllowedValues]`, `[DeniedValues]`, `[Length]`, `[Base64String]` — помечена как доступная с .NET 8, поэтому на более старой версии рантайма они не скомпилируются. Это повод проверить целевую версию, прежде чем копировать код в проект.

## Установка

### Claude Code (родная платформа)

1. **Через Skills CLI (Vercel)**
```bash
npx skills add wshaddix/dotnet-skills --skill validation-patterns -a claude-code
```

2. **Вручную: положить файлы**
- Файл: `~/.claude/skills/validation-patterns/SKILL.md` — Папка скилла целиком; для одного проекта — .claude/skills/validation-patterns/

### Codex

1. **Через Skills CLI (Vercel)**
```bash
npx skills add wshaddix/dotnet-skills --skill validation-patterns -a codex
```

2. **Вручную: положить файлы**
- Файл: `.agents/skills/validation-patterns/SKILL.md` — Для всех проектов — ~/.agents/skills/

### Cursor

1. **Через Skills CLI (Vercel)**
```bash
npx skills add wshaddix/dotnet-skills --skill validation-patterns -a cursor
```

2. **Вручную: положить файлы**
- Файл: `.cursor/skills/validation-patterns/SKILL.md` — Cursor читает и .agents/skills/, и .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install wshaddix/dotnet-skills validation-patterns
```

2. **Вручную: положить файлы**
- Файл: `.github/skills/validation-patterns/SKILL.md`

### Gemini CLI

1. **Через Skills CLI (Vercel)**
```bash
npx skills add wshaddix/dotnet-skills --skill validation-patterns -a gemini-cli
```

2. **Командой платформы**
```bash
gemini skills install https://github.com/wshaddix/dotnet-skills --path skills/validation-patterns
```

### Windsurf (Devin Desktop)

**Вручную: положить файлы**
- Файл: `.devin/skills/validation-patterns/SKILL.md` — Старый путь .windsurf/skills/ тоже читается

### OpenCode

**Через Skills CLI (Vercel)**
```bash
npx skills add wshaddix/dotnet-skills --skill validation-patterns -a opencode
```

### Claude.ai

**Claude.ai**
- Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/wshaddix/dotnet-skills/tree/HEAD/skills/validation-patterns/SKILL.md

## Когда брать
- выбрать между DataAnnotations и FluentValidation для конкретной модели
- описать правило, которое зависит от двух свойств сразу
- проверить класс настроек при старте приложения
- написать переиспользуемый атрибут для доменного правила
- добавить асинхронную проверку, которой нужна база данных

## Примеры запросов агенту
- Добавь валидацию для CreateProductRequest по паттернам из скилла validation-patterns
- Сделай cross-field проверку даты отгрузки в CreateOrderRequest
- Настрой IValidateOptions для класса настроек и проверь его на старте

## Похожие
- [dependency-injection-patterns](https://affpapa.org/nevibecode/skills/dependency-injection-patterns.md) — скилл · 668 установок
- [csharp-developer](https://affpapa.org/nevibecode/skills/csharp-developer.md) — скилл · 4800 установок
- [dotnet-core-expert](https://affpapa.org/nevibecode/skills/dotnet-core-expert.md) — скилл · 4700 установок
- [dotnet-webapi](https://affpapa.org/nevibecode/skills/dotnet-webapi.md) — скилл · 4300 установок
- [migrate-dotnet9-to-dotnet10](https://affpapa.org/nevibecode/skills/migrate-dotnet9-to-dotnet10.md) — скилл · 3400 установок
- [dotnet](https://affpapa.org/nevibecode/skills/dotnet.md) — скилл · 724 установки

Из того же набора: [wshaddix/dotnet-skills](https://affpapa.org/nevibecode/by/wshaddix/dotnet-skills.md) — 7 карточек

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
