Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Deploy web services and static sites to deployment.io, read deployment logs, manage environments, and create AI coding-agent tasks that open PRs in your repos via the deployment.io MCP server. Use when the user says "deploy this", "ship to staging/production", "push to deployment.io", "check deployment logs", "redeploy", "have an agent fix X", "open a PR for Y", "create a task to migrate Z", or asks about deployment.io environments, runners, or tasks.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-06 | ✗→✓ | ▲ Improved | 4% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 128% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 122% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 31% | 0% |
| case-17 | ✗→✓ | ▲ Improved | 202% | 0% |
Deploy and operate apps on deployment.io from any SKILL.md-compliant coding agent (Claude Code, Codex, Cursor, Gemini CLI, Copilot, Antigravity, JetBrains Junie, and more).
This skill assumes the deployment.io MCP server is connected to your agent. If deploy_static_site, deploy_web_service, list_environments, etc. are not available as tools:
For deploy_static_site:
git remote get-url origingit branch --show-current (or the branch the user names)package.json scripts.build (check the branch with git show <branch>:package.json if not checked out)| Framework | publish_directory | |---|---| | Vite, Svelte, Astro | dist | | Create React App | build | | Next.js static export | out | | Hugo | public | | Jekyll | _site |
true for apps that import react-router-dom or vue-router; false for static site generators (Hugo, Jekyll, Astro, Next.js export).For deploy_web_service:
EXPOSE directive or ENV PORT=...app.listen(3000), http.ListenAndServe(":8080"), uvicorn.run(port=8000)process.env.PORT, os.Getenv("PORT") usagedocker/Dockerfile)./health, /healthz, /ping, /ready, /status. Check Dockerfile for a HEALTHCHECK directive. If none found, omit (defaults to /).git show <branch>:Dockerfile. If missing and you're creating one, commit and push before calling the tool.deploy_* call)The runner clones from the remote, so only pushed commits deploy.
git fetch origin <branch>
git log origin/<branch>..HEAD Push anything listed. Do not proceed with unpushed work.
commit_hash: git rev-parse origin/<branch>
changes_summaryEvery deploy_* takes a changes_summary. Human reviewers see it on approval requests; keep it one-line and plain-English (don't paste raw git log). Example: "Hotfix for null-pointer in /api/users endpoint when email is missing."
environment_idAlways call list_environments first. If none match the target, offer to create one via create_environment (which itself calls list_runners first).
deploy_* and get_deployment_logs are async — they return a structured accepted result containing job_id, poll_tool, poll_args, and poll_interval. Follow those fields: poll get_job_status at poll_interval until is_done: true. Log output lands in output.
Write tools on protected environments return a message starting "⏳ Approval required" with a request_id. Surface the approval URL to the user. Then poll get_approval_status with the request_id. Do not retry the original deploy call — the server runs it automatically on approval.
list_deployments <environment_id> → find the deployment_id.get_deployment_logs with a 5-minute window around the failure → returns a job_id.get_job_status until is_done; read output.deploy_* job's get_job_status already contains build logs; dashboard URL in the message body.A task is a unit of engineering work you hand to an AI coding agent: it makes code changes across one or more repositories and opens a pull request per repository for review. Use tasks when the user wants the agent to make the change for them, rather than deploying code they've already written.
Tasks burn the user's Anthropic/Bedrock budget — typical runs use 50k–500k tokens, larger refactors more. Do not call create_task speculatively. Confirm with the user before calling, especially when wrapping the call inside a longer agent workflow ("I'll have deployment.io fix this for you, is that OK?").
create_taskrepository_url: git remote get-url origin (or the URL the user names).branch: the base branch to work from. Detect the default with git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@', or use the branch the user names."sonnet"). Explicit values: "haiku" (cheaper, simpler tasks), "sonnet" (balanced), "opus" (harder refactors).create_task returns an accepted envelope with task_id, poll_tool: "get_task_status", poll_args, poll_interval: "15s". Poll until is_done: true. Tasks take minutes to hours; don't poll faster than 15s.
get_task_status returns the task's rolled-up state, per-repo PR URLs (populated once the PRs are opened), and the last 10 log lines from the most recent agent run. Full agent transcripts live at the url field — share that with the user for deep inspection.
Terminal states:
Succeeded — PRs opened (check repositories[].pr_url). Surface each PR link to the user for review.NoChanges — agent ran but produced no diffs. Usually means the description was satisfied by existing code, or the agent couldn't find a path. Read latest_run_logs and surface to the user.Failed — read latest_run_logs and the dashboard url to diagnose. Common causes: the agent ran out of turns, or build/test checks failed during the run.Cancelled — user (or admin) stopped the task.Other measured skills in the registry, with their headline benchmark lift.