Structure software around the Dependency Rule: source code dependencies point inward from frameworks to use cases to entities. Use when the user mentions "architecture layers", "dependency rule", "ports and adapters", "hexagonal architecture", or "use case boundary". Covers component principles, boundaries, and SOLID.
From atum-systemnpx claudepluginhub arnwaldn/atum-system --plugin atum-systemThis skill uses the workspace's default tool permissions.
references/component-principles.mdreferences/layers-and-boundaries.mdProvides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Integrates PayPal payments with express checkout, subscriptions, refunds, and IPN. Includes JS SDK for frontend buttons and Python REST API for backend capture.
A disciplined approach to structuring software so that business rules remain independent of frameworks, databases, and delivery mechanisms.
Source code dependencies must point inward -- toward higher-level policies. Nothing in an inner circle can know anything about something in an outer circle.
Goal: 10/10. Rate software architecture 0-10 based on adherence to these principles.
Innermost → Outermost:
Data crossing boundaries: Always in a form convenient for the inner circle (DTOs, not ORM models).
| Topic | Reference | Load When |
|---|---|---|
| Layers & Boundaries | references/layers-and-boundaries.md | Detailed layer patterns, humble object, composition root |
| Component & SOLID Principles | references/component-principles.md | REP, CCP, CRP, ADP, SDP, SAP, SRP, OCP, LSP, ISP, DIP |
| Question | If No | Action |
|---|---|---|
| Test business rules without DB/web? | Coupled to infra | Extract behind interfaces |
| Dependencies point inward? | Rule violated | Introduce interfaces; invert |
| Can swap database? | Persistence leaking | Repository pattern |
| Use Cases delivery-independent? | HTTP leaking | Use plain DTOs |
| Framework in outermost circle? | Framework is architecture | Push to edges |
| Mistake | Fix |
|---|---|
| ORM leaking into business logic | Separate domain from persistence models |
| Business rules in controllers | Move logic into Use Case Interactors |
| Framework-first architecture | Treat framework as outermost plugin |
| Circular dependencies | Apply DIP or extract shared abstraction |
| Giant Use Cases | Split into single-operation Use Cases |