software-architecture

Guide software architecture design using Clean Architecture and DDD principles.

1|Updated Dec 23, 2025
One-click install
npx skills add https://github.com/ccf/claude-code-ccf-marketplace --skill software-architecture-ccf
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: software-architecture
Source: https://github.com/ccf/claude-code-ccf-marketplace/tree/main/plugins/backend-development/skills/software-architecture
Command: npx skills add https://github.com/ccf/claude-code-ccf-marketplace --skill software-architecture-ccf

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

This skill provides a structured approach to building high-quality software by applying Clean Architecture and Domain Driven Design principles, helping teams create maintainable, scalable systems.

Core Features & Use Cases

  • Guides architectural decisions aligned with bounded contexts, clear separation of concerns, and testable boundaries.
  • Offers practical rules and best practices for naming, module decomposition, and avoiding common anti-patterns.
  • Use Case: When refactoring a monolithic codebase into modular components, outline contexts, entities, use cases, and interface boundaries to guide implementation.

Quick Start

Start by outlining the top-level boundaries for a new feature: identify core domains, define primary use cases, and sketch the surrounding interfaces and dependencies.

Frequently Asked Questions about software-architecture

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

FAQPage Schema
What is clean architecture and how does it help build scalable software?

Clean architecture is a design approach that enforces separation of concerns and clear boundaries between domains. It helps build scalable software by ensuring modules remain testable, maintainable, and independent of external framework dependencies.

How do I refactor a monolithic codebase into modular components using DDD?

To refactor a monolithic codebase using DDD, you outline bounded contexts, define core entities and use cases, and sketch surrounding interface boundaries. This structured decomposition guides modular implementation and isolates domain logic.

What's the best way to define bounded contexts and separation of concerns for a new feature?

The best way to define bounded contexts is to start by outlining top-level boundaries for the new feature. You identify core domains, define primary use cases, and sketch the surrounding interfaces and dependencies to ensure strict separation of concerns.

Can I use Domain Driven Design principles to improve code quality and testability in existing systems?

Yes, you can use Domain Driven Design principles to improve code quality by applying practical rules for naming, module decomposition, and avoiding common anti-patterns. This enforces testable boundaries and clear separation within existing system codebases.

When should I not use clean architecture for code design?

You should avoid clean architecture when a system lacks complex domain logic or bounded contexts, as enforcing strict boundaries and separation of concerns on simple CRUD applications introduces unnecessary abstraction and structural overhead.