AgentSkillsCN

app-platform-migration

将应用从 Heroku、AWS、Render、Railway、Fly.io,或 Docker Compose 迁移至 DigitalOcean App Platform。适用于转换现有应用、映射服务、重构平台专属代码,或从其他平台配置中生成应用规格时使用。

SKILL.md
--- frontmatter
name: app-platform-migration
version: 1.0.0
min_doctl_version: "1.82.0"
description: Migrate applications from Heroku, AWS, Render, Railway, Fly.io, or Docker Compose to DigitalOcean App Platform. Use when converting existing apps, mapping services, refactoring platform-specific code, or creating app specs from other platform configurations.
related_skills: [designer, postgres, managed-db-services, networking, deployment]
deprecated: false

App Platform Migration Skill

Migrate existing applications to DigitalOcean App Platform with honest capability assessment.

Philosophy

This skill is an honest partner, not a magic wand. It:

  1. Analyzes thoroughly before proposing changes
  2. Maps what it can with confidence
  3. Acknowledges gaps clearly and specifically
  4. Asks before proceeding when uncertain
  5. Never guesses or ignores incompatibilities

Tip: For complex multi-step migrations, use the planner skill first. For all available skills, see root SKILL.md.


Quick Decision

code
What's your source platform?
├── Heroku (Procfile, app.json, heroku.yml) → See Heroku Deep Chapter below
├── Docker Compose → See Quick Start below
├── Render/Railway/Fly.io → See Quick Start below
├── AWS ECS/App Runner → Complex migration, see reference
└── Just Dockerfile → See Quick Start below

Supported Platforms

PlatformConfig FilesSupport Level
HerokuProcfile, app.json, heroku.ymlFull (deep chapter)
Docker Composedocker-compose.ymlFull
Renderrender.yamlFull
Railwayrailway.json, railway.tomlFull
Fly.iofly.tomlFull
AWS ECSTask Definition JSONPartial
AWS App Runnerapprunner.yamlPartial
Generic DockerDockerfile onlyFull

Migration Workflow

code
Phase 1: DISCOVERY
├── Clone/access repository
├── Detect source platform
├── Analyze architecture
└── Inventory all services

Phase 2: MAPPING
├── Map services → App Platform components
├── Map databases → Managed databases
├── Map storage → Spaces
├── Map secrets → GitHub Secrets
└── Identify unmappable items → REPORT TO USER

Phase 3: REFACTORING
├── Create target branch(es)
├── Update environment variables
├── Remove platform-specific code
├── Update Dockerfile if needed
└── Generate app spec

Phase 4: VALIDATION
├── Validate: doctl apps spec validate
├── Review changes with user
└── Generate migration checklist

Phase 5: HANDOFF
├── Push branches to repo
├── Provide manual steps checklist
└── Suggest deployment skill

Quick Start

Basic Migration

bash
# User provides repo URL
"Migrate this app to App Platform: https://github.com/myorg/myapp"

# AI will:
# 1. Clone and analyze
# 2. Detect platform
# 3. Present mapping proposal
# 4. Ask for approval
# 5. Create branch with refactored code + app spec

With Branch Specification

bash
"Migrate my Heroku app. Put test config in 'migrate/test', prod in 'migrate/prod'"

Full workflows: See workflow-examples.md


Heroku Migration (Deep Chapter)

For Heroku-specific migrations, a comprehensive chapter is available with deep knowledge of Procfile, app.json, heroku.yml, buildpacks, pipelines, add-ons, and CLI mapping.

Start here: Read heroku-overview.md to determine the migration mode (Q&A, Guided, or Auto-Migrate), then follow the routing to:

  • heroku-concepts.md — Heroku config file schemas, CLI commands, buildpack detection, pipeline structure
  • heroku-mapping.md — Component types, build config, env vars, instance sizes, networking, regions
  • heroku-addons.md — Add-on detection from app.json, DO managed service equivalents, external alternatives
  • heroku-workflows.md — Step-by-step procedures for Q&A, Guided, and Auto-Migrate modes

Quick Mapping (Heroku)

HerokuApp Platform
web processservices
worker processworkers
release phasejobs (PRE_DEPLOY)
heroku-postgresqlManaged Postgres
heroku-redisManaged Valkey
Config VarsGitHub Secrets
PipelinesGitHub Actions
Review AppsPreview environments
Heroku Schedulerjobs (CRON_TRIGGER)

Full mapping: See heroku-mapping.md


Quick Mapping Reference

Docker Compose

Docker ComposeApp Platform
services.<name>.portsservices
services.<name> (no ports)workers
services.postgresManaged Postgres
services.redisManaged Valkey
volumesSpaces (no persistent volumes)

Full mapping tables: See platform-mappings.md


Unmappable Items (Quick Reference)

SourceIssueOptions
CloudFront CDNNo DO CDNExternal CDN (Cloudflare) or skip
AWS Secrets ManagerDifferent modelGitHub Secrets
Persistent volumesNot supportedSpaces for files, managed DB for data
ARM containersAMD64 onlyRebuild for AMD64

Full list: See platform-mappings.md


Output Artifacts

FilePurpose
.do/app.yamlApp Platform specification
.do/deploy.template.yamlDeploy to DO button
MIGRATION.mdMigration checklist and status
.env.exampleEnvironment variable template

App spec templates: See app-spec-generation.md


Scripts

ScriptPurpose
scripts/detect_platform.pyDetect source platform from files
scripts/analyze_architecture.pyAnalyze application architecture
scripts/generate_app_spec.pyGenerate .do/app.yaml
scripts/generate_checklist.pyGenerate migration checklist

Reference Files

Heroku (Deep Chapter)

General


Common Issues (Quick Fixes)

IssueCauseFix
App spec validation failsInvalid YAMLCheck indentation, doctl apps spec validate
Database connection failsWrong URL formatUse ${db.DATABASE_URL} binding
Build failsMissing dependenciesCheck Dockerfile build deps
Port binding failsWrong PORT handlingBind to $PORT or 0.0.0.0:8080
Health check failsWrong pathVerify /health endpoint exists

Full troubleshooting: See code-refactoring.md


Integration with Other Skills

  • → deployment: GitHub Actions workflow after migration
  • → postgres: Complex database setup, schema isolation
  • → devcontainers: Local dev environment post-migration
  • → troubleshooting: Debug container for migration issues

Documentation Links