Effect skill
Скилл по Effect v4 для TypeScript: схемы, сервисы и слои, конфигурация, повторы, кэши, потоки, HTTP-клиент и тесты с виртуальным временем
- 352 ★ репозитория
- Последний коммит
- MIT
Минимальный доступ
Почему такой уровень
- Только текстовые инструкции и справочные файлы: скилл ничего не запускает, не пишет файлов и не ходит в сеть сам
Установка
- Работает в
В терминале, через SkillFoxx CLI
npx skillfoxx add skills/effect-skillОпределит агенты на машине, покажет уровень доступа и зафиксирует версию.
Другие способы установки
Доступ и проверки
Как мы проверяемМинимальный доступИнструмент ничего не запускает и не ходит в сеть.
- Только текстовые инструкции и справочные файлы: скилл ничего не запускает, не пишет файлов и не ходит в сеть сам
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
Репозиторий содержит один скилл, `effect`: руководство автора по написанию рабочих приложений на TypeScript с библиотекой Effect версии 4. Основной файл `SKILL.md` задает правила по умолчанию. Рабочие процессы агент пишет через `Effect.gen`, публичные методы сервисов оборачивает в `Effect.fn`, записи описывает через `Schema.Struct`, типизированные ошибки через `Schema.TaggedError`, а настройки читает через `Config`, не обращаясь к `process.env` напрямую. Отдельный список запретов исключает приведение типов через `as any` и самодельные кэши, когда подходит `effect/Cache`. Когда задача выходит за общие правила, агент открывает подходящий справочный файл в папке `references`. Их девять: схемы, сервисы и слои, конфигурация, расписания повторов, кэширование, потоки, HTTP-клиент, тесты и переход с третьей версии и предварительных выпусков четвертой. В файле о тестах агент берет `TestClock` вместо реального ожидания, а синхронизацию строит на `Deferred`, `Queue` и `Latch`. Скилл сверяет советы с проектом. Правила проекта и ближайший `AGENTS.md` главнее, а версия установленного пакета `effect` важнее примеров автора. Сам скилл сверен с Effect 4.0.0 по конкретному коммиту исходников.
Для кого. Для TypeScript-разработчиков, которые пишут или переводят проекты на Effect v4 и хотят, чтобы агент следовал одним и тем же приемам.
Подходит, если
- Вы начинаете сервис на Effect v4 и хотите, чтобы агент сразу строил его на схемах, сервисах и слоях
- Нужно перевести код с Effect 3 или предварительной четвертой версии: файл `V4_APIS.md` перечисляет замены, например `Effect.catchAll` на `Effect.catch`
- Агент пишет повторы запросов, опросы или кэш с временем жизни и дедупликацией параллельных обращений
- Нужны тесты с виртуальным временем на `TestClock` и `@effect/vitest`
- Исходящие вызовы HTTP хочется оформить через `HttpClient` с типизированными ошибками
Не подходит, если
- Проект не использует Effect: скилл описывает только эту библиотеку и общих рекомендаций по TypeScript не дает
- В проекте стоит Effect 3 и переходить на четвертую версию вы не собираетесь: примеры сверены с версией 4.0.0
- Нужны общие правила TypeScript для типов, функций, имен и тестов без Effect: для этого в каталоге есть TypeScript Style Guide
- Вам нужен готовый инструмент с командами или сервером: в репозитории только текстовые инструкции
Пример запроса к агенту
Напиши сервис опроса внешнего API на Effect v4: повторы с экспоненциальной паузой, типизированные ошибки и тест на TestClockОграничения
- Скилл рассчитан на Effect v4. Поле совместимости в заголовке `SKILL.md` прямо требует эту версию, а для проектов на другой версии часть советов окажется неверной.
- Примеры сверены с Effect 4.0.0 по коммиту `6389d9ac6` репозитория Effect-TS/effect. Автор предупреждает, что в предварительных выпусках API и пути импорта отличаются.
- Рекомендации субъективны: в описании скилла руководство названо авторской позицией, а правила по умолчанию автор предлагает как рабочие.
- В тех местах, где подходящего API нет, скилл отправляет агента в исходники пакета и в текущий код Effect, то есть к актуальной версии придется обращаться самому.
- Лицензия MIT.
Как отключить. Удалите папку `effect` из папки скиллов вашего агента, куда ее положила команда `npx skills add`. Файлов проекта скилл не создает.
Частые вопросы
Какие версии Effect поддерживает скилл?
Версию 4. В заголовке `SKILL.md` указано, что скилл требует Effect v4, а примеры сверены с 4.0.0. Для проекта на третьей версии скилл годится только как справочник по миграции в `V4_APIS.md`.
Что менять, если в проекте старые имена API?
В `V4_APIS.md` есть таблица замен: `Config.string` и `Config.boolean` стали `Config.String` и `Config.Boolean`, `Effect.catchAll` стал `Effect.catch`, `Either` стал `Result`, а `Effect.fork` заменили `Effect.forkChild` и `forkDetach`. Для слоев сервисов вместо `Context.Tag` и `Effect.Service` применяют `Context.Service` с явным `Layer`.
Когда использовать Stream, а когда Queue?
По краткому справочнику в `SKILL.md`: `Stream` нужен для источников, которые выдают много значений со временем и требуют обратного давления или прерывания. Если производитель пишет события в очередь, очередь остается границей производителя, а потребители читают ее через `Stream.fromQueue`. Для рассылки подписчикам берут `PubSub` или `SubscriptionRef`.
Как скилл советует тестировать код со временем?
Через `TestClock` из `effect/testing`. Спящие эффекты нужно запустить в отдельном волокне до того, как вы сдвинете часы вызовом `TestClock.adjust`. Реальный `Effect.sleep` в тестах скилл не рекомендует: он делает тесты медленными и нестабильными.
Нужно ли ставить какой-то пакет для тестов?
Да, `@effect/vitest` совместимой с четвертой версией сборки. В примерах из файла о тестах используются `it.effect` для обычных проверок и `it.live` для случаев, где важно настоящее время.
Можно ли взять кэш из стандартных средств, а не писать свой?
Да, и скилл прямо запрещает самодельные кэши с временем жизни и дедупликацией, когда подходит `effect/Cache`. Для одного результата есть `Effect.cached` и `Effect.cachedWithTTL`, а пакетные запросы к бэкенду с настоящим пакетным методом делают через `Effect.request` и `RequestResolver`.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
СкиллыСкилл для агентов с конвенциями TypeScript: типы, дискриминированные объединения, функции, именование, структура, React и тесты, подгружается по темам
Личный набор автора: общие правила для агентов и десятки скиллов для GitHub, браузера, macOS, сообщений и релизов, плюс скрипт синхронизации
Скиллы команды Dart: тесты и моки, анализ и dart fix, CLI-приложения, FFI, документация и разбор конфликтов пакетов для ИИ-агента
Builder Skills
Skills for agents
Набор небольших скиллов от Builder.io для рабочих привычек агента: визуальные планы и разборы диффов, сверка с документацией, кросс-агентное ревью и аккуратные
better-result — скиллы для агентов
better-result
Два скилла библиотеки better-result: аудит обработки ошибок в TypeScript-проекте с поэтапным внедрением Result и переход с версии 2.x на 3.0 с кодмодом
Agent Skills от Tech Leads Club
Agent Skills
Проверяемый реестр скиллов с CLI для установки в два десятка агентов и MCP-сервером для поиска скиллов на лету
Сравнение с похожими
Записи с тем же главным запросом: чем они отличаются.
| Запись | Официальный | Звезды репозитория | Главное отличие |
|---|---|---|---|
| Effect skill (эта запись) | нет | 352 | |
| TypeScript Style Guide | нет | 784 | общие конвенции TypeScript: типы, функции, именование, структура, React и тесты, подгружаются по темам |
| better-result — скиллы для агентов | нет | 2 000 | два скилла библиотеки better-result |
Коротко о README
Описание репозитория занимает несколько строк: автор называет скиллы своими рабочими и оставляет читателю решить, пригодятся ли они. Единственный раздел, Effect, обозначен как руководство по промышленному TypeScript на Effect v4. Остальное содержимое: лицензия MIT, `SKILL.md` и девять справочных файлов с примерами кода. Тестов и сценариев проверки в репозитории нет.
Бейдж для README
Исходный SKILL.md
---
name: effect
description: |
Opinionated guide for building production TypeScript applications with Effect v4. Use when implementing Effect workflows, services, layers, schemas, configuration, schedules, caches, streams, HTTP clients, or tests.
license: MIT
compatibility: Requires Effect v4. Examples are reviewed against the version documented in this repository.
---
# Effect
Use current Effect v4 APIs and the production defaults in this skill. Established project conventions still take precedence unless the task is explicitly changing them.
## Source Rule
Reviewed against Effect **4.0.0**, upstream commit
[`6389d9ac6`](https://github.com/Effect-TS/effect/tree/6389d9ac64c0f62ccc8b575fb9afc65fc104e814).
Read `references/V4_APIS.md` when upgrading from v3 or a v4 prerelease.
The installed version takes precedence: prerelease APIs and import paths can differ.
Check these before guessing:
- the nearest `AGENTS.md` and any project-local Effect practices doc
- the project-pinned `effect` package source and version
- current upstream Effect source when the installed package does not answer the question
## Branch Chooser
Read only the branch references that match the task.
- Data models, schemas, brands, variants, optional keys, or decoders: read `references/SCHEMA.md`.
- Services, module surfaces, layers, runtime wiring, errors, `Effect.fn`, or test services: read `references/SERVICES_LAYERS.md`.
- Runtime config, env variables, `ConfigProvider`, or `layerConfig`: read `references/CONFIG.md`.
- Retry, repeat, polling, backoff, jitter, rate-limit-aware policies, or pass loops: read `references/SCHEDULING.md`.
- Memoization, per-key TTL caches, deduplicating concurrent lookups, or request batching: read `references/CACHING.md`.
- Streams, event sources, async iterables, queues/pubsubs, pagination, backpressure, or stream consumers: read `references/STREAMS.md`.
- Outgoing HTTP calls, Effect HttpClient, status handling, or HTTP rate limiting: read `references/HTTP_CLIENTS.md`.
- Effect tests, time, sleeps, concurrency synchronization, or fakes: read `references/TESTING.md`.
If a task spans several branches, read all matching files before editing.
## Core Defaults
- Compose workflows with `Effect.gen(function* () { ... })`.
- Define public service methods and non-trivial internal service methods with `Effect.fn("Domain.operation")`.
- Use `Effect.fnUntraced` only for internal helpers where stack-frame/span metadata is intentionally unnecessary.