# Create Domain Mapper

> Use when пользователь просит создать или изменить mapper между network, Room и domain-моделями либо KTX-функции `entity`/`entities`. Не используй для создания самих API-моделей, DAO, endpoint или бизнес-операции use case.

- Skill: `michaelbel/create-domain-mapper` (Agent Skill)
- Install (CLI): `npx skillmds@latest add michaelbel/create-domain-mapper`
- Raw SKILL.md: https://api.skillmd.com/api/skills/michaelbel/create-domain-mapper/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Integrations & APIs
- Author: michaelbel (https://skillmd.com/u/michaelbel)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/michaelbel/create-domain-mapper

---


# Создание domain-mapper

Изучи соседние `shared/domain/mapper/*Ktx.kt` и помести преобразование в тематический KTX-файл. Не
создавай stateful `Mapper`-класс и не переноси mapping во ViewModel или use case.

## Контракт

- Называй `Response -> Entity` extension-функцию `entity`, а преобразование списка — `entities`.
- Для другого направления используй короткое имя целевого типа или существующее соглашение проекта.
- Размещай параметры функции и аргументы конструктора целевой модели по одному на строку.
- Передавай внешние значения, которых нет в source-модели, явными параметрами mapper; не читай
  состояние из service locator или singleton.
- Возвращай non-null entity. Nullable поля ответа заполняй через `orEmpty`, включая nullable
  примитивы из `PrimitiveKtx.kt`; добавь недостающее primitive-extension туда.
- Не используй `return null` или `mapNotNull` для молчаливого удаления некорректных ответов. Если
  значение нельзя корректно восстановить, оставь валидацию и domain-ошибку вызывающей операции.
- Не создавай отдельную UI-модель, если entity/domain-модель уже выражает нужное состояние.

Добавь focused unit-тест mapper, когда преобразование содержит ветвление, вложенные коллекции,
форматирование или нетривиальные default-значения.

