Skill
Community

architecture-reviewer

Install
1
Install the plugin
$
npx claudepluginhub caphtech/claude-marketplace --plugin knowledge-plugin

Want just this skill?

Then install: npx claudepluginhub u/[userId]/[slug]

Description

3種類のアーキテクチャ分析(ノード/エッジ/縦串)を並行実行し、矛盾検出・優先順位付けまで一貫して行う。「アーキテクチャレビューして」「設計をチェックして」「矛盾を検出して」「優先順位を付けて」「トレードオフを分析して」と言われた時、またはcomponent-dossiers/*.yamlが存在する時に使用。

Tool Access

This skill uses the workspace's default tool permissions.

Supporting Assets
View in Repository
references/conflict-types.md
references/crosscutting-checklist.md
references/finding-examples.yaml
references/priority-scoring.md
references/report-verdicts.md
references/verification-dimensions.md
scripts/collect_artifacts.py
Skill Content

Architecture Reviewer

3種類の分析を並行実行し、矛盾検出と優先順位付けまで一貫して行う。

核心: 単体分析で終わらせない。3視点の分析 → 矛盾検出 → 優先順位付けを必ず通す。

ワークフロー

1. 3種類の分析(並行)→ 2. 矛盾検出(4類型)→ 3. 優先順位付け → 4. 出力

前提条件

Full Mode(デフォルト)

必須:

  • system-map/invariants.yaml - 不変条件
  • component-dossiers/*.yaml - コンポーネントカード

推奨:

  • system-map/dependencies.yaml - 依存グラフ
  • system-map/boundaries.yaml - 境界定義
  • 既存ADR(アーキテクチャ決定記録)
  • プロジェクト特性の定義(品質優先順位)

Lightweight Mode

system-map が存在しない場合、scripts/collect_artifacts.py でプロジェクトをスキャンし、D2/D3/D5 の検証のみを実行する。

python3 scripts/collect_artifacts.py <project_root> -o /tmp/dcc-manifest.json

Phase 1: 3種類の分析

┌─────────────────────────────────────────────────────────┐
│  必ず3つとも実行する(単体だけで終わらせない)           │
├─────────────────────────────────────────────────────────┤
│  (1) コンポーネント内レビュー ─ ノード(局所の健全性)   │
│  (2) インタラクションレビュー ─ エッジ(依存の整合性)   │
│  (3) クロスカッティングレビュー ─ 縦串(横断的品質)     │
└─────────────────────────────────────────────────────────┘

分析1: コンポーネント内レビュー(ノード)

各コンポーネントの局所的な健全性を検証する。不変条件(invariants.yaml)に照らして評価すること。

観点チェック内容
責務過多(God Object)/ 不足(Anemic)はないか
境界境界を逸脱した処理をしていないか
データ所有owned_data以外を直接書き込んでいないか
例外設計例外の握りつぶし、過剰なcatch-allはないか
テスト可能性依存注入、モック可能性は確保されているか
テスト網羅性(D2)各不変条件・状態遷移・境界条件にテストがあるか
障害モード網羅性(D5)各障害モードに処理コードとリカバリ戦略があるか

指摘は component_findings として出力する。category は responsibility/boundary/data_ownership/exception/testability のいずれか。

分析2: インタラクションレビュー(エッジ)

依存グラフの「辺」ごとに検証する。全体性の本丸。

観点チェック内容
契約整合スキーマ、バージョン、後方互換性
エラー伝播リトライ連鎖、サーキットブレーカ、タイムアウト整合
冪等性リトライ時の副作用、重複処理
順序性イベント順序の前提、順序逆転時の挙動
整合モデル結果整合/強整合の前提が一致しているか
セキュリティ認証・認可・秘密情報の境界超え
スキーマ実装一致(D3)データスキーマとコードの型・フィールド・制約が一致しているか

エラー伝播の連鎖分析: A -> B -> C の場合、タイムアウトの大小関係、リトライ連鎖の指数的爆発を確認する。

指摘は interaction_findings として出力する。category は contract/error_propagation/idempotency/ordering/consistency/security のいずれか。

分析3: クロスカッティングレビュー(縦串)

システム横断的な品質を検証する。

縦串チェック内容
セキュリティ脅威モデルとの整合、境界の一貫性
信頼性SLO/SLI定義、障害分離、リカバリ戦略
観測性ログ・メトリクス・トレースが責務境界と一致
変更容易性モジュール結合度、影響範囲、ADR整合

指摘は crosscutting_findings として出力する。aspect は security/reliability/observability/changeability のいずれか。

各指摘のYAML例は references/finding-examples.yaml を参照。指摘を書くときのテンプレートとして使用する。

Phase 2: 矛盾検出(4類型)

分析結果の指摘間、および指摘と不変条件/ADR間の矛盾を検出する。改善案の列挙より矛盾の発見に注力する。

4類型の概要

類型conflict_type内容
改善案間の矛盾improvement_tradeoff改善案Aは品質Xを改善するが品質Yを損なう
前提破壊assumption_violationコンポーネントiの改善が依存先jの前提を破壊
不変条件違反invariant_violation推奨アクションが不変条件と食い違う
ADR矛盾adr_inconsistency推奨がADRと矛盾、またはADRが欠落

検出手順

  1. 全 findings の recommendation を品質属性でタグ付け
  2. 同じ品質属性に対して逆方向の recommendation がないか走査
  3. 各 recommendation が invariants.yaml の条件に違反しないか確認
  4. 各 recommendation が既存ADRと矛盾しないか確認
  5. 重要な決定にADRがなければ missing_adrs として記録

各類型の詳細説明とYAML例は references/conflict-types.md を参照。矛盾を特定する際のパターンマッチに使用する。

Phase 3: 優先順位付け

スコアリング

Priority = Severity x Likelihood x Detectability_inv x Quality_Weight
要素説明スケール
Severity発生時の影響度critical=4, high=3, medium=2, low=1
Likelihood発生確率high=3, medium=2, low=1
Detectability_inv検出困難なほど高いeasy=1, medium=2, hard=3
Quality_Weightプロジェクト品質優先順位1位=5, 2位=4, 3位=3, 4位=2, 5位=1

優先順位カテゴリ

カテゴリスコア対応
P0 - Blocker36+即時対応(リリース不可)
P1 - Critical24-35今スプリント内
P2 - High12-23次スプリント
P3 - Medium6-11バックログ
P4 - Low1-5技術的負債

プロジェクト特性が未定義の場合、Quality_Weight は全て 3(中央値)として計算する。

スコアリングの詳細計算例とプロジェクト特性の定義例は references/priority-scoring.md を参照。スコア算出に迷った時に使用する。

出力形式

architecture-review/{timestamp}/review.yaml に統合出力する。

id: architecture-review
reviewed_at: "2024-01-21T10:00:00+09:00"
mode: full  # full | lightweight

reviewed_scope:
  components: 15
  interactions: 23
  invariants_checked: 24

summary:
  total_findings: 12
  by_category:
    component: 4
    interaction: 5
    crosscutting: 3
  by_severity:
    critical: 2
    high: 4
    medium: 5
    low: 1

verification_summary:
  verdict: NEEDS_ATTENTION  # PASS | PASS_WITH_WARNINGS | NEEDS_ATTENTION | FAIL
  by_verdict: { pass: 18, warn: 4, fail: 2 }
  dimensions_checked: [D2_test_coverage, D3_schema_match, D5_failure_modes]

# Phase 1 の結果
component_findings: [...]     # finding-examples.yaml 参照
interaction_findings: [...]   # finding-examples.yaml 参照
crosscutting_findings: [...]  # finding-examples.yaml 参照

# Phase 2 の結果
conflicts:
  total: 8
  by_type:
    improvement_tradeoff: 3
    assumption_violation: 2
    invariant_violation: 2
    adr_inconsistency: 1
  items:
    - id: CONF-001
      type: improvement_tradeoff
      findings: [COMP-001, EDGE-003]
      description: 抽象化 vs 直接通信のトレードオフ
      resolution:
        decision: performance優先(EDGE-003採用)
        rationale: プロジェクト特性でperformance > changeability
        deferred_action: COMP-001は技術的負債として記録

# Phase 3 の結果
prioritized_actions:
  - priority: P0
    items:
      - finding_id: EDGE-001
        score: 180
        action: payment-serviceタイムアウト整合

deferred_items:
  - finding_id: COMP-001
    reason: 優先度が低い(changeability)
    revisit: リリース後のスプリント1

missing_adrs:
  - topic: サービス間タイムアウト戦略
    related_findings: [EDGE-001, EDGE-003]
    recommendation: ADR作成を推奨

注意事項

  • 3種類すべてを実行: 単体分析だけで終わらせると全体性を見落とす
  • 矛盾検出が本丸: 改善案の列挙より、矛盾の発見と解決に注力
  • 不変条件に拘束: 評価基準は invariants.yaml から導出
  • プロジェクト特性を必ず適用: 同じ問題でも優先順位が変わる
  • 推測禁止: 根拠がない指摘はしない。evidence を必ず記載
  • severity は客観的に: 影響範囲と発生確率で判定
  • ADR欠落の検出: 重要な決定にADRがなければ指摘

参照

Stats
Stars0
Forks0
Last CommitFeb 27, 2026

Similar Skills