Requirements Management

Define and manage Effect service dependencies using Context.Tag and Layer composition.

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

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

This Skill clarifies how to design and manage services, dependencies, and testability in Effect by leveraging Context.Tag, Layer, and provide patterns.

Core Features & Use Cases

  • Service definition and tagging with Context.Tag to enable test-friendly mocks
  • Layer-based composition for providing dependencies and layering test environments
  • Patterns for Layer.succeed, Layer.effect, Layer.scoped, Layer.merge, and provide usage in production and tests

Quick Start

  • Define a Context.Tag service and its interface.
  • Create a Layer.live or Layer.effect that provides the implementation.
  • Run a sample program with Effect.provide to wire the layer and execute.

Frequently Asked Questions about Requirements Management

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

FAQPage Schema
How do I manage dependencies in Effect using Layer composition?

Manage Effect dependencies by defining Context.Tag services and composing them with Layer.succeed, Layer.effect, and Layer.merge. This modular approach wires production implementations while keeping dependencies testable.

What is the best way to mock Effect services for unit tests?

Mock Effect services by defining interfaces with Context.Tag and providing test layers via Layer.provideService. This pattern allows you to swap live dependencies for test mocks, achieving 100% test coverage.

When do I need Layer.scoped versus Layer.effect in Effect?

Use Layer.scoped when an Effect dependency requires resource acquisition and cleanup, and Layer.effect for standard asynchronous service construction. Both define layers that compose cleanly into your application's dependency graph.

Can I merge multiple Effect layers to provide a combined environment?

Yes, merge multiple Effect layers using Layer.merge. This combines distinct Context.Tag service dependencies into a single unified layer, which you then pass to Effect.provide to run your program.

Why does my Effect program fail when dependencies are not provided?

Effect programs fail without provided dependencies because the environment requires explicit wiring. You must use Layer.provide or Layer.provideService to supply the Context.Tag implementations your program demands.

Does this approach to Effect dependency injection support testable modular architectures?

Yes, organizing dependencies through Context.Tag and layered provide patterns builds modular Effect architectures. It isolates service implementations, allowing you to seamlessly swap production layers for test mocks.