Effect Core

Create, compose, and run Effect-TS effects with Effect.gen and runtime methods.

8|Updated Jan 23, 2026
One-click install
npx skills add https://github.com/andrueandersoncs/claude-skill-effect-ts --skill effect-core
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: Effect Core
Source: https://github.com/andrueandersoncs/claude-skill-effect-ts/tree/main/skills/effect-core
Command: npx skills add https://github.com/andrueandersoncs/claude-skill-effect-ts --skill effect-core

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

This Skill helps developers understand and use the core Effect type in Effect-TS.

Core Features & Use Cases

  • Understand the Effect<Success, Error, Requirements> type and why effects are descriptions, not executions.
  • Create effects from synchronous and asynchronous sources (Effect.succeed, Effect.fail, Effect.promise, Effect.try, Effect.tryPromise).
  • Compose effects with pipe and Effect.gen for readable sequential code and generator syntax.
  • Run effects with runtime methods like Effect.runPromise, Effect.runSync, Effect.runPromiseExit.
  • Follow best practices: typed errors, avoid throwing, use typed schemas for input data, and exploit dual APIs (data-first and data-last).

Quick Start

Create a small program that succeeds with a value and run it using Effect.runPromise to observe the result.

Frequently Asked Questions about Effect Core

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
What is the Effect type in Effect-TS and why are effects descriptions rather than executions?

The Effect type in Effect-TS is a description of a computation that succeeds or fails, meaning it does not execute until you explicitly run it. This allows you to compose synchronous and asynchronous operations declaratively before runtime execution.

How do I create and run an Effect-TS program using synchronous and asynchronous sources?

To create an Effect-TS program, use Effect.succeed or Effect.fail for synchronous values and Effect.promise for asynchronous operations. You then execute these effects using runtime methods like Effect.runSync or Effect.runPromise to observe the final result.

How does generator syntax with Effect.gen compose effects sequentially in Effect-TS?

Generator syntax with Effect.gen composes effects sequentially in Effect-TS by yielding results step by step. This approach provides readable, linear code flow for chaining multiple synchronous and asynchronous operations without deep nested callbacks.

Do I need TypeScript to use Effect-TS core composition and runtime APIs?

Yes, you need TypeScript to effectively use Effect-TS core composition and runtime APIs. The framework relies heavily on TypeScript's type system to manage the Effect<Success, Error, Requirements> type and ensure typed errors throughout your functional workflows.

What is the best way to handle errors in Effect-TS instead of throwing exceptions?

The best way to handle errors in Effect-TS is to use typed errors with Effect.fail instead of throwing exceptions. This ensures your error channels are explicitly typed within the Effect<Success, Error, Requirements> signature for predictable runtime execution.

When should I use Effect.runPromise versus Effect.runSync to execute an Effect-TS program?

You should use Effect.runSync to execute synchronous Effect-TS programs immediately, and Effect.runPromise when your program involves asynchronous operations via Effect.promise. Both runtime methods trigger the actual execution of your composed effects to produce a result.