Choosing a Runner
A runner is where your workflow executes. Every recipe is runner-agnostic, so the choice is purely about how and when you want the agent to run. This page compares the options, then gives step-by-step setup for each.
Comparison
| Runner | Integration | What you do | Best for |
|---|---|---|---|
| GitHub Actions | Copy files | Copy .github/ files to your repo, set secrets | PR-triggered checks, cron jobs, teams already on Actions |
| gh-aw | Copy files + compile | Copy a single .md workflow, run gh aw compile, set secrets | The same triggers as Actions, in a compact markdown + YAML format |
| Cursor | Copy + UI | Copy AGENTS.md, create an automation in the Cursor dashboard | Teams on Cursor; manual or scheduled triggers, PR/Slack output |
| Claude routine | Copy file or register | Copy a skill file, or register a scheduled task via MCP | On-demand (skill) or continuous, hands-off cron monitoring |
All four authenticate to Hud the same way: a HUD_MCP_KEY passed to npx -y hud-mcp@v2. Get the key at app.hud.io → Settings → API keys.
GitHub Actions
A standard .yml workflow, portable to any GitHub repo. Two engine templates are available — Claude Code CLI and Codex CLI. They're identical except for the agent engine and its API key.
Setup
- Copy three files into your repo, keeping the same paths:
.github/workflows/run-agent.yml— the workflow (manual dispatch, with commented-out PR / cron triggers).github/actions/hud-claude/action.yml— composite action: installs the CLI, configures Hud MCP, runs the prompt.github/actions/hud-claude/prompt.txt— the task prompt
- Add repo secrets (Settings → Secrets and variables → Actions):
HUD_MCP_KEYANTHROPIC_API_KEY(or Bedrock credentials — see model authentication in the FAQ)
- Add your prompt. Replace
prompt.txtwith a recipe fromtask-recipes/prompts/, or pass an inline prompt via thetask_promptworkflow input. - Run it manually (Actions → Hud Agent → Run workflow) to verify.
Common tweaks
- Run on PRs. Uncomment the
pull_request_targettrigger inrun-agent.yml. (See running on pull requests safely first.) - Run on a schedule. Uncomment the
schedule:trigger. Note: GitHub cron only fires on the default branch. - Change the model. Pass
model: 'opus'(orsonnet,haiku) on the action call. - Use Bedrock. Add the AWS credentials step, drop
anthropic-api-key, and setCLAUDE_CODE_USE_BEDROCK: '1',AWS_REGION,ANTHROPIC_MODEL.
Multi-file or multi-env prompts
Prompts like the Weekly Report need extra wiring: add the prompt's env vars to the agent step, copy its supporting files (e.g. deep-insights/*.txt) alongside prompt.txt and point PROMPT_DIR at them, add any extra secrets, and uncomment the right trigger. The blast-radius example is a fully worked complex workflow.
gh-aw
gh-aw (GitHub Agentic Workflows) lets you define a workflow as a single markdown file — YAML frontmatter for config, markdown body for the prompt — which compiles down to a normal Actions workflow.
Prerequisites (one-time)
gh extension install github/gh-aw # install the CLI extension
gh aw init # scaffold your repo for agentic workflowsSetup
- Copy
.github/workflows/agent.mdinto your repo at the same path. - Replace the
## Tasksection ofagent.mdwith your recipe prompt. - Compile:
gh aw compile— this generatesagent.lock.yml. - Commit both
agent.mdand the generatedagent.lock.yml. - Add repo secrets:
HUD_MCP_KEYandANTHROPIC_API_KEY. - Push and test:
git push, thengh aw run agent.
How the workflow file is structured
---
# Frontmatter: triggers, permissions, env vars, MCP servers, network rules.
name: my-workflow
engine: claude
on:
workflow_dispatch:
mcp-servers:
hud-mcp:
command: "npx"
args: ["-y", "hud-mcp@v2"]
env:
HUD_MCP_KEY: "${{ secrets.HUD_MCP_KEY }}"
---
## Task
Describe what the agent should do here. (Paste your recipe prompt.)Common tweaks
- Schedule it. Add a
schedule:block toon:(fires only on the default branch). - Add Slack output. Add
SLACK_BOT_TOKENtoenv:and addapi.slack.com+slack.comto thenetwork.allowedlist. - Open self-heal PRs. Add
safe-outputs: { create-pull-request: { draft: true } }. - Tighten the network allow-list. The default permits
defaults,node,github, plusapi.hud.io/cdn.hud.io. Remove anything you don't need.
The weekly-report example shows a full multi-phase workflow with Slack output and self-heal.
Cursor
Run a recipe as a Cursor Cloud Agent automation, triggered by a schedule, GitHub event, Slack message, or manually.
Setup
- Copy
AGENTS.mdto your repo root and replace its## Tasksection with your recipe prompt. (Cursor Cloud readsAGENTS.mdautomatically.) - Create the automation: cursor.com/automations → Create automation → select your repo and branch.
- Add the Hud MCP server via the MCP dropdown at cursor.com/agents:
{
"mcpServers": {
"Hud-MCP": {
"command": "npx",
"args": ["-y", "hud-mcp@v2"],
"env": {
"HUD_MCP_KEY": "YOUR_HUD_MCP_KEY"
}
}
}
}- Pick an output — Open PR, Send Message, or None.
- Pick a trigger — schedule, GitHub event, Slack message, or manual.
- Set workspace secrets:
HUD_MCP_KEY(plus any others your task needs).
Common tweaks
- Multi-MCP tasks. Add GitHub, Atlassian, Slack, etc. with the same JSON pattern; the agent picks them up by tool name.
- Shell env vars. MCP
envis only available to the MCP process — tokens your shell commands need (e.g.GITHUB_PERSONAL_ACCESS_TOKEN) must be set at the automation level. - Output to PR. Select "Open Pull Request" as the output; Cursor creates the PR from the agent's sandbox changes.
The dead-code-cleanup example is a real Cursor automation using Hud + GitHub + Atlassian MCPs with PR + Jira output.
Claude routine
Two flavors of "Claude with Hud," depending on how you want to invoke it.
Variant A — Skill (on-demand, local)
A Claude Code skill an engineer triggers from a session. Lives in your repo at .claude/skills/<name>/SKILL.md.
- Copy the skill:
cp -r skill/.claude/skills/hud-agent <your-repo>/.claude/skills/(renamehud-agentto fit your task). - Replace the
## Tasksection with your recipe prompt and update the frontmatterdescription. - Register the Hud MCP locally:
claude mcp add -e HUD_MCP_KEY=$HUD_MCP_KEY --scope user --transport stdio hud -- npx -y hud-mcp@v2 - Invoke it in a Claude Code session: type
/<your-skill-name>.
Best for: incident-time investigations, interactive exploration where a human reviews the verdict, repo-local logic that travels with the codebase.
Variant B — Scheduled remote (continuous, hands-off)
A prompt registered with the scheduled-tasks MCP that runs on Anthropic infrastructure on a cron and posts to a sink (Slack, PagerDuty, GitHub issue, webhook). No files added to your repo.
- Open
scheduled-remote/task.mdand replace its## Tasksection with your prompt. - Register it with
mcp__scheduled-tasks__create_scheduled_taskat your desired cadence. - Wire a delivery step so the verdict goes somewhere visible.
Best for: continuous monitoring that fires without anyone invoking it, fleet-wide coverage, hands-off gates (every deploy, every hour).
You can ship bothThe skill is for humans; the scheduled remote is for the machine. Just keep their analysis logic in sync.
The rollback-check example implements both variants of a real production rollback gate.
Pairing a recipe with a runner ("mix & match")
When a matrix cell isn't a worked example, you assemble it yourself:
- Grab the prompt from
task-recipes/prompts/. - Grab the runner template from
runner-templates/. - Drop the prompt into the runner at the path its README expects.
- Check the prompt's env-var table and wire any required variables into the runner config.
