Files
nagi-bench/AGENTS.md
T
Jesse ZhangandClaude Opus 4.8 cbfce3b7cc feat: add cs-dust2 React case with two model takes + react kind support
New case cs-dust2 (kind:react): a from-scratch React + three.js 5v5 Dust2 FPS.
Two takes registered: Claude Fable 5 / Claude Code / High (with a hand fix for a
64Hz fixed-step firing bug on high-refresh displays) and Claude Opus 4.8 /
Claude Code / Max (dust2-arena, one-shot). React cases commit source only; the
single file is built from source at deploy time. validate-data.ts now accepts a
React project directory as the declared artifact. AGENTS.md rewritten
English-only with React-case, bare-harness (no skills/plugins) and
artifact-anonymity rules.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-14 00:08:28 +01:00

7.8 KiB
Raw Blame History

AGENTS.md

Guidance for humans and coding agents contributing to NAGI BENCH data (https://bench.nagi.fun/). Read this before opening a PR.

What this repo is

The public data repo: community-contributed one-shot LLM eval artifacts. You add a model's raw output for a case; the site renders it verbatim. This repo holds data only — no site code, no build of the page you see.

A contribution is exactly two files

  1. The artifact — the raw model output, dropped at outputs/<artifactDir>/<case-id>.<ext> (e.g. a single-file .html or .svg).
  2. The registration — models/<model-id>.json declaring it.

Do not touch anything else. In particular:

  • Do not edit README.md / README.en.md. The Registry tables are generated from models/*.json and synced automatically after merge. Hand edits are overwritten.
  • Do not edit cases.json. Cases are maintainer-owned.

models/<model-id>.json schema

{
  "label": "DeepSeek V4 Flash",   // human-facing model name (required)
  "vendor": "DeepSeek",            // who makes the model (required)
  "harness": "Reasonix",           // the tool/agent/UI you ran it in (required)
  "effort": "Max",                 // thinking budget / effort level (required)
  "artifactDir": "deepseek-v4-flash/reasonix-max", // optional; defaults to <model-id>
  "order": 50,                      // optional display sort
  "runs": {
    "skeleton-watch": {
      "note": {                     // REQUIRED, bilingual, zh first, no emojis
        "zh": "在 Reasonix 中以 DeepSeek V4 Flash(Max)一次生成,未修改。",
        "en": "One-shot by DeepSeek V4 Flash (Max effort) in Reasonix, unmodified."
      },
      "contributor": "your-github-username"
    }
  }
}

Naming rules

  • The filename IS the entry id — lowercase letters, digits and dashes only (deepseek-v4-flash-reasonix). It is the stable voting key and the default outputs/ folder, so name it after the model, not the harness. Bad: reasonix-reasonix-max. Good: deepseek-v4-flash-reasonix.
  • artifactDir may be one or two dash-case segments (deepseek-v4-flash/reasonix-max); set it when several entries share a model folder. Leave it out to default to the id.

One entry per (model × harness × effort)

The same model under a different harness or effort is a separate models/*.json file, not an extra variant inside an existing one. "Codex", "Cursor", "Claude Code", "AntiGravity" name the harness, never the model.

Multiple takes of one case

Ran the same model × harness × effort on a case more than once and want to keep several outputs? Make runs.<case-id> an array — this is the only case where extra artifacts live inside one entry (a different harness/effort is still a new file, per above):

"runs": {
  "pelican-cycling": [
    { "note": { "zh": "…", "en": "…" }, "contributor": "alice" },
    { "file": "pelican-coastal-ride.svg", "note": { "zh": "…", "en": "…" }, "contributor": "bob" }
  ]
}
  • The first variant may omit file (defaults to <case-id>.<ext>); every extra variant needs its own distinct, descriptive dash-case file (pelican-coastal-ride.svg). Two variants may not resolve to the same file.
  • Never name an artifact index.html — it is served as the folder's default page. Use the case name plus a short suffix (mythos-craft-block-era.html).
  • Each variant carries its own note and may set its own contributor, so different people can add takes to the same model entry.

The note is required and bilingual

Every run needs note.zh + note.en documenting provenance: which harness, which effort, one-shot or fixed. If you applied any fix, say where the bug was and what you changed. No emojis anywhere (hard rule). zh first.

Run the bare harness — NO skills, NO plugins

Run the model with the harness's default model and effort, but otherwise stripped down: disable every skill and every plugin — including the ones the harness ships with and would auto-invoke — and add no MCP servers and no custom system prompt. A skill or plugin (a built-in design, gsap, game, or diagram helper, an added toolset, etc.) rewrites the output far more than the model itself does, so a run with any of them active measures the tooling, not the model × harness × effort. It is not comparable to other entries and will not be accepted. Disclosing it in note does not fix this: leaderboard identity is only model × harness × effort, so a modified setup gets no separate identity — it would just be mixed into a row it is not comparable with.

Keep the artifact anonymous — no identity leaks

The output must not reveal which model, vendor, or harness produced it. Strip any <!-- Generated by ... --> header, watermark, "as an AI / as a large language model" phrasing, or signature in visible text or code comments before you submit. Blind Arena battles depend on outputs being anonymous, so a self-identifying artifact invalidates the entry.

React cases — contribute src/ only

Some cases (marked kind: "react" in cases.json) ask for a real multi-file React project instead of a single file. For these your artifact is the src/ tree only — multiple files and nested folders are fine — dropped at outputs/<artifactDir>/src/. The site owns the whole toolchain and builds every React case with one shared scaffold (its own installed React + Vite), so there is no per-project dependency setup:

  • Do NOT include package.json, a lockfile, node_modules, index.html, or any build / Vite / TS config. The scaffold supplies all of it.
  • Use only libraries the site already ships (React + ReactDOM, plus whatever is in its package.json). The build installs nothing new — you cannot pull in arbitrary npm packages.
  • The entry point is src/main.tsx, mounting your app into <div id="root">.
  • At build time the src/ is bundled and inlined into one self-contained HTML file that the normal viewer serves verbatim. The anonymity rule above still applies: no model / vendor / harness identity anywhere in the code.

Review guidelines

NAGI BENCH stores raw benchmark artifacts. Reviewers, including Codex Review, must not request fixes for gameplay, rendering, animation, JavaScript correctness, UX, visual quality, performance, accessibility, or any other internal behavior of files under outputs/. Broken or low-quality artifacts are valid benchmark data when their provenance is documented.

Only flag:

  • visible model, vendor, harness, contributor, or other identity leaks inside outputs/ that would break blind Arena review;
  • contribution format or schema issues that violate this file or would fail bun scripts/validate-data.ts.

Do not ask contributors to improve or repair the submitted artifacts themselves. If an artifact bug matters, mention it only as optional context for maintainers, not as required PR feedback.

Before you open the PR

bun scripts/validate-data.ts   # the exact schema check CI runs

This enforces: dash-only ids, required bilingual note, declared artifacts exist and are non-empty, no orphan files under outputs/. Green here = green CI.

You do not need to run update-registry.ts — README is synced for you after merge.

Attach a screenshot

The PR template asks for a screenshot of the generation — your harness/IDE showing the model name + effort while producing this artifact. It is the proof that the declared harness / model / effort are real. Paste it into the PR body (GitHub hosts it); do not commit image files into the repo.

Conventions

  • No emojis in any data, note, or UI-bound text.
  • outputs/ files are served verbatim in a sandboxed iframe. Keep them self-contained; external resources should be well-known CDNs only.