adr-scaffold について
Action-Domain-Responder パターンに沿って Gravito アプリケーションを構成するコーディングスキルです。業務処理を Action に置き、HTTP コントローラーをリクエストとレスポンスの処理に専念させる構成を示します。
主な機能
- 01Action-Domain-Responder 構成
- 02業務処理ごとの Action
- 03薄い HTTP コントローラー
- 04Repository と Model の構成
- 05段階的な実装ワークフロー
活用シーン
- 01Gravito アプリケーションの構成設計
- 02業務ロジックと HTTP 処理の分離
- 03複数行のトランザクション処理の実装
- 04API ルートとコントローラーの作成
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ gravito-framework/ gravito --skill adr-scaffoldインストール後、Claude Code で/adr-scaffoldを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/.keepreferences/.keepadr-rules.mdscripts/.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...
})
}
}
🚀 ワークフロー(標準手順)
- エンティティ:
src/models/に Atlas モデルを定義します。 - 永続化:
src/repositories/にリポジトリを作成します。 - コントラクト:
src/types/にリクエスト/レスポンスの型を定義します。 - ロジック:
src/actions/[Domain]/に単一のアクションを実装します。 - レスポンダー:
src/controllers/にコントローラーを作成し、各要素を連携させます。 - ルーティング:
src/routes/api.tsにルートをマッピングします。
コメント
Markdown 対応