concurrency-patterns
Provides patterns and primitives for safe, concurrent TypeScript programming.
Install
mkdir -p .claude/skills/concurrency-patterns && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/16146" && unzip -o skill.zip -d .claude/skills/concurrency-patterns && rm skill.zipInstalls to .claude/skills/concurrency-patterns
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Implement thread-safe code, mutexes, semaphores, async/await patterns, and concurrent data structures. Use when handling parallel operations, race conditions, or building high-performance concurrent systems.Key capabilities
- →Implement thread-safe code
- →Create mutexes and semaphores
- →Utilize async/await patterns
- →Build concurrent data structures
- →Limit concurrency to avoid resource exhaustion
- →Handle errors in concurrent operations
How it works
This skill guides the implementation of safe concurrent code by providing reference guides and best practices for synchronization primitives and patterns like promise pools, mutexes, and worker pools.
Inputs & outputs
When to use concurrency-patterns
- →Create a task-limited promise pool
- →Implement a mutex for resource locking
- →Coordinate parallel async operations
- →Prevent data corruption in concurrent flows
About this skill
Concurrency Patterns
Table of Contents
Overview
Implement safe concurrent code using proper synchronization primitives and patterns for parallel execution.
When to Use
- Multi-threaded applications
- Parallel data processing
- Race condition prevention
- Resource pooling
- Task coordination
- High-performance systems
- Async operations
- Worker pools
Quick Start
Minimal working example:
class PromisePool {
private queue: Array<() => Promise<any>> = [];
private active = 0;
constructor(private concurrency: number) {}
async add<T>(fn: () => Promise<T>): Promise<T> {
while (this.active >= this.concurrency) {
await this.waitForSlot();
}
this.active++;
try {
return await fn();
} finally {
this.active--;
}
}
private async waitForSlot(): Promise<void> {
return new Promise((resolve) => {
const checkSlot = () => {
if (this.active < this.concurrency) {
resolve();
// ... (see reference guides for full implementation)
Reference Guides
Detailed implementations in the references/ directory:
| Guide | Contents |
|---|---|
| Promise Pool (TypeScript) | Promise Pool (TypeScript) |
| Mutex and Semaphore (TypeScript) | Mutex and Semaphore (TypeScript) |
| Worker Pool (Node.js) | Worker Pool (Node.js) |
| Python Threading Patterns | Python Threading Patterns |
| Async Patterns (Python asyncio) | Async Patterns (Python asyncio) |
| Go-Style Channels (Simulation) | Go-Style Channels (Simulation) |
Best Practices
✅ DO
- Use proper synchronization primitives
- Limit concurrency to avoid resource exhaustion
- Handle errors in concurrent operations
- Use immutable data when possible
- Test concurrent code thoroughly
- Profile concurrent performance
- Document thread-safety guarantees
❌ DON'T
- Share mutable state without synchronization
- Use sleep/polling for coordination
- Create unlimited threads/workers
- Ignore race conditions
- Block event loops in async code
- Forget to clean up resources
When not to use it
- →When sharing mutable state without synchronization
- →When using sleep/polling for coordination
- →When creating unlimited threads/workers
Limitations
- →Does not support sharing mutable state without synchronization
- →Does not support using sleep/polling for coordination
- →Does not support creating unlimited threads/workers
How it compares
This skill offers structured implementations and best practices for concurrency, ensuring proper synchronization and resource management, unlike ad-hoc concurrent programming.
Compared to similar skills
concurrency-patterns side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| concurrency-patterns (this skill) | 0 | 5mo | Review | Advanced |
| react-component-patterns | 3 | 1mo | No flags | Intermediate |
| typescript-pro | 3 | 4mo | No flags | Advanced |
| nx-generate | 1 | 6mo | Review | Beginner |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by aj-geddes
View all by aj-geddes →You might also like
react-component-patterns
HoangNguyen0403
Modern React component architecture and composition patterns.
typescript-pro
sickn33
Master TypeScript with advanced types, generics, and strict type safety. Handles complex type systems, decorators, and enterprise-grade patterns. Use PROACTIVELY for TypeScript architecture, type inference optimization, or advanced typing patterns.
nx-generate
nrwl
Generate code using nx generators. USE WHEN scaffolding code or transforming existing code - for example creating libraries or applications, or anything else that is boilerplate code or automates repetitive tasks. ALWAYS use this first when generating code with Nx instead of calling MCP tools or running nx generate immediately.
generate-subsystem-skills
llama-farm
Generate specialized skills for each subsystem in the monorepo. Creates shared language skills and subsystem-specific checklists for high-quality AI code generation.
ark-sdk-development
mckinsey
Regenerate and debug types across the ARK stack (SDK, API, Dashboard). Use when fixing TypeScript type errors in ark-dashboard, updating types after CRD changes, regenerating types.ts from OpenAPI spec, debugging "Property does not exist on type" schema errors, or adding custom SDK functionality via overlays. Covers the full type pipeline from Kubernetes CRDs to TypeScript.
effect-patterns-domain-modeling
PaulJPhilp
Effect-TS patterns for Domain Modeling. Use when working with domain modeling in Effect-TS applications.