What problem does it solve? Building reliable async Rust services that communicate over NATS JetStream and call flaky downstream HTTP dependencies is error-prone: messages get redelivered spuriously, circuit breakers trip on bad input instead of real outages, and health checks miss servers that return 200 with garbage bodies. This Skill encodes the correct patterns for each of these failure modes. ## Core Features & Use Cases - JetStream vs core NATS guidance: Explains when a raw core publish is sufficient to exercise a JetStream consumer, and how ack timing (AckWait) must be tuned for long-running handlers to avoid spurious redelivery. - Circuit breaker and retry patterns: Provides a concrete CircuitBreaker struct with half-open trial logic, plus retry-with-backoff that distinguishes non-retryable validation rejections via typed errors instead of string matching. - Readiness probes and shared state: Shows payload-checking background probes that catch "up but broken" servers, and safe Arc<Mutex<T>> usage across tokio tasks without holding locks across awaits. - Use Case: When modifying the voice-agent or stt-agent crates, apply these patterns to add a retry loop around a local inference server call without tripping the circuit breaker on deterministic input rejections. ## Quick Start Ask the assistant to review or write the retry and circuit-breaker logic for a Rust service that calls a downstream HTTP inference server over NATS.