software-architecture

Guide software architecture design with SOLID principles and Clean Architecture layers.

8|3|Updated Dec 12, 2025
One-click install
npx skills add https://github.com/Bbeierle12/Skill-MCP-Claude --skill software-architecture-bbeierle12
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: software-architecture
Source: https://github.com/Bbeierle12/Skill-MCP-Claude/tree/main/skills/software-architecture
Command: npx skills add https://github.com/Bbeierle12/Skill-MCP-Claude --skill software-architecture-bbeierle12

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Building complex software systems without a strong architectural foundation leads to unmaintainable, inflexible, and error-prone code. This Skill provides a comprehensive guide to modern software architecture principles and patterns, enabling you to design robust, scalable, and maintainable systems from the ground up.

Core Features & Use Cases

  • SOLID Principles: Guides on applying Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, and Dependency Inversion principles for modular and flexible code.
  • Clean Architecture: Implements a layered architecture (Domain, Application, Interface Adapters, Frameworks) to ensure separation of concerns and testability.
  • Design Patterns: Provides examples and guidance for common patterns like Repository, Factory, Strategy, and Observer, accelerating development with proven solutions.
  • Architecture Decision Records (ADR): Encourages documenting significant architectural decisions for clarity and future reference, improving team alignment and long-term maintainability.
  • Use Case: A lead engineer needs to design a new microservice. This skill provides the framework to apply Clean Architecture, ensuring the domain logic is isolated, dependencies point inward, and the system is scalable and maintainable, reducing future technical debt.

Quick Start

Explain the Single Responsibility Principle (SRP) and provide a TypeScript example of how to refactor a class to adhere to it.

Frequently Asked Questions about software-architecture

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

FAQPage Schema
How do I apply SOLID principles to design better software architecture?

SOLID principles—Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, and Dependency Inversion—create modular, flexible code by isolating concerns and managing dependencies. Each principle targets a specific design problem: SRP keeps classes focused, Open/Closed allows extension without modification, Liskov ensures substitutable subtypes, Interface Segregation prevents fat interfaces, and Dependency Inversion decouples high-level from low-level modules. Applying them incrementally reduces technical debt and improves maintainability.

What is Clean Architecture and how do I structure my system with it?

Clean Architecture organizes code into four concentric layers—Domain (business logic), Application (use cases), Interface Adapters (controllers, presenters), and Frameworks (databases, web servers)—ensuring dependencies point inward only. This layering isolates domain logic from external concerns, making systems testable, scalable, and resilient to framework changes. Structure your TypeScript project with each layer in separate directories, inject dependencies downward, and keep business rules independent of delivery mechanisms.

When should I use design patterns like Repository, Factory, and Strategy?

Design patterns solve recurring structural problems. Repository abstracts data access, allowing you to swap persistence layers without changing business logic. Factory centralizes object creation, reducing coupling to concrete classes. Strategy encapsulates interchangeable algorithms, letting you select behavior at runtime. Use them when you encounter repeated patterns—avoid premature abstraction. Choose based on the specific coupling or complexity they resolve in your codebase.

How do I document architectural decisions to align my team?

Architecture Decision Records (ADRs) capture significant design choices—the context, decision, and consequences—creating a searchable history. Document decisions when choosing between patterns, technology trade-offs, or structural changes. Store ADRs as markdown files in your repository; reference them during code review and onboarding. ADRs prevent repeated debates, clarify rationale for future maintainers, and reduce technical debt by making reasoning explicit.

Can I apply Clean Architecture and SOLID principles to existing TypeScript codebases?

Yes. Refactor incrementally by identifying responsibilities, extracting domain logic into separate modules, and inverting dependencies. Start with one layer or one principle—separate a god class following SRP, introduce interfaces to decouple modules, reorganize folders to reflect layers. This gradual approach prevents breaking changes and lets your team adopt patterns progressively while delivering value.

What's the difference between architectural patterns and design patterns?

Architectural patterns (Clean Architecture, layered, microservices) organize entire systems and define how major components interact and communicate. Design patterns (Factory, Strategy, Observer) solve localized problems within code—object creation, algorithm selection, or event handling. Architectural patterns set system structure; design patterns implement that structure. Both enforce separation of concerns, but at different scales.