Requirements Management
Installation
SKILL.md
Requirements Management in Effect
Overview
The third type parameter in Effect<A, E, R> represents requirements - services and dependencies the effect needs to run:
Effect<Success, Error, Requirements>
// ^^^^^^^^^^^^ Services needed
Effect uses a powerful dependency injection system based on Context and Layer.
The primary reason to define services is testability. Every external dependency (API calls, databases, file systems, third-party SDKs) MUST be wrapped in a Context.Tag service so that tests can provide a test implementation instead of hitting real systems. This is how Effect achieves 100% test coverage — business logic depends only on service interfaces, and tests swap in test layers that control all I/O.