Multi-Platform Deployment

This skill should be used when the user asks to "deploy application", "deploy to production", "release app", "deploy to AWS", "deploy to Vercel", "deploy to Kubernetes", "iOS deployment", "Android deployment", "deploy smart contract", "web3 deployment", "deploy to multiple platforms", or needs guidance on deployment strategies across web, mobile, and blockchain platforms.

16 stars

Best use case

Multi-Platform Deployment is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

This skill should be used when the user asks to "deploy application", "deploy to production", "release app", "deploy to AWS", "deploy to Vercel", "deploy to Kubernetes", "iOS deployment", "Android deployment", "deploy smart contract", "web3 deployment", "deploy to multiple platforms", or needs guidance on deployment strategies across web, mobile, and blockchain platforms.

Teams using Multi-Platform Deployment should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/multi-platform-deployment/SKILL.md --create-dirs "https://raw.githubusercontent.com/diegosouzapw/awesome-omni-skill/main/skills/devops/multi-platform-deployment/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/multi-platform-deployment/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How Multi-Platform Deployment Compares

Feature / AgentMulti-Platform DeploymentStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

This skill should be used when the user asks to "deploy application", "deploy to production", "release app", "deploy to AWS", "deploy to Vercel", "deploy to Kubernetes", "iOS deployment", "Android deployment", "deploy smart contract", "web3 deployment", "deploy to multiple platforms", or needs guidance on deployment strategies across web, mobile, and blockchain platforms.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Multi-Platform Deployment

Comprehensive deployment guidance for web applications, mobile apps, and blockchain smart contracts.

## Web Application Deployment

### Static Site Deployment

**Vercel:**
```bash
# Install CLI
npm i -g vercel

# Deploy
vercel --prod

# With environment variables
vercel --prod -e DATABASE_URL=@database-url
```

**Netlify:**
```bash
# Install CLI
npm i -g netlify-cli

# Deploy
netlify deploy --prod --dir=dist
```

**AWS S3 + CloudFront:**
```bash
# Sync to S3
aws s3 sync dist/ s3://my-bucket --delete

# Invalidate CloudFront cache
aws cloudfront create-invalidation \
  --distribution-id $DIST_ID \
  --paths "/*"
```

### Container Deployment

**Docker Build & Push:**
```dockerfile
# Dockerfile
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
EXPOSE 80
```

```bash
# Build and push
docker build -t myapp:latest .
docker tag myapp:latest registry.example.com/myapp:latest
docker push registry.example.com/myapp:latest
```

### Kubernetes Deployment

```yaml
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
spec:
  replicas: 3
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp
        image: registry.example.com/myapp:latest
        ports:
        - containerPort: 80
        resources:
          requests:
            memory: "128Mi"
            cpu: "100m"
          limits:
            memory: "256Mi"
            cpu: "500m"
        readinessProbe:
          httpGet:
            path: /health
            port: 80
          initialDelaySeconds: 5
          periodSeconds: 10
---
apiVersion: v1
kind: Service
metadata:
  name: myapp
spec:
  selector:
    app: myapp
  ports:
  - port: 80
    targetPort: 80
  type: LoadBalancer
```

```bash
# Apply deployment
kubectl apply -f deployment.yaml

# Rolling update
kubectl set image deployment/myapp myapp=registry.example.com/myapp:v2

# Rollback
kubectl rollout undo deployment/myapp
```

## Mobile App Deployment

### iOS App Store

**Prerequisites:**
- Apple Developer account ($99/year)
- App Store Connect access
- Distribution certificate and provisioning profile

**Deployment Steps:**
1. Archive app in Xcode
2. Validate archive
3. Upload to App Store Connect
4. Submit for review
5. Release upon approval

**Fastlane Automation:**
```ruby
# Fastfile
default_platform(:ios)

platform :ios do
  lane :release do
    increment_build_number
    build_app(scheme: "MyApp")
    upload_to_app_store(
      skip_metadata: true,
      skip_screenshots: true
    )
  end
end
```

```bash
# Run deployment
fastlane release
```

### Google Play Store

**Prerequisites:**
- Google Play Console account ($25 one-time)
- App signing key
- Service account for API access

**Fastlane for Android:**
```ruby
# Fastfile
default_platform(:android)

platform :android do
  lane :release do
    gradle(task: "bundleRelease")
    upload_to_play_store(
      track: "production",
      aab: "app/build/outputs/bundle/release/app-release.aab"
    )
  end
end
```

### Cross-Platform (Expo/EAS)

```bash
# Configure EAS
eas build:configure

# Build for both platforms
eas build --platform all --profile production

# Submit to stores
eas submit --platform ios
eas submit --platform android
```

## Blockchain Deployment

### Ethereum Mainnet

```javascript
// deploy.js (Hardhat)
async function main() {
  const [deployer] = await ethers.getSigners();
  console.log("Deploying with:", deployer.address);

  const Contract = await ethers.getContractFactory("MyContract");
  const contract = await Contract.deploy(constructorArg1, constructorArg2);
  await contract.waitForDeployment();

  console.log("Contract deployed to:", await contract.getAddress());

  // Verify on Etherscan
  await hre.run("verify:verify", {
    address: await contract.getAddress(),
    constructorArguments: [constructorArg1, constructorArg2],
  });
}
```

**Foundry Deployment:**
```bash
# Deploy
forge create src/MyContract.sol:MyContract \
  --rpc-url $RPC_URL \
  --private-key $PRIVATE_KEY \
  --constructor-args arg1 arg2

# Verify
forge verify-contract $ADDRESS src/MyContract.sol:MyContract \
  --chain mainnet \
  --etherscan-api-key $ETHERSCAN_KEY
```

### Multi-Chain Deployment

```javascript
// Deploy to multiple chains
const chains = {
  ethereum: { rpc: process.env.ETH_RPC, chainId: 1 },
  polygon: { rpc: process.env.POLYGON_RPC, chainId: 137 },
  arbitrum: { rpc: process.env.ARB_RPC, chainId: 42161 },
  base: { rpc: process.env.BASE_RPC, chainId: 8453 }
};

async function deployToAllChains() {
  const deployments = {};

  for (const [name, config] of Object.entries(chains)) {
    const provider = new ethers.JsonRpcProvider(config.rpc);
    const wallet = new ethers.Wallet(process.env.PRIVATE_KEY, provider);

    const factory = new ethers.ContractFactory(abi, bytecode, wallet);
    const contract = await factory.deploy();
    await contract.waitForDeployment();

    deployments[name] = await contract.getAddress();
    console.log(`Deployed to ${name}: ${deployments[name]}`);
  }

  return deployments;
}
```

## Deployment Strategies

### Blue-Green Deployment

```
┌─────────────┐     ┌─────────────┐
│   Router    │     │   Router    │
└──────┬──────┘     └──────┬──────┘
       │                   │
   ┌───┴───┐           ┌───┴───┐
   ▼       ▼           ▼       ▼
┌─────┐ ┌─────┐     ┌─────┐ ┌─────┐
│Blue │ │Green│  →  │Blue │ │Green│
│ ✓   │ │     │     │     │ │  ✓  │
└─────┘ └─────┘     └─────┘ └─────┘
```

### Canary Deployment

```yaml
# Kubernetes canary with Istio
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  name: myapp
spec:
  hosts:
  - myapp
  http:
  - route:
    - destination:
        host: myapp
        subset: stable
      weight: 90
    - destination:
        host: myapp
        subset: canary
      weight: 10
```

### Rolling Update

```yaml
# Kubernetes rolling update
spec:
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
```

## Environment Management

### Environment Variables

```bash
# Development
cp .env.example .env.development

# Staging
cp .env.example .env.staging

# Production (use secrets manager)
aws secretsmanager get-secret-value --secret-id prod/myapp
```

### Feature Flags

```javascript
// LaunchDarkly example
const ldclient = LaunchDarkly.init(process.env.LD_SDK_KEY);

const showNewFeature = await ldclient.variation(
  'new-feature',
  { key: user.id },
  false
);
```

## Deployment Checklist

### Pre-Deployment

- [ ] All tests passing
- [ ] Code reviewed and approved
- [ ] Database migrations ready
- [ ] Environment variables configured
- [ ] Rollback plan documented
- [ ] Monitoring alerts configured

### Post-Deployment

- [ ] Health checks passing
- [ ] Smoke tests executed
- [ ] Performance metrics normal
- [ ] Error rates acceptable
- [ ] Notify stakeholders

## Additional Resources

### Reference Files

- **`references/cloud-providers.md`** - Provider-specific deployment guides
- **`references/deployment-scripts.md`** - Reusable deployment scripts

### Example Files

- **`examples/k8s-deployment.yaml`** - Complete Kubernetes manifests
- **`examples/github-deploy-workflow.yml`** - CI/CD deployment workflow

Related Skills

rails-deployment

16
from diegosouzapw/awesome-omni-skill

Deploy Rails applications to production using Kamal, Docker, and modern deployment strategies. Covers zero-downtime deployments, environment management, database migrations, SSL/TLS, and production configurations.

[PROJECT]-deployment-patterns

16
from diegosouzapw/awesome-omni-skill

[PROJECT] CI/CD pipeline and deployment automation patterns

platform

16
from diegosouzapw/awesome-omni-skill

Use this skill when working on infrastructure, DevOps, CI/CD, Kubernetes, cloud deployment, observability, or cost optimization. Activates on mentions of Kubernetes, Docker, Terraform, Pulumi, OpenTofu, GitOps, Argo CD, Flux, CI/CD, GitHub Actions, observability, OpenTelemetry, Prometheus, Grafana, AWS, GCP, Azure, infrastructure as code, platform engineering, FinOps, or cloud costs.

NestJS Deployment

16
from diegosouzapw/awesome-omni-skill

Docker builds, Memory tuning, and Graceful shutdown.

multi-cloud-architecture

16
from diegosouzapw/awesome-omni-skill

Design multi-cloud architectures using a decision framework to select and integrate services across AWS, Azure, and GCP. Use when building multi-cloud systems, avoiding vendor lock-in, or leveragin...

managing-astro-deployments

16
from diegosouzapw/awesome-omni-skill

Manage Astronomer production deployments with Astro CLI. Use when the user wants to authenticate, switch workspaces, create/update/delete deployments, or deploy code to production.

kubernetes-deployment

16
from diegosouzapw/awesome-omni-skill

Deploy, manage, and scale applications on Kubernetes clusters using manifests, Helm charts, and autoscaling configurations.

gke-deployment

16
from diegosouzapw/awesome-omni-skill

Deploy, configure, and manage Kubernetes workloads on GKE with Deployments, Services, Ingress, HPA, health probes, ConfigMaps, and Secrets. Use when deploying containers to GKE, configuring load balancers, setting up autoscaling, writing health checks, managing environment configs, or troubleshooting pod issues.

frontend-deployment

16
from diegosouzapw/awesome-omni-skill

Deploy frontend applications from aramb.toml. Creates frontend service, resolves backend references from deployment outputs, builds static files, and deploys with environment variables. Returns deployment URL. Use for all frontend deployments.

featbit-deployment-kubernetes

16
from diegosouzapw/awesome-omni-skill

Deploys FeatBit to Kubernetes using Helm Charts. Use when user mentions "Kubernetes", "Helm", "K8s", "kubectl", works with values.yaml files, asks about "cloud deployment", "AKS", "EKS", "GKE", "ingress", or needs production-grade container orchestration setup.

featbit-deployment-docker

16
from diegosouzapw/awesome-omni-skill

Expert guidance for deploying FeatBit with Docker Compose across three tiers - Standalone (PostgreSQL only), Standard (PostgreSQL/MongoDB + Redis), and Professional (+ ClickHouse + Kafka). Use when user mentions "docker-compose", "deploy with Docker", "standalone vs standard vs pro", works with docker-compose.yml files, or asks about container configuration, environment variables, or production Docker setup.

FastAPI Kubernetes Deployment

16
from diegosouzapw/awesome-omni-skill

This skill should be used when the user asks to "deploy FastAPI to Kubernetes", "create Dockerfile", "build Docker image", "write Helm chart", "configure K8s deployment", "add health checks", "scale FastAPI", or mentions Docker, Kubernetes, K8s, containers, Helm, or deployment. Provides containerization and orchestration patterns.