What problem does it solve? Resources like file handles, database connections, and event listeners leak or get released too early when cleanup is not tied to a well-defined lifetime. This Skill teaches how to use Effect's Scope model so every acquisition gets guaranteed cleanup on success, failure, or interruption. ## Core Features & Use Cases - Scoped acquisition: Use Effect.acquireRelease, acquireDisposable, and acquireUseRelease to register cleanup finalizers that run when a scope closes. - Lifetime control: Eliminate Scope from an effect's requirements with Effect.scoped, Scope.provide, Scope.use, or Layer.effect, and split lifetimes with Scope.fork and ScopedRef. - Use Case: When building a service layer that opens a database connection and registers an error listener, wrap both in acquireRelease inside Layer.effect so teardown releases them in LIFO order at application shutdown. ## Quick Start Ask the agent to show how to acquire a resource with Effect.acquireRelease and guarantee its cleanup using Effect.scoped in an Effect v4 TypeScript program.