Architecture Decision Skill
Core Philosophy: "Everything is a Trade-off"
There are no "best solutions", only solutions with the right set of trade-offs for the specific context.
Decision Making Process (RFD / RFC)
- Context: What is the problem? Why now?
- Constraints: Budget, Time, Skillset, Legacy.
- Options: Propose at least 3 viable options.
- Trade-off Analysis: Compare constraints vs options.
- Recommendation: Choose one and justify.
Trade-off Analysis Matrix (Template)
| Feature |
Option A (e.g. SQL) |
Option B (e.g. NoSQL) |
Option C (e.g. File) |
| Scalability |
Medium (Vertical) |
High (Horizontal) |
Low |
| Consistency |
Strong (ACID) |
Eventual (BASE) |
N/A |
| Complexity |
Low (Known) |
Medium (New tech) |
Low |
| Cost |
$$ |
$$$ |
$ |
Architecture Note
When a decision is made, document it.
# Architecture Note: Use PostgreSQL for Main Database
## Status
Accepted
## Context
We need a reliable, relational database for user data...
## Decision
We will use PostgreSQL 16.
## Consequences
- Positive: ACID compliance, rich ecosystem.
- Negative: Scaling writes requires sharding later.
Critical Factors to Evaluate
- Reliability (Availability, Fault tolerance)
- Scalability (Throughput, Latency)
- Maintainability (Simple vs Easy, Ecosystem)
- Security (AuthN/Z, Encryption)
- Cost (Infrastructure, License, Cognitive load)
Rules
- MUST present at least 3 viable options, including "status quo / do nothing" when relevant
- MUST state constraints (budget, time, team skillset, legacy) before enumerating options — options without constraints are arbitrary
- NEVER recommend an option without explicitly naming its failure mode and what would trigger revisiting the decision
- CRITICAL: the output is a document (ADR / RFC / RFD), not code changes. Code work belongs in
/plan or /refactor-plan.
- MANDATORY:
Consequences section names both Positive and Negative effects. A decision with only upside is not honestly analysed.
Gotchas
- "Status quo" is a genuine option and often the right one for constrained teams. Omitting it biases the analysis toward change for change's sake.
- ADRs are append-only. A reversed decision gets a new ADR with
Status: Supersedes ADR-N, not an in-place edit of the original — the history of thinking matters more than the current state.
- Qualitative scales (High / Medium / Low) without anchors are hand-waving. When scoring, pin each level to a measurable threshold (e.g., "High scalability = 10k req/s at p95 < 100ms on 2 nodes").
- "We might use X" and "We will try X" are not decisions — they are deferrals. A valid ADR states the chosen option unconditionally; if you cannot, the decision is not ready.
- Political constraints (team expertise, vendor relationships, executive preferences) are first-class constraints. Hiding them behind technical language produces ADRs that get silently ignored — name them explicitly in the Constraints section.
When NOT to Load
- To find what architectural problems exist — use
/architecture-audit (discovery) before this skill (decision)
- To plan implementation of an already-decided option — use
/plan or /refactor-plan
- To design a single module's interface — use
/design-an-interface
- When fewer than 2 options exist — there is no decision to make; document the constraint instead
- For runtime configuration choices (flag values, timeouts) — those are operational, not architectural
1---2name: architecture-decision3description: "Architecture decisions in ADR/RFC/RFD format: context, constraints, options, recommendation. Triggers: ADR, RFC, RFD, trade-offs, design choice, pick between, evaluate approach."4effort: medium5user-invocable: false6allowed-tools: Read, Write7---89# Architecture Decision Skill1011## Core Philosophy: "Everything is a Trade-off"12There are no "best solutions", only solutions with the right set of trade-offs for the specific context.1314## Decision Making Process (RFD / RFC)151. **Context**: What is the problem? Why now?162. **Constraints**: Budget, Time, Skillset, Legacy.173. **Options**: Propose at least 3 viable options.184. **Trade-off Analysis**: Compare constraints vs options.195. **Recommendation**: Choose one and justify.2021## Trade-off Analysis Matrix (Template)2223| Feature | Option A (e.g. SQL) | Option B (e.g. NoSQL) | Option C (e.g. File) |24|---------|---------------------|-----------------------|----------------------|25| **Scalability** | Medium (Vertical) | High (Horizontal) | Low |26| **Consistency** | Strong (ACID) | Eventual (BASE) | N/A |27| **Complexity** | Low (Known) | Medium (New tech) | Low |28| **Cost** | $$ | $$$ | $ |2930## Architecture Note31When a decision is made, document it.3233```markdown34# Architecture Note: Use PostgreSQL for Main Database3536## Status37Accepted3839## Context40We need a reliable, relational database for user data...4142## Decision43We will use PostgreSQL 16.4445## Consequences46- Positive: ACID compliance, rich ecosystem.47- Negative: Scaling writes requires sharding later.48```4950## Critical Factors to Evaluate51- **Reliability** (Availability, Fault tolerance)52- **Scalability** (Throughput, Latency)53- **Maintainability** (Simple vs Easy, Ecosystem)54- **Security** (AuthN/Z, Encryption)55- **Cost** (Infrastructure, License, Cognitive load)5657## Rules5859- **MUST** present at least 3 viable options, including "status quo / do nothing" when relevant60- **MUST** state constraints (budget, time, team skillset, legacy) **before** enumerating options — options without constraints are arbitrary61- **NEVER** recommend an option without explicitly naming its failure mode and what would trigger revisiting the decision62- **CRITICAL**: the output is a document (ADR / RFC / RFD), not code changes. Code work belongs in `/plan` or `/refactor-plan`.63- **MANDATORY**: `Consequences` section names both Positive and Negative effects. A decision with only upside is not honestly analysed.6465## Gotchas6667- "Status quo" is a genuine option and often the right one for constrained teams. Omitting it biases the analysis toward change for change's sake.68- ADRs are **append-only**. A reversed decision gets a new ADR with `Status: Supersedes ADR-N`, not an in-place edit of the original — the history of thinking matters more than the current state.69- Qualitative scales (High / Medium / Low) without anchors are hand-waving. When scoring, pin each level to a measurable threshold (e.g., "High scalability = 10k req/s at p95 < 100ms on 2 nodes").70- "We might use X" and "We will try X" are not decisions — they are deferrals. A valid ADR states the chosen option unconditionally; if you cannot, the decision is not ready.71- Political constraints (team expertise, vendor relationships, executive preferences) are first-class constraints. Hiding them behind technical language produces ADRs that get silently ignored — name them explicitly in the Constraints section.7273## When NOT to Load7475- To find **what** architectural problems exist — use `/architecture-audit` (discovery) before this skill (decision)76- To plan implementation of an already-decided option — use `/plan` or `/refactor-plan`77- To design a single module's interface — use `/design-an-interface`78- When fewer than 2 options exist — there is no decision to make; document the constraint instead79- For runtime configuration choices (flag values, timeouts) — those are operational, not architectural