Browser benchmark task author
Why this skill exists
You are building tasks for data/real_world_bench.json — a browser-agent benchmark where
each task is graded checkpoint-by-checkpoint (per-rubric). A good task is real-world,
completable, and free of any risk-control block the autonomous run can't get past: an agent
driving ego-browser must be able to actually finish it, and a grader must be able to verify each checkpoint from screenshots,
trajectory, or final output.
The one rule that matters most, and the reason this skill exists:
Never write a task you have not run through ego-browser first.
Web research and model priors lie about bot-friendliness — sites that look "low risk" on
paper hard-block real automation (Product Hunt → Cloudflare "Just a moment"; Etsy → DataDome
- forced login at checkout). The only proof is a live ego-browser probe. Then calibrate the
rubrics to what you actually observed, not to what you imagined.
This operationalizes the repository's core authoring rule: calibrate every task from a real
ego-browser run.
The loop
Do one task at a time. Read the referenced file the first time you need its detail.
Load context. Read data/real_world_bench.json (tail for the live schema; scan all
website + task_id values to avoid duplicating a site or play you already have). Skim
references/schema.md for the schema and references/authoring.md for rubric discipline.
Recall the bot-friendliness memory if present.
Pick a candidate. Honor the user's constraints (US mainstream site, required level,
cross-site wanted?, a mandated site such as reddit?). Avoid sites already in the dataset
unless the play is genuinely new. To cover breadth fast you may fan out research with a
Workflow (parallel web-search lanes → shortlist ranked by bot-risk), but research only
prioritizes probe order — it never replaces the probe. → references/site-selection.md
Probe with ego-browser — this is the gate. Drive the EXACT interactions the task will
need: reach the start page, confirm the autonomous run won't be walled off, apply every
filter/sort/form step, and confirm the target data is actually extractable. Capture the real
trajectory and concrete values. An automated hard wall (Cloudflare / DataDome / PerimeterX
that won't clear) or an unreachable key interaction → drop it and pick another, do not
write the task. A human-verification / captcha is the one carve-out: pause and hand off to
the user to solve it once — if it then clears and does not return on repeated probing,
treat it as a one-time trust gate (not a per-request wall) and the site is usable; if the SAME
site re-challenges after that solve, skip it — a per-entry captcha can't be driven by
the agent at run time. Probes share one real browser, so run them sequentially, never in
parallel.
→ references/ego-browser-testing.md
Design + write confirmed_task. Fit a proven, gradeable pattern (aggregate-and-compute /
form-fill-then-stop / calculator / cross-site or cross-app), with concrete filters, fields,
computations, and stop-boundaries. Write it in natural user voice — first person, the
motivation woven in, like the odysseys medium/hard tasks. No operator meta-instructions
("read-only", "don't log in", "must use old.reddit.com") — a real user would not say those;
put any such rationale in the note field. → references/authoring.md
Write rubrics (3–6). Each rubric = one independently verifiable checkpoint; verification
is state-based (what a grader sees in a screenshot / final output, not an action
sequence); operation rubrics must be "applied AND confirmed"; all of it calibrated to your
real run. → references/authoring.md
Append + validate. Append the object surgically (do not reformat or rewrite existing
entries — keep the diff to an append). Then validate:
uv run python -c "import json; json.load(open('data/real_world_bench.json')); print('json ok')"
uv run python -c "from ego_bench.datasets import _ADAPTERS; ts=_ADAPTERS['real-world-bench']().load(); t=[x for x in ts if x.task_id==NEW_ID][0]; print(len(ts), 'rubrics:', len(t.metadata['rubrics']))"
Missing/empty rubrics fail-loud in Stage B, so confirm the new entry carries them.
Capture learnings. Update the bot-friendliness memory with any new pass/fail site and
its evidence.
Definition of done
Reference files
references/schema.md — the Odysseys schema fields, semantics, and a worked JSON example.
references/ego-browser-testing.md — the gate: risk-control signals, copy-paste probe
recipes, special cases (React inputs, cross-origin editors, captcha handoff), and the known
bot-friendly / bot-hostile site table.
references/authoring.md — the proven task patterns, the natural-phrasing rules (with
before/after), rubric discipline with examples, and the anti-patterns to avoid.
1---2name: browser-bench-task3description: Author or expand browser-agent benchmark tasks in data/real_world_bench.json (Odysseys schema, per-rubric graded). Use when creating, adding, or expanding real-world browser tasks, writing rubrics, or picking bot-friendly sites — every task MUST be verified runnable through ego-browser before it is written.4---56# Browser benchmark task author78## Why this skill exists910You are building tasks for `data/real_world_bench.json` — a browser-agent benchmark where11each task is graded checkpoint-by-checkpoint (per-rubric). A good task is **real-world,12completable, and free of any risk-control block the autonomous run can't get past**: an agent13driving ego-browser must be able to actually finish it, and a grader must be able to verify each checkpoint from screenshots,14trajectory, or final output.1516The one rule that matters most, and the reason this skill exists:1718> **Never write a task you have not run through ego-browser first.**19> Web research and model priors *lie* about bot-friendliness — sites that look "low risk" on20> paper hard-block real automation (Product Hunt → Cloudflare "Just a moment"; Etsy → DataDome21> + forced login at checkout). The only proof is a live ego-browser probe. Then calibrate the22> rubrics to what you actually observed, not to what you imagined.2324This operationalizes the repository's core authoring rule: calibrate every task from a real25ego-browser run.2627## The loop2829Do **one task at a time**. Read the referenced file the first time you need its detail.30311. **Load context.** Read `data/real_world_bench.json` (tail for the live schema; scan all32 `website` + `task_id` values to avoid duplicating a site or play you already have). Skim33 `references/schema.md` for the schema and `references/authoring.md` for rubric discipline.34 Recall the bot-friendliness memory if present.35362. **Pick a candidate.** Honor the user's constraints (US mainstream site, required `level`,37 cross-site wanted?, a mandated site such as reddit?). Avoid sites already in the dataset38 unless the *play* is genuinely new. To cover breadth fast you may fan out research with a39 `Workflow` (parallel web-search lanes → shortlist ranked by bot-risk), but research only40 **prioritizes probe order — it never replaces the probe.** → `references/site-selection.md`41423. **Probe with ego-browser — this is the gate.** Drive the EXACT interactions the task will43 need: reach the start page, confirm the autonomous run won't be walled off, apply every44 filter/sort/form step, and confirm the target data is actually extractable. Capture the real45 trajectory and concrete values. An **automated hard wall** (Cloudflare / DataDome / PerimeterX46 that won't clear) or an unreachable key interaction → **drop it and pick another**, do not47 write the task. A **human-verification / captcha** is the one carve-out: pause and hand off to48 the user to solve it **once** — if it then clears and does **not** return on repeated probing,49 treat it as a one-time trust gate (not a per-request wall) and the site is usable; if the SAME50 site re-challenges **after** that solve, **skip it** — a per-entry captcha can't be driven by51 the agent at run time. Probes share one real browser, so run them **sequentially, never in52 parallel.**53 → `references/ego-browser-testing.md`54554. **Design + write `confirmed_task`.** Fit a proven, gradeable pattern (aggregate-and-compute /56 form-fill-then-stop / calculator / cross-site or cross-app), with concrete filters, fields,57 computations, and stop-boundaries. Write it in **natural user voice** — first person, the58 motivation woven in, like the odysseys medium/hard tasks. **No operator meta-instructions**59 ("read-only", "don't log in", "must use old.reddit.com") — a real user would not say those;60 put any such rationale in the `note` field. → `references/authoring.md`61625. **Write rubrics** (3–6). Each rubric = one independently verifiable checkpoint; verification63 is **state-based** (what a grader sees in a screenshot / final output, not an action64 sequence); operation rubrics must be "applied AND confirmed"; all of it calibrated to your65 real run. → `references/authoring.md`66676. **Append + validate.** Append the object **surgically** (do not reformat or rewrite existing68 entries — keep the diff to an append). Then validate:69 ```bash70 uv run python -c "import json; json.load(open('data/real_world_bench.json')); print('json ok')"71 uv run python -c "from ego_bench.datasets import _ADAPTERS; ts=_ADAPTERS['real-world-bench']().load(); t=[x for x in ts if x.task_id==NEW_ID][0]; print(len(ts), 'rubrics:', len(t.metadata['rubrics']))"72 ```73 Missing/empty rubrics fail-loud in Stage B, so confirm the new entry carries them.74757. **Capture learnings.** Update the bot-friendliness memory with any new pass/fail site and76 its evidence.7778## Definition of done7980- [ ] Ran end-to-end through ego-browser — no automated hard wall, and any human-verification cleared on a **single** handoff and did **not** recur; key interactions reached; data extracted.81- [ ] `confirmed_task` reads like a real user request — first person, motivated, **zero operator meta-instructions**.82- [ ] 3–6 rubrics, each one verifiable checkpoint, **calibrated to the real run** (not invented).83- [ ] JSON valid, adapter loads, new entry has rubrics.84- [ ] `level` / `site_mode` / `site_count` / `categories` / `reference_length` filled; `note` carries operator hints + the calibration record.8586## Reference files8788- `references/schema.md` — the Odysseys schema fields, semantics, and a worked JSON example.89- `references/ego-browser-testing.md` — **the gate**: risk-control signals, copy-paste probe90 recipes, special cases (React inputs, cross-origin editors, captcha handoff), and the known91 bot-friendly / bot-hostile site table.92- `references/authoring.md` — the proven task patterns, the natural-phrasing rules (with93 before/after), rubric discipline with examples, and the anti-patterns to avoid.