mcpField
A
app-platform-router

app-platform-router

github.com/digitalocean-labsクラウド・DevOps38168 回インストール3 日前に更新
リポジトリ

app-platform-router について

App Platform Skills — Routerは、DigitalOcean App Platformの開発、移行、デプロイ、データサービス、トラブルシューティング向けの専門スキルへAIアシスタントの依頼を振り分けます。複数段階のワークフローでスキルを連携し、成果物を引き継ぐ方法も示します。

主な機能

  1. 01依頼を専門スキルに振り分け
  2. 02プロジェクト段階をまたぐスキル連携
  3. 03アプリ設計と移行に対応
  4. 04デプロイとトラブルシューティングを網羅
  5. 05データ・AIサービスのガイダンス
  6. 06成果物の引き継ぎを定義

活用シーン

  1. 01新しいApp Platformアプリの設計とデプロイ
  2. 02既存Herokuアプリの移行
  3. 03アプリへのマネージドデータベース追加
  4. 04デプロイ済みサービスの障害診断

インストール

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

$npx skills add https://github.com/digitalocean-labs/do-app-platform-skills --skill app-platform-router

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

詳細

App Platform スキル — ルーター

概要

このスキルは、DigitalOcean App Platform のタスクを専門のサブスキルに振り分けます。各サブスキルは特定のワークフロー向けに最適化されているため、コンテキストが絞られ、回答が的確になります。

理念:これらのスキルは、ドキュメントを複製するのではなく、特定の方針に基づいたプレイブックです。VPC をデフォルトにする、CI/CD に GitHub Actions を使うなどの判断を代わりに行い、特殊なケースに限ってドキュメントを参照します。

重要な原則:スキルに含まれるのは、LLM が学習データから得ていない DO 固有の知識だけです。一般的な SQL、SDK のパターン、プログラミングの概念は重複して記載しません。

AI を信頼してください:AI アシスタントはワークフロー全体を推論し、必要に応じてスキルを連携させ、状況(新規構築、既存環境、トラブルシューティング)に応じて適応する必要があります。スキルが提供するのはドメイン知識であり、盲目的に従う固定スクリプトではありません。

利用可能なスキル

開発フェーズ
スキル目的主な成果物
devcontainers本番環境との同等性を確保したローカル開発環境.devcontainer/、docker-compose.dev.yml
アーキテクチャフェーズ
スキル目的主な成果物
designer自然言語から本番環境対応の App Spec を作成.do/app.yaml
migration既存のアプリ(Heroku、AWS など)を App Platform に変換。Procfile/app.json/heroku.yml の解析、アドオンのマッピング、パイプラインの移行を扱う、Heroku に関する詳細な章を含む.do/app.yaml、移行チェックリスト
planner設計からデプロイまでの段階的なプロジェクト計画を作成Plan/*.md のステージファイル
運用フェーズ
スキル目的主な成果物
deploymentGitHub Actions を使ってコードを本番環境にリリース.github/workflows/deploy.yml
troubleshooting事前構築済みデバッグコンテナで稼働中のアプリをデバッグし、ログを分析修正内容、診断レポート
sandboxAI エージェントによるコード実行とテスト向けの分離されたコンテナ一時的なサンドボックス
データサービス
スキル目的主な成果物
postgresPostgreSQL の包括的なセットアップ:スキーマ、ユーザー、権限、マルチテナントSQL スクリプト(ユーザーが実行)
managed-db-servicesMySQL、MongoDB、Valkey、Kafka、OpenSearch(バインド可能な変数)App Spec のスニペット
spacesS3 互換オブジェクトストレージの設定CORS 設定、App Spec のスニペット
AI サービス
スキル目的主な成果物
ai-servicesGradient AI 推論エンドポイントApp Spec のスニペット

AI アシスタント向け Console SDK

重要:AI アシスタントは doctl apps console を使用できません。人間の入力が必要なインタラクティブな WebSocket セッションが開くためです。代わりに do-app-sandbox Python パッケージを使用してください。

# Install
uv pip install do-app-sandbox  # or: pip install do-app-sandbox
2 つのユースケース(同じパッケージ、異なるスキル)
ユースケースSDK メソッドスキル
既存のアプリをデバッグSandbox.get_from_id(app_id, component)troubleshooting
新しいサンドボックスを作成Sandbox.create()、SandboxManagersandbox
# Debug existing app (troubleshooting skill)
app = Sandbox.get_from_id(app_id="your-app-id", component="web")

# Create new isolated sandbox (sandbox skill)
sandbox = Sandbox.create(image="python")

完全なガイド:shared/console-sdk-patterns.md を参照してください。


ルーティングの判断ツリー

┌─────────────────────────────────────────────────────────────────┐
│                        USER REQUEST                              │
└─────────────────────────────────────────────────────────────────┘
                              │
                              ▼
                ┌─────────────────────────┐
                │ Setting up development? │
                └─────────────────────────┘
                              │
                      "local" / "devcontainer"
                              ▼
                      ┌───────────┐
                      │devcontainers│
                      └───────────┘
                              │
                              ▼
                ┌─────────────────────────┐
                │ Designing or creating?  │
                └─────────────────────────┘
                      │           │           │
             "new app"│           │ "migrate" │ "plan" / "staged"
                      ▼           ▼           ▼
              ┌───────────┐  ┌───────────┐  ┌───────────┐
              │ designer  │  │ migration │  │  planner  │
              └───────────┘  └───────────┘  └───────────┘
                              │
                              ▼
                ┌─────────────────────────┐
                │    Shipping code?       │
                └─────────────────────────┘
                              │
                      "deploy" / "ship" / "release"
                              ▼
                      ┌───────────┐
                      │deployment │
                      └───────────┘
                              │
                              ▼
                ┌─────────────────────────┐
                │   Something broken?     │
                └─────────────────────────┘
                              │
                      "broken" / "failing" / "debug" / "logs"
                              ▼
                    ┌───────────────┐
                    │troubleshooting│
                    └───────────────┘
                              │
                              ▼
                ┌─────────────────────────┐
                │ Need isolated execution?│
                └─────────────────────────┘
                              │
                      "sandbox" / "isolated" / "execute code" / "code interpreter"
                              ▼
                      ┌───────────┐
                      │  sandbox  │
                      └───────────┘
                              │
                              ▼
                ┌─────────────────────────┐
                │ Configuring data?       │
                └─────────────────────────┘
                      │           │           │
           "postgres" │  "mysql"  │           │ "storage" / "S3" / "spaces"
           (complex)  │  "mongo"  │           │
                      │  "valkey" │           │
                      │  "kafka"  │           │
                      │  "opensearch"         │
                      ▼           ▼           ▼
              ┌───────────┐  ┌─────────────────────┐  ┌───────────┐
              │ postgres  │  │ managed-db-services │  │  spaces   │
              └───────────┘  └─────────────────────┘  └───────────┘
                              │
                              ▼
                ┌─────────────────────────┐
                │ AI inference needed?    │
                └─────────────────────────┘
                              │
                      "gradient" / "LLM" / "inference"
                              ▼
                      ┌─────────────┐
                      │ ai-services │
                      └─────────────┘

ワークフローの連携

AI アシスタントは、単一のスキルへの振り分けだけでなく、ワークフロー全体を推論する必要があります。

ワークフローの種類
リクエストの種類ワークフロースキルチェーン
新規開発「アプリをゼロから構築する」devcontainers → designer → planner → deployment
移行「Heroku/AWS から移行する」migration →(その後、新規開発のワークフロー)
既存環境への導入「既存のアプリをデプロイする」planner → deployment
機能追加「アプリに Kafka を追加する」managed-db-services → app.yaml を更新 → deployment
トラブルシューティング「アプリが壊れている」troubleshooting(単独)
AI エージェントの実行「コードを隔離環境で実行する」sandbox(単独)
特定のタスク「PostgreSQL をセットアップする」postgres(単独)
スキルの連携ロジック
┌─────────────────────────────────────────────────────────────────┐
│                    UNDERSTAND THE GOAL                           │
│  Is this a single task or a multi-phase workflow?                │
└─────────────────────────────────────────────────────────────────┘
                              │
              ┌───────────────┴───────────────┐
              │                               │
              ▼                               ▼
       ┌─────────────┐                 ┌─────────────┐
       │ Single Task │                 │  Workflow   │
       │             │                 │             │
       │ Route to    │                 │ Chain       │
       │ one skill   │                 │ multiple    │
       └─────────────┘                 └─────────────┘
              │                               │
              ▼                               ▼
       troubleshooting              migration → designer →
       postgres                     planner → deployment
       spaces
       etc.
例

「Kafka を使った新しいイベント駆動型アプリを構築したい」

  1. designer から始め、Kafka を含む .do/app.yaml を作成します
  2. Kafka 固有のバインド可能な変数には managed-db-services を使用します
  3. planner を使用して、段階的な Plan/ ファイルを生成します
  4. deployment スキルを使って実行します

「Heroku アプリを DigitalOcean に移行したい」

  1. migration から始めます。Heroku の詳細な章では、意図(Q&A、ガイド付き、自動移行)に基づいて自動的にルーティングされます
  2. Procfile、app.json、heroku.yml を解析し、アドオンを対応付けて、.do/app.yaml を生成します
  3. planner を使用して、段階的なデプロイを計画します
  4. deployment スキルを使って実行します

「デプロイしたアプリが 502 を返し続けている」

  1. troubleshooting に直接ルーティングします(単一のスキルで、連携はありません)
  2. デバッグコンテナを使い、ログを分析して問題を修正します

「既存のアプリに PostgreSQL を追加したい」

  1. スキーマとユーザーのセットアップには postgres を使用します
  2. データベースバインディングを含めるよう .do/app.yaml を更新します
  3. deployment スキルを使って再デプロイします
重要な原則

AI アシスタントは次のことを行う必要があります。

  1. 目の前のリクエストだけでなく、全体的な目標を理解する
  2. 必要なスキルとその順序を特定する
  3. スキルを連携させ、成果物を受け渡す
  4. すでに存在するものに応じて対応する(新規開発か既存環境か)

推論は AI に任せてください。 これらのスキルは、固定されたスクリプトではなく、特定の分野に関する知識を提供します。


トリガーフレーズの一覧

ルーティング先トリガーフレーズ
devcontainers「ローカル開発」、「docker compose」、「ローカルで実行」、「devcontainer」
designer「アプリを設計する」、「アプリの仕様を作成する」、「新しいアプリケーション」、「アーキテクチャ」
migration「移行する」、「変換する」、「Heroku から移行する」、「AWS から移行する」、「Heroku」、「Procfile」、「heroku.yml」、「dynos」、「Heroku のアドオン」、「Heroku のパイプライン」
planner「計画を作成する」、「このプロジェクトを計画する」、「段階的なアプローチ」、「デプロイを計画する」、「どのようにデプロイすればよいか」
deployment「デプロイする」、「リリースする」、「公開する」、「GitHub Actions」、「CI/CD」
troubleshooting「壊れている」、「失敗している」、「デバッグ」、「ログ」、「502」、「クラッシュ」、「エラー」
sandbox「サンドボックス」、「隔離環境」、「コードを実行する」、「コードインタープリター」、「信頼できないコードを実行する」、「エージェントの実行」、「ホットプール」
postgres「postgres」、「postgresql」、「スキーマの分離」、「マルチテナントデータベース」
managed-db-services「mysql」、「mongodb」、「mongo」、「valkey」、「redis」、「kafka」、「opensearch」
spaces「オブジェクトストレージ」、「S3」、「Spaces」、「ファイルのアップロード」、「バケット」
ai-services「gradient」、「推論」、「LLM エンドポイント」、「AI プラットフォーム」

サードパーティ連携(スキル不要)

専用スキルで扱われていない連携(DataDog、Sentry、New Relic、Stripe など)については、次の手順に従います。

  1. ベンダーから認証情報を取得します
  2. GitHub Secrets に追加します(Repo → Settings → Secrets → Actions)
  3. アプリの仕様で参照します。
    envs:
      - key: DATADOG_API_KEY
        scope: RUN_TIME
        value: ${DATADOG_API_KEY}  # From GitHub Secrets
    
  4. SDK/エージェントのセットアップについては、ベンダーのドキュメントに従います

→ エージェントのトレーニングにはベンダー固有のパターンが含まれているため、スキルは不要です。


認証情報の取り扱い方針

重要:これらのスキルは、認証情報をエージェントに渡さないように設計されています。

優先順位(高い順)
1. GITHUB SECRETS (RECOMMENDED DEFAULT)
   ├── Agent never sees credentials
   ├── User manually adds: Repo → Settings → Secrets → Actions
   ├── Workflow references: ${{ secrets.DATABASE_URL }}
   └── Agent generates workflow, user handles secrets

2. APP PLATFORM BINDABLE VARIABLES
   ├── For DO Managed Databases (Postgres, MySQL, MongoDB, etc.)
   ├── Credentials injected via ${db.DATABASE_URL}
   ├── Agent configures app spec, never sees credentials
   └── Best for: Apps using DO managed services

3. LOCAL .ENV + EPHEMERAL APP SPEC
   ├── User maintains .env file locally
   ├── Agent creates temp app spec with placeholders
   └── Substitutes values → Deploys → Deletes temp file

4. EXTERNAL SERVICES
   ├── Same patterns as #1 or #3
   └── User responsible for credential management

Artifact Contracts

すべてのスキルは、一貫した命名規則でアーティファクトを生成し、使用します。

アーティファクトファイル名生成元使用先
App Spec.do/app.yamldesigner, migrationdeployment, planner
Deploy Button.do/deploy.template.yamldesigner, migrationGitHub
Deployment PlanPlan/0N-*.mdplannerUser, deployment
Dev Environment.devcontainer/devcontainer.jsondevcontainersVS Code, Cursor
Docker Composedocker-compose.ymldevcontainersDocker Desktop
CI/CD Workflow.github/workflows/deploy.ymldeployment, plannerGitHub Actions
SQL Scriptsdb-*.sqlpostgresUser(手動実行)
CORS Configspaces-cors.jsonspacesDO Console
引き継ぎプロトコル

スキルが完了したら、次の事項を行います。

  1. 生成したアーティファクトを伝える:「3 コンポーネント構成の .do/app.yaml を作成しました」
  2. ファイルパスを示す:プロジェクトのルートからの相対パス
  3. 該当する場合は次のスキルを提案する:「これをデプロイするには、deployment スキルを使用してください」

プラグイン/ツールの要件

スキル必須任意
devcontainersfilesystem, docker, gitgh
designerfilesystem—
migrationfilesystem, doctl, git, pythongh, DigitalOcean MCP
deploymentfilesystem, doctl, git, pythongh, GitHub MCP
troubleshootingfilesystem, python, doctl—
sandboxfilesystem, python, doctl—
postgresfilesystem, psql—(スクリプトのみ)
managed-db-servicesfilesystem, doctl—
spacesfilesystems3cmd(バケット操作用。キーの管理には doctl のみを使用)
ai-servicesfilesystem—

サブスキルの場所

app-platform-skills/
├── SKILL.md                              # This file (router)
├── skills/
│   ├── devcontainers/SKILL.md
│   ├── designer/SKILL.md
│   ├── migration/SKILL.md
│   ├── deployment/SKILL.md
│   ├── planner/SKILL.md                  # Staged project plans (design to deployment)
│   │   └── templates/                    # Local + Tier 1, 2, 3 stage templates
│   ├── troubleshooting/SKILL.md
│   ├── sandbox/SKILL.md                  # Isolated containers for AI agent execution
│   ├── postgres/SKILL.md
│   ├── managed-db-services/SKILL.md      # MySQL, MongoDB, Valkey, Kafka, OpenSearch
│   ├── spaces/SKILL.md
│   └── ai-services/SKILL.md              # Gradient AI
└── shared/
    ├── app-spec-schema.yaml
    ├── artifact-contracts.md
    └── credential-patterns.md

推奨デフォルト設定の概要

領域デフォルト変更条件
ネットワークVPC のみ、内部ルーティングユーザーが公開を明示的に要求
CI/CDGitHub + GitHub Actionsユーザーが GitLab/Bitbucket を指定
シークレットGitHub Secretsユーザーが既存のボールトを使用
ビルドDockerfileユーザーがビルドパックを明示的に希望
データベースDO Managed + Bindable Variablesユーザーが外部 DB を使用
モノレポデフォルトでサポート(source_dir)該当なし
Python 環境パッケージ/venv 管理に uv を使用ユーザーが pip/poetry を希望
Node 環境バージョン管理に nvm を使用ユーザーが n/volta を希望

エスカレーション

タスクがどのスキルにも当てはまらない場合、または複数のスキルにまたがり内容が曖昧な場合:

  1. 主な意図を確認するため、明確化の質問をします
  2. タスクが複数のフェーズにわたる場合は、スキルの順序を提案します
  3. 真に新規のタスクについては、App Platform のドキュメントを参照します:https://docs.digitalocean.com/products/app-platform/

コメント