scaffold-deploy

SkillWeb & browsing

Generate deployment configuration files (Dockerfile, vercel.json, wrangler.toml, etc.) based on target type.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the scaffold-deploy skill

What this skill tells your AI

The instructions your AI receives, as published by porcupine-md/anoa-browser in .claude/skills/core/scaffold-deploy/SKILL.md and read by ahel’s review.

Context

Project {{project_name}} ({{project_type}}) uses {{stack}}. Setup deployment to {{input.target}} with CI/CD via {{input.ci_provider}}.

Instructions

  1. Create Dockerfile (if target = docker, railway, fly, aws, gcp)

    • Multi-stage build (builder + runner)
    • Non-root user
    • Minimal image size (alpine if possible)
    • Proper .dockerignore
    • Health check endpoint
  2. Create docker-compose.yml (for local development)

    • App service
    • Database service (if applicable)
    • Redis service (if applicable)
    • Volume mounts for development
    • Environment variables from .env
  3. Create CI/CD pipeline

    GitHub Actions:

    .github/workflows/
    ├── ci.yml        # Run on PR: lint, typecheck, test
    ├── deploy.yml    # Run on push to main: build, deploy
    └── release.yml   # Run on tag (library only): publish
    

    GitLab CI:

    .gitlab-ci.yml    # stages: test, build, deploy
    
  4. Create environment configs

    • .env.example (template, committed)
    • Document required env vars
    • Separation: development, staging, production
  5. Platform-specific config:

    • Vercel: vercel.json
    • Railway: railway.toml
    • Fly.io: fly.toml
    • Library: npm publish config in package.json

Script

#!/bin/bash
# Create deployment directories
mkdir -p .github/workflows 2>/dev/null

# Create .dockerignore if using Docker
if [ "{{input.target}}" != "vercel" ]; then
cat > .dockerignore << 'DOCKERIGNORE'
node_modules
.git
.env
.env.local
dist
coverage
.next
DOCKERIGNORE
echo "Created .dockerignore"
fi

Validation

  • Dockerfile builds successfully (docker build .)
  • Container runs and responds to health check
  • CI pipeline syntax valid
  • CI pipeline runs successfully (lint, typecheck, test)
  • .env.example contains all required variables
  • No secrets hardcoded in any config file
  • .dockerignore excludes sensitive files

Signals

GitHub stars
23
Forks
2
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
scaffold-deploy
Source
github.com/porcupine-md/anoa-browser