What problem does it solve? Repeated effectful lookups against APIs or databases waste latency and resources, and naive memoization mishandles failures, concurrent fetches, and resource cleanup. This Skill teaches correct use of Effect's Cache and ScopedCache so lookups are deduplicated, failures get bounded lifetimes, and cached resources are released deterministically. ## Core Features & Use Cases - Keyed caching with Cache: Create caches with capacity limits, fixed or exit-aware TTLs, LRU eviction, deduplicated concurrent lookups, and refresh/invalidation operations. - Resource-owning entries with ScopedCache: Cache values like connections that own a per-entry Scope, with finalizers running on eviction, expiry, invalidation, or cache close. - Single-value memoization: Use Effect.cached, cachedWithTTL, and cachedInvalidateWithTTL when no key is needed. - Use Case: Build a cached user repository service as a Layer where reads hit a 10,000-entry cache with a 5-minute success TTL, failures expire in seconds, and writes update the cache through Cache.set. ## Quick Start Ask the agent to add TTL-based caching with Cache.makeWith to an Effect service that fetches users by id, including a short TTL for failures.