principle-resiliency

Design distributed systems for partial failure with bulkheads and health-check strategies.

2|8|Updated Apr 20, 2026
One-click install
npx skills add https://github.com/lugassawan/swe-workbench --skill principle-resiliency
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: principle-resiliency
Source: https://github.com/lugassawan/swe-workbench/tree/main/skills/principle-resiliency
Command: npx skills add https://github.com/lugassawan/swe-workbench --skill principle-resiliency

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Resiliency guidance helps prevent systems from failing completely when dependencies, networks, or components degrade, by designing for partial failure and controlled degradation instead of cascading outages.

Core Features & Use Cases

  • Failure domain clarity: Identify what fails together to avoid “unnamed blast radii” and to reason about cascading failure paths.
  • Blast-radius control with bulkheads: Isolate resource pools per dependency (connection pools, semaphores, thread pools, queues) to prevent one slow dependency from starving others.
  • Correct failure handling and fallback strategy: Choose fail-fast vs fail-soft appropriately, design graceful degradation modes, and ensure health checks (liveness vs readiness) don’t create restart storms or probe storms.

Quick Start

Ask for a resiliency review of your service design focused on failure domains, bulkheads, fail-fast versus fail-soft decisions, graceful degradation options, and health-check behavior under upstream outages.

Frequently Asked Questions about principle-resiliency

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I prevent cascading failure in a distributed system when dependencies degrade?

Prevent cascading failure by designing for partial failure and controlled degradation instead of total outages. Isolate resource pools per dependency using bulkheads, enforce timeout-driven I/O boundaries, and define clear failure domains to reason about blast radius.

What is graceful degradation and how does it keep services useful during partial outages?

Graceful degradation keeps services useful during partial outages by allowing a system to fail-soft and maintain limited functionality instead of crashing completely. It involves designing fallback ladders and choosing appropriate fail-fast versus fail-soft strategies when dependencies return intermittent errors.

How do I design bulkheads to isolate resources and prevent one slow dependency from starving others?

Design bulkheads by isolating resource pools such as connection pools, semaphores, thread pools, and queues per dependency. This fault isolation technique prevents one slow or failing dependency from exhausting shared resources and starving other critical system components.

Why do my health checks cause restart storms during upstream outages?

Health checks cause restart storms when liveness and readiness probes are not properly configured for upstream outages. Misleading probes can incorrectly trigger service restarts or probe storms, so you must differentiate liveness versus readiness behavior and design safe fallback modes.

What is the best way to define failure domains for service architecture and production readiness?

The best way to define failure domains is to identify which components fail together to avoid unnamed blast radii. Map cascading failure paths across your service architecture, isolate resources per dependency, and enforce safe deadline-driven I/O boundaries for production readiness.

When should I use fail-fast versus fail-soft strategies for fault tolerance?

Use fail-fast strategies when you need immediate feedback to prevent resource starvation, and use fail-soft strategies when maintaining partial service availability is critical. Correct failure handling requires choosing appropriately per dependency to ensure graceful degradation and controlled system behavior.