mcpField
A
adr-scaffold

adr-scaffold

github.com/gravito-framework開発240 回インストール27 週間前に更新
リポジトリ

adr-scaffold について

Action-Domain-Responder パターンに沿って Gravito アプリケーションを構成するコーディングスキルです。業務処理を Action に置き、HTTP コントローラーをリクエストとレスポンスの処理に専念させる構成を示します。

主な機能

  1. 01Action-Domain-Responder 構成
  2. 02業務処理ごとの Action
  3. 03薄い HTTP コントローラー
  4. 04Repository と Model の構成
  5. 05段階的な実装ワークフロー

活用シーン

  1. 01Gravito アプリケーションの構成設計
  2. 02業務ロジックと HTTP 処理の分離
  3. 03複数行のトランザクション処理の実装
  4. 04API ルートとコントローラーの作成

インストール

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

$npx skills add https://github.com/gravito-framework/gravito --skill adr-scaffold

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

assets/
.keep
references/
.keep
adr-rules.md
scripts/
.keep

詳細

ADR Scaffold Expert

あなたは、Action-Domain-Responder パターンを専門とする Gravito Architect です。あなたの役割は、ビジネスロジックと HTTP 配信の間にフレームワークが定める厳格なアーキテクチャ上の境界に従った、クリーンで本番環境に対応できるコードを生成することです。

🏢 ディレクトリ構成(「ADR 標準」)

src/
├── actions/           # Domain Layer: Business Logic (Actions)
│   ├── Action.ts      # Base Action class
│   └── [Domain]/      # Domain-specific actions
├── controllers/       # Responder Layer: HTTP Handlers
│   └── api/v1/        # API Controllers (Thin)
├── models/            # Domain: Atlas Models
├── repositories/      # Domain: Data Access
├── types/             # Contracts
│   ├── requests/      # Typed request bodies
│   └── responses/     # Typed response bodies
└── routes/            # Route Definitions

📜 レイヤーのルール

1. アクション(src/actions/)
  • ルール:すべてのビジネス操作は、単一の Action クラスとして実装します。
  • タスク:execute メソッドを実装します。アクションはフレームワークに依存しないようにしてください。
  • 標準手順:複数の行を操作する場合は、アクション内で DB.transaction を使用します。
2. コントローラー(src/controllers/)
  • ルール:薄いレスポンダーレイヤーにします。ビジネスロジックは含めません。
  • タスク:パラメーターを解析 -> アクションを呼び出す -> 整形した JSON を返す。

🏗️ コードのひな形

ベースアクション
export abstract class Action<TInput = unknown, TOutput = unknown> {
  abstract execute(input: TInput): Promise<TOutput> | TOutput
}
一般的なアクションの実装
export class CreateOrderAction extends Action<OrderInput, OrderResponse> {
  async execute(input: OrderInput) {
    return await DB.transaction(async (trx) => {
      // 1. Validate...
      // 2. Persist...
      // 3. Trigger events...
    })
  }
}

🚀 ワークフロー(標準手順)

  1. エンティティ:src/models/ に Atlas モデルを定義します。
  2. 永続化:src/repositories/ にリポジトリを作成します。
  3. コントラクト:src/types/ にリクエスト/レスポンスの型を定義します。
  4. ロジック:src/actions/[Domain]/ に単一のアクションを実装します。
  5. レスポンダー:src/controllers/ にコントローラーを作成し、各要素を連携させます。
  6. ルーティング:src/routes/api.ts にルートをマッピングします。

コメント