Effect skill
An Effect v4 skill for TypeScript: schemas, services and layers, config, retries, caches, streams, the HTTP client and tests with virtual time
- 352 ★ on the repository
- Last commit
- MIT
Minimal access
Why this level
- Text instructions and reference files only: the skill runs nothing, writes no files and makes no network calls itself
Install
- Works in
In your terminal, with SkillFoxx CLI
npx skillfoxx add skills/effect-skillDetects the agents on your machine, shows the access level and pins the version.
Other ways to install
Access and checks
How we reviewMinimal accessThe tool runs nothing and makes no network calls.
- Text instructions and reference files only: the skill runs nothing, writes no files and makes no network calls itself
This is third-party code. Review the repository files before installing.
What it does
The repository holds a single skill, `effect`: the author's guide to writing production TypeScript applications with Effect version 4. The main `SKILL.md` sets the defaults. The agent writes workflows with `Effect.gen`, wraps public service methods in `Effect.fn`, describes records with `Schema.Struct` and typed errors with `Schema.TaggedError`, and reads settings through `Config` instead of touching `process.env` directly. A separate list of prohibitions rules out type casts through `as any` and hand-rolled caches where `effect/Cache` fits. When a task goes beyond the general rules, the agent opens the matching reference file in the `references` folder. There are nine: schemas, services and layers, config, retry schedules, caching, streams, the HTTP client, tests, and migration from version 3 and from v4 prereleases. In the testing file the agent uses `TestClock` instead of real waiting and builds synchronization on `Deferred`, `Queue` and `Latch`. The skill checks its advice against the project. Project conventions and the nearest `AGENTS.md` come first, and the installed `effect` package version outranks the author's examples. The skill itself is checked against Effect 4.0.0 at a specific source commit.
Who it is for. For TypeScript developers who write or migrate projects to Effect v4 and want the agent to follow one consistent set of practices.
Good fit when
- You are starting a service on Effect v4 and want the agent to build it on schemas, services and layers from the start
- You need to migrate code from Effect 3 or a v4 prerelease: `V4_APIS.md` lists the replacements, for example `Effect.catchAll` to `Effect.catch`
- The agent is writing request retries, polling or a cache with a time to live and deduplication of concurrent lookups
- You need tests with virtual time built on `TestClock` and `@effect/vitest`
- You want outgoing HTTP calls built on `HttpClient` with typed errors
Not a fit when
- The project does not use Effect: the skill covers only this library and gives no general TypeScript advice
- The project is on Effect 3 and you do not plan to move to version 4: the examples are checked against version 4.0.0
- You need general TypeScript rules for types, functions, names and tests without Effect: the catalog has TypeScript Style Guide for that
- You need a ready tool with commands or a server: the repository holds only text instructions
Example request
Write a service that polls an external API on Effect v4: exponential backoff retries, typed errors and a TestClock testLimitations
- The skill targets Effect v4. The compatibility field in the `SKILL.md` header requires that version, and for projects on another version some of the advice will be wrong.
- The examples are checked against Effect 4.0.0 at commit `6389d9ac6` of the Effect-TS/effect repository. The author warns that API and import paths differ in prereleases.
- The recommendations are subjective: the skill's description calls the guide opinionated, and the author offers the rules as working defaults.
- Where no suitable API exists, the skill sends the agent to the package source and to current Effect code, so the actual version has to be consulted separately.
- MIT license.
How to disable. Delete the `effect` folder from your agent's skills folder where the `npx skills add` command placed it. The skill creates no project files.
FAQ
Which Effect versions does the skill support?
Version 4. The `SKILL.md` header says the skill requires Effect v4, and the examples are checked against 4.0.0. For a project on version 3 the skill is useful only as a migration reference in `V4_APIS.md`.
What do I change if the project uses old API names?
`V4_APIS.md` has a replacement table: `Config.string` and `Config.boolean` became `Config.String` and `Config.Boolean`, `Effect.catchAll` became `Effect.catch`, `Either` became `Result`, and `Effect.fork` was replaced by `Effect.forkChild` and `forkDetach`. For service layers, `Context.Service` with an explicit `Layer` replaces `Context.Tag` and `Effect.Service`.
When should I use Stream and when Queue?
Per the quick guide in `SKILL.md`: `Stream` is for sources that emit many values over time and need backpressure or interruption. If a producer writes events into a queue, the queue stays the producer boundary and consumers read it through `Stream.fromQueue`. For broadcasting to subscribers take `PubSub` or `SubscriptionRef`.
How does the skill suggest testing code that depends on time?
With `TestClock` from `effect/testing`. Sleeping effects should be forked before you move the clock with `TestClock.adjust`. The skill advises against real `Effect.sleep` in tests because it makes them slow and flaky.
Do I need an extra package for tests?
Yes, a build of `@effect/vitest` compatible with version 4. The examples in the testing file use `it.effect` for ordinary checks and `it.live` where real time is the behavior under test.
Can I use a built-in cache rather than write my own?
Yes, and the skill directly forbids hand-rolled caches with time to live and deduplication where `effect/Cache` fits. For a single result there are `Effect.cached` and `Effect.cachedWithTTL`, and batching against a backend that has a real batch endpoint goes through `Effect.request` and `RequestResolver`.
Discussion
No questions or reviews yet.
Related
SkillsAn agent skill with TypeScript conventions: types, discriminated unions, functions, naming, source layout, React and tests, loaded per topic
The author's personal set: shared agent rules and dozens of skills for GitHub, the browser, macOS, messaging and releases, plus a sync script
Skills from the Dart team: tests and mocks, analysis and dart fix, CLI apps, FFI, documentation and package conflict fixes for an AI agent
Builder Skills
Skills for agents
A set of small skills from Builder.io for agent work habits: visual plans and diff recaps, docs-first checks, cross-agent review and clean status updates
better-result skills for agents
better-result
Two better-result skills: an error-handling audit of a TypeScript project with step-by-step Result adoption, and a 2.x to 3.0 migration with a codemod
Tech Leads Club Agent Skills
Agent Skills
A vetted skill registry with a CLI that installs into twenty-plus agents and an MCP server for on-demand skill lookup
Comparison with similar tools
Entries that share the main search query, and how they differ.
| Entry | Official | Repository stars | Main difference |
|---|---|---|---|
| Effect skill (this entry) | no | 352 | |
| TypeScript Style Guide | no | 784 | general TypeScript conventions: types, functions, naming, structure, React and tests, loaded by topic |
| better-result skills for agents | no | 2,002 | two better-result skills |
README in short
The repository description is a few lines long: the author calls these skills his own working ones and leaves it to the reader to decide whether they are useful. The only section, Effect, is labeled a guide to production TypeScript on Effect v4. The rest of the content is the MIT license, `SKILL.md` and nine reference files with code examples. The repository has no tests or verification scripts.
README badge
Original 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.