designing-systems

dralgorhythm's avatarfrom dralgorhythm

Design scalable, reliable software systems. Use when planning new systems, major features, or architecture changes. Covers C4 diagrams, trade-off analysis, and system decomposition.

⭐1stars🔀0forks📁View on GitHub🕐Updated Dec 20, 2025

When & Why to Use This Skill

This Claude skill streamlines the software architecture process by helping engineers design scalable, reliable, and well-documented systems. It facilitates the creation of C4 diagrams, data models, and API contracts while ensuring robust decision-making through structured trade-off analysis and the generation of Architecture Decision Records (ADRs).

Use Cases

  • Initial System Planning: Use the skill to gather functional and non-functional requirements and create high-level C4 diagrams for new microservices or platforms.
  • Feature Expansion: Evaluate the impact of adding major features to an existing system, identifying potential single points of failure and architectural risks.
  • Technical Documentation: Automatically generate structured ADRs and Mermaid-based diagrams to document complex design decisions and maintain a clear project history.
  • Performance & Reliability Optimization: Conduct non-functional requirement analysis to ensure the architecture meets scalability, availability, and latency SLA targets.
  • Stakeholder Alignment: Create clear visual blueprints and trade-off tables to facilitate reviews and reach consensus on technical directions.
namedesigning-systems
descriptionDesign scalable, reliable software systems. Use when planning new systems, major features, or architecture changes. Covers C4 diagrams, trade-off analysis, and system decomposition.
allowed-toolsRead, Write, Glob, Grep

Designing Systems

Workflows

  • Requirements: Gather functional and non-functional requirements
  • Diagrams: Create C4 diagrams (Context, Container)
  • Data: Define data model and storage strategy
  • API: Define interfaces and contracts
  • Risks: Identify single points of failure
  • Document: Save to ./artifacts/adr_[topic].md

Feedback Loops

  1. Draft design document
  2. Review with stakeholders
  3. Create POC for risky components
  4. Refine design based on POC
  5. Finalize ADR

Blueprint Template

Every system design should include:

  1. High-Level Diagram: Mermaid graph showing components
  2. Component Boundaries: Clear responsibility definitions
  3. API Definitions: OpenAPI or GraphQL specs
  4. Data Models: Schema definitions
  5. Trade-off Analysis: Rationale for key decisions

C4 Model Levels

Level 1: Context

Who uses the system? What external systems does it interact with?

Level 2: Container

What are the major deployable units? (APIs, databases, queues)

Level 3: Component

What are the major building blocks within each container?

Level 4: Code

Class/function level (usually not needed in architecture docs)

Trade-off Analysis

For major decisions, explicitly document:

Decision Option A Option B
Pros ... ...
Cons ... ...
When to Choose ... ...

Non-Functional Requirements

Always consider:

  • Scalability: Expected load, growth rate
  • Availability: SLA targets, failure modes
  • Latency: P50, P95, P99 requirements
  • Security: Authentication, authorization, data protection
  • Cost: Infrastructure, operational overhead

Resources