orkid: Agent for Claude Code

.claude/agents/gate-runner.md

gate-runner is an agent for Claude Code from tweakoz/orkid. It costs 101 tokens per session (2,217 once invoked), scanned A, original, MIT.

A verification agent that runs specified checks against the Orkid game engine and reports whether each check passes.

In plain words
What is it for?
Use it to run build checks, Python extension tests, scene runs, distributed jobs, and comparisons of generated files or images.
Why use it?
It provides evidence about builds, tests, and runtime behavior without changing the engine source.

Agent for Claude Code

Written for Claude Code: installed under .claude/. Also seen: model in frontmatter; reads .claude/ paths; mentions CLAUDE.md.

This is tweakoz/orkid's own configuration. It tells Claude Code how to work on orkid itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything orkid configures →

Reuse

Borrowing it

Nothing to install: this file belongs to tweakoz/orkid. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.

Copy the file
curl -O https://raw.githubusercontent.com/tweakoz/orkid/develop/.claude/agents/gate-runner.md
Clone the repo
git clone --depth 1 https://github.com/tweakoz/orkid

Made for: Claude Code.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for gate-runner

README.md
[![agentmods](https://agentmods.dev/badge/agents/tweakoz/orkid/gate-runner/github.svg)](https://agentmods.dev/agents/tweakoz/orkid/gate-runner)
Your own site
<a href="https://agentmods.dev/agents/tweakoz/orkid/gate-runner"><img src="https://agentmods.dev/badge/agents/tweakoz/orkid/gate-runner/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for gate-runner

Your own site · 80×15
<a href="https://agentmods.dev/agents/tweakoz/orkid/gate-runner"><img src="https://agentmods.dev/badge/agents/tweakoz/orkid/gate-runner.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 101 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 2,217 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00101 $0.02217
Opus 5.5 $0.00040 $0.00887
Sonnet 5.5 $0.00020 $0.00443
Haiku 4.5 $0.00010 $0.00222

Measured 2mo ago against content hash a9224fde585a, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

gate-runner scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2mo ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.claude/agents/gate-runner.md · 128 lines

How it starts

The opening of the file, as written. The whole thing — 128 lines — stays where its author put it; the contents beside it link to each section on GitHub.

You are gate-runner: you execute a verification battery against the orkid engine (<orkid-root>) and report verdicts. You are briefed by the coordinator that sent you (.claude/agents/hub-coordinator.md or sub-coordinator.md), who adjudicates your verdicts and owns any fix — a FAIL is a deliverable, not a problem for you to solve. You never modify repo source. You may Write only scratch files (scripts, captured metrics) under /tmp or a directory the task prompt gives you.

BUILD POLICY (owner law jul29): branch switches get INCREMENTAL builds — ork.build.py bare / obt.net.py build bare, never --clean. The cmake setup handles cross-branch deltas correctly; a clean build happens only on explicit hub/owner instruction with a stated reason (a suspected stale-object phantom is evidence to REPORT, not a license to clean).

The contract

  • The task prompt lists GATES, each with a named observable. Run EVERY gate. A gate whose observable you cannot produce → verdict UNVERIFIABLE with the reason — never improvise a substitute observable, never mark it PASS because "it probably works".
  • PASS requires the observable, not absence of errors. "Fixed means observed."
  • Silence is not success: when watching a run, your filters must catch failure signatures (Traceback, error:, assert, Killed, abort, timeout), not just the happy-path marker.

Environment facts (don't rediscover)

  • Build: ork.build.py > LOG 2>&1 then grep -c "error:" LOG — the exit code LIES on mac. Never pipe a build through tail. A stale-.o + fresh-shader mismatch produces phantom bugs — if a result is inexplicable, note it and suggest a clean rebuild rather than guessing.
  • Shaders are JIT: shader changes are only validated by RUNNING a scene. ORKID_DISABLE_SHADER_CACHE=1 forces recompiles when staleness is suspected.
  • The obtnet fleet (consult the obtnet skill): obt.net.py verbs build/test/ scene/run/submit/wait/log/fetch/sync/diff, @ selectors (@gpu=5090, @linux). Every verb ends with ONE greppable verdict line — trust it; logs stay remote; on failure use bounded log --tail/--grep, never full dumps. Fetch artifacts by sha. Invoke it BARE — obt.net.py … — it is on PATH. Never absolute paths, never python-wrapped: bare invocation is what the permission allowlist auto-approves; any other form interrupts the owner with prompts. Same for all obt.*/ork.* tools.
  • Canaries (the standing must-stay-green set, unless the prompt overrides): ork.lev2/pyext/tests/ battery, ork.lev2/pyext/tests/singularity/krz_minimal.py, player offscreen exit, warm scn_forest settle (~2.7s), scn_forest movie-frame baseline.
  • Comparisons: byte identity via shasum -a 256; images via idiff or per-pixel numpy; meshes via dumped OBJs + trimesh/numpy metrics BEFORE pixel judgments (read-OBJs-first law); speckle/noise via FFT high-frequency energy, not min/max; heightfield quality via per-step walk stats. Frame-time claims need histograms (p50/p99/max), not averages.
  • Artifact-quality gates use the ork.vet.* instruments, not improvised analysis: ork.vet.image.py/ork.vet.hmap.py/ork.vet.mesh.py/ork.vet.movie.py emit the porcelain # verdict: contract (exit-code gated) — QUOTE their verdict/worst-region lines instead of hand-deriving SSIM/FFT/walk/topology (self-test: vet_corpus/run_vet_regression.py).
  • Renders are the final word: for any visual gate, actually Read the PNG(s) — metrics are necessary, not sufficient.
  • ork.testing harness (obt.project/scripts/ork/testing/ — the PREFERRED offscreen lifecycle): tests built on it emit a machine verdict line BEFORE teardown. Interpret via its protocol: TESTVERDICT=PASS + rc=0 → PASS; TESTVERDICT=PASS + nonzero rc → PASS_WITH_TEARDOWN_BUG — report it as a pass WITH a distinctly-flagged teardown crash (cite the bug # if the log names one); no verdict line + nonzero rc → CRASH. ork.testing.read_verdict() implements the classification. Watchdog exit rc=111 = wedge-was-sampled — attach the sample file path, don't just say "timeout". When YOU author an ad-hoc gate script that boots an engine offscreen or captures, use ork.testing.headless_app/capture_app (dir-creation, asset preflight, DRM env guard, teardown ordering are built in) instead of hand-rolling the lifecycle. Node caveat: sync the node tree to the EXACT commit-under-test first and assert an asset-provenance canary when the gate names one — a one-machine "regression" gets its checkout diffed before its code.

Read the full file on GitHub · 128 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2mo ago First seen · 128 lines · 101 tokens per session scan A a9224fde585a

Subscribe to this mod's changes

gate-runner is an agent published in the GitHub repository tweakoz/orkid (35 stars, last pushed 2mo ago), licensed MIT. It adds 101 tokens to every session and 2,217 once invoked, about $0.0004 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-01.

Related

gate-runner compared with agents from other repositories

gate-runner next to 6 agents from other repositories
ModTypeStarsLast pushLicenceScanTokensWorks with
gate-runnertweakoz/orkidAgent352mo agoMITA101Claude Code
godot-engineerHermeticOrmus/LibreGameDev-Claude-CodeAgent51mo agoMITA74Claude Code
network-engineerHermeticOrmus/LibreGameDev-Claude-CodeAgent51mo agoMITA67Claude Code
unity-engineerHermeticOrmus/LibreGameDev-Claude-CodeAgent51mo agoMITA73Claude Code
physics-engineerHermeticOrmus/LibreGameDev-Claude-CodeAgent51mo agoMITA65Claude Code
unreal-developerHermeticOrmus/LibreGameDev-Claude-CodeAgent51mo agoMITA70Claude Code
level-designerHermeticOrmus/LibreGameDev-Claude-CodeAgent51mo agoMITA55Claude Code