# Macro Architecture

> Choose a system architecture style or assess service decomposition and data ownership. Use for monolith, service, event-driven, or distributed-system boundaries; use architecture-lens for code-level structure.

- Skill: `robsonrung/macro-architecture` (Agent Skill, multi-file: 13 files)
- Install (CLI): `npx skillmds@latest add robsonrung/macro-architecture`
- Raw SKILL.md: https://api.skillmd.com/api/skills/robsonrung/macro-architecture/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: robsonrung (https://skillmd.com/u/robsonrung)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/robsonrung/macro-architecture

---


# Macro Architecture

Two complementary system-level tools that work at the same altitude — **what shape should this system take?**

- **Style selection** — given a system/service/feature and its driving requirements, which macro architecture style (or hybrid) fits, and what does the book warn about if you pick it? (from _Software Architecture Patterns, 2nd ed._, Mark Richards.)
- **Hard-parts decomposition** — once you're decomposing, merging, or re-shaping a system, which way do the trade-offs actually push, anchored in the current code and runtime? (from _Software Architecture: The Hard Parts_, Ford & Richards.)

Use **Style selection** when choosing an overall shape for something new (or sanity-checking an existing one). Use **Hard-parts decomposition** when the decision is whether to pull a system apart or put it back together. They compose: pick a style, then stress-test the decomposition.

**Distinct from** `architecture-lens` (code-level trade-offs/connascence and layer placement/cohesion in the code under your hands), `domain-driven-design` (bounded-context boundaries, ubiquitous language, cross-context integration patterns), and `design-patterns` (GoF code patterns). This skill picks the MACRO shape; those review the code and contexts within it.

## Select the decision

| Need | Read |
| --- | --- |
| Choose or assess an overall architecture style | [references/style-selection.md](references/style-selection.md) |
| Split, merge, or reshape services and data ownership | [references/decomposition.md](references/decomposition.md) |
| Both | Select the style, then assess only its unresolved decomposition tradeoffs |

Use current code, runtime evidence, and the user's constraints. The **smallest coherent shape** is the one that meets the actual requirements. Name the benefit, cost, and next concrete move. Do not turn a routine code change into a system redesign.

## Authority and output

A decision or review request returns the selected method's recommendation. Implement only when the user's request authorizes implementation. Under design-gate, stay read-only and return `verdict: proceed|revise`, `blocking_findings`, `advisory_findings`, and `required_changes`.

Use **all three or no ADR**: hard to reverse, surprising without context, and a real tradeoff. **Record on settle** using the existing ADR convention when all three apply. The decomposition method contains the fallback path and helper command.

## Focused knowledge

Load only the material the selected method needs:

- Style details: [layered](references/layered.md), [microkernel](references/microkernel.md), [event-driven](references/event-driven.md), [microservices](references/microservices.md), [space-based](references/space-based.md).
- [references/traps.md](references/traps.md): before a distributed-style recommendation.
- [references/other-styles.md](references/other-styles.md): when the main matrix does not fit, or coarse-grained services may suffice.
- [references/catalog.md](references/catalog.md): decomposition, granularity, ownership, transactions, and workflow tradeoffs.
- [references/adrtemplate.md](references/adrtemplate.md): when writing a durable decision.

