oma-backend について
oma-backendは、APIやサーバーサイド開発向けのスキルで、エンドポイント、認証、データベース、業務ロジックを扱います。プロジェクト既存の技術スタックと構成に沿って実装し、入力検証、テスト、マイグレーション確認まで行います。
主な機能
- 01REST・GraphQL APIの実装
- 02認証と認可の処理
- 03サーバーサイド業務ロジックの構築
- 04データベース変更とマイグレーション設計
- 05テスト、型、マイグレーションの確認
活用シーン
- 01APIエンドポイントやバックグラウンドジョブの追加
- 02認証フローやデータベース連携の実装
- 03データモデル変更とマイグレーション検証
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ gracefullight/ stock-checker --skill oma-backendインストール後、Claude Code で/oma-backendを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
resources/checklist.mderror-playbook.mdexamples.mdexecution-protocol.mdorm-reference.mdstack/api-template.pyapi-template.tssnippets.mdstack.yamltech-stack.md詳細
バックエンドエージェント - API・サーバーのスペシャリスト
スケジューリング
目標
プロジェクトで既に採用されているバックエンドスタックとクリーンアーキテクチャの境界に沿って、バックエンド API、認証、データベース連携、サーバー側のビジネスロジック、マイグレーションを実装またはレビューします。
意図のシグネチャ
- API、エンドポイント、REST、GraphQL、認証、サーバー、マイグレーション、リポジトリ、サービス、ルーター、バックグラウンドジョブに関する作業をユーザーが依頼している。
- 検証、ビジネスロジック、永続化、トランザクション、バックエンドサービスを連携させるバックエンドコードが必要である。
使用する場合
- REST API または GraphQL エンドポイントの構築
- データベースの設計とマイグレーション
- 認証と認可
- サーバー側のビジネスロジック
- バックグラウンドジョブとキュー
使用しない場合
- フロントエンド UI → Frontend Agent を使用
- モバイル固有のコード → Mobile Agent を使用
想定される入力
- 対象となる機能、エンドポイント、マイグレーション、認証フロー、またはサーバーの動作
- マニフェスト、ルート、サービス、モデル、データベース設定など、既存のバックエンドスタックのファイル
- API コントラクト、スキーマ、検証ルール、永続化要件
- 必要な検証コマンドまたはプロジェクトの規約
想定される出力
- ルーター、サービス、リポジトリ、モデル、マイグレーション、テストファイルへのバックエンドコードの変更
- 検証済みの入力、安全なクエリ、トランザクション境界、エラー処理
- 実行チェックリストに基づく検証結果
依存関係
-
プロジェクトのスタックマニフェストと既存のバックエンド規約
-
resources/execution-protocol.md、resources/checklist.md、resources/orm-reference.md -
任意の
stack/stack.yaml、stack/tech-stack.md、スニペット、API テンプレート -
環境変数またはシークレットマネージャーを通じて設定されたデータベース、キュー、キャッシュ、メール、認証、外部 API のリソース
制御フローの特徴
- 検出されたスタック、ORM/クエリのパターン、認証要件、マイグレーションの影響、トランザクションのスコープに応じて分岐します
- コードベースのファイルを読み書きします
- ローカルのデータベースマイグレーションまたは生成コードを変更する場合があります
- シークレットをハードコードしたり、安全でない ORM のライフサイクルオブジェクトを並行作業間で共有したりしてはいけません
構造的なフロー
エントリー
- まずプロジェクトファイルからバックエンドスタックを検出します。
- 影響を受けるルーター、サービス、リポジトリ、モデル、マイグレーション、テストの境界を特定します。
- 必要な場合にのみ、スタック固有のリファレンスを読み込みます。
シーン
- 準備:スタック、アーキテクチャの境界、受け入れ基準を特定します。
- 取得:既存のルート、サービス、リポジトリ、モデル、スキーマ、設定を読み取ります。
- 実行:検証、ビジネスロジック、永続化、テストを含むバックエンドの変更を実装します。
- 検証:関連する lint、型、テスト、マイグレーション、チェックリストのコマンドを実行します。
- 最終化:変更した動作、検証結果、未解決のリスクを報告します。
遷移
- スタックファイルがある場合は、一般的なガイダンスよりも優先して従います。
- ORM のパフォーマンス、リレーションシップの読み込み、トランザクション、または N+1 のリスクがある場合は、
resources/orm-reference.mdを使用します。 - データベーススキーマへの影響が主で、API 作業が副次的な場合は、
oma-dbと連携します。 - 認証サーバーの設定が DB アダプターやサーバーライブラリに関係する場合は、バックエンドの範囲内で対応します。
失敗と復旧
- スタックを特定できない場合は、ユーザーに確認するか、
/stack-setの実行を提案します。 - 検証に失敗した場合は、引き継ぐ前に根本原因を修正します。
- 必要なシークレットまたはサービスを利用できない場合は、妨げとなる要因を記録し、コードを設定可能な状態に保ちます。
終了
- 成功:バックエンドの変更が実装・テストされ、ローカルのアーキテクチャに沿っています。
- 部分的な成功:妨げとなる要因、不足している依存関係、または検証の不足が明示されています。
論理オペレーション
アクション
| アクション | SSL プリミティブ | 根拠 |
|---|---|---|
| スタックと規約を検出する | READ | マニフェスト、スタックファイル、既存コード |
| 実装の境界を選択する | SELECT | ルーター/サービス/リポジトリーのパターン |
| 入力とスキーマを検証する | VALIDATE | スタックの検証ライブラリー |
| ビジネスロジックを実装する | WRITE | サービスレイヤーのコード |
| 永続化を実装する | WRITE | リポジトリー/モデル/マイグレーションのコード |
| 外部サービスまたはバックエンドサービスを呼び出す | CALL_TOOL | DB、キュー、キャッシュ、認証、または API クライアント |
| 検証を実行する | CALL_TOOL | テスト、型チェック、リント、マイグレーション |
| 結果を報告する | NOTIFY | 最終的な概要 |
ツールと実行環境
- プロジェクトの言語/フレームワークのツールチェーン
- ORM またはデータベースクライアント
- テスト、リント、型チェック、マイグレーションのコマンド
- 存在する場合は、スタック固有のテンプレートとスニペット
標準的なワークフロー
設定済みのコードインテリジェンスプロバイダーを使用してファイルを特定し、シンボルまたはコンテンツを調べます。Serena の場合は、find_file、search_for_pattern、get_symbols_overview、find_symbol を使用します。ネイティブ検索は、プロバイダーの除外設定と、プロジェクトの検索ポリシーで許可された非コードパスに制限されます。
次に、プロジェクトで検出された検証コマンドを実行します。通常は、リント/型チェック/テストと、スキーマ変更が関わる場合はマイグレーションを実行します。stack/stack.yaml に verify: コマンドがある場合は、そちらを優先してください。
リソースの範囲
| 範囲 | リソースの対象 |
|---|---|
CODEBASE | バックエンドのソース、テスト、スキーマ、マイグレーション |
LOCAL_FS | スタックの参照資料と生成された成果物 |
PROCESS | テスト、リント、型チェック、マイグレーションのコマンド |
CREDENTIALS | 環境変数で管理される DB URL、API キー、シークレット |
NETWORK | 必要に応じた外部 API またはバックエンドサービス |
前提条件
- 対象の動作と影響を受けるバックエンドの境界を特定できること。
- プロジェクトのスタックと検証コマンドを推測できるか、提示されていること。
- 必要な認証情報がソースコードの外部に保持されていること。
影響と副作用
- バックエンドのソースファイル、テストファイル、および場合によってはマイグレーションを変更します。
- データベーススキーマ、API の動作、認証の動作、またはサービスコントラクトが変わる可能性があります。
- 生成されたクライアントやマイグレーション成果物が必要になる場合があります。
ガードレール
フレームワーク、ライブラリー、アーキテクチャ、データモデルのデフォルトは、対象プロジェクトで確立された選択がない場合にのみ適用してください。対象を限定した編集は、スタックの移行や無関係なインフラストラクチャの変更を許可するものではありません。
- DRY(Don't Repeat Yourself):ビジネスロジックは
Serviceに、データアクセスロジックはRepositoryに配置します - SOLID:
- 単一責任:クラスと関数は、それぞれ1つの責務を持つようにします
- 依存性逆転:フレームワークの DI メカニズムを使用します
- KISS:シンプルで明確に保ちます
アーキテクチャパターン
Router (HTTP) → Service (Business Logic) → Repository (Data Access) → Models
リポジトリーレイヤー
- DB の CRUD とクエリーロジックをカプセル化します
- ビジネスロジックは含めず、ORM エンティティを返します
サービスレイヤー
- ビジネスロジック、リポジトリーの組み合わせ、外部 API の呼び出しを担います
- ビジネス上の判断はここでのみ行います
ルーターレイヤー
- HTTP リクエストを受け取り、入力を検証し、サービスを呼び出して、レスポンスを返します
- ビジネスロジックは含めず、DI を通じてサービスを注入します
コアルール
- クリーンアーキテクチャ:router → service → repository → models
- ルートハンドラーにビジネスロジックを記述しない
- すべての入力を検証する:使用するスタックのバリデーションライブラリを使います
- パラメーター化クエリのみを使用する(文字列補間は使用しません)
- 認証には JWT + Argon2id を使用する(レガシー互換性のため bcrypt も使用できます)。認証エンドポイントにはレート制限を適用します
- 対応している場合は非同期処理を使用する。すべてのシグネチャに型注釈を付けます
- 一元化されたエラーモジュールを通じてカスタム例外を使用する(HTTP 例外を直接使用しません)
- ORM の読み込み戦略を明示する:クエリの形状が重要な場合、デフォルトのリレーション読み込みに依存しないでください
- トランザクション境界を明示する:1 つのビジネス操作を、1 つのリクエスト/サービススコープの作業単位にまとめます
- ORM のライフサイクルを安全に管理する:ORM が明示的にサポートしていない限り、変更可能な ORM セッション/エンティティマネージャー/クライアントオブジェクトを、並行して実行される処理間で共有しないでください
- 必須の設定を検証する:DB URL、API キー、シークレット、機能フラグは、環境変数またはシークレットマネージャーから取得します。デフォルトモードおよび本番モードで認証情報が不足している場合は、明確なエラーを発生させます。決定論的なフィクスチャを使うには、テスト/デモモードを明示的に選択する必要があります。シミュレートされた結果にはその旨を表示し、シミュレートされた決済、認証、メールなどの処理を、実際に完了した操作として扱わないでください
- ステートレスなサービス:リクエスト間でインメモリのセッションやユーザー状態を保持しません。共有状態には外部ストア(DB、Redis、キャッシュ)を使用します
- バックエンドサービスをリソースとして扱う:DB、キュー、キャッシュ、メールは、設定を通じて接続される交換可能なアタッチ済みリソースです。Repository 層は特定のインスタンスを前提としてはなりません
スタックの検出
- まずプロジェクトファイルを確認する:既存のコードやパッケージマニフェスト(pyproject.toml、package.json、Cargo.toml、go.mod、pom.xml など)を読み、技術スタックを特定します
- 次に stack/ を確認する:
stack/が存在する場合は、コーディング規約やスニペットのテンプレートを確認するための補足資料として使用します - どちらも存在しない場合:ユーザーに尋ねるか、
/stack-setの実行を提案します
スタック固有のリファレンス
- スタックマニフェスト(SSOT):
stack/stack.yaml:構造化された宣言(language、framework、orm)と、oma verify agent backendが使用するverify:契約です。スキーマ:variants/stack.schema.json。 - 技術スタックの説明:
stack/tech-stack.md:人が読むための参考資料です。競合する場合はstack.yamlを優先します。 - コードスニペット(コピーしてすぐに使用可能):
stack/snippets.md - API テンプレート:
stack/api-template.*
リファレンス
-
ローカルコードツール:
../_shared/core/code-intelligence.md(コードの検索/ナビゲーション) -
実行手順(選択したタスクに従って実行):
resources/execution-protocol.md -
チェックリスト(引き継ぎ前に実行):
resources/checklist.md -
ORM リファレンス:
resources/orm-reference.md -
エラー復旧:
resources/error-playbook.md -
コンテキストの読み込み:
../_shared/core/context-loading.md -
確認事項:
../_shared/core/clarification-protocol.md -
コンテキストの予算:
../_shared/core/context-budget.md -
学びの記録:
../_shared/core/lessons-learned.md(過去の失敗に該当する場合、または振り返りを求められた場合) -
可観測性の引き継ぎ:
../oma-observability/SKILL.md§Integrations — propagator/baggage、スパン規約、ログ相関、PII のマスキング