# design

Скилл проектирует API, схемы и машины состояний так, чтобы некорректное обращение просто не выражалось в коде. Пригодится, когда пишешь новый интерфейс и не хочешь миграций потом.

- скилл · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · ★ 24
- Автор: rainmanjam
- Лицензия: MIT · policy=mirror · начало файла — в конце страницы
- Исходник: https://github.com/rainmanjam/poka-yoke/tree/HEAD/plugins/poka-yoke/skills/design/SKILL.md
- Обновлён: 2026-10-14
- HTML: https://affpapa.org/nevibecode/skills/rainmanjam-design

## Что делает

Скилл помогает до написания сигнатуры перечислить способы, которыми интерфейс можно сломать: перепутать соседние параметры одного типа, забыть вызвать метод, собрать бессмысленную комбинацию полей, отправить пустой фильтр в удаление. Ответы на эти вопросы определяют форму API заранее.

Дальше идёт набор приёмов по убыванию силы: отдельные типы для разных понятий (`UserId` вместо `string`), размеченные объединения вместо пачки опциональных полей, парсинг на границе вместо проверки с булевым результатом, машина состояний в типах и исчерпывающий `switch`, который ломает сборку при добавлении варианта. Где язык не справляется, ограничения уезжают в базу: `NOT NULL`, `CHECK`, `UNIQUE`, внешние ключи.

Отдельно скилл требует не глушить ошибки: `catch {}` и `|| defaultValue` навыворот превращают громкий сбой в тихий. Разрушительные операции по умолчанию безопасны, а идемпотентный ключ для списания денег обязателен, не опционален. Для уже написанного кода нужен другой скилл — `audit`.

## Установка

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

1. **Через Skills CLI (Vercel)**
```bash
npx skills add rainmanjam/poka-yoke --skill design -a claude-code
```

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

### Codex

1. **Через Skills CLI (Vercel)**
```bash
npx skills add rainmanjam/poka-yoke --skill design -a codex
```

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

### Cursor

1. **Через Skills CLI (Vercel)**
```bash
npx skills add rainmanjam/poka-yoke --skill design -a cursor
```

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

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install rainmanjam/poka-yoke design
```

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

### Gemini CLI

1. **Через Skills CLI (Vercel)**
```bash
npx skills add rainmanjam/poka-yoke --skill design -a gemini-cli
```

2. **Командой платформы**
```bash
gemini skills install https://github.com/rainmanjam/poka-yoke --path plugins/poka-yoke/skills/design
```

### Windsurf (Devin Desktop)

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

### OpenCode

**Через Skills CLI (Vercel)**
```bash
npx skills add rainmanjam/poka-yoke --skill design -a opencode
```

### Claude.ai

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

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

## Когда брать
- спроектировать API, в котором соседние параметры одного типа не перепутать
- заменить структуру с опциональными полями на размеченное объединение
- перенести проверку входных данных в парсер на границе системы
- запретить вызов методов в неверном порядке через машину состояний
- закрыть добавление нового варианта перечисления ошибкой сборки

## Примеры запросов агенту
- Спроектируй тип заказа так, чтобы невалидное состояние было невыразимо
- Напиши сигнатуру `transfer(from, to, amount)` и объясни, как защитить её от перепутанных аргументов
- Сделай машину состояний для заявки, где `commit()` недоступен до валидации

## Похожие
- [api-design](https://affpapa.org/nevibecode/skills/margelo-api-design.md) — скилл · 609 установок
- [public-api-design-review](https://affpapa.org/nevibecode/skills/public-api-design-review.md) — скилл · 7800 установок
- [principle-type-system-discipline](https://affpapa.org/nevibecode/skills/principle-type-system-discipline.md) — скилл · 5300 установок
- [code-craft](https://affpapa.org/nevibecode/skills/code-craft.md) — скилл · 1700 установок
- [system-design](https://affpapa.org/nevibecode/skills/system-design.md) — скилл · 7500 установок
- [rest-api-design](https://affpapa.org/nevibecode/skills/rest-api-design.md) — скилл · 2100 установок

## Другие версии с тем же именем
- [design · nextlevelbuilder](https://affpapa.org/nevibecode/skills/design.md) — 41800 установок
- [design · subframeapp](https://affpapa.org/nevibecode/skills/subframeapp-design.md) — 775 установок
- [design · rshankras](https://affpapa.org/nevibecode/skills/rshankras-design.md) — 677 установок
- [design · cognitedata](https://affpapa.org/nevibecode/skills/cognitedata-design.md) — 1900 установок
- [design · kirkchen](https://affpapa.org/nevibecode/skills/kirkchen-design.md) — 506 установок

Из того же набора: [rainmanjam/poka-yoke](https://affpapa.org/nevibecode/by/rainmanjam/poka-yoke.md) — 4 карточки

_Часть страницы не вошла по размеру — она есть в HTML-версии._

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