effect-ts
paulrberg/agent-skills
Apply Effect 3 semantics for services, layers, typed errors, Schema, Config, and runtime patterns.
What is effect-ts?
A reference skill for nontrivial Effect 3 work in TypeScript projects. Use it when building services, layers, error handling, schema validation, configuration, concurrency, or testing with Effect and its ecosystem packages (@effect/vitest, @effect/ai, @effect/sql, @prb/effect-next, Effect Atom).
- Route to task-specific references (services/layers, Config, Schema/JSONSchema, testing, runtime, streams, pattern matching, @effect/ai, @effect/sql, Next.js integration, Effect Atom)
- Verify imports and APIs against the target workspace's installed Effect and @effect/* package versions
- Inspect local architecture, neighboring services, layers, and error models to match project conventions
- Apply typed errors and scoped resources at IO boundaries without over-broadening environment requirements
- Provide evidence-based conclusions by inspecting installed package source, manifests, and lockfiles before editing
How to install effect-ts
npx skills add https://github.com/paulrberg/agent-skills --skill effect-ts- A project using Effect 3.x (verify with package.json or lockfile)
- Access to the target workspace's installed packages and their source or type declarations
- Familiarity with Effect's core concepts (Effect, Layer, Service, typed errors)
How to use effect-ts
- 1.Identify the task category (services/layers, Config, Schema, testing, runtime, streams, pattern matching, @effect/ai, @effect/sql, Next.js, or Effect Atom)
- 2.Consult the matching reference file from the skill's references/ directory
- 3.Verify exact APIs and signatures against your workspace's installed package versions using package source or declarations
- 4.Inspect neighboring code and local conventions to match project architecture
- 5.Implement the smallest pattern consistent with your project and run the narrowest test or typecheck
Use cases
- Building Effect services and layers with proper dependency injection and tagging
- Implementing typed error handling and Schema-backed validation at system boundaries
- Setting up Effect-based configuration providers and secrets management
- Writing Effect-based tests with @effect/vitest, clocks, fibers, and retry logic
- Integrating @effect/ai, @effect/sql, or Next.js (@prb/effect-next) into an Effect-driven codebase
- TypeScript developers working with Effect 3 in production or complex codebases
- Teams using Effect services, layers, and typed error models
- Projects integrating Effect ecosystem packages (@effect/vitest, @effect/ai, @effect/sql)
- Developers building Effect-based Next.js applications or Effect Atom state management
effect-ts FAQ
Use it for nontrivial Effect 3 work: services, layers, typed errors, Schema/JSONSchema, Config, runtime/concurrency, testing, or ecosystem packages. Do not activate it merely because a file imports effect.
Resolve your target workspace's exact installed effect and @effect/* versions from package.json/lockfile, then inspect the installed package's src/, README, tests, and changelog. Prefer installed source over external documentation.
This skill requires Effect 3.x. If your project uses an earlier version, stop and do not apply this skill.
No. Do not install or update dependencies solely to obtain documentation. Work with the versions already installed in your workspace.
Stop rather than guessing. Inspect the installed package source directly, check the manifest and lockfile, and consult the task-specific reference before editing.
Full instructions (SKILL.md)
Source of truth, from paulrberg/agent-skills.
compatibility: Requires a project using current stable Effect 3 packages; verify exact APIs against the target's installed package source. name: effect-ts description: Use for nontrivial Effect 3 work including services/layers, typed errors, Schema/JSONSchema, Config, runtime/concurrency, @effect/vitest, @effect/ai, @effect/sql, Effect Atom, or @prb/effect-next.
Effect 3
Apply Effect 3 semantics from project-local architecture, the narrowest relevant reference, and source matching the target's installed packages.
Workflow
Do not activate this workflow merely because a file imports effect. For nontrivial Effect work:
- Resolve the target package or workspace and its exact installed
effectand relevant@effect/*versions. Ifeffectis not 3.x, stop because this skill does not apply. - Inspect neighboring services, layers, errors, schemas, runtime boundaries, and tests. Local conventions decide organization; installed package evidence decides API facts.
- Read
references/critical-rules.md, then only the task-specific references below. - Verify every uncertain import, signature, or behavior against the package installation visible to the target workspace before editing.
- Implement the smallest pattern consistent with the project and run the narrowest test or typecheck covering the changed semantics.
Evidence Order
Use the target workspace's manifest and lockfile to identify versions. Prefer, in order:
- the installed package's
src/, README, tests, and changelog; - its emitted declarations when source is not shipped;
- the matching official package artifact or source tag.
Do not install or update dependencies solely to obtain documentation. Do not trust an unrelated checkout or a source branch that does not match the target's installed version. If exact behavior cannot be verified, stop rather than guessing.
Reference Router
| Task | Reference |
|---|---|
Services, Layers, tags, Effect.fn | references/services-layers.md |
| Config providers and secrets | references/config.md |
| Schema, JSON Schema, encoded errors/models | references/schema-jsonschema.md |
@effect/vitest, clocks, fibers, retries | references/testing.md |
| resources, scheduling, refs, concurrency | references/runtime.md |
| streams and backpressure | references/streams.md |
| pattern matching and tagged unions | references/pattern-matching.md |
@effect/ai | references/ai.md |
@effect/sql | references/sql.md |
Next.js / @prb/effect-next | references/next-js.md |
| Effect Atom | references/effect-atom.md |
Option at nullable boundaries | references/option-null.md |
For platform/RPC APIs, collection utilities, deprecations, or constructor lookup, inspect the installed package source directly instead of loading a local API inventory.
Boundaries
- Keep pure helpers, constants, and path manipulation pure unless an Effect boundary provides a concrete dependency, testability, resource-safety, or error-model benefit.
- Preserve existing domain facades and service/runtime boundaries unless the user requested redesign.
- Prefer typed failures and scoped resources at IO boundaries; choose Schema-backed errors/models only when encoding or boundary validation is needed.
- Do not broaden environment requirements merely to replace a small platform call.
For changes, completion requires code consistent with local Effect architecture, selected references and installed
source where needed, and the narrowest test/typecheck that exercises the changed semantics. Read-only work requires
evidence for the reported conclusion. Finish with ### ⚡ Effect — ✅ change complete after verified edits or
### ⚡ Effect — 🔎 reviewed, no files written for read-only work, one sentence naming the boundary or pattern used,
and ### 🧪 Verification with exact scoped commands/results. If required validation is incomplete, use
### ⚡ Effect — ⛔ blocked instead. Add ### ⚠️ Limitation only for non-blocking caveats. Never decorate typed
errors, Schema messages, logs, tests, generated JSON/API responses, or command output.
Related skills
More from paulrberg/agent-skills and the wider catalog.

md-docs
Initialize and update README.md and AGENTS.md documentation for Claude Code workflows.

tailwind-css
Apply and maintain Tailwind v4 styling with class management, configuration, and migration support.

yeet
Create and update GitHub PRs, issues, and discussions with templated workflows and idempotency checks.

biome-js
Configure and extend BiomeJS linting and formatting with shared configs and monorepo patterns.

cms-migration
Design Payload CMS collections interactively from your source CMS data before migration.

payload
TypeScript-first Next.js CMS with admin panel, REST/GraphQL APIs, and extensible hooks for content management.