Architecture Decision

jwynia/agent-skills/skills/tech/development/architecture/architecture-decision

作者 jwyniae02ec7e226a6MIT168 个星标收录于 2026年10月8日更新于 2026年10月8日仓库7个月前更新

Systematically evaluate architecture decisions, document trade-offs, and select appropriate patterns. This skill should be used when the user asks about 'architecture decision', 'ADR', 'design pattern selection', 'technology choice', or needs to evaluate architectural trade-offs. Keywords: architecture, ADR, patterns, trade-offs, technical debt, quality attributes, decision record.

AI 生成的概览

指导评估软件架构决策、权衡取舍、模式选择并撰写架构决策记录。

功能
提供评估架构权衡、按团队与规模情境选择模式并记录决策的框架。内容包括决策矩阵模板、架构决策记录模板、重构模式、技术债分类与指标,以及常见反模式。该技能仅含说明,产出的是书面指导与文档模板,而非代码。
适用场景
适用于进行技术选型、比较架构模式、撰写架构决策记录、评估技术债或权衡设计方案时。不适用于编写实现代码、收集需求或进行完整系统设计。
运行要求
无需任何工具、软件包或凭据;仅含说明,不附带脚本。

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

markdown
# 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

来源与署名

来源:jwynia/agent-skills位于skills/tech/development/architecture/architecture-decision提交e02ec7e

许可证: MIT

内容归原作者所有。SourceWeft 从公开仓库中收录这些内容。

举报或申请下架