From skills
Guides system design and architecture decisions: scaling, monolith vs microservices, REST vs GraphQL, SQL vs NoSQL, component boundaries, data flow, rendering strategies, design patterns, code organization, and ADRs.
How this skill is triggered — by the user, by Claude, or both
Slash command
/skills:architectThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Architecture is about trade-offs, not best practices. Before proposing anything, gather context by walking the decision tree one branch at a time:
Architecture is about trade-offs, not best practices. Before proposing anything, gather context by walking the decision tree one branch at a time:
Gather at minimum:
Then present 2–3 options with explicit trade-offs — never a single "right answer."
Load the relevant reference file based on context. Read only what the conversation needs.
| Context | Reference |
|---|---|
| Code organization, module design, why codebase feels hard to change | references/design-principles.md |
| "What pattern should I use?", plugin system, event handling, composing/adapting systems | references/patterns-structural.md |
| Communication patterns, event-driven design, state machines, encapsulating algorithms | references/patterns-behavioral.md |
| Component architecture, state management, rendering strategy, frontend performance | references/frontend-patterns.md |
| Why code is hard to maintain, identifying what to refactor, when to refactor | references/code-smells.md |
| Service boundaries, API contracts, BFF, fullstack performance antipatterns | references/fullstack-patterns.md |
Before recommending a solution, identify the symptom. These are fast first-pass signals.
Ousterhout's 3 complexity symptoms:
Architecture-level smells (Fowler):
If you see these symptoms → load references/code-smells.md or references/design-principles.md.
For the full rendering decision table (CSR/SSR/SSG/ISR/RSC/Streaming/Edge) → load references/frontend-patterns.md.
Quick guide:
Trade-off: SSR can increase LCP vs CSR on slow networks with fast clients. Measure before committing.
For the full decision table (REST vs GraphQL vs gRPC) → load references/fullstack-patterns.md.
Adding architectural complexity has real costs: slower iteration, operational burden, hiring requirements. Evaluate whether the complexity is paid for at current scale. A modular monolith outperforms microservices for most teams under ~20 engineers.
Use when a decision is hard to reverse, surprising without context, and the result of a real trade-off. Skip for obvious choices.
# ADR-[N]: [Title]
Status: Proposed | Accepted | Deprecated
Date: YYYY-MM-DD
## Context
What situation forced this decision? What are the constraints?
## Decision
What are we doing? Be specific enough that a new engineer could implement it.
## Consequences
**Positive:** What gets better?
**Negative:** What gets harder?
**Risks:** What could go wrong, and how would we know?
Keep to one page. If it takes more than 2 minutes to read, trim it.
Use Level 1 (System Context) and Level 2 (Container) — these stay accurate long enough to be useful. Skip Level 4 (Code) — it goes stale within weeks.
C4Context
Person(user, "User")
System(app, "Your App", "Description")
System_Ext(ext, "External Service")
Rel(user, app, "Uses")
Rel(app, ext, "Calls")
Label every box with technology and purpose.
npx claudepluginhub kriscard/skillsDesigns high-level system architecture, writes Architecture Decision Records (ADRs), and evaluates technology trade-offs. Invoke for system design, microservices structuring, scalability planning, and infrastructure pattern selection.
Designs system architectures, evaluates monolith vs microservices, creates diagrams, analyzes dependencies, chooses databases, plans scalability, makes technical decisions, and reviews designs using ADRs.
Designs system architecture, creates ADRs, evaluates trade-offs, and plans scalability. Use for architecture review, microservices structuring, and infrastructure pattern selection.