← ClaudeAtlas

monolith-firstlisted

Build a modular monolith with clean internal seams and split to services only on proven pressure. Use when starting a system or resisting premature microservice decomposition.
Amey-Thakur/AI-SKILLS · ★ 4 · AI & Automation · score 77
Install: claude install-skill Amey-Thakur/AI-SKILLS
# Monolith first Most systems should start as a well-structured monolith and stay one longer than fashion suggests. A modular monolith gives you clean boundaries without network complexity; you extract services later, from seams you have proven, when a specific pressure demands it. ## Method 1. **Build modules with the discipline of services, minus the network.** Clear internal boundaries (packages/ modules by business capability: see microservices-boundaries' capability split), each owning its data and exposing an interface other modules call: in-process, but as if it were a contract. This is the whole trick: service-grade boundaries, in-process simplicity (see module-boundaries, layered-architecture). 2. **Enforce boundaries the compiler cannot forget.** Module dependencies point one way (see coupling-analysis), cross-module access goes through the interface not the internals, and tooling (visibility modifiers, package rules, architecture-fitness tests) fails the build when a module reaches past a boundary. Boundaries maintained by good intentions dissolve; enforced ones survive to become extraction seams. 3. **Keep data ownership clean inside the monolith.** Each module owns its tables; other modules query through the owning module, not by joining across (even though one database makes cheating trivial). This is the single most valuable discipline: it is what makes a future service extraction a boundary move, not