--- title: "ガイド:単一スキル実行" description: oh-my-agentの単一ドメインタスク詳細ガイド — 使用条件、プリフライトチェックリスト、プロンプトテンプレート、フロントエンド・バックエンド・モバイル・データベースの実例、実行フロー、品質ゲートチェックリスト、エスカレーションシグナル。 --- # ガイド:単一スキル実行 単一スキル実行は最短経路です。1つのエージェント、1つのドメイン、1つの集中したタスク。オーケストレーションのオーバーヘッドもマルチエージェント協調もありません。自然言語プロンプトからスキルが自動アクティベートされます。 --- ## 使うべきタイミング タスクが以下のすべての基準を満たす場合に使用します: - **1つのドメインが所有** — タスク全体がフロントエンド、バックエンド、モバイル、データベースなど単一ドメインに属する - **自己完結** — クロスドメインのAPIコントラクト変更なし - **スコープが明確** — 出力が明確(コンポーネント、エンドポイント、スキーマ、修正) - **協調不要** — 他のエージェントの事前/事後実行が不要 **マルチエージェント**(`/work`または`/orchestrate`)に切り替えるべき場合: - UI作業に新しいAPIコントラクトが必要(フロントエンド + バックエンド) - 1つの修正がレイヤーをまたいで波及(デバッグ + 実装エージェント) - 機能がフロントエンド、バックエンド、データベースにまたがる - 最初のイテレーション後にスコープが1つのドメインを超えて拡大 --- ## プリフライトチェックリスト プロンプト前に以下の4要素を確認します([プロンプト構造](/docs/core-concepts/skills)の4要素に対応): | 要素 | 質問 | 重要な理由 | |---------|----------|----------------| | **Goal** | 何を作成または変更するか? | 曖昧さを排除 | | **Context** | どのスタック、フレームワーク、規約が適用されるか? | エージェントはプロジェクトファイルから検出するが、明示する方が確実 | | **Constraints** | どのルールに従うべきか?(スタイル、セキュリティ、パフォーマンス) | 制約なしではプロジェクトに合わないデフォルトが使用される | | **Done When** | どの受入基準で確認するか? | エージェントに目標を、あなたに検証チェックリストを提供 | ## プロンプトテンプレート ```text <スタック>を使って<具体的な成果物>を構築してください。 制約: <スタイル/パフォーマンス/セキュリティの制約>。 受入基準: 1) ... 2) ... 以下のテストを追加: <重要なケース>。 ``` ## 実例 ```text React + TypeScript + Tailwind CSSでログインフォームコンポーネントを作成してください。 制約: アクセシブルなラベル、クライアントサイドバリデーション、外部フォームライブラリ不使用。 受入基準: 1) メールとパスワードのバリデーションメッセージ 2) 無効な間はサブミットボタンを無効化 3) キーボードとスクリーンリーダーに対応 有効/無効なサブミットパスのユニットテストを追加。 ``` ## 何が起こるか 1. プロンプトに基づいて適切なスキルが自動的にアクティベート 2. エージェントが前提を宣言(チャータープリフライト) 3. 確認または調整 4. エージェントがコードとテストを記述 5. ローカルで検証を実行 --- ## 品質ゲートチェックリスト ### 全エージェント共通 - [ ] **動作が受入基準に合致** — プロンプトのすべての基準を満たしている - [ ] **テストがハッピーパスと主要なエッジケースをカバー** - [ ] **無関係なファイル変更なし** — タスクに関連するファイルのみ変更 - [ ] **共有モジュールが壊れていない** — インポート、型、インターフェースが正常 - [ ] **チャーターが遵守された** — 「Must NOT do」の制約が守られている - [ ] **lint、typecheck、ビルドがパス** ### フロントエンド固有 - [ ] アクセシビリティ:`aria-label`、セマンティック見出し、キーボードナビゲーション - [ ] モバイル:320px、768px、1024px、1440pxで正しくレンダリング - [ ] パフォーマンス:CLSなし、FCPターゲット達成 - [ ] Error BoundariesとLoading Skeletons実装 - [ ] shadcn/uiコンポーネントを直接変更していない(ラッパーを使用) ### バックエンド固有 - [ ] クリーンアーキテクチャ維持:ルートハンドラにビジネスロジックなし - [ ] すべての入力がバリデーション済み - [ ] パラメータ化クエリのみ(SQLでの文字列補間なし) - [ ] 認証エンドポイントにレート制限 ### モバイル固有 - [ ] すべてのコントローラーが`dispose()`で破棄 - [ ] オフラインが適切に処理 - [ ] 60fpsターゲット維持 ### データベース固有 - [ ] 3NF以上(非正規化の場合は根拠を文書化) - [ ] 3つのスキーマ層すべてを文書化(外部、概念、内部) - [ ] アンチパターンレビュー完了 --- ## エスカレーションシグナル | シグナル | 意味 | 対応 | |--------|--------------|--------| | エージェントが「バックエンドの変更が必要」と言う | クロスドメイン依存関係 | `/work`に切り替え | | CHARTER_CHECKの「Must NOT do」に実際に必要な項目がある | スコープが1ドメインを超過 | `/plan`で機能全体を計画 | | 修正が3つ以上の異なるレイヤーのファイルに波及 | 複数ドメインに影響 | `/debug`でスコープ拡大、または`/work` | | APIコントラクトの不一致を発見 | フロントエンド/バックエンドの不整合 | `/plan`でコントラクト定義後、両エージェントを再スポーン | | 品質ゲートが統合ポイントで失敗 | コンポーネントが正しく接続されない | QAレビュー追加:`oma agent:spawn qa "Review integration"` | | タスクが「1コンポーネント」から「3コンポーネント + 新ルート + API」に膨張 | 実行中のスコープクリープ | 停止、`/plan`で分解、`/orchestrate`で実行 | | エージェントがHIGH明確化でブロック | 要件が根本的に曖昧 | エージェントの質問に回答、または`/brainstorm`で方針を明確化 | 同じエージェントを修正付きで2回以上再スポーンしている場合、タスクはおそらくマルチドメインであり、`/work`または少なくとも`/plan`での分解が必要です。