jpskill.com
🛠️ 開発・MCP コミュニティ

architecture-decision-record

Use this skill when documenting significant architectural decisions. Provides ADR templates following the Nygard format with sections for context, decision, consequences, and alternatives. Helps teams maintain architectural memory and rationale for backend systems, API designs, database choices, and infrastructure decisions.

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o architecture-decision-record.zip https://jpskill.com/download/17236.zip && unzip -o architecture-decision-record.zip && rm architecture-decision-record.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/17236.zip -OutFile "$d\architecture-decision-record.zip"; Expand-Archive "$d\architecture-decision-record.zip" -DestinationPath $d -Force; ri "$d\architecture-decision-record.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して architecture-decision-record.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → architecture-decision-record フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-18
取得日時
2026-05-18
同梱ファイル
1

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

アーキテクチャ決定記録

概要

アーキテクチャ決定記録 (ADR) は、重要なアーキテクチャ上の決定を、その背景と結果とともに記録する軽量なドキュメントです。このスキルは、プロジェクトで ADR を作成および維持するためのテンプレート、例、およびベストプラクティスを提供します。

このスキルを使用する場面:

  • 重要な技術的選択を行う場合 (データベース、フレームワーク、クラウドプロバイダー)
  • システムアーキテクチャまたは主要コンポーネントを設計する場合
  • チームのパターンまたは規約を確立する場合
  • 複数のアプローチ間のトレードオフを評価する場合
  • 将来の開発に影響を与える決定を文書化する場合

ADR が重要な理由

ADR は、チームのアーキテクチャ上の記憶として機能します。

  • 背景の保持: 何が決定されたかだけでなく、なぜ決定されたかを記録します
  • オンボーディング: 新しいチームメンバーがアーキテクチャの根拠を理解するのに役立ちます
  • 再検討の防止: 決定済みの事項に関する終わりのない議論を回避します
  • 進化の追跡: アーキテクチャが時間の経過とともにどのように進化したかを確認します
  • 説明責任: 明確なオーナーシップと決定のタイムライン

ADR 形式 (Nygard テンプレート)

各 ADR は、次の構造に従う必要があります。

1. タイトル

形式: ADR-####: [決定のタイトル] 例: ADR-0001: マイクロサービスアーキテクチャの採用

2. ステータス

決定の現在の状態:

  • Proposed: 検討中
  • Accepted: 決定が承認され、実装中
  • Superseded: 後続の決定によって置き換えられた (ADR 番号を参照)
  • Deprecated: もはや推奨されないが、まだ置き換えられていない
  • Rejected: 検討されたが採用されなかった (理由を文書化)

3. 背景

含めるべき内容:

  • 問題文または機会
  • ビジネス/技術的な制約
  • ステークホルダーの要件
  • システムの現在の状態
  • 作用する力 (相反する懸念事項)

例:

## 背景

当社のモノリシックアプリケーションは、スケーラビリティの問題を抱えています。
- ピークトラフィック時にデータベース接続プールが枯渇する
- いかなる機能のデプロイにもアプリケーション全体の再起動が必要
- チームが共有リソースを待機してブロックされる
- 開発者の生産性に影響を与える 45 分のビルド時間

ビジネス要件:
- 今後 12 か月で 10 倍のトラフィック増加をサポート
- 独立したチームデプロイメントを可能にする
- 新機能の市場投入までの時間を改善する

技術的な制約:
- チームは Node.js と Python に精通している
- AWS インフラストラクチャはすでに整備されている
- 2 人のシニア devops エンジニアの予算

4. 決定

含めるべき内容:

  • 行われる選択
  • 従うべき主要な原則またはパターン
  • その結果として何が変わるか
  • 実装の責任者

具体的かつ実行可能であること:

  • ✅ "Node.js と Express を使用してマイクロサービスアーキテクチャを採用します"
  • ❌ "マイクロサービスの使用を検討します"

例:

## 決定

モノリシックアーキテクチャからマイクロサービスに移行します。

**技術スタック:**
- サービス実装には Node.js 20+ と Express を使用
- トランザクションデータには PostgreSQL (サービスごと)
- キャッシュとセッション管理には Redis
- サービス間の非同期通信には RabbitMQ
- デプロイメントオーケストレーションには Docker + Kubernetes

**サービス境界:**
- User Service: 認証、プロファイル、設定
- Order Service: 注文処理、決済連携
- Inventory Service: 製品カタログ、在庫管理
- Notification Service: メール、SMS、プッシュ通知

**移行戦略:**
- ストラングラー・フィグ・パターン: モノリスからサービスを段階的に抽出
- Notification Service から開始 (リスクが最も低く、境界が明確)
- 6 か月以内 (2026 年の第 1 四半期から第 2 四半期) に移行を完了

**責任:**
- Backend Architect: サービス設計と API コントラクト
- DevOps Team: Kubernetes のセットアップとデプロイメントパイプライン
- Team Leads: サービスごとの移行実行

5. 結果

含めるべき内容:

  • プラスの結果 (利点)
  • マイナスの結果 (コスト、リスク、トレードオフ)
  • 中立的な結果 (変化するが、明らかに良い/悪いとは言えないもの)

トレードオフについて正直であること:

## 結果

### プラス
- **スケーラビリティ**: 各サービスは負荷に基づいて個別にスケール可能
- **開発速度**: チームは調整なしでサービスをデプロイ可能
- **技術的自由度**: サービスは必要に応じて異なる技術スタックを使用可能
- **障害分離**: 1 つのサービスの障害がシステム全体をクラッシュさせない
- **ビルド時間の短縮**: サービスは 45 分ではなく 2 ~ 5 分でビルド可能

### マイナス
- **運用上の複雑さ**: 1 つのアプリケーションではなく 4 つ以上のサービスを管理
- **ネットワーク遅延**: サービス間呼び出しごとに 10 ~ 50 ミリ秒の遅延が追加
- **分散デバッグ**: サービス間のリクエストの追跡が困難
- **データ整合性**: 即時整合性ではなく、結果整合性
- **学習曲線**: チームは Kubernetes、サービスメッシュの概念を学ぶ必要あり
- **初期の減速**: メリットを得る前に 2 ~ 3 か月のインフラストラクチャのセットアップ

### 中立
- **テスト戦略**: 統合テストからコントラクトテストへの移行
- **モニタリング**: 単純なログではなく、分散トレーシング (Jaeger) が必要
- **コスト**: インフラストラクチャコストの増加は、開発者の生産性向上によって相殺される

6. 検討された代替案

少なくとも 2 つの代替案を文書化:

各代替案について、以下を説明:

  • それが何であったか
  • なぜ検討されたのか
  • なぜ選択されなかったのか

例:


## 検討された代替案

### 代替案 1: 既存のモノリスの最適化
**説明:**
- データベースの読み取り専用レプリカを追加
- キャッシュ層 (Redis) を実装
- ロードバランサーによる水平スケーリングを使用

**長所:**
- 複雑さが低く、チームはすでに精通している
- 実装が高速 (4 ~ 6 週間)
- アーキテクチャの再構築は不要

**短所:**
- デプロイメントの結合を解決しない
- スケーラビリティの上限が限られている
- ビルド時間が遅いまま
- チームは依然として共有リソースでブロックされる

**選択されなかった理由:**
これは根本原因ではなく症状に対処するものです。成長を続けるにつれて、12 ~ 18 か月後に同じ問題に再び直面するでしょう。

### 代替案 2: サーバーレスアーキテクチャ (AWS Lambda)
**説明:**
- アプリケーションを Lambda 関数に分割
- ルーティングに API Gateway を使用
- st に DynamoDB を使用

(原文はここで切り詰められています)
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

Architecture Decision Record

Overview

Architecture Decision Records (ADRs) are lightweight documents that capture important architectural decisions along with their context and consequences. This skill provides templates, examples, and best practices for creating and maintaining ADRs in your projects.

When to use this skill:

  • Making significant technology choices (databases, frameworks, cloud providers)
  • Designing system architecture or major components
  • Establishing patterns or conventions for the team
  • Evaluating trade-offs between multiple approaches
  • Documenting decisions that will impact future development

Why ADRs Matter

ADRs serve as architectural memory for your team:

  • Context Preservation: Capture why decisions were made, not just what was decided
  • Onboarding: Help new team members understand architectural rationale
  • Prevent Revisiting: Avoid endless debates about settled decisions
  • Track Evolution: See how architecture evolved over time
  • Accountability: Clear ownership and decision timeline

ADR Format (Nygard Template)

Each ADR should follow this structure:

1. Title

Format: ADR-####: [Decision Title] Example: ADR-0001: Adopt Microservices Architecture

2. Status

Current state of the decision:

  • Proposed: Under consideration
  • Accepted: Decision approved and being implemented
  • Superseded: Replaced by a later decision (reference ADR number)
  • Deprecated: No longer recommended but not yet replaced
  • Rejected: Considered but not adopted (document why)

3. Context

What to include:

  • Problem statement or opportunity
  • Business/technical constraints
  • Stakeholder requirements
  • Current state of the system
  • Forces at play (conflicting concerns)

Example:

## Context

Our monolithic application is experiencing scalability issues:
- Database connection pool exhausted during peak traffic
- Deployment of any feature requires full application restart
- Teams blocked waiting for shared resources
- 45-minute build times impacting developer productivity

Business requirements:
- Support 10x traffic growth over next 12 months
- Enable independent team deployments
- Improve time-to-market for new features

Technical constraints:
- Team familiar with Node.js and Python
- AWS infrastructure already in place
- Budget for 2 senior devops engineers

4. Decision

What to include:

  • The choice being made
  • Key principles or patterns to follow
  • What will change as a result
  • Who is responsible for implementation

Be specific and actionable:

  • ✅ "We will adopt microservices architecture using Node.js with Express"
  • ❌ "We will consider using microservices"

Example:

## Decision

We will migrate from our monolithic architecture to microservices using:

**Technology Stack:**
- Node.js 20+ with Express for service implementation
- PostgreSQL for transactional data (per service)
- Redis for caching and session management
- RabbitMQ for async communication between services
- Docker + Kubernetes for deployment orchestration

**Service Boundaries:**
- User Service: Authentication, profiles, preferences
- Order Service: Order processing, payment integration
- Inventory Service: Product catalog, stock management
- Notification Service: Email, SMS, push notifications

**Migration Strategy:**
- Strangler Fig pattern: Gradually extract services from monolith
- Start with Notification Service (lowest risk, clear boundaries)
- Complete migration within 6 months (Q1-Q2 2026)

**Responsibility:**
- Backend Architect: Service design and API contracts
- DevOps Team: Kubernetes setup and deployment pipelines
- Team Leads: Migration execution per service

5. Consequences

What to include:

  • Positive outcomes (benefits)
  • Negative outcomes (costs, risks, trade-offs)
  • Neutral outcomes (things that change but aren't clearly better/worse)

Be honest about trade-offs:

## Consequences

### Positive
- **Scalability**: Each service can scale independently based on load
- **Development Velocity**: Teams can deploy services without coordination
- **Technology Freedom**: Services can use different tech stacks if needed
- **Fault Isolation**: Failure in one service doesn't crash entire system
- **Faster Build Times**: Services build in 2-5 minutes vs 45 minutes

### Negative
- **Operational Complexity**: Managing 4+ services vs 1 application
- **Network Latency**: Inter-service calls add 10-50ms per hop
- **Distributed Debugging**: Harder to trace requests across services
- **Data Consistency**: Eventually consistent vs immediate consistency
- **Learning Curve**: Team needs to learn Kubernetes, service mesh concepts
- **Initial Slowdown**: 2-3 months of infrastructure setup before benefits

### Neutral
- **Testing Strategy**: Shift from integration tests to contract tests
- **Monitoring**: Need distributed tracing (Jaeger) vs simple logs
- **Cost**: Higher infrastructure costs offset by improved developer productivity

6. Alternatives Considered

Document at least 2 alternatives:

For each alternative, explain:

  • What it was
  • Why it was considered
  • Why it was not chosen

Example:

## Alternatives Considered

### Alternative 1: Optimize Existing Monolith
**Description:**
- Add read replicas for database
- Implement caching layer (Redis)
- Use horizontal scaling with load balancer

**Pros:**
- Lower complexity, team already familiar
- Faster implementation (4-6 weeks)
- No architectural re-work needed

**Cons:**
- Doesn't solve deployment coupling
- Limited scalability ceiling
- Build times remain slow
- Teams still blocked on shared resources

**Why not chosen:**
This addresses symptoms but not root causes. We'd face the same issues again in 12-18 months as we continue growing.

### Alternative 2: Serverless Architecture (AWS Lambda)
**Description:**
- Break application into Lambda functions
- Use API Gateway for routing
- DynamoDB for storage

**Pros:**
- Extreme scalability
- Pay-per-use pricing model
- No server management

**Cons:**
- Vendor lock-in to AWS
- Cold start latency (500ms+)
- Limited to 15-minute execution time
- Team has no serverless experience
- Harder to debug and test locally

**Why not chosen:**
Risk too high given team inexperience. Cold starts unacceptable for our real-time features. Microservices provide similar benefits with more control.

7. References (Optional)

Links to relevant resources:

  • Meeting notes or discussion threads
  • Related ADRs
  • External research or articles
  • Proof of concept implementations

ADR Lifecycle

Proposed → Accepted → [Implemented] → (Eventually) Superseded/Deprecated
          ↓
      Rejected

State Transitions:

  1. Proposed: Draft created, under review
  2. Accepted: Team agrees, implementation can begin
  3. Implemented: Decision is live in production
  4. Superseded: Replaced by new ADR (add reference)
  5. Deprecated: No longer recommended (migration path documented)
  6. Rejected: Not adopted (reasoning captured)

Best Practices

1. Keep ADRs Immutable

Once accepted, don't edit ADRs. Create new ADRs that supersede old ones.

  • ✅ Create ADR-0015 that supersedes ADR-0003
  • ❌ Update ADR-0003 with new decisions

2. Write in Present Tense

ADRs are historical records written as if the decision is being made now.

  • ✅ "We will adopt microservices"
  • ❌ "We adopted microservices"

3. Focus on 'Why', Not 'How'

ADRs capture decisions, not implementation details.

  • ✅ "We chose PostgreSQL for relational consistency"
  • ❌ "Configure PostgreSQL with these specific settings..."

4. Review ADRs as Team

Get input from relevant stakeholders before accepting.

  • Architects: Technical viability
  • Developers: Implementation feasibility
  • Product: Business alignment
  • DevOps: Operational concerns

5. Number Sequentially

Use 4-digit zero-padded numbers: ADR-0001, ADR-0002, etc. Maintain a single sequence even with multiple projects.

6. Store in Git

Keep ADRs in version control alongside code:

  • Location: /docs/adr/ or /architecture/decisions/
  • Format: Markdown for easy reading
  • Branch: Same branch as implementation

Quick Start Checklist

  • [ ] Copy ADR template from /templates/adr-template.md
  • [ ] Assign next sequential number (check existing ADRs)
  • [ ] Fill in Context: problem, constraints, requirements
  • [ ] Document Decision: what, why, how, who
  • [ ] List Consequences: positive, negative, neutral
  • [ ] Describe at least 2 Alternatives: what, pros/cons, why not chosen
  • [ ] Add References: discussions, research, related ADRs
  • [ ] Set Status to "Proposed"
  • [ ] Review with team
  • [ ] Update Status to "Accepted" after approval
  • [ ] Link ADR in implementation PR
  • [ ] Update Status to "Implemented" after deployment

Common Pitfalls to Avoid

Too Technical: "We'll use Kubernetes with these 50 YAML configs..." ✅ Right Level: "We'll use Kubernetes for container orchestration because..."

Too Vague: "We'll use a better database" ✅ Specific: "We'll use PostgreSQL 15+ for transactional data because..."

No Alternatives: Only documenting the chosen solution ✅ Comparative: Document why alternatives weren't chosen

Missing Consequences: Only listing benefits ✅ Balanced: Honest about costs and trade-offs

No Context: "We decided to use Redis" ✅ Contextual: "Given our 1M+ concurrent users and sub-50ms latency requirement..."

Examples

See /examples/ for complete ADR samples:

  • adr-0001-adopt-microservices.md - System architecture decision
  • adr-0002-choose-postgresql.md - Database selection
  • adr-0003-api-versioning-strategy.md - API design pattern

Related Skills

  • api-design-framework: Use when designing APIs referenced in ADRs
  • database-schema-designer: Use when ADR involves database choices
  • security-checklist: Consult when ADR has security implications

Integration with Agents

Backend System Architect

  • Creates ADRs when designing major system components
  • References ADRs when making related architectural decisions
  • Reviews ADRs for consistency with overall architecture

Studio Coach

  • Suggests ADRs for complex multi-agent projects
  • Ensures architectural decisions are documented
  • Tracks ADR status in project planning

Code Quality Reviewer

  • Validates that significant changes have corresponding ADRs
  • Ensures implementation aligns with accepted ADRs
  • Flags when ADR may need to be superseded

Skill Version: 1.0.0 Last Updated: 2025-10-31 Maintained by: AI Agent Hub Team