resilience-patternslisted
Install: claude install-skill dbtinoy-/lexigram-framework-skills
# Resilience Patterns
## Overview
Lexigram provides composable fault-tolerance primitives: retry, circuit breaker, bulkhead, rate limiter, and timeout. Patterns compose into a `ResiliencePipeline`.
## Decorators
All decorators take config objects, not raw keyword arguments.
```python
from lexigram.resilience import retry, circuit_breaker, bulkhead, with_timeout
from lexigram.resilience import RetryConfig, CircuitBreakerConfig, BulkheadConfig, TimeoutConfig, CircuitBreakerRegistry
@retry(RetryConfig(max_attempts=3, base_delay=1.0, backoff_factor=2.0))
@circuit_breaker("external-api", registry=CircuitBreakerRegistry(), config=CircuitBreakerConfig(failure_threshold=5, recovery_timeout=30))
@bulkhead(BulkheadConfig(max_concurrent=10, queue_size=20))
@with_timeout(TimeoutConfig(timeout=30.0))
async def call_external_api(payload: dict) -> Result[Response, DomainError]:
return await self.client.post(payload)
```
## Programmatic API
```python
from lexigram.resilience import (
RetryConfig, CircuitBreaker, RetryPolicy,
CircuitBreakerConfig, CircuitBreakerRegistry,
ResiliencePipeline, TimeoutConfig,
)
# Retry
config = RetryConfig(max_attempts=3, base_delay=1.0, backoff_factor=2.0, jitter=True)
policy = RetryPolicy(config)
result = await policy.execute(lambda: fetch_data())
# Circuit breaker — use protect() as context manager
cb = CircuitBreaker(CircuitBreakerConfig(failure_threshold=5, recovery_timeout=30.0))
async with cb.protect():
result = await call_ser