npx skills add ...
npx skills add netlify/context-and-tools --skill netlify-agent-runner
Run AI agent tasks remotely on Netlify using Claude, Codex, or Gemini. Use when the user wants to run an AI agent on their site, get a second opinion from another model, or delegate development tasks to run remotely against their repo.
npx skills add netlify/context-and-tools --skill netlify-agent-runner
Run AI coding agents (Claude, Codex, Gemini) remotely on Netlify infrastructure to automate development tasks on your site.
netlify link or netlify init).--project <name> (a project ID or name) directly to netlify agents:create to target any Netlify site without linking first.netlify agents:create is blocked and the run won't start. That's an account/plan-state issue to surface to the user, not something to work around.Interact with agent tasks only through the documented netlify agents:* commands (plus netlify --help and the public CLI reference). Do not go around the CLI:
https://api.netlify.com/... to fetch, create, or stop a task — the endpoint shapes are not part of the public contract.netlify api <method> as a recovery hatch when a documented command fails.~/Library/Preferences/netlify/config.json (or anywhere on disk) to authenticate side-channel calls.If a documented command fails, report the exact error and context to the user and stop — don't invent an undocumented way to reach the task.
Read this before creating a task — agent tasks behave differently from running an agent locally, and the differences are easy to miss.
main or master). To choose a different base branch for the agent to start from, use -b <branch> and make sure that branch has been pushed to the remote first, or the agent will be working from code that doesn't exist remotely. -b sets the base (starting) branch — not where the results are written (see the next bullet).main) is never overwritten. Review the task's results on that new branch / Deploy Preview — don't expect the base branch to change directly.netlify agents:create returns as soon as the task is queued — it does not block until the work is finished. When the command returns, the task is still running remotely.netlify agents:show <task-id> or netlify agents:list.new → running → one of done, error, or cancelled. Keep polling until the status is one of those last three before you act on the results.netlify agents:create "<prompt>" -a <agent>. Note the task ID it returns (use --json to capture it reliably).netlify agents:show <task-id>. Repeat periodically — there is no completion notification — until the status is done, error, or cancelled.done (or inspect the failure on error).| Flag | Description |
|---|---|
-a, --agent <agent> | Agent type: claude, codex, or gemini |
-p, --prompt <prompt> | The prompt for the agent to execute |
-b, --branch <branch> | Git branch to work on |
-m, --model <model> | Model to use for the agent |
--project <project> | Project ID or name |
--json | Output result as JSON |
All netlify agents:* commands are project-scoped — they operate on a single project (the one your directory is linked to, or the one named with --project <name>), not on your whole team. netlify agents:list shows the tasks for that one project only; there is no team-wide command that lists tasks across all your sites. To see a different site's tasks, run from its linked directory or pass --project <name> for it.
Status values: new, running, done, error, cancelled.
Some of the many things you can do with Agent Runners:
| Category | Example prompt |
|---|---|
| Prototyping / internal tools | "Build an internal dashboard for our HR team" |
| Code reviews | "Audit the code with fresh eyes and identify areas for improvement" |
| Security audits | "Do a deep security audit of our codebase to identify any potential issues" |
| Feature suggestions | "Based on our current codebase & docs, what should we build next?" |
| Performance improvements | "Scan our codebase for performance bottlenecks and suggest improvements" |
| Telemetry & analytics | "What analytics things are we not tracking but probably should" |
| SEO audit | "Audit our site for SEO issues — missing meta tags, broken links, slow pages, missing alt text" |
| Copy improvements | "Rewrite our landing page copy to be more compelling and conversion-focused" |
| Accessibility | "Run an accessibility audit and fix all WCAG 2.1 AA violations" |
| Mobile responsiveness | "Improve the mobile responsiveness — audit every page on small viewports" |
| End-to-end tests | "Add end-to-end tests for our critical user flows using Playwright" |
| Unit tests | "Generate unit tests for our untested utility functions" |
| Documentation | "Generate a README and contributing guide based on our codebase" |
| Error handling | "Add proper error boundaries, logging, and user-friendly error states throughout the app" |
| UX polish | "Add loading states, skeleton screens, & transitions to improve perceived performance" |
| Form hardening | "Add form validation, rate limiting, and spam protection to our contact form" |
| Edge Functions | "Add an edge function for A/B testing on our landing page" |
If you are an AI agent, you can use netlify agents:create to delegate work to an agent running remotely on Netlify — for example, to get a second opinion from a different model.
IMPORTANT — ask for permission first, as a distinct confirmation step. Agent tasks run on Netlify infrastructure and cost the user credits, so a real approval gate matters. Get explicit permission before running any netlify agents:create command — and treat that as its own turn, separate from the user's original request. A directive-sounding prompt ("start a task…", "use the claude agent and pin it to Opus") is not itself the approval: it tells you what they want, but the billable command still waits for a yes.
Make the permission request a concrete proposal, not a menu:
netlify agents:create -p "<the real prompt>" -a codex — not a <placeholder> and not a pick-one list of agents.-a value and say why you picked it ("codex for a second opinion on the auth logic"), rather than offering claude/codex/gemini as interchangeable options.agents:create returns as soon as the task is queued, there's no callback, and you'll poll netlify agents:show <task-id> for the outcome.Never run these commands without the user's approval.
Before delegating, understand what you're handing off (see How Agent Tasks Run above):
netlify agents:show <task-id>) to learn the outcome. Don't assume the task is done just because you delegated it — check the status before relying on or describing its results.Useful for:
# List all tasks for the current site
netlify agents:list
# Filter by status
netlify agents:list --status running
netlify agents:list --status done
netlify agents:list --status error
# Output as JSON
netlify agents:list --jsonnetlify agents:show <task-id>
netlify agents:show <task-id> --jsonnetlify agents:stop <task-id>