AI agent skills for mittwald mStudio - Conversational guidance for migrations and zero-config deployments.
This repository contains two skills for working with mittwald mStudio:
- mittwald-migrate - Phase-by-phase migration of workloads to mStudio
- mittwald-zerodeploy - Zero-config deployment using Railpack
Guides conversational, phase-by-phase migration of arbitrary workloads to mittwald mStudio. The source can be anything — Kubernetes, Docker Compose, a VPS, another hoster, another mStudio project.
Workflow: Discovery → Plan → Provision → Migrate → Verify → Cutover
Triggers: "migrate to Mittwald", "Umzug nach Mittwald", "move to mStudio"
Location: skills/mittwald-migrate/
Zero-config deployment to mStudio container hosting using Railpack auto-detection. No Dockerfile needed.
Workflow: Provision → Local CLI Deploy → GitHub Actions → Verify
Triggers: "deploy to mittwald", "help me deploy", "set up mittwald deployment"
Location: skills/mittwald-zerodeploy/
Before using either skill:
- ✅ Active mittwald mStudio account
- ✅ API token with
api_writerole from https://studio.mittwald.de/app/profile/api-tokens - ✅ mittwald CLI installed (install guide)
For Claude Code (recommended) — use the native plugin marketplace:
/plugin marketplace add mittwald/agent-skills
/plugin install mittwald-migrate@agent-skills
/plugin install mittwald-zerodeploy-skill@agent-skillsFor any other AI assistant — use the skills CLI:
npx skills add mittwald/agent-skillsThis installs the skills into the location your agent expects (e.g. VS Code Copilot, Cursor, and others).
Manual install (fallback) — clone the repository into your agent's skills directory:
# VS Code Copilot — personal skills
git clone https://github.com/mittwald/agent-skills.git ~/.agents/skills/mittwald-skills
# Claude Code
git clone https://github.com/mittwald/agent-skills.git ~/.claude/skills/mittwald-skillsCheck your agent's documentation for the correct skill installation path.
For migrations:
"I want to migrate my WordPress site from Hetzner to Mittwald."
For deployments:
"Help me deploy my Express app to mittwald"
The AI assistant will load the appropriate skill and guide you through the workflow.
Both skills need at least one way to talk to mStudio. You don't have to set up all three — pick whichever fits.
The Mittwald MCP server runs inside your AI session; the skills call its mcp__mittwald__mittwald_* tools directly. Setup instructions: AI-assisted development guide.
Install:
brew tap mittwald/cli && brew install mw # macOS
# or: npm install -g @mittwald/cli # any OS, Node ≥ 20.7Authenticate:
mw login token # paste your api_write token
mw user get # verify it worksSet environment variable:
export MITTWALD_API_TOKEN=<your-api_write-token>
curl -H "Authorization: Bearer $MITTWALD_API_TOKEN" https://api.mittwald.de/v2/users/selfOr use example.env as a template.
The mittwald-migrate skill creates SSH users on demand when needed. You usually don't need to configure SSH manually.
If you want to SSH in yourself:
- Register your public key at https://studio.mittwald.de/app/profile/ssh-keys
- Your SSH identity is your studio account's email
Details: skills/mittwald-migrate/references/ssh-modes.md
agent-skills/
├── skills/
│ ├── mittwald-migrate/ # Migration skill
│ │ ├── SKILL.md # Workflow index
│ │ ├── playbooks/ # Phase-by-phase guides
│ │ │ ├── discover-source.md
│ │ │ ├── provision-target.md
│ │ │ ├── migrate-files.md
│ │ │ ├── migrate-mysql.md
│ │ │ ├── migrate-postgres.md
│ │ │ ├── cutover-dns.md
│ │ │ ├── rollback.md
│ │ │ └── contribute-learnings.md
│ │ └── references/ # Background knowledge
│ │ ├── mittwald-surfaces.md
│ │ ├── mittwald-mcp-tools.md
│ │ ├── ssh-modes.md
│ │ ├── app-catalog.md
│ │ ├── database-engines.md
│ │ ├── cms-quirks.md
│ │ ├── pitfalls.md
│ │ ├── stateful-container-restore.md
│ │ └── compose-templates/
│ │
│ └── mittwald-zerodeploy/ # Deployment skill
│ ├── SKILL.md # Workflow index
│ ├── playbooks/ # Step-by-step guides
│ │ ├── 01-provision-target.md
│ │ ├── 02-cli-deploy-local.md
│ │ ├── 03-setup-github-action.md
│ │ ├── 04-troubleshoot-deployment.md
│ │ └── 05-verify.md
│ └── references/ # Background knowledge
│ ├── pitfalls.md
│ ├── railpack-overview.md
│ ├── secrets-management.md
│ ├── port-configuration.md
│ └── when-to-escalate.md
│
├── README.md # This file
├── DEVELOPING.md # Contribution guidelines
├── AGENTS.md # OpenAI Codex support
├── LICENSE # MIT license
└── example.env # API token template
| Symptom | Likely cause | Fix |
|---|---|---|
403 PermissionDenied on any API/CLI call |
Token has api_read only |
Re-issue with api_write at https://studio.mittwald.de/app/profile/api-tokens |
Permission denied (publickey) on SSH |
Public key not registered | Register at https://studio.mittwald.de/app/profile/ssh-keys or let skill create ssh-user |
mw: command not found |
CLI not installed | brew tap mittwald/cli && brew install mw |
mw user get says LOGIN REQUIRED |
Not authenticated | mw login token or export MITTWALD_API_TOKEN=... |
| Skill doesn't activate on trigger | AI assistant didn't rescan | Restart your AI assistant |
| Deployment succeeds but 502 errors | Port mismatch | Check logs, reconfigure ingress in mStudio UI |
| Container crash-loops on first start | Permission issue on bind-mount | chmod 777 the path before deploy |
- mittwald-migrate: See
skills/mittwald-migrate/references/pitfalls.mdfor 25+ migration-specific issues - mittwald-zerodeploy: See
skills/mittwald-zerodeploy/references/pitfalls.mdfor the 3 critical deployment gotchas
User: "I want to migrate my WordPress site from Hetzner to Mittwald"
AI Assistant (using mittwald-migrate):
- Loads discovery playbook
- Asks about source environment (Hetzner VPS details)
- Plans target mStudio structure
- Provisions project, app, database
- Migrates files via rsync/scp
- Migrates MySQL database
- Verifies everything works
- Guides DNS cutover
User: "Help me deploy my Express app to mittwald"
AI Assistant (using mittwald-zerodeploy):
- Verifies mStudio setup
- Tests deployment locally with
mw experimental deploy - Sets up GitHub Actions workflow
- Guides through secrets configuration
- Verifies deployment
For a non-destructive test:
"Walk me through Discovery for a fictitious WordPress source. We're not provisioning anything yet."
The skill will exercise API checks without making changes.
If you use OpenAI Codex: place AGENTS.md at your project root. It references the same playbooks via relative paths.
See DEVELOPING.md for:
- Repository structure and design rationale
- Adding new playbooks or references
- Testing skill changes
- Contribution guidelines
- mittwald mStudio: https://studio.mittwald.de
- mittwald Developer Docs: https://developer.mittwald.de
- mittwald CLI: https://github.com/mittwald/cli
- Container Deployment Guide: https://developer.mittwald.de/docs/v2/guides/deployment/container-actions/
- AI-assisted Development: https://developer.mittwald.de/docs/v2/platform/development/ai-coding/
- Railpack: https://railpack.com/getting-started
- mittwald Support: Ticket system at https://studio.mittwald.de (login required)
- GitHub Issues: Report skill issues here
These skills work with any AI coding assistant that supports:
- ✅ Reading markdown files
- ✅ Loading skill definitions from a directory
- ✅ Following structured playbook workflows
MIT License - See LICENSE for details.
Created with love for the mittwald developer community to simplify migrations and deployments.