What problem does it solve? Choosing how to organize code into modules, layers, and boundaries is a high-stakes decision that is expensive to reverse, yet teams often default to horizontal controller/service/repository layering or premature DDD patterns that scatter one behavior across many files. ## Core Features & Use Cases - Boundary Decision Rules: Organizes code by what changes together, requiring layers only for real process, deploy, trust, persistence, or transport boundaries. - Contract-First Boundaries: Ensures module boundaries expose contracts rather than internal steps, with callers depending only on the public surface. - DDD Discipline: Applies aggregates, repositories, and bounded contexts only when they protect a named invariant, workflow, or ambiguous term. - Use Case: When starting a new service, use it to decide between feature-oriented organization and horizontal layers, then record the reasoning in an ADR before any files are moved. ## Quick Start Use the architecture skill to decide the module boundaries and layering for my new payments service before I scaffold the project.