mcpField
E
eagle-architect

eagle-architect

github.com/autumnsgrove開発767 回インストール今日更新
リポジトリ

eagle-architect について

サービス、API、機能の設計やシステムの再構成に取り組むチーム向けのアーキテクチャ計画スキルです。背景の把握や境界分析から、判断の文書化、実装レビューまでを段階的に導きます。

主な機能

  1. 015 段階のアーキテクチャワークフロー
  2. 02ドメイン境界とデータフローの分析
  3. 03パターンと技術選定の指針
  4. 04アーキテクチャ計画と決定記録
  5. 05実装レビューのチェックポイント

活用シーン

  1. 01新しいサービスや API の計画
  2. 02既存システムの再構成
  3. 03コンポーネントとドメインの境界定義
  4. 04アーキテクチャ判断の記録

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/autumnsgrove/lattice --skill eagle-architect

インストール後、Claude Code で/eagle-architectを入力して読み込まれたか確認します。

詳細

イーグル・アーキテクト 🦅

ワシは木々の中へ急降下しません。高く舞い上がり、森全体を見渡します。この高さからは、谷をつなぐ川や、領域を隔てる尾根、新たな成長が育まれる開けた場所など、パターンが浮かび上がります。ワシが見るのは、今あるものだけでなく、これから実現できるものです。

起動するタイミング

  • ユーザーが「アーキテクチャを設計して」または「システムを計画して」と依頼したとき
  • ユーザーが「これらのコンポーネントはどのように連携すべき?」または「全体像を整理して」と言ったとき
  • ユーザーが /eagle-architect を呼び出したとき、またはワシ/アーキテクチャに言及したとき
  • 新しいサービス、API、または大規模な機能を計画するとき
  • 既存のシステムをより良い構造にリファクタリングするとき
  • ドメイン間に境界を設けるとき
  • スケールを考慮して技術選定を評価するとき

併用: アーキテクチャを決めた後の詳細な仕様作成には swan-design


飛翔

SOAR → SURVEY → DESIGN → BLUEPRINT → BUILD
  ↓       ↓        ↓          ↓          ↓
Rise   See the   Draw      Document   Guide
Above  Pattern   Boundaries  Plans    Implementation
フェーズ 1:上昇

ワシは翼を広げ、樹冠の上へと舞い上がります……

何かを設計する前に、高く上昇して全体像を把握します。

状況を理解する:

  1. どのような問題を解決するのか? — 技術的な解決策ではなく、ユーザーの課題
  2. 規模はどれくらいか? — 10 人のユーザーか、1,000 万人か。すべてが変わります
  3. 制約は何か? — 予算、期間、チームの規模、既存の技術
  4. 成長の見通しは? — 現状だけでなく、目指す先に備えて計画します

既存の森を把握する:

  • すでにどのようなシステムがありますか?
  • システム同士はどこで接続していますか?
  • うまく機能しているのはどこですか?
  • 負荷がかかると問題が生じるのはどこですか?

アーキテクチャ決定記録(ADR): 重要なアーキテクチャ上の選択は、すべて記録に残します。ドキュメントを作成します:

docs/plans/{category}/{stage}/{descriptive-name}.md

カテゴリ:features/、infra/、security/、tooling/ ライフサイクルの段階:planning/ → planned/ → active/ → completed/

すべての計画ファイルには YAML フロントマターを必ず含めてください:

---
title: "Human-Readable Plan Title"
description: "One-line summary of what this plan covers"
status: planning | planned | active | completed
category: features | infra | security | tooling
lastUpdated: "YYYY-MM-DD"
tags:
  - relevant-tag
---

出力: 規模、制約、問題の説明を含むコンテキストの概要


フェーズ 2:調査

目を凝らすと、ワシには地上からは見えないパターンが見えてきます……

アーキテクチャのパターンを見つけるために、全体を分析します。

ドメイン境界: 自然な分断点はどこにありますか?

┌─────────────────────────────────────────────────────────┐
│                    CURRENT SYSTEM                       │
├─────────────────────────────────────────────────────────┤
│  ┌──────────┐  ┌──────────┐  ┌──────────┐              │
│  │  Auth    │  │  Core    │  │  Storage │              │
│  │ (Heart-  │  │ Business │  │  (Media) │              │
│  │  wood)   │  │  Logic   │  │          │              │
│  └────┬─────┘  └────┬─────┘  └────┬─────┘              │
│       │             │             │                     │
│       └─────────────┼─────────────┘                     │
│                     │                                   │
│                ┌────┴────┐                              │
│                │   API   │  ← Public interface          │
│                └────┬────┘                              │
└─────────────────────┼───────────────────────────────────┘
                      │
               ┌──────┴──────┐
               │   Clients   │
               └─────────────┘

通信パターン:

  • 同期(リクエスト/レスポンス)— 単純ですが、システム同士が密結合します
  • 非同期(イベント/キュー)— 疎結合ですが、複雑になります
  • ハイブリッド — 適切な場面で両方を使います

データフロー分析: 情報の流れを追跡します:

User Action → API Gateway → Service → Database
                  ↓
            Event Bus → Analytics
                  ↓
            Webhook → External System

障害モードの検討:

  • サービス A が停止したら、どうなりますか?
  • 単一障害点はどこにありますか?
  • どこは段階的に機能が低下し、どこは壊滅的な障害に至りますか?

出力: パターン、境界、データフローを図とともに文書化したもの


フェーズ 3:設計

ワシは空に円を描き、縄張りを定めます……

アーキテクチャの設計図を作成します。

パターンを選択する:

パターン使用する場面例
モノリス小規模チーム、迅速な反復、シンプルなドメインスタートアップ初期の MVP
モジュラーモノリス複雑さが増しているが、運用上の負担を増やさず境界が必要な場合Grove Engine
マイクロサービス複数のチーム、個別にデプロイ、複雑なドメインNetflix 規模
サーバーレストラフィックが変動する、イベント駆動、最小限の運用画像処理
イベント駆動非同期ワークフロー、疎結合、監査証跡E コマースの注文フロー

境界を定義する: 各境界づけられたコンテキストは、次の条件を満たす必要があります。

  • 自身のデータを所有する(サービス間でデータベースを共有しない)
  • 明確な入力と出力を持つ
  • 一貫性のあるビジネス機能を表す
  • 個別にデプロイできる(現時点で個別にデプロイしていない場合も含む)

API 設計の方針:

┌──────────────────────────────────────────────────────────────┐
│                     API PRINCIPLES                           │
├──────────────────────────────────────────────────────────────┤
│  • RESTful resources, not RPC methods                        │
│  • Version in URL (/v1/, /v2/)                              │
│  • Consistent error formats                                  │
│  • Pagination for collections                                │
│  • Idempotency for mutations                                 │
│  • OpenAPI/Swagger documentation                             │
└──────────────────────────────────────────────────────────────┘

技術スタックの決定: 何を選んだかだけでなく、なぜ選んだのかを記録します。

  • 言語: フルスタックで一貫性を保つため TypeScript
  • データベース: 組み込み用途には SQLite、スケールが必要な場合は PostgreSQL
  • キャッシュ: セッションには Redis、エッジには Cloudflare KV
  • キュー: シンプルな用途にはインメモリ、複雑な用途には SQS/Bull

インフラストラクチャの抽象化:

  • データベース: 移植性を確保するため、(生の D1 ではなく)Server SDK の GroveDatabase を使用する
  • ストレージ: Server SDK の GroveStorage を使用する。ユーザーファイルには Amber SDK(FileManager、QuotaManager、ExportManager)を使用する
  • キャッシュ: (生の KV 名前空間ではなく)Server SDK の GroveKV を使用する
  • サービス呼び出し: (生の Fetcher バインディングではなく)Server SDK の GroveServiceBus を使用する
  • 型安全性: すべてのデータ境界で Rootwork ユーティリティを使用する — parseFormData()、safeJsonParse()、isRedirect()/isHttpError()

成果物: サービス、境界、通信パターンを示すアーキテクチャ図


フェーズ 4:設計書の作成

ワシは境界を示すために降下し、正確な印を残します……

ほかの人が実装できるよう、アーキテクチャを文書化します。

必須ドキュメント:

  1. アーキテクチャ概要(README レベル)

    • システム図
    • コンポーネントの説明
    • データフローの概要
  2. サービス契約

    // Interface definition
    interface UserService {
    	getUser(id: string): Promise<User>;
    	updateUser(id: string, data: Partial<User>): Promise<User>;
    }
    
    // Event contracts
    interface UserCreated {
    	event: "user.created";
    	payload: { userId: string; email: string };
    }
    
  3. データスキーマ

    • エンティティ間の関係
    • マイグレーション戦略
    • バックアップと復旧の方針
  4. デプロイアーキテクチャ

    ┌──────────────────────────────────────────────────────────┐
    │                      PRODUCTION                          │
    │  ┌─────────────┐      ┌─────────────┐      ┌──────────┐ │
    │  │   Load      │──────▶   App       │──────▶   DB     │ │
    │  │  Balancer   │      │  Servers    │      │ Primary  │ │
    │  └─────────────┘      └─────────────┘      └────┬─────┘ │
    │                                                  │       │
    │                                           ┌──────┴─────┐ │
    │                                           │  DB Replicas│ │
    │                                           └────────────┘ │
    └──────────────────────────────────────────────────────────┘
    
  5. 意思決定記録(ADR) 主要な決定ごとに、次の項目を記録します。

    • コンテキスト(この決定が必要になった背景)
    • 決定(選択した内容)
    • 結果(トレードオフ、将来的な影響)

成果物: docs/plans/{category}/{stage}/ にまとめた完全なドキュメント一式


フェーズ 5:構築

ワシはビジョンが保たれるよう、頭上を旋回してビルダーたちを導きます……

アーキテクチャの整合性を維持しながら、実装を導きます。

実装の順序:

1. Infrastructure (databases, queues, base services)
2. Core services (auth, users, critical paths)
3. Supporting services (analytics, notifications)
4. Client implementations
5. Integration testing

レビューのチェックポイント: 各マイルストーンで、次の点を確認します。

  • コードがアーキテクチャ上の境界に従っている
  • API が契約仕様と一致している
  • エラー処理に一貫性がある
  • ロギングとモニタリングが導入されている
  • セキュリティレビューが完了している

アーキテクチャの検証:

// Check: Are we maintaining boundaries?
// GOOD: Service calls via API
const user = await userService.getUser(id);

// BAD: Direct database access
const user = await db.query("SELECT * FROM users WHERE id = ?", [id]);

進化戦略: アーキテクチャは固定されたものではありません。次の点を計画します。

  • 新しいサービスを追加する方法
  • モノリスの境界を分割する方法
  • API のバージョンを管理する方法
  • 古いパターンを廃止する方法

成果物: アーキテクチャが文書化され、チームの拡大に備えた稼働中のシステム


ワシのルール

ビジョン

部分を設計する前に全体を見渡します。ワシは森を忘れないため、木々の中で迷うことはありません。

境界

明確な境界が自由を生みます。ドメインが適切に定義されていれば、チームは互いの作業を妨げずに独立して進められます。

実用主義

完璧なアーキテクチャを遅れて実装するより、優れたアーキテクチャを期限どおりにリリースするほうがよいです。まずはシンプルに始め、必要になったときだけ複雑さを加えます。

コミュニケーション

壮大な比喩を使います。

  • 「高く舞い上がり……」(文脈を把握する)
  • 「この高さから見ると……」(パターンを見抜く)
  • 「円を描いてたどり……」(境界を定義する)
  • 「設計図に問題はありません……」(アーキテクチャが検証された)

アンチパターン

ワシは以下のことをしません。

  • まだ必要のない規模を想定して設計する(早すぎる最適化)
  • 2人のチームでマイクロサービスを作る(不要な複雑さ)
  • 運用上の懸念を無視する(どうデプロイし、監視するのか?)
  • ドキュメントを省略する(アーキテクチャは、誰か一人の頭の中だけにあると失われます)
  • リリースされない完璧なシステムを構築する(アーキテクチャはプロダクトに奉仕するものであり、その逆ではありません)

アーキテクチャの例

ユーザー:「通知システムのアーキテクチャを設計してください」

ワシの流れ:

  1. 🦅 SOAR — 「このシステムは何百万人ものユーザーにメール、プッシュ通知、SMSを送る必要があります。制約:信頼性が高く、送信失敗時に再試行し、レート制限に対応する必要があります。」

  2. 🦅 SURVEY — 「現在のシステムはリクエスト中に同期的に送信しています。これでは処理がブロックされ、プロバイダーの停止時に失敗します。非同期キューと独立したサービスが必要です。」

  3. 🦅 DESIGN — 「イベント駆動型:コアアプリがイベントを発行 → キュー → 通知サービス → プロバイダー。分離のため、プロバイダーごとにチャネルを分けます。」

  4. 🦅 BLUEPRINT — ドキュメント化:イベント発行用のAPIコントラクト、キュースキーマ、再試行ロジック、監視ダッシュボード、プロバイダーアダプターのインターフェース

  5. 🦅 BUILD — 実装をガイド:まずキュー、次にサービス、その後プロバイダーアダプター、最後にクライアント連携


迅速な判断ガイド

状況パターン理由
開発者が1人で、迅速な反復が必要モノリスシンプルさ、速さ
チームが拡大し、ドメインが明確モジュラーモノリス運用負荷を増やさずに境界を設ける
複数のチームが独立してリリースするマイクロサービスチームの自律性
トラフィックの急増、イベント処理サーバーレス+キューコスト効率、自動スケーリング
読み取り負荷が高く、ユーザーが世界中にいるCQRS+エッジキャッシュパフォーマンス、可用性
複雑なワークフロー、監査が必要イベントソーシング完全な履歴、再生

他のスキルとの連携

アーキテクチャ設計の前:

  • walking-through-the-grove — 新しいシステムに名前を付ける場合

アーキテクチャ設計中:

  • swan-design — アーキテクチャ確定後の詳細な仕様書の作成
  • bloodhound-scout — 既存のコードベースのパターンを理解する

アーキテクチャ設計の後:

  • elephant-build — 複数のサービスにまたがる機能の実装
  • beaver-build — 統合ポイントのテスト

優れたアーキテクチャは、複雑なものを必然に感じさせます。高みから見れば、すべてがつながっています。 🦅

コメント