What problem does it solve? Writing concurrent Python code with asyncio is error-prone: forgotten awaits, blocked event loops, unhandled cancellations, and race conditions cause subtle bugs. This Skill provides tested patterns for structuring async code correctly from the start. ## Core Features & Use Cases - Concurrency Patterns: Covers gather(), task creation, semaphores for rate limiting, async locks, and producer-consumer queues. - Real-World Templates: Includes working examples for web scraping with aiohttp, async database access, WebSocket servers, and connection pooling. - Pitfall Avoidance: Documents common mistakes like blocking the event loop, mixing sync and async code, and missing cancellation handling, plus testing with pytest-asyncio. - Use Case: When building a FastAPI service that must call 20 upstream APIs per request, use the semaphore rate-limiting and gather() patterns to run requests concurrently without overwhelming downstream services. ## Quick Start Ask the assistant to write an async Python function that fetches multiple URLs concurrently with rate limiting and proper error handling.