A one-command scaffold for a non-interactive AI agent harness that runs on the GitHub Actions runner — the 9th MetaHarness host (ADR-033) and the only one built for CI/CD.
Every other MetaHarness host is interactive: a human starts a session and watches the agent work. GitHub Actions is different in kind. There's no human at the keyboard — execution is triggered by a webhook (a push, a pull request, an issue comment, or a schedule), the "operator" is the runner, and the harness must complete its task autonomously, emit structured output, and exit cleanly.
@metaharness/github-actions is a thin wrapper around the metaharness CLI. Running it is equivalent to npx metaharness my-bot --template minimal --host github-actions.
npx @metaharness/github-actions@latest my-bot
cd my-bot
git add .github && git commit -m "add harness workflow" && git pushThen add your model-provider key as a repository secret (Settings → Secrets and variables → Actions → ANTHROPIC_API_KEY) and trigger it from the Actions tab, or by commenting on an issue.
The scaffold drops into .github/:
.github/workflows/<name>.yml— the trigger workflow. Safe defaults:workflow_dispatch+issue_comment.push,pull_request, andscheduleare included but commented out — uncomment to enable..github/actions/<name>/action.yml— a reusable composite action the workflow calls, so the harness logic works across multiple workflows.install.md— the wiring + permissions runbook..claude-plugin/plugin.json— the same folder also loads as a Claude Code plugin viaclaude -p --plugin-dir.
Default-deny → least-privilege token (ADR-022). The workflow's permissions: block starts at contents: read and grants only what the harness policy's allow-list implies:
| allow token | GitHub scope |
|---|---|
create-pr, push-branch |
contents: write, pull-requests: write |
label, triage |
issues: write |
checks, status |
checks: write |
Anything unmapped stays denied. For production-touching jobs, gate behind a GitHub Environment with required reviewers — the token scope alone does not add human review.
Validate the scaffold like any other harness:
npx harness doctor # workflow + action YAML parse
npx harness validate # full umbrella gate
npx harness mcp-scan # flag over-broad permission grantsSource + all 19 example packages: https://github.com/ruvnet/agent-harness-generator/tree/main/examples-packages