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

176 lines
7.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
```jsonc
{
"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):
```jsonc
"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
```bash
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.