# effect-ts

Учит агента писать код на Effect v4 по официальным практикам: сервисы, слои, ошибки и схемы. Пригодится, когда проект уже сидит на effect.

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

## Что делает

Скилл подключается как набор правил и примеров, которые агент читает перед работой с Effect. Внутри — паттерны из effect-solutions и исходников библиотеки: `Effect.gen` для последовательного кода, `Effect.fn` для трассируемых методов, `ServiceMap.Service` для сервисов с типизированным `Layer`, `Schema.Class` и брендированные типы для доменных записей, `Schema.TaggedErrorClass` для ошибок, которые можно бросать через `yield*`.

Главное требование — не полагаться на память и старые статьи. Скилл просит агента сначала проверить локальное зеркало исходников в `.agent-sources/effect/` и, если его нет, склонировать туда репозиторий с `--depth 1`. Без этого шага свежие API v4 вроде `effect/unstable/http` и `effect/unstable/cli` искать негде, и агент начнёт выдавать устаревшие сигнатуры.

Зеркало держат вне коммитов продукта: скилл советует писать `.agent-sources/` в `.git/info/exclude`, а не в общий `.gitignore`. Ещё в тексте есть пути к локальным копиям effect-solutions и монорепозитория Effect — у вас их, скорее всего, нет, так что опирайтесь на зеркало. Упоминается и инструмент `effect_source` для `status`, `hydrate` и `search`: если он недоступен, поиск идёт обычным `grep`.

## Установка

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

1. **Через Skills CLI (Vercel)**
```bash
npx skills add joelhooks/effectts-skills --skill effect-ts -a claude-code
```

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

### Codex

1. **Через Skills CLI (Vercel)**
```bash
npx skills add joelhooks/effectts-skills --skill effect-ts -a codex
```

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

### Cursor

1. **Через Skills CLI (Vercel)**
```bash
npx skills add joelhooks/effectts-skills --skill effect-ts -a cursor
```

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

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install joelhooks/effectts-skills effect-ts
```

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

### Gemini CLI

1. **Через Skills CLI (Vercel)**
```bash
npx skills add joelhooks/effectts-skills --skill effect-ts -a gemini-cli
```

2. **Командой платформы**
```bash
gemini skills install https://github.com/joelhooks/effectts-skills --path skills/effect-ts
```

### Windsurf (Devin Desktop)

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

### OpenCode

**Через Skills CLI (Vercel)**
```bash
npx skills add joelhooks/effectts-skills --skill effect-ts -a opencode
```

### Claude.ai

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

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

## Когда брать
- Перевести существующий код на API Effect v4
- Задать сервис через `ServiceMap.Service` и собрать для него `Layer`
- Описать доменную модель на `Schema.Class` с брендированными идентификаторами
- Сделать ошибки типизированными и ловить их через `catchTag`
- Подтянуть актуальные примеры из исходников перед рефакторингом

## Примеры запросов агенту
- Добавь сервис `Users` через `ServiceMap.Service` и слой для него поверх HTTP-клиента Effect
- Сделай `UserId` брендированным типом и заведи класс `User` на `Schema.Class`
- Разбери ошибку в `getUser` и оформи её как `Schema.TaggedErrorClass`

## Похожие
- [migrate-to-shoehorn](https://affpapa.org/nevibecode/skills/migrate-to-shoehorn.md) — скилл · 475388 установок
- [write-swift](https://affpapa.org/nevibecode/skills/write-swift.md) — скилл · 119300 установок
- [megacave](https://affpapa.org/nevibecode/skills/megacave.md) — скилл · 25400 установок
- [find-docs](https://affpapa.org/nevibecode/skills/find-docs.md) — скилл · 9400 установок
- [typescript-advanced-types](https://affpapa.org/nevibecode/skills/typescript-advanced-types.md) — скилл · 92169 установок
- [smart-explore](https://affpapa.org/nevibecode/skills/smart-explore.md) — скилл · 7300 установок

## Другие версии с тем же именем
- [effect-ts · effect-ts](https://affpapa.org/nevibecode/skills/effect-ts.md) — 7900 установок
- [effect-ts · paulrberg](https://affpapa.org/nevibecode/skills/paulrberg-effect-ts.md) — 3100 установок

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