← mittwaldCONTENT HISTORY

Update to mittwald

Snapshot Sep 30, 2026 · 22:58 UTC · version 1.0.0

Collection source: not recorded for this historical snapshot.

WHAT CHANGED · RULE-BASED ANALYSIS

First saved snapshot

No earlier snapshot is available to establish a change.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "description": "Deploy an arbitrary application from your local machine or a Git repository to mittwald mStudio. Use when the user mentions \"deploy to Mittwald\", \"move to mStudio\", \"Container Hosting auf Mittwald\", \"stack_deploy\", or asks for help deploying a workload (K8s, Docker Compose, VPS, another hoster, another mStudio project) onto Mittwald. Source is open, target is always mStudio.",
  "included_files": [
    {
      "relative_path": ".claude-plugin/plugin.json",
      "size_in_bytes": 414
    },
    {
      "relative_path": "playbooks/01-provision-target.md",
      "size_in_bytes": 3242
    },
    {
      "relative_path": "playbooks/02-cli-deploy-local.md",
      "size_in_bytes": 4919
    },
    {
      "relative_path": "playbooks/03-setup-github-action.md",
      "size_in_bytes": 5585
    },
    {
      "relative_path": "playbooks/04-troubleshoot-deployment.md",
      "size_in_bytes": 8490
    },
    {
      "relative_path": "playbooks/05-verify.md",
      "size_in_bytes": 8486
    },
    {
      "relative_path": "references/pitfalls.md",
      "size_in_bytes": 9525
    },
    {
      "relative_path": "references/port-configuration.md",
      "size_in_bytes": 9825
    },
    {
      "relative_path": "references/railpack-overview.md",
      "size_in_bytes": 7681
    },
    {
      "relative_path": "references/secrets-management.md",
      "size_in_bytes": 9026
    },
    {
      "relative_path": "references/when-to-escalate.md",
      "size_in_bytes": 9335
    }
  ],
  "name": "mittwald-zerodeploy",
  "skill_md_contents": "---\nname: mittwald-zerodeploy\ndescription: Deploy an arbitrary application from your local machine or a Git repository to mittwald mStudio. Use when the user mentions \"deploy to Mittwald\", \"move to mStudio\", \"Container Hosting auf Mittwald\", \"stack_deploy\", or asks for help deploying a workload (K8s, Docker Compose, VPS, another hoster, another mStudio project) onto Mittwald. Source is open, target is always mStudio.\n---\n\n# mittwald-zerodeploy\n\nZero-config deployment to mittwald mStudio container hosting using Railpack build inference.\n\n---\n\n## Description\n\nThis skill guides users through deploying containerized applications to mittwald mStudio **without requiring Docker knowledge**. The workflow uses Railpack to automatically detect project types and generate build plans, then deploys via the mittwald CLI or GitHub Actions.\n\n**Perfect for**: Developers who want to deploy quickly without writing Dockerfiles.  \n**Not for**: DevOps teams needing explicit container definitions (use `deploy-container-action` instead).\n\n---\n\n## When to use this skill\n\nTrigger this skill when the user wants to:\n\n- Deploy an app to mittwald without writing a Dockerfile\n- Set up automated deployment with GitHub Actions to mittwald\n- Troubleshoot Railpack-based deployment failures\n- Transition from local CLI testing to CI/CD automation\n- Fix issues with faulty AI-generated Dockerfiles\n- Understand why their deployment isn't working\n\n---\n\n## Workflow\n\n### Phase 1: Local Testing (CLI)\n\n**Goal**: Validate the deployment locally before setting up automation.\n\n1. **Load** `playbooks/01-provision-target.md`\n   - Verify mStudio project exists and user has API token\n   - Confirm project ID is configured or can be passed explicitly\n   - Check CLI is installed and authenticated\n\n2. **Load** `playbooks/02-cli-deploy-local.md`\n   - Run `mw experimental deploy` from project root\n   - Handle environment variables via `--env` or `--env-file`\n   - Parse deployment output for URL and container ID\n   - Verify the app is reachable\n\n3. **Load** `playbooks/05-verify.md`\n   - Check container status in mStudio web UI\n   - Test HTTP endpoints and validate responses\n   - Confirm environment variables are applied correctly\n\n### Phase 2: Automation (GitHub Actions)\n\n**Goal**: Set up continuous deployment after local testing succeeds.\n\n1. **Load** `playbooks/03-setup-github-action.md`\n   - Create `.github/workflows/zerodeploy.yml`\n   - Configure GitHub secrets (`MITTWALD_API_TOKEN`, `MITTWALD_PROJECT_ID`)\n   - Handle runtime secrets via workflow `.env` generation\n   - Test with manual workflow dispatch\n\n2. **Test automated deployment**\n   - Trigger workflow manually\n   - Monitor workflow logs for errors\n\n3. **Load** `playbooks/05-verify.md` again\n   - Confirm automated deployment produces same result as CLI\n\n### Troubleshooting (As Needed)\n\n**When deployment fails or behaves unexpectedly:**\n\n- **Load** `playbooks/04-troubleshoot-deployment.md`\n  - Guide user to mStudio web UI logs\n  - Identify common error patterns\n  - Check for faulty Dockerfiles to delete\n  - Reconfigure ports if needed\n\n**When encountering the 3 critical gotchas:**\n\n- **Load** `references/pitfalls.md`\n  - Faulty pre-existing Dockerfiles\n  - Hidden port configurations\n  - Exotic projects that won't work with Railpack\n\n**When stuck after 2-3 attempts:**\n\n- **Load** `references/when-to-escalate.md`\n  - Recognize escalation triggers\n  - Document errors for handoff\n  - Avoid endless iteration\n\n---\n\n## Critical References (Load on Demand)\n\n### Build & Detection Issues\n\n- `references/railpack-overview.md` - when Railpack can't detect project type or build fails\n\n### Configuration Issues\n\n- `references/secrets-management.md` - when handling API keys, database passwords, or `.env` files\n- `references/port-configuration.md` - when app won't respond on expected port or ingress issues occur\n\n### Failure Patterns\n\n- `references/pitfalls.md` - the 3 most common gotchas with solutions\n- `references/when-to-escalate.md` - when to stop iterating and hand off to DevOps\n\n---\n\n## Core Constraints\n\n### Workflow Progression\n\n- ✅ **Always test locally first** with `mw experimental deploy`\n- ✅ **Only automate when stable** - don't set up GitHub Actions until CLI works\n- ❌ **Never mix** CLI and GitHub Actions in the same project phase\n\n### Dockerfile Handling\n\n- ❌ **Never let AI generate Dockerfiles** for this workflow\n- ✅ **Delete existing Dockerfiles** if deployment fails (Railpack is bypassed when Dockerfile exists)\n- ✅ **Let Railpack infer the build** - it's smarter than most AI-generated Dockerfiles\n\n### Escalation Limits\n\n- ⚠️ **After 2-3 deployment attempts fail**, escalate to DevOps\n- ❌ **Don't deep-dive into container internals** without Docker expertise\n- ✅ **Document errors and hand off** rather than iterate endlessly\n\n---\n\n## Key Facts\n\n### Deployment Mechanics\n\n- `mw experimental deploy` auto-detects Dockerfile **OR** uses Railpack\n- `mittwald/zerodeploy-action` wraps the CLI for GitHub Actions (same behavior)\n- Ingress is **automatically configured** with default `webapp` prefix (customize via `--uri-prefix`)\n- Environment variables: `--env KEY=VALUE` or `--env-file path/to/.env`\n- Wait for completion: `--wait` flag (default 600s timeout)\n\n### Railpack Behavior\n\n- Auto-detects: Node.js, Python, PHP, Ruby, Go, static sites, and more\n- Requires: Buildpacks, build tools (npm, pip, composer, etc.)\n- Failure modes: Exotic dependencies, complex monorepos, custom build chains\n- Documentation: https://railpack.com/getting-started\n\n### mStudio Integration\n\n- **Troubleshooting happens in mStudio web UI**, not via CLI\n- Logs, port inspection, container status are all GUI-based\n- Port reconfiguration is done post-deployment in ingress settings\n- Environment variables can be edited after deployment in mStudio\n\n---\n\n## Information Sources\n\n### Official Documentation\n\n- **GitHub Actions Guide**: https://developer.mittwald.de/docs/v2/guides/deployment/container-actions/\n- **CLI Reference**: https://developer.mittwald.de/docs/v2/cli/reference/experimental/\n- **Railpack Getting Started**: https://railpack.com/getting-started\n\n### Skill Components\n\n- **Playbooks**: Step-by-step execution guides for each phase\n- **References**: Background knowledge, gotchas, and escalation criteria\n"
}

SHA-256 of public snapshot: a5254e19e0fe631fd2bfbcd3cc3d2f6cd372bf08ee850af83da89e8a98dbdc85