What problem does it solve? Adding response caching to an async FastAPI project requires correctly wiring a Redis client, choosing TTLs, and—most importantly—invalidating stale keys on writes, which is where most caching bugs come from. This Skill documents the project's module-level redis_client and the exact conventions for using it without blocking the event loop or serving stale data. ## Core Features & Use Cases - Module-level async client: A single redis.asyncio.Redis instance in core/redis.py, built from REDIS_URL with decode_responses=True, safe to import anywhere. - Caching conventions: get/set with ex TTL, delete for invalidation, JSON serialization handled manually, and a <resource>:<qualifier> key naming pattern. - End-to-end guide: A before/after walkthrough that adds caching to the GET /items/ endpoint and invalidates the key in the create handler. - Use Case: You cache an expensive list endpoint, then add a write handler—this Skill ensures you also add the matching redis_client.delete(...) call so users never see stale data. ## Quick Start Ask the AI to add Redis caching with a 60-second TTL to the items list endpoint and invalidate the cache key on every write.