What problem does it solve? Choosing the wrong concurrency primitive in .NET leads to deadlocks, race conditions, and over-engineered code. This Skill provides a decision framework for picking the right abstraction—async/await, Parallel.ForEachAsync, Channels, Reactive Extensions, Akka.NET Streams, or Akka.NET Actors—based on the actual problem. ## Core Features & Use Cases - Decision Tree Guidance: Maps common scenarios (I/O waits, CPU-bound parallelism, producer/consumer queues, state machines) to the appropriate .NET concurrency tool. - Anti-Pattern Detection: Identifies and corrects locks for business logic, manual thread management, blocking on async code, and unprotected shared mutable state. - Advanced Patterns Reference: Covers Akka.NET Streams for backpressure and batching, Reactive Extensions for UI event composition, and entity-per-actor patterns with Cluster Sharding. - Use Case: When building a background order-processing service, use this Skill to decide between a bounded Channel for simple queuing versus Akka.NET actors for stateful per-order lifecycle management. ## Quick Start Ask the AI which .NET concurrency approach fits your scenario, such as processing a work queue with backpressure or managing state for thousands of entities.