system-design

Guide distributed system design with load balancing, caching, and database scaling.

20|5|Updated Jan 5, 2026
One-click install
npx skills add https://github.com/miles990/claude-software-skills --skill system-design-miles990
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: system-design
Source: https://github.com/miles990/claude-software-skills/tree/main/software-design/system-design
Command: npx skills add https://github.com/miles990/claude-software-skills --skill system-design-miles990

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

This Skill provides foundational knowledge and patterns for designing robust, scalable, and highly available software systems, crucial for handling growth and ensuring uptime.

Core Features & Use Cases

  • Scalability: Understand vertical vs. horizontal scaling and stateless service design.
  • Load Balancing: Learn different strategies and health check implementations.
  • Caching: Explore cache-aside, write-through, write-behind patterns and invalidation strategies.
  • Database Scaling: Grasp concepts like read replicas and sharding.
  • Message Queues: Understand patterns like Point-to-Point and Pub/Sub, and delivery guarantees.
  • High Availability: Implement redundancy and circuit breaker patterns.
  • CAP Theorem: Comprehend trade-offs between Consistency, Availability, and Partition Tolerance.
  • Rate Limiting: Implement token bucket and sliding window algorithms.
  • Use Case: When designing a new e-commerce platform, use this skill to decide on the best caching strategy for product catalogs and the optimal database sharding approach for user data.

Quick Start

Explain the difference between vertical and horizontal scaling for a web application.

Frequently Asked Questions about system-design

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

FAQPage Schema
What is the difference between vertical and horizontal scaling for a web application?

Vertical scaling increases the resources of a single server, while horizontal scaling adds more server instances to distribute load. Horizontal scaling requires stateless service design to achieve higher availability and scalability.

How do I choose the right caching strategy for my distributed system?

Choosing a caching strategy involves evaluating cache-aside, write-through, and write-behind patterns against your data consistency needs. You must implement proper cache invalidation strategies to ensure system availability and data accuracy.

What database scaling techniques should I use for high availability?

Database scaling for high availability relies on read replicas to distribute query load and sharding to partition data across multiple nodes. These techniques ensure continuous uptime and performance during traffic spikes.

How does the CAP theorem affect distributed systems design?

The CAP theorem dictates that distributed systems can only guarantee two out of three properties: Consistency, Availability, and Partition Tolerance. Designing distributed systems requires comprehending these trade-offs to handle network partitions effectively.

When should I implement a circuit breaker pattern in my architecture?

Implement the circuit breaker pattern to prevent cascading failures and ensure high availability when a downstream service becomes unresponsive. It provides redundancy by stopping traffic to failing components until they recover.

What are the best message queue patterns for scalable systems?

Scalable systems utilize Point-to-Point and Pub/Sub message queue patterns to decouple services. Understanding delivery guarantees for these patterns ensures reliable asynchronous communication and load balancing across components.