app-platform-router について
App Platform Skills — Routerは、DigitalOcean App Platformの開発、移行、デプロイ、データサービス、トラブルシューティング向けの専門スキルへAIアシスタントの依頼を振り分けます。複数段階のワークフローでスキルを連携し、成果物を引き継ぐ方法も示します。
主な機能
- 01依頼を専門スキルに振り分け
- 02プロジェクト段階をまたぐスキル連携
- 03アプリ設計と移行に対応
- 04デプロイとトラブルシューティングを網羅
- 05データ・AIサービスのガイダンス
- 06成果物の引き継ぎを定義
活用シーン
- 01新しいApp Platformアプリの設計とデプロイ
- 02既存Herokuアプリの移行
- 03アプリへのマネージドデータベース追加
- 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 のステージファイル |
運用フェーズ
| スキル | 目的 | 主な成果物 |
|---|---|---|
| deployment | GitHub Actions を使ってコードを本番環境にリリース | .github/workflows/deploy.yml |
| troubleshooting | 事前構築済みデバッグコンテナで稼働中のアプリをデバッグし、ログを分析 | 修正内容、診断レポート |
| sandbox | AI エージェントによるコード実行とテスト向けの分離されたコンテナ | 一時的なサンドボックス |
データサービス
| スキル | 目的 | 主な成果物 |
|---|---|---|
| postgres | PostgreSQL の包括的なセットアップ:スキーマ、ユーザー、権限、マルチテナント | SQL スクリプト(ユーザーが実行) |
| managed-db-services | MySQL、MongoDB、Valkey、Kafka、OpenSearch(バインド可能な変数) | App Spec のスニペット |
| spaces | S3 互換オブジェクトストレージの設定 | CORS 設定、App Spec のスニペット |
AI サービス
| スキル | 目的 | 主な成果物 |
|---|---|---|
| ai-services | Gradient 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()、SandboxManager | sandbox |
# 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 を使った新しいイベント駆動型アプリを構築したい」
- designer から始め、Kafka を含む
.do/app.yamlを作成します - Kafka 固有のバインド可能な変数には managed-db-services を使用します
- planner を使用して、段階的な Plan/ ファイルを生成します
- deployment スキルを使って実行します
「Heroku アプリを DigitalOcean に移行したい」
- migration から始めます。Heroku の詳細な章では、意図(Q&A、ガイド付き、自動移行)に基づいて自動的にルーティングされます
- Procfile、app.json、heroku.yml を解析し、アドオンを対応付けて、
.do/app.yamlを生成します - planner を使用して、段階的なデプロイを計画します
- deployment スキルを使って実行します
「デプロイしたアプリが 502 を返し続けている」
- troubleshooting に直接ルーティングします(単一のスキルで、連携はありません)
- デバッグコンテナを使い、ログを分析して問題を修正します
「既存のアプリに PostgreSQL を追加したい」
- スキーマとユーザーのセットアップには postgres を使用します
- データベースバインディングを含めるよう
.do/app.yamlを更新します - deployment スキルを使って再デプロイします
重要な原則
AI アシスタントは次のことを行う必要があります。
- 目の前のリクエストだけでなく、全体的な目標を理解する
- 必要なスキルとその順序を特定する
- スキルを連携させ、成果物を受け渡す
- すでに存在するものに応じて対応する(新規開発か既存環境か)
推論は 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 など)については、次の手順に従います。
- ベンダーから認証情報を取得します
- GitHub Secrets に追加します(Repo → Settings → Secrets → Actions)
- アプリの仕様で参照します。
envs: - key: DATADOG_API_KEY scope: RUN_TIME value: ${DATADOG_API_KEY} # From GitHub Secrets - 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.yaml | designer, migration | deployment, planner |
| Deploy Button | .do/deploy.template.yaml | designer, migration | GitHub |
| Deployment Plan | Plan/0N-*.md | planner | User, deployment |
| Dev Environment | .devcontainer/devcontainer.json | devcontainers | VS Code, Cursor |
| Docker Compose | docker-compose.yml | devcontainers | Docker Desktop |
| CI/CD Workflow | .github/workflows/deploy.yml | deployment, planner | GitHub Actions |
| SQL Scripts | db-*.sql | postgres | User(手動実行) |
| CORS Config | spaces-cors.json | spaces | DO Console |
引き継ぎプロトコル
スキルが完了したら、次の事項を行います。
- 生成したアーティファクトを伝える:「3 コンポーネント構成の
.do/app.yamlを作成しました」 - ファイルパスを示す:プロジェクトのルートからの相対パス
- 該当する場合は次のスキルを提案する:「これをデプロイするには、deployment スキルを使用してください」
プラグイン/ツールの要件
| スキル | 必須 | 任意 |
|---|---|---|
| devcontainers | filesystem, docker, git | gh |
| designer | filesystem | — |
| migration | filesystem, doctl, git, python | gh, DigitalOcean MCP |
| deployment | filesystem, doctl, git, python | gh, GitHub MCP |
| troubleshooting | filesystem, python, doctl | — |
| sandbox | filesystem, python, doctl | — |
| postgres | filesystem, psql | —(スクリプトのみ) |
| managed-db-services | filesystem, doctl | — |
| spaces | filesystem | s3cmd(バケット操作用。キーの管理には doctl のみを使用) |
| ai-services | filesystem | — |
サブスキルの場所
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/CD | GitHub + GitHub Actions | ユーザーが GitLab/Bitbucket を指定 |
| シークレット | GitHub Secrets | ユーザーが既存のボールトを使用 |
| ビルド | Dockerfile | ユーザーがビルドパックを明示的に希望 |
| データベース | DO Managed + Bindable Variables | ユーザーが外部 DB を使用 |
| モノレポ | デフォルトでサポート(source_dir) | 該当なし |
| Python 環境 | パッケージ/venv 管理に uv を使用 | ユーザーが pip/poetry を希望 |
| Node 環境 | バージョン管理に nvm を使用 | ユーザーが n/volta を希望 |
エスカレーション
タスクがどのスキルにも当てはまらない場合、または複数のスキルにまたがり内容が曖昧な場合:
- 主な意図を確認するため、明確化の質問をします
- タスクが複数のフェーズにわたる場合は、スキルの順序を提案します
- 真に新規のタスクについては、App Platform のドキュメントを参照します:https://docs.digitalocean.com/products/app-platform/