mcpField
A
architecture-decision

architecture-decision

github.com/jwyniaDevelopment179494 installsUpdated 35w ago
Repository

About architecture-decision

Architecture Decision is a software architecture skill for teams comparing design choices, documenting trade-offs, and managing technical debt. It emphasizes selecting patterns according to context rather than treating one architecture as universally suitable.

Key features

  1. 01Compares architectural alternatives
  2. 02Maps patterns to context
  3. 03Creates Architecture Decision Records
  4. 04Assesses quality attributes
  5. 05Documents refactoring approaches
  6. 06Categorizes and tracks technical debt

Use cases

  1. 01Choosing between architecture patterns
  2. 02Recording the rationale for a technology choice
  3. 03Planning technical debt work

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/jwynia/agent-skills --skill architecture-decision

After installing, type/architecture-decisionin Claude Code to confirm it loaded.

Details

From the project README

Architecture Decision

Systematically evaluate architecture decisions, document trade-offs, and select appropriate patterns for context. Provides frameworks for pattern selection, ADR creation, and technical debt management.

When to Use This Skill

Use this skill when:

  • Making technology choices
  • Evaluating architectural patterns
  • Creating Architecture Decision Records
  • Assessing technical debt
  • Comparing design alternatives

Do NOT use this skill when:

  • Writing implementation code
  • Working on requirements (use requirements-analysis)
  • Doing full system design (use system-design)

Core Principle

Context drives decisions. No pattern is universally good or bad. The best architecture is not the most elegant—it's the one that best serves its purpose while remaining maintainable and evolvable.

The Trade-off Triangle

Every architectural decision involves trade-offs:

VertexMaximized ByCost
SimplicityMonolith, sync communication, single DBScalability limits
FlexibilityMicroservices, event-driven, pluginsComplexity overhead
PerformanceCaching, denormalization, optimized codeMaintainability

Balance Strategies:

  • Start simple, add complexity as needed
  • Measure before optimizing
  • Use abstractions to defer decisions
  • Evolve incrementally

Quality Attributes

Performance
  • Metrics: Response time (p50, p95, p99), throughput, resource utilization
  • Tactics: Caching, load balancing, async processing
Scalability
  • Dimensions: Horizontal, vertical, elastic
  • Patterns: Stateless services, sharding, event streaming
Reliability
  • Metrics: Uptime, MTBF, MTTR
  • Patterns: Circuit breakers, retries, redundancy
Maintainability
  • Factors: Readability, modularity, testability
  • Patterns: Clean architecture, DDD, SOLID

Context-Pattern Mapping

Team Context
ContextPreferred PatternsAvoid
Small teamMonolith, vertical slices, shared DBMicroservices, complex abstractions
Multiple teamsService boundaries, API contractsShared state, tight coupling
Scale Context
ContextPreferred PatternsReasoning
StartupMonolith first, vertical scalingOptimize for development speed
EnterpriseService mesh, horizontal scalingOptimize for operational scale

Decision Matrix Template

OptionConsistencyFlexibilityScalabilityComplexityCostTotal
Option A5232315
Option B3543318
Option C2351213

Weight factors based on context priorities.

Architecture Decision Record (ADR) Template

# ADR-[NUMBER]: [TITLE]

## Status
[Proposed | Accepted | Deprecated | Superseded]

## Context
[What is the situation requiring a decision?]

### Requirements
- [Requirement 1]
- [Requirement 2]

### Constraints
- [Constraint 1]
- [Constraint 2]

## Decision
[What is the decision?]

### Justification
- [Reason 1]
- [Reason 2]

## Consequences

### Positive
- [Benefit 1]
- [Benefit 2]

### Negative
- [Drawback 1]
- [Drawback 2]

## Alternatives Considered

### [Alternative 1]
Reason rejected: [Why]

### [Alternative 2]
Reason rejected: [Why]

Architectural Refactoring Patterns

Branch by Abstraction
  1. Create abstraction over current implementation
  2. Implement new solution behind abstraction
  3. Switch to new implementation
  4. Remove old implementation
Strangler Fig
  1. Identify boundary
  2. Implement new solution for new features
  3. Gradually migrate old features
  4. Retire old system
Parallel Run
  1. Implement new solution
  2. Run both old and new
  3. Compare results
  4. Switch when confident

Technical Debt Management

Debt Categories
TypeExamplesPayment Strategy
DesignMissing abstractions, tight couplingRefactoring sprints
CodeDuplication, complexity, poor namingContinuous cleanup
TestMissing tests, flaky testsTest improvement
DocumentationMissing docs, outdated diagramsDocumentation sprints
Metrics
  • Debt ratio: Debt work / Total work (target < 20%)
  • Interest rate: Extra effort due to debt
  • Debt ceiling: Maximum acceptable debt

Anti-Patterns

Big Ball of Mud

Symptoms: No clear structure, everything depends on everything Remedy: Identify boundaries, extract modules, establish interfaces

Distributed Monolith

Symptoms: Services must deploy together, sync chains, shared DBs Remedy: Merge related services, async communication, separate DBs

Golden Hammer

Symptoms: One solution for all problems, force-fitting patterns Remedy: Learn alternatives, evaluate objectively, prototype options

Related Skills

  • system-design - Full system design with ADRs
  • code-review - Implementation validation
  • task-decomposition - Breaking down architectural work
  • requirements-analysis - Understanding constraints

Comments

Markdown supported