AIKraft/Skills/effect Лучшие практики

effect Лучшие практики

Enforces Effect-TS patterns for services, errors, layers, and atoms. Use when writing code with Effect.Service, Schema.TaggedError, Layer composition, or effect-atom React components.

makisuo official Документы

Что делает навык

Набор правил и паттернов для Effect-TS, обеспечивающий типобезопасность, тестируемость и поддерживаемость кода через стандартизацию сервисов, ошибок, слоёв и атомов. Включает требования к настройке Effect Language Server для обнаружения ошибок на этапе редактирования.

Когда применять

  • Определение бизнес-логики через Effect.Service с явным указанием зависимостей и доступных методов.
  • Создание специфичных типов ошибок с использованием Schema.TaggedError для сериализации и RPC.
  • Композиция зависимостей с помощью Layer.mergeAll или Layer.provideMerge вместо ручного предоставления.
  • Управление глобальным состоянием и побочными эффектами в React-компонентах через effect-atom.
  • Обеспечение типобезопасности идентификаторов сущностей через Schema.brand.

Как работает

  1. Установить @effect/language-service и добавить его в плагин tsconfig.json, используя локальную версию TypeScript в редакторе.
  2. Определять сервисы через Effect.Service с accessors: true и явным списком dependencies, избегая ручного Layer.provide в местах использования.
  3. Создавать ошибки через Schema.TaggedError с конкретными полями и аннотациями HTTP-статусов, используя catchTag/catchTags для обработки.
  4. Маркировать ID сущностей через Schema.UUID.pipe(Schema.brand(...)) и использовать Option<T> вместо null/undefined.
  5. Определять функции сервисов через Effect.fn с именами для трассировки и использовать Effect.log для структурированного логирования.
  6. Комбинировать слои через Layer.mergeAll для плоской композиции или Layer.provideMerge для инкрементального объединения.

Примеры запросов агенту

Напиши сервис UserService с зависимостями от UserRepo и CacheService, используя Effect.Service и Effect.fn.
Определи ошибку UserNotFoundError через Schema.TaggedError с userId и статусом 404, а также обработай её через catchTag.
Создай Layer для приложения, объединяющий сервисы через Layer.mergeAll и инфраструктурные слои.

Что понадобится

  • npm пакет @effect/language-service
  • Настройка tsconfig.json с плагином @effect/language-service
  • Использование локальной версии TypeScript в IDE (VSCode или JetBrains)

Описание составлено по SKILL.md навыка, сверено 05.10.2026.

Как подключить

1Скачать навык
# возьмите папку навыка «effect-best-practices» из репозитория: # https://github.com/makisuo/skills
2Положить папку с SKILL.md к навыкам ассистента
# положите папку навыка туда, где ассистент ищет skills: cp -r effect-best-practices/ ~/.claude/skills/effect-best-practices/

Навык — папка с файлом SKILL.md (описание + инструкции) и опциональными скриптами. Ассистент (Claude, Claude Code и совместимые) подхватывает его по описанию и следует шагам.