[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nvidia-create-custom-grader":3,"mdc--e4lfb-key":46,"related-repo-nvidia-create-custom-grader":1789,"related-org-nvidia-create-custom-grader":1854},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":20,"repoUrl":21,"updatedAt":22,"license":23,"forks":24,"topics":25,"repo":41,"sourceUrl":44,"mdContent":45},"create-custom-grader","create custom SkillEvaluator graders","Use when converting an existing benchmark, rubric, verifier, task YAML\u002FJSON, or domain check into SkillEvaluator BYOG\u002FBYOT custom evaluation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},"nvidia","NVIDIA","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fnvidia.png",[12,16,17],{"name":13,"slug":14,"type":15},"Evals","evals","tag",{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"Testing","testing",367,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FSkillEvaluator","2026-08-31T09:19:06.795331",null,36,[26,27,28,29,30,31,32,33,34,35,36,37,38,39,40],"agent-evaluation","agent-security","agent-skills","agentic-ai","benchmark","claude-code","codex","evaluate","evaluation","security-scanner","skill-eval","skill-evals","skill-evaluation","skill-evaluator","skills",{"repoUrl":21,"stars":20,"forks":24,"topics":42,"description":43},[26,27,28,29,30,31,32,33,34,35,36,37,38,39,40],"Multi-tier framework for evaluating AI agent skills with quality gates, semantic overlap detection, synthetic evaluation dataset generation, and live agent evaluation that measures how skills affect agent behavior.","https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FSkillEvaluator\u002Ftree\u002FHEAD\u002Fsrc\u002Fskillevaluator\u002Ftier3\u002Freference_skills\u002Fcreate-custom-grader","---\nname: create-custom-grader\ndescription: Use when converting an existing benchmark, rubric, verifier, task YAML\u002FJSON, or domain check into SkillEvaluator BYOG\u002FBYOT custom evaluation.\nmetadata:\n  author: SkillEvaluator Maintainers \u003Cmaintainers@example.com>\n---\n\n# Create Custom Grader\n\nConvert team-owned benchmark definitions into runnable SkillEvaluator custom graders\nand, when needed, native Harbor tasks.\n\n## Purpose\n\nHelp an agent author valid SkillEvaluator BYOG\u002FBYOT files from a user's\nbenchmark instead of leaving the user with empty grader templates.\n\n## When To Use\n\nUse this skill when the user wants to:\n\n- bring an existing benchmark into SkillEvaluator\n- turn a rubric into `evals\u002Fgrader.py` or `evals\u002Fgrader.sh`\n- add custom metrics beside the default evaluator metrics\n- convert task files such as `task.yaml`, `task.json`, pytest checks, or shell\n  verifiers into BYOG or BYOT\n- prove a team can run its own benchmark through SkillEvaluator\n\nDo not use this skill for ordinary `evals\u002Fevals.json` authoring when no custom\ngrading logic is needed. Use the normal dataset authoring workflow for that.\n\n## Instructions\n\n1. Read the target skill, existing `evals\u002F`, benchmark prompts, fixtures, and any verifier code.\n2. Choose `default_plus_custom` when custom metrics should complement default evaluator scoring.\n3. Choose `custom_only` only when the user wants the custom grader to own pass\u002Ffail semantics.\n4. Write or update `evals\u002Fgrader.py` or `evals\u002Fgrader.sh`, then validate the Harbor contract.\n\n## Examples\n\n```bash\nskillevaluator init-custom-grader \u003Cskill-dir> --language python --mode default_plus_custom\nskillevaluator tier3 validate \u003Cskill-dir>\n```\n\n## Prerequisites\n\n- The target skill directory should contain `SKILL.md`.\n- The SkillEvaluator CLI should be available as `skillevaluator`.\n- Full E2E evaluation may need agent credentials, sandbox access, GPU access, or\n  service credentials depending on the benchmark.\n\n## Core Choice\n\nChoose one path before writing files:\n\n| User need | Evaluator shape |\n| --- | --- |\n| Existing `evals.json` task plus extra domain checks | Top-level BYOG: `evals\u002Fgrader.py` or `evals\u002Fgrader.sh` |\n| Existing benchmark prompt\u002Frubric that can run in the generated workspace | Top-level BYOG plus `evals\u002Fevals.json` and `evals\u002Ffiles\u002F` |\n| Benchmark owns task layout, setup, service lifecycle, or verifier harness | Native BYOT\u002FBYOG: `evals\u002Fharbor\u002F\u003Ccase>\u002F...` |\n| User wants only custom reward\u002Fpass criteria | `grading.mode: custom_only` |\n| User wants default evaluator dimensions plus custom metrics | `grading.mode: default_plus_custom` |\n\nDefault to `default_plus_custom` unless the user explicitly wants the custom\ngrader to replace the default evaluator metrics.\n\n## Workflow\n\n1. Resolve the target skill and benchmark source.\n   Read the target `SKILL.md`, existing `evals\u002F`, benchmark prompts, fixtures,\n   rubric, reference solution, tags, and any expected trigger\u002Fnon-trigger\n   metadata.\n\n2. Map benchmark fields into evaluator inputs.\n   Use benchmark prompts or prompt variants as `question` entries. Use the\n   target skill as `expected_skill`. Put each case's required starter files\n   under `evals\u002Ffiles\u002F\u003Ccase-id>\u002F`, and declare\n   `files: [\"evals\u002Ffiles\u002F\u003Ccase-id>\"]` on every corresponding eval entry. Do not\n   omit `files` in a multi-case dataset, because omission intentionally stages\n   the entire shared directory for legacy compatibility. Preserve\n   benchmark-specific rubric text in the entry only when the grader needs to\n   read it.\n\n3. Scaffold the evaluator contract.\n   For generated tasks:\n   ```bash\n   skillevaluator init-custom-grader \u003Cskill-dir> --language python --mode default_plus_custom\n   ```\n   For shell checks:\n   ```bash\n   skillevaluator init-custom-grader \u003Cskill-dir> --language shell --mode default_plus_custom\n   ```\n   For native Harbor tasks:\n   ```bash\n   skillevaluator init-harbor-task \u003Cskill-dir> --case-id \u003Ccase-id> --with-config\n   ```\n\n4. Replace scaffold placeholders.\n   The custom grader is real executable logic, not metadata. It must read\n   available evidence, compute numeric scores, and write the evaluator reward\n   contract.\n\n5. Validate before running.\n   ```bash\n   skillevaluator validate \u003Cskill-dir> --harbor-contract\n   ```\n   Fix missing files, invalid Python, missing reward output, and native Harbor\n   ID mismatches before evaluation.\n\n6. Run the deepest practical proof.\n   Prefer a real with-skill\u002Fbaseline run. If services, credentials, GPU, or\n   cost block full E2E, state exactly what was validated and what was not.\n\n## Grader Contract\n\nPython and shell graders run inside the Harbor verifier context. They may read:\n\n- `\u002Flogs\u002Fagent\u002Ftrajectory.json` for agent actions and final answer evidence\n- `\u002Ftests\u002Fentry.json` for the eval case metadata\n- `\u002Fworkspace\u002Finput\u002F` for the entry's declared committed fixtures from\n  `evals\u002Ffiles\u002F`\n- `\u002Fsolution\u002F` or other task outputs only when the task environment produces\n  them\n\nThey must write:\n\n- `\u002Flogs\u002Fverifier\u002Freward.json`\n- `\u002Flogs\u002Fverifier\u002Freward.txt` with a numeric score from `0.0` to `1.0`\n\nUse this reward shape:\n\n```json\n{\n  \"overall\": 0.92,\n  \"custom_metrics\": {\n    \"domain_repair\": 1.0,\n    \"domain_verification\": 0.8\n  },\n  \"details\": {\n    \"domain_repair\": {\n      \"score\": 1.0,\n      \"reason\": \"The solution repaired the required files.\"\n    }\n  }\n}\n```\n\nIn `default_plus_custom`, default evaluator scoring keeps its `overall`\nauthoritative and adds the grader's `custom_metrics` into reports. In\n`custom_only`, the grader's `overall` is the pass\u002Ffail reward.\n\nNever emit custom metric names that collide with reserved evaluator fields:\n`security`, `skill_execution`, `skill_efficiency`, `accuracy`,\n`goal_accuracy`, `behavior_check`, `overall`, `details`, `metrics`,\n`metric_set`, or `entry_id`.\n\n## Translation Rules\n\n- Convert each rubric item into a deterministic check when possible.\n- If a rubric item requires judgment, encode observable proxies and explain the\n  limits in `details`.\n- Keep metrics stable across baseline and with-skill runs.\n- Score only the generated task workspace. Do not accidentally score copied\n  skill source files, reference fixtures, or grader templates.\n- Keep custom metric values clamped to `0.0` through `1.0`.\n- Preserve benchmark prompt variants as separate eval entries only when they\n  exercise meaningfully different behavior.\n- Convert expected trigger\u002Fnon-trigger metadata into `expected_skill`,\n  `expected_behavior`, negative cases, or custom metrics that inspect\n  trajectory evidence.\n\n## RAPIDS-Style Example\n\nFor a benchmark task with `task.yaml`, `code\u002F`, prompt variants, coverage, and a\nrubric:\n\n1. Copy `code\u002F` into `evals\u002Ffiles\u002F\u003Ccase-id>\u002F`.\n2. Create one or more `evals\u002Fevals.json` entries from the prompt variants, and\n   set `files: [\"evals\u002Ffiles\u002F\u003Ccase-id>\"]` on each corresponding entry.\n3. Set `expected_skill` to the benchmark's target skill.\n4. Implement `evals\u002Fgrader.py` to inspect the agent trajectory and changed\n   workspace files.\n5. Emit custom metrics for each rubric criterion, for example\n   `rapids_diagnosis`, `rapids_requirements_repair`,\n   `rapids_repair_safety`, and `rapids_verification`.\n6. Validate and run SkillEvaluator with and without the target skill, then\n   report both default evaluator metrics and custom metric deltas.\n\n## Limitations\n\n- The skill can design and implement deterministic checks, but ambiguous rubric\n  judgment still needs explicit observable proxies or a human-approved scoring\n  policy.\n- `init-custom-grader` creates scaffolding only; the agent must replace the\n  placeholder scoring logic.\n- Local validation proves file contracts, not live agent behavior. Do not call\n  the benchmark proven until an evaluation run has produced real rewards.\n\n## Troubleshooting\n\n| Problem | Fix |\n| --- | --- |\n| `evals\u002Fevals.json` missing | Create entries from the benchmark prompt or run `init-custom-grader` to seed one. |\n| Custom metrics do not appear | Ensure `reward.json` has numeric values under `custom_metrics` and no reserved-name collisions. |\n| `custom_only` fails | Write numeric `overall` in `reward.json` or numeric `reward.txt`. |\n| Grader scores copied fixtures | Restrict file searches to generated workspace\u002Foutput paths, not the skill package or grader source. |\n\n## Final Response\n\nWhen finished, report:\n\n- files created or changed\n- exact validation and evaluation commands\n- default evaluator metric results\n- custom metric results\n- whether the proof was full E2E or only static\u002Flocal validation\n- any benchmark rubric criteria that remain partly judgment-based\n",{"data":47,"body":50},{"name":4,"description":6,"metadata":48},{"author":49},"SkillEvaluator Maintainers \u003Cmaintainers@example.com>",{"type":51,"children":52},"root",[53,61,67,74,79,85,90,151,164,170,230,236,342,348,380,386,391,530,542,548,854,860,865,917,922,959,964,1250,1290,1371,1377,1448,1454,1473,1576,1582,1606,1612,1739,1745,1750,1783],{"type":54,"tag":55,"props":56,"children":57},"element","h1",{"id":4},[58],{"type":59,"value":60},"text","Create Custom Grader",{"type":54,"tag":62,"props":63,"children":64},"p",{},[65],{"type":59,"value":66},"Convert team-owned benchmark definitions into runnable SkillEvaluator custom graders\nand, when needed, native Harbor tasks.",{"type":54,"tag":68,"props":69,"children":71},"h2",{"id":70},"purpose",[72],{"type":59,"value":73},"Purpose",{"type":54,"tag":62,"props":75,"children":76},{},[77],{"type":59,"value":78},"Help an agent author valid SkillEvaluator BYOG\u002FBYOT files from a user's\nbenchmark instead of leaving the user with empty grader templates.",{"type":54,"tag":68,"props":80,"children":82},{"id":81},"when-to-use",[83],{"type":59,"value":84},"When To Use",{"type":54,"tag":62,"props":86,"children":87},{},[88],{"type":59,"value":89},"Use this skill when the user wants to:",{"type":54,"tag":91,"props":92,"children":93},"ul",{},[94,100,120,125,146],{"type":54,"tag":95,"props":96,"children":97},"li",{},[98],{"type":59,"value":99},"bring an existing benchmark into SkillEvaluator",{"type":54,"tag":95,"props":101,"children":102},{},[103,105,112,114],{"type":59,"value":104},"turn a rubric into ",{"type":54,"tag":106,"props":107,"children":109},"code",{"className":108},[],[110],{"type":59,"value":111},"evals\u002Fgrader.py",{"type":59,"value":113}," or ",{"type":54,"tag":106,"props":115,"children":117},{"className":116},[],[118],{"type":59,"value":119},"evals\u002Fgrader.sh",{"type":54,"tag":95,"props":121,"children":122},{},[123],{"type":59,"value":124},"add custom metrics beside the default evaluator metrics",{"type":54,"tag":95,"props":126,"children":127},{},[128,130,136,138,144],{"type":59,"value":129},"convert task files such as ",{"type":54,"tag":106,"props":131,"children":133},{"className":132},[],[134],{"type":59,"value":135},"task.yaml",{"type":59,"value":137},", ",{"type":54,"tag":106,"props":139,"children":141},{"className":140},[],[142],{"type":59,"value":143},"task.json",{"type":59,"value":145},", pytest checks, or shell\nverifiers into BYOG or BYOT",{"type":54,"tag":95,"props":147,"children":148},{},[149],{"type":59,"value":150},"prove a team can run its own benchmark through SkillEvaluator",{"type":54,"tag":62,"props":152,"children":153},{},[154,156,162],{"type":59,"value":155},"Do not use this skill for ordinary ",{"type":54,"tag":106,"props":157,"children":159},{"className":158},[],[160],{"type":59,"value":161},"evals\u002Fevals.json",{"type":59,"value":163}," authoring when no custom\ngrading logic is needed. Use the normal dataset authoring workflow for that.",{"type":54,"tag":68,"props":165,"children":167},{"id":166},"instructions",[168],{"type":59,"value":169},"Instructions",{"type":54,"tag":171,"props":172,"children":173},"ol",{},[174,187,200,212],{"type":54,"tag":95,"props":175,"children":176},{},[177,179,185],{"type":59,"value":178},"Read the target skill, existing ",{"type":54,"tag":106,"props":180,"children":182},{"className":181},[],[183],{"type":59,"value":184},"evals\u002F",{"type":59,"value":186},", benchmark prompts, fixtures, and any verifier code.",{"type":54,"tag":95,"props":188,"children":189},{},[190,192,198],{"type":59,"value":191},"Choose ",{"type":54,"tag":106,"props":193,"children":195},{"className":194},[],[196],{"type":59,"value":197},"default_plus_custom",{"type":59,"value":199}," when custom metrics should complement default evaluator scoring.",{"type":54,"tag":95,"props":201,"children":202},{},[203,204,210],{"type":59,"value":191},{"type":54,"tag":106,"props":205,"children":207},{"className":206},[],[208],{"type":59,"value":209},"custom_only",{"type":59,"value":211}," only when the user wants the custom grader to own pass\u002Ffail semantics.",{"type":54,"tag":95,"props":213,"children":214},{},[215,217,222,223,228],{"type":59,"value":216},"Write or update ",{"type":54,"tag":106,"props":218,"children":220},{"className":219},[],[221],{"type":59,"value":111},{"type":59,"value":113},{"type":54,"tag":106,"props":224,"children":226},{"className":225},[],[227],{"type":59,"value":119},{"type":59,"value":229},", then validate the Harbor contract.",{"type":54,"tag":68,"props":231,"children":233},{"id":232},"examples",[234],{"type":59,"value":235},"Examples",{"type":54,"tag":237,"props":238,"children":243},"pre",{"className":239,"code":240,"language":241,"meta":242,"style":242},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","skillevaluator init-custom-grader \u003Cskill-dir> --language python --mode default_plus_custom\nskillevaluator tier3 validate \u003Cskill-dir>\n","bash","",[244],{"type":54,"tag":106,"props":245,"children":246},{"__ignoreMap":242},[247,307],{"type":54,"tag":248,"props":249,"children":252},"span",{"class":250,"line":251},"line",1,[253,259,265,271,276,282,287,292,297,302],{"type":54,"tag":248,"props":254,"children":256},{"style":255},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[257],{"type":59,"value":258},"skillevaluator",{"type":54,"tag":248,"props":260,"children":262},{"style":261},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[263],{"type":59,"value":264}," init-custom-grader",{"type":54,"tag":248,"props":266,"children":268},{"style":267},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[269],{"type":59,"value":270}," \u003C",{"type":54,"tag":248,"props":272,"children":273},{"style":261},[274],{"type":59,"value":275},"skill-di",{"type":54,"tag":248,"props":277,"children":279},{"style":278},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[280],{"type":59,"value":281},"r",{"type":54,"tag":248,"props":283,"children":284},{"style":267},[285],{"type":59,"value":286},">",{"type":54,"tag":248,"props":288,"children":289},{"style":261},[290],{"type":59,"value":291}," --language",{"type":54,"tag":248,"props":293,"children":294},{"style":261},[295],{"type":59,"value":296}," python",{"type":54,"tag":248,"props":298,"children":299},{"style":261},[300],{"type":59,"value":301}," --mode",{"type":54,"tag":248,"props":303,"children":304},{"style":261},[305],{"type":59,"value":306}," default_plus_custom\n",{"type":54,"tag":248,"props":308,"children":310},{"class":250,"line":309},2,[311,315,320,325,329,333,337],{"type":54,"tag":248,"props":312,"children":313},{"style":255},[314],{"type":59,"value":258},{"type":54,"tag":248,"props":316,"children":317},{"style":261},[318],{"type":59,"value":319}," tier3",{"type":54,"tag":248,"props":321,"children":322},{"style":261},[323],{"type":59,"value":324}," validate",{"type":54,"tag":248,"props":326,"children":327},{"style":267},[328],{"type":59,"value":270},{"type":54,"tag":248,"props":330,"children":331},{"style":261},[332],{"type":59,"value":275},{"type":54,"tag":248,"props":334,"children":335},{"style":278},[336],{"type":59,"value":281},{"type":54,"tag":248,"props":338,"children":339},{"style":267},[340],{"type":59,"value":341},">\n",{"type":54,"tag":68,"props":343,"children":345},{"id":344},"prerequisites",[346],{"type":59,"value":347},"Prerequisites",{"type":54,"tag":91,"props":349,"children":350},{},[351,364,375],{"type":54,"tag":95,"props":352,"children":353},{},[354,356,362],{"type":59,"value":355},"The target skill directory should contain ",{"type":54,"tag":106,"props":357,"children":359},{"className":358},[],[360],{"type":59,"value":361},"SKILL.md",{"type":59,"value":363},".",{"type":54,"tag":95,"props":365,"children":366},{},[367,369,374],{"type":59,"value":368},"The SkillEvaluator CLI should be available as ",{"type":54,"tag":106,"props":370,"children":372},{"className":371},[],[373],{"type":59,"value":258},{"type":59,"value":363},{"type":54,"tag":95,"props":376,"children":377},{},[378],{"type":59,"value":379},"Full E2E evaluation may need agent credentials, sandbox access, GPU access, or\nservice credentials depending on the benchmark.",{"type":54,"tag":68,"props":381,"children":383},{"id":382},"core-choice",[384],{"type":59,"value":385},"Core Choice",{"type":54,"tag":62,"props":387,"children":388},{},[389],{"type":59,"value":390},"Choose one path before writing files:",{"type":54,"tag":392,"props":393,"children":394},"table",{},[395,414],{"type":54,"tag":396,"props":397,"children":398},"thead",{},[399],{"type":54,"tag":400,"props":401,"children":402},"tr",{},[403,409],{"type":54,"tag":404,"props":405,"children":406},"th",{},[407],{"type":59,"value":408},"User need",{"type":54,"tag":404,"props":410,"children":411},{},[412],{"type":59,"value":413},"Evaluator shape",{"type":54,"tag":415,"props":416,"children":417},"tbody",{},[418,451,477,496,513],{"type":54,"tag":400,"props":419,"children":420},{},[421,435],{"type":54,"tag":422,"props":423,"children":424},"td",{},[425,427,433],{"type":59,"value":426},"Existing ",{"type":54,"tag":106,"props":428,"children":430},{"className":429},[],[431],{"type":59,"value":432},"evals.json",{"type":59,"value":434}," task plus extra domain checks",{"type":54,"tag":422,"props":436,"children":437},{},[438,440,445,446],{"type":59,"value":439},"Top-level BYOG: ",{"type":54,"tag":106,"props":441,"children":443},{"className":442},[],[444],{"type":59,"value":111},{"type":59,"value":113},{"type":54,"tag":106,"props":447,"children":449},{"className":448},[],[450],{"type":59,"value":119},{"type":54,"tag":400,"props":452,"children":453},{},[454,459],{"type":54,"tag":422,"props":455,"children":456},{},[457],{"type":59,"value":458},"Existing benchmark prompt\u002Frubric that can run in the generated workspace",{"type":54,"tag":422,"props":460,"children":461},{},[462,464,469,471],{"type":59,"value":463},"Top-level BYOG plus ",{"type":54,"tag":106,"props":465,"children":467},{"className":466},[],[468],{"type":59,"value":161},{"type":59,"value":470}," and ",{"type":54,"tag":106,"props":472,"children":474},{"className":473},[],[475],{"type":59,"value":476},"evals\u002Ffiles\u002F",{"type":54,"tag":400,"props":478,"children":479},{},[480,485],{"type":54,"tag":422,"props":481,"children":482},{},[483],{"type":59,"value":484},"Benchmark owns task layout, setup, service lifecycle, or verifier harness",{"type":54,"tag":422,"props":486,"children":487},{},[488,490],{"type":59,"value":489},"Native BYOT\u002FBYOG: ",{"type":54,"tag":106,"props":491,"children":493},{"className":492},[],[494],{"type":59,"value":495},"evals\u002Fharbor\u002F\u003Ccase>\u002F...",{"type":54,"tag":400,"props":497,"children":498},{},[499,504],{"type":54,"tag":422,"props":500,"children":501},{},[502],{"type":59,"value":503},"User wants only custom reward\u002Fpass criteria",{"type":54,"tag":422,"props":505,"children":506},{},[507],{"type":54,"tag":106,"props":508,"children":510},{"className":509},[],[511],{"type":59,"value":512},"grading.mode: custom_only",{"type":54,"tag":400,"props":514,"children":515},{},[516,521],{"type":54,"tag":422,"props":517,"children":518},{},[519],{"type":59,"value":520},"User wants default evaluator dimensions plus custom metrics",{"type":54,"tag":422,"props":522,"children":523},{},[524],{"type":54,"tag":106,"props":525,"children":527},{"className":526},[],[528],{"type":59,"value":529},"grading.mode: default_plus_custom",{"type":54,"tag":62,"props":531,"children":532},{},[533,535,540],{"type":59,"value":534},"Default to ",{"type":54,"tag":106,"props":536,"children":538},{"className":537},[],[539],{"type":59,"value":197},{"type":59,"value":541}," unless the user explicitly wants the custom\ngrader to replace the default evaluator metrics.",{"type":54,"tag":68,"props":543,"children":545},{"id":544},"workflow",[546],{"type":59,"value":547},"Workflow",{"type":54,"tag":171,"props":549,"children":550},{},[551,570,615,795,800,849],{"type":54,"tag":95,"props":552,"children":553},{},[554,556,561,563,568],{"type":59,"value":555},"Resolve the target skill and benchmark source.\nRead the target ",{"type":54,"tag":106,"props":557,"children":559},{"className":558},[],[560],{"type":59,"value":361},{"type":59,"value":562},", existing ",{"type":54,"tag":106,"props":564,"children":566},{"className":565},[],[567],{"type":59,"value":184},{"type":59,"value":569},", benchmark prompts, fixtures,\nrubric, reference solution, tags, and any expected trigger\u002Fnon-trigger\nmetadata.",{"type":54,"tag":95,"props":571,"children":572},{},[573,575,581,583,589,591,597,599,605,607,613],{"type":59,"value":574},"Map benchmark fields into evaluator inputs.\nUse benchmark prompts or prompt variants as ",{"type":54,"tag":106,"props":576,"children":578},{"className":577},[],[579],{"type":59,"value":580},"question",{"type":59,"value":582}," entries. Use the\ntarget skill as ",{"type":54,"tag":106,"props":584,"children":586},{"className":585},[],[587],{"type":59,"value":588},"expected_skill",{"type":59,"value":590},". Put each case's required starter files\nunder ",{"type":54,"tag":106,"props":592,"children":594},{"className":593},[],[595],{"type":59,"value":596},"evals\u002Ffiles\u002F\u003Ccase-id>\u002F",{"type":59,"value":598},", and declare\n",{"type":54,"tag":106,"props":600,"children":602},{"className":601},[],[603],{"type":59,"value":604},"files: [\"evals\u002Ffiles\u002F\u003Ccase-id>\"]",{"type":59,"value":606}," on every corresponding eval entry. Do not\nomit ",{"type":54,"tag":106,"props":608,"children":610},{"className":609},[],[611],{"type":59,"value":612},"files",{"type":59,"value":614}," in a multi-case dataset, because omission intentionally stages\nthe entire shared directory for legacy compatibility. Preserve\nbenchmark-specific rubric text in the entry only when the grader needs to\nread it.",{"type":54,"tag":95,"props":616,"children":617},{},[618,620,670,674,676,727,730,732],{"type":59,"value":619},"Scaffold the evaluator contract.\nFor generated tasks:",{"type":54,"tag":237,"props":621,"children":623},{"className":239,"code":622,"language":241,"meta":242,"style":242},"skillevaluator init-custom-grader \u003Cskill-dir> --language python --mode default_plus_custom\n",[624],{"type":54,"tag":106,"props":625,"children":626},{"__ignoreMap":242},[627],{"type":54,"tag":248,"props":628,"children":629},{"class":250,"line":251},[630,634,638,642,646,650,654,658,662,666],{"type":54,"tag":248,"props":631,"children":632},{"style":255},[633],{"type":59,"value":258},{"type":54,"tag":248,"props":635,"children":636},{"style":261},[637],{"type":59,"value":264},{"type":54,"tag":248,"props":639,"children":640},{"style":267},[641],{"type":59,"value":270},{"type":54,"tag":248,"props":643,"children":644},{"style":261},[645],{"type":59,"value":275},{"type":54,"tag":248,"props":647,"children":648},{"style":278},[649],{"type":59,"value":281},{"type":54,"tag":248,"props":651,"children":652},{"style":267},[653],{"type":59,"value":286},{"type":54,"tag":248,"props":655,"children":656},{"style":261},[657],{"type":59,"value":291},{"type":54,"tag":248,"props":659,"children":660},{"style":261},[661],{"type":59,"value":296},{"type":54,"tag":248,"props":663,"children":664},{"style":261},[665],{"type":59,"value":301},{"type":54,"tag":248,"props":667,"children":668},{"style":261},[669],{"type":59,"value":306},{"type":54,"tag":671,"props":672,"children":673},"br",{},[],{"type":59,"value":675},"For shell checks:",{"type":54,"tag":237,"props":677,"children":679},{"className":239,"code":678,"language":241,"meta":242,"style":242},"skillevaluator init-custom-grader \u003Cskill-dir> --language shell --mode default_plus_custom\n",[680],{"type":54,"tag":106,"props":681,"children":682},{"__ignoreMap":242},[683],{"type":54,"tag":248,"props":684,"children":685},{"class":250,"line":251},[686,690,694,698,702,706,710,714,719,723],{"type":54,"tag":248,"props":687,"children":688},{"style":255},[689],{"type":59,"value":258},{"type":54,"tag":248,"props":691,"children":692},{"style":261},[693],{"type":59,"value":264},{"type":54,"tag":248,"props":695,"children":696},{"style":267},[697],{"type":59,"value":270},{"type":54,"tag":248,"props":699,"children":700},{"style":261},[701],{"type":59,"value":275},{"type":54,"tag":248,"props":703,"children":704},{"style":278},[705],{"type":59,"value":281},{"type":54,"tag":248,"props":707,"children":708},{"style":267},[709],{"type":59,"value":286},{"type":54,"tag":248,"props":711,"children":712},{"style":261},[713],{"type":59,"value":291},{"type":54,"tag":248,"props":715,"children":716},{"style":261},[717],{"type":59,"value":718}," shell",{"type":54,"tag":248,"props":720,"children":721},{"style":261},[722],{"type":59,"value":301},{"type":54,"tag":248,"props":724,"children":725},{"style":261},[726],{"type":59,"value":306},{"type":54,"tag":671,"props":728,"children":729},{},[],{"type":59,"value":731},"For native Harbor tasks:",{"type":54,"tag":237,"props":733,"children":735},{"className":239,"code":734,"language":241,"meta":242,"style":242},"skillevaluator init-harbor-task \u003Cskill-dir> --case-id \u003Ccase-id> --with-config\n",[736],{"type":54,"tag":106,"props":737,"children":738},{"__ignoreMap":242},[739],{"type":54,"tag":248,"props":740,"children":741},{"class":250,"line":251},[742,746,751,755,759,763,767,772,776,781,786,790],{"type":54,"tag":248,"props":743,"children":744},{"style":255},[745],{"type":59,"value":258},{"type":54,"tag":248,"props":747,"children":748},{"style":261},[749],{"type":59,"value":750}," init-harbor-task",{"type":54,"tag":248,"props":752,"children":753},{"style":267},[754],{"type":59,"value":270},{"type":54,"tag":248,"props":756,"children":757},{"style":261},[758],{"type":59,"value":275},{"type":54,"tag":248,"props":760,"children":761},{"style":278},[762],{"type":59,"value":281},{"type":54,"tag":248,"props":764,"children":765},{"style":267},[766],{"type":59,"value":286},{"type":54,"tag":248,"props":768,"children":769},{"style":261},[770],{"type":59,"value":771}," --case-id",{"type":54,"tag":248,"props":773,"children":774},{"style":267},[775],{"type":59,"value":270},{"type":54,"tag":248,"props":777,"children":778},{"style":261},[779],{"type":59,"value":780},"case-i",{"type":54,"tag":248,"props":782,"children":783},{"style":278},[784],{"type":59,"value":785},"d",{"type":54,"tag":248,"props":787,"children":788},{"style":267},[789],{"type":59,"value":286},{"type":54,"tag":248,"props":791,"children":792},{"style":261},[793],{"type":59,"value":794}," --with-config\n",{"type":54,"tag":95,"props":796,"children":797},{},[798],{"type":59,"value":799},"Replace scaffold placeholders.\nThe custom grader is real executable logic, not metadata. It must read\navailable evidence, compute numeric scores, and write the evaluator reward\ncontract.",{"type":54,"tag":95,"props":801,"children":802},{},[803,805,844,847],{"type":59,"value":804},"Validate before running.",{"type":54,"tag":237,"props":806,"children":808},{"className":239,"code":807,"language":241,"meta":242,"style":242},"skillevaluator validate \u003Cskill-dir> --harbor-contract\n",[809],{"type":54,"tag":106,"props":810,"children":811},{"__ignoreMap":242},[812],{"type":54,"tag":248,"props":813,"children":814},{"class":250,"line":251},[815,819,823,827,831,835,839],{"type":54,"tag":248,"props":816,"children":817},{"style":255},[818],{"type":59,"value":258},{"type":54,"tag":248,"props":820,"children":821},{"style":261},[822],{"type":59,"value":324},{"type":54,"tag":248,"props":824,"children":825},{"style":267},[826],{"type":59,"value":270},{"type":54,"tag":248,"props":828,"children":829},{"style":261},[830],{"type":59,"value":275},{"type":54,"tag":248,"props":832,"children":833},{"style":278},[834],{"type":59,"value":281},{"type":54,"tag":248,"props":836,"children":837},{"style":267},[838],{"type":59,"value":286},{"type":54,"tag":248,"props":840,"children":841},{"style":261},[842],{"type":59,"value":843}," --harbor-contract\n",{"type":54,"tag":671,"props":845,"children":846},{},[],{"type":59,"value":848},"Fix missing files, invalid Python, missing reward output, and native Harbor\nID mismatches before evaluation.",{"type":54,"tag":95,"props":850,"children":851},{},[852],{"type":59,"value":853},"Run the deepest practical proof.\nPrefer a real with-skill\u002Fbaseline run. If services, credentials, GPU, or\ncost block full E2E, state exactly what was validated and what was not.",{"type":54,"tag":68,"props":855,"children":857},{"id":856},"grader-contract",[858],{"type":59,"value":859},"Grader Contract",{"type":54,"tag":62,"props":861,"children":862},{},[863],{"type":59,"value":864},"Python and shell graders run inside the Harbor verifier context. They may read:",{"type":54,"tag":91,"props":866,"children":867},{},[868,879,890,906],{"type":54,"tag":95,"props":869,"children":870},{},[871,877],{"type":54,"tag":106,"props":872,"children":874},{"className":873},[],[875],{"type":59,"value":876},"\u002Flogs\u002Fagent\u002Ftrajectory.json",{"type":59,"value":878}," for agent actions and final answer evidence",{"type":54,"tag":95,"props":880,"children":881},{},[882,888],{"type":54,"tag":106,"props":883,"children":885},{"className":884},[],[886],{"type":59,"value":887},"\u002Ftests\u002Fentry.json",{"type":59,"value":889}," for the eval case metadata",{"type":54,"tag":95,"props":891,"children":892},{},[893,899,901],{"type":54,"tag":106,"props":894,"children":896},{"className":895},[],[897],{"type":59,"value":898},"\u002Fworkspace\u002Finput\u002F",{"type":59,"value":900}," for the entry's declared committed fixtures from\n",{"type":54,"tag":106,"props":902,"children":904},{"className":903},[],[905],{"type":59,"value":476},{"type":54,"tag":95,"props":907,"children":908},{},[909,915],{"type":54,"tag":106,"props":910,"children":912},{"className":911},[],[913],{"type":59,"value":914},"\u002Fsolution\u002F",{"type":59,"value":916}," or other task outputs only when the task environment produces\nthem",{"type":54,"tag":62,"props":918,"children":919},{},[920],{"type":59,"value":921},"They must write:",{"type":54,"tag":91,"props":923,"children":924},{},[925,934],{"type":54,"tag":95,"props":926,"children":927},{},[928],{"type":54,"tag":106,"props":929,"children":931},{"className":930},[],[932],{"type":59,"value":933},"\u002Flogs\u002Fverifier\u002Freward.json",{"type":54,"tag":95,"props":935,"children":936},{},[937,943,945,951,953],{"type":54,"tag":106,"props":938,"children":940},{"className":939},[],[941],{"type":59,"value":942},"\u002Flogs\u002Fverifier\u002Freward.txt",{"type":59,"value":944}," with a numeric score from ",{"type":54,"tag":106,"props":946,"children":948},{"className":947},[],[949],{"type":59,"value":950},"0.0",{"type":59,"value":952}," to ",{"type":54,"tag":106,"props":954,"children":956},{"className":955},[],[957],{"type":59,"value":958},"1.0",{"type":54,"tag":62,"props":960,"children":961},{},[962],{"type":59,"value":963},"Use this reward shape:",{"type":54,"tag":237,"props":965,"children":969},{"className":966,"code":967,"language":968,"meta":242,"style":242},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"overall\": 0.92,\n  \"custom_metrics\": {\n    \"domain_repair\": 1.0,\n    \"domain_verification\": 0.8\n  },\n  \"details\": {\n    \"domain_repair\": {\n      \"score\": 1.0,\n      \"reason\": \"The solution repaired the required files.\"\n    }\n  }\n}\n","json",[970],{"type":54,"tag":106,"props":971,"children":972},{"__ignoreMap":242},[973,981,1016,1042,1073,1099,1108,1133,1157,1187,1223,1232,1241],{"type":54,"tag":248,"props":974,"children":975},{"class":250,"line":251},[976],{"type":54,"tag":248,"props":977,"children":978},{"style":267},[979],{"type":59,"value":980},"{\n",{"type":54,"tag":248,"props":982,"children":983},{"class":250,"line":309},[984,989,995,1000,1005,1011],{"type":54,"tag":248,"props":985,"children":986},{"style":267},[987],{"type":59,"value":988},"  \"",{"type":54,"tag":248,"props":990,"children":992},{"style":991},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[993],{"type":59,"value":994},"overall",{"type":54,"tag":248,"props":996,"children":997},{"style":267},[998],{"type":59,"value":999},"\"",{"type":54,"tag":248,"props":1001,"children":1002},{"style":267},[1003],{"type":59,"value":1004},":",{"type":54,"tag":248,"props":1006,"children":1008},{"style":1007},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[1009],{"type":59,"value":1010}," 0.92",{"type":54,"tag":248,"props":1012,"children":1013},{"style":267},[1014],{"type":59,"value":1015},",\n",{"type":54,"tag":248,"props":1017,"children":1019},{"class":250,"line":1018},3,[1020,1024,1029,1033,1037],{"type":54,"tag":248,"props":1021,"children":1022},{"style":267},[1023],{"type":59,"value":988},{"type":54,"tag":248,"props":1025,"children":1026},{"style":991},[1027],{"type":59,"value":1028},"custom_metrics",{"type":54,"tag":248,"props":1030,"children":1031},{"style":267},[1032],{"type":59,"value":999},{"type":54,"tag":248,"props":1034,"children":1035},{"style":267},[1036],{"type":59,"value":1004},{"type":54,"tag":248,"props":1038,"children":1039},{"style":267},[1040],{"type":59,"value":1041}," {\n",{"type":54,"tag":248,"props":1043,"children":1045},{"class":250,"line":1044},4,[1046,1051,1056,1060,1064,1069],{"type":54,"tag":248,"props":1047,"children":1048},{"style":267},[1049],{"type":59,"value":1050},"    \"",{"type":54,"tag":248,"props":1052,"children":1053},{"style":255},[1054],{"type":59,"value":1055},"domain_repair",{"type":54,"tag":248,"props":1057,"children":1058},{"style":267},[1059],{"type":59,"value":999},{"type":54,"tag":248,"props":1061,"children":1062},{"style":267},[1063],{"type":59,"value":1004},{"type":54,"tag":248,"props":1065,"children":1066},{"style":1007},[1067],{"type":59,"value":1068}," 1.0",{"type":54,"tag":248,"props":1070,"children":1071},{"style":267},[1072],{"type":59,"value":1015},{"type":54,"tag":248,"props":1074,"children":1076},{"class":250,"line":1075},5,[1077,1081,1086,1090,1094],{"type":54,"tag":248,"props":1078,"children":1079},{"style":267},[1080],{"type":59,"value":1050},{"type":54,"tag":248,"props":1082,"children":1083},{"style":255},[1084],{"type":59,"value":1085},"domain_verification",{"type":54,"tag":248,"props":1087,"children":1088},{"style":267},[1089],{"type":59,"value":999},{"type":54,"tag":248,"props":1091,"children":1092},{"style":267},[1093],{"type":59,"value":1004},{"type":54,"tag":248,"props":1095,"children":1096},{"style":1007},[1097],{"type":59,"value":1098}," 0.8\n",{"type":54,"tag":248,"props":1100,"children":1102},{"class":250,"line":1101},6,[1103],{"type":54,"tag":248,"props":1104,"children":1105},{"style":267},[1106],{"type":59,"value":1107},"  },\n",{"type":54,"tag":248,"props":1109,"children":1111},{"class":250,"line":1110},7,[1112,1116,1121,1125,1129],{"type":54,"tag":248,"props":1113,"children":1114},{"style":267},[1115],{"type":59,"value":988},{"type":54,"tag":248,"props":1117,"children":1118},{"style":991},[1119],{"type":59,"value":1120},"details",{"type":54,"tag":248,"props":1122,"children":1123},{"style":267},[1124],{"type":59,"value":999},{"type":54,"tag":248,"props":1126,"children":1127},{"style":267},[1128],{"type":59,"value":1004},{"type":54,"tag":248,"props":1130,"children":1131},{"style":267},[1132],{"type":59,"value":1041},{"type":54,"tag":248,"props":1134,"children":1136},{"class":250,"line":1135},8,[1137,1141,1145,1149,1153],{"type":54,"tag":248,"props":1138,"children":1139},{"style":267},[1140],{"type":59,"value":1050},{"type":54,"tag":248,"props":1142,"children":1143},{"style":255},[1144],{"type":59,"value":1055},{"type":54,"tag":248,"props":1146,"children":1147},{"style":267},[1148],{"type":59,"value":999},{"type":54,"tag":248,"props":1150,"children":1151},{"style":267},[1152],{"type":59,"value":1004},{"type":54,"tag":248,"props":1154,"children":1155},{"style":267},[1156],{"type":59,"value":1041},{"type":54,"tag":248,"props":1158,"children":1160},{"class":250,"line":1159},9,[1161,1166,1171,1175,1179,1183],{"type":54,"tag":248,"props":1162,"children":1163},{"style":267},[1164],{"type":59,"value":1165},"      \"",{"type":54,"tag":248,"props":1167,"children":1168},{"style":1007},[1169],{"type":59,"value":1170},"score",{"type":54,"tag":248,"props":1172,"children":1173},{"style":267},[1174],{"type":59,"value":999},{"type":54,"tag":248,"props":1176,"children":1177},{"style":267},[1178],{"type":59,"value":1004},{"type":54,"tag":248,"props":1180,"children":1181},{"style":1007},[1182],{"type":59,"value":1068},{"type":54,"tag":248,"props":1184,"children":1185},{"style":267},[1186],{"type":59,"value":1015},{"type":54,"tag":248,"props":1188,"children":1190},{"class":250,"line":1189},10,[1191,1195,1200,1204,1208,1213,1218],{"type":54,"tag":248,"props":1192,"children":1193},{"style":267},[1194],{"type":59,"value":1165},{"type":54,"tag":248,"props":1196,"children":1197},{"style":1007},[1198],{"type":59,"value":1199},"reason",{"type":54,"tag":248,"props":1201,"children":1202},{"style":267},[1203],{"type":59,"value":999},{"type":54,"tag":248,"props":1205,"children":1206},{"style":267},[1207],{"type":59,"value":1004},{"type":54,"tag":248,"props":1209,"children":1210},{"style":267},[1211],{"type":59,"value":1212}," \"",{"type":54,"tag":248,"props":1214,"children":1215},{"style":261},[1216],{"type":59,"value":1217},"The solution repaired the required files.",{"type":54,"tag":248,"props":1219,"children":1220},{"style":267},[1221],{"type":59,"value":1222},"\"\n",{"type":54,"tag":248,"props":1224,"children":1226},{"class":250,"line":1225},11,[1227],{"type":54,"tag":248,"props":1228,"children":1229},{"style":267},[1230],{"type":59,"value":1231},"    }\n",{"type":54,"tag":248,"props":1233,"children":1235},{"class":250,"line":1234},12,[1236],{"type":54,"tag":248,"props":1237,"children":1238},{"style":267},[1239],{"type":59,"value":1240},"  }\n",{"type":54,"tag":248,"props":1242,"children":1244},{"class":250,"line":1243},13,[1245],{"type":54,"tag":248,"props":1246,"children":1247},{"style":267},[1248],{"type":59,"value":1249},"}\n",{"type":54,"tag":62,"props":1251,"children":1252},{},[1253,1255,1260,1262,1267,1269,1274,1276,1281,1283,1288],{"type":59,"value":1254},"In ",{"type":54,"tag":106,"props":1256,"children":1258},{"className":1257},[],[1259],{"type":59,"value":197},{"type":59,"value":1261},", default evaluator scoring keeps its ",{"type":54,"tag":106,"props":1263,"children":1265},{"className":1264},[],[1266],{"type":59,"value":994},{"type":59,"value":1268},"\nauthoritative and adds the grader's ",{"type":54,"tag":106,"props":1270,"children":1272},{"className":1271},[],[1273],{"type":59,"value":1028},{"type":59,"value":1275}," into reports. In\n",{"type":54,"tag":106,"props":1277,"children":1279},{"className":1278},[],[1280],{"type":59,"value":209},{"type":59,"value":1282},", the grader's ",{"type":54,"tag":106,"props":1284,"children":1286},{"className":1285},[],[1287],{"type":59,"value":994},{"type":59,"value":1289}," is the pass\u002Ffail reward.",{"type":54,"tag":62,"props":1291,"children":1292},{},[1293,1295,1301,1302,1308,1309,1315,1316,1322,1323,1329,1330,1336,1337,1342,1343,1348,1349,1355,1356,1362,1364,1370],{"type":59,"value":1294},"Never emit custom metric names that collide with reserved evaluator fields:\n",{"type":54,"tag":106,"props":1296,"children":1298},{"className":1297},[],[1299],{"type":59,"value":1300},"security",{"type":59,"value":137},{"type":54,"tag":106,"props":1303,"children":1305},{"className":1304},[],[1306],{"type":59,"value":1307},"skill_execution",{"type":59,"value":137},{"type":54,"tag":106,"props":1310,"children":1312},{"className":1311},[],[1313],{"type":59,"value":1314},"skill_efficiency",{"type":59,"value":137},{"type":54,"tag":106,"props":1317,"children":1319},{"className":1318},[],[1320],{"type":59,"value":1321},"accuracy",{"type":59,"value":1015},{"type":54,"tag":106,"props":1324,"children":1326},{"className":1325},[],[1327],{"type":59,"value":1328},"goal_accuracy",{"type":59,"value":137},{"type":54,"tag":106,"props":1331,"children":1333},{"className":1332},[],[1334],{"type":59,"value":1335},"behavior_check",{"type":59,"value":137},{"type":54,"tag":106,"props":1338,"children":1340},{"className":1339},[],[1341],{"type":59,"value":994},{"type":59,"value":137},{"type":54,"tag":106,"props":1344,"children":1346},{"className":1345},[],[1347],{"type":59,"value":1120},{"type":59,"value":137},{"type":54,"tag":106,"props":1350,"children":1352},{"className":1351},[],[1353],{"type":59,"value":1354},"metrics",{"type":59,"value":1015},{"type":54,"tag":106,"props":1357,"children":1359},{"className":1358},[],[1360],{"type":59,"value":1361},"metric_set",{"type":59,"value":1363},", or ",{"type":54,"tag":106,"props":1365,"children":1367},{"className":1366},[],[1368],{"type":59,"value":1369},"entry_id",{"type":59,"value":363},{"type":54,"tag":68,"props":1372,"children":1374},{"id":1373},"translation-rules",[1375],{"type":59,"value":1376},"Translation Rules",{"type":54,"tag":91,"props":1378,"children":1379},{},[1380,1385,1396,1401,1406,1424,1429],{"type":54,"tag":95,"props":1381,"children":1382},{},[1383],{"type":59,"value":1384},"Convert each rubric item into a deterministic check when possible.",{"type":54,"tag":95,"props":1386,"children":1387},{},[1388,1390,1395],{"type":59,"value":1389},"If a rubric item requires judgment, encode observable proxies and explain the\nlimits in ",{"type":54,"tag":106,"props":1391,"children":1393},{"className":1392},[],[1394],{"type":59,"value":1120},{"type":59,"value":363},{"type":54,"tag":95,"props":1397,"children":1398},{},[1399],{"type":59,"value":1400},"Keep metrics stable across baseline and with-skill runs.",{"type":54,"tag":95,"props":1402,"children":1403},{},[1404],{"type":59,"value":1405},"Score only the generated task workspace. Do not accidentally score copied\nskill source files, reference fixtures, or grader templates.",{"type":54,"tag":95,"props":1407,"children":1408},{},[1409,1411,1416,1418,1423],{"type":59,"value":1410},"Keep custom metric values clamped to ",{"type":54,"tag":106,"props":1412,"children":1414},{"className":1413},[],[1415],{"type":59,"value":950},{"type":59,"value":1417}," through ",{"type":54,"tag":106,"props":1419,"children":1421},{"className":1420},[],[1422],{"type":59,"value":958},{"type":59,"value":363},{"type":54,"tag":95,"props":1425,"children":1426},{},[1427],{"type":59,"value":1428},"Preserve benchmark prompt variants as separate eval entries only when they\nexercise meaningfully different behavior.",{"type":54,"tag":95,"props":1430,"children":1431},{},[1432,1434,1439,1440,1446],{"type":59,"value":1433},"Convert expected trigger\u002Fnon-trigger metadata into ",{"type":54,"tag":106,"props":1435,"children":1437},{"className":1436},[],[1438],{"type":59,"value":588},{"type":59,"value":1015},{"type":54,"tag":106,"props":1441,"children":1443},{"className":1442},[],[1444],{"type":59,"value":1445},"expected_behavior",{"type":59,"value":1447},", negative cases, or custom metrics that inspect\ntrajectory evidence.",{"type":54,"tag":68,"props":1449,"children":1451},{"id":1450},"rapids-style-example",[1452],{"type":59,"value":1453},"RAPIDS-Style Example",{"type":54,"tag":62,"props":1455,"children":1456},{},[1457,1459,1464,1465,1471],{"type":59,"value":1458},"For a benchmark task with ",{"type":54,"tag":106,"props":1460,"children":1462},{"className":1461},[],[1463],{"type":59,"value":135},{"type":59,"value":137},{"type":54,"tag":106,"props":1466,"children":1468},{"className":1467},[],[1469],{"type":59,"value":1470},"code\u002F",{"type":59,"value":1472},", prompt variants, coverage, and a\nrubric:",{"type":54,"tag":171,"props":1474,"children":1475},{},[1476,1494,1513,1525,1537,1571],{"type":54,"tag":95,"props":1477,"children":1478},{},[1479,1481,1486,1488,1493],{"type":59,"value":1480},"Copy ",{"type":54,"tag":106,"props":1482,"children":1484},{"className":1483},[],[1485],{"type":59,"value":1470},{"type":59,"value":1487}," into ",{"type":54,"tag":106,"props":1489,"children":1491},{"className":1490},[],[1492],{"type":59,"value":596},{"type":59,"value":363},{"type":54,"tag":95,"props":1495,"children":1496},{},[1497,1499,1504,1506,1511],{"type":59,"value":1498},"Create one or more ",{"type":54,"tag":106,"props":1500,"children":1502},{"className":1501},[],[1503],{"type":59,"value":161},{"type":59,"value":1505}," entries from the prompt variants, and\nset ",{"type":54,"tag":106,"props":1507,"children":1509},{"className":1508},[],[1510],{"type":59,"value":604},{"type":59,"value":1512}," on each corresponding entry.",{"type":54,"tag":95,"props":1514,"children":1515},{},[1516,1518,1523],{"type":59,"value":1517},"Set ",{"type":54,"tag":106,"props":1519,"children":1521},{"className":1520},[],[1522],{"type":59,"value":588},{"type":59,"value":1524}," to the benchmark's target skill.",{"type":54,"tag":95,"props":1526,"children":1527},{},[1528,1530,1535],{"type":59,"value":1529},"Implement ",{"type":54,"tag":106,"props":1531,"children":1533},{"className":1532},[],[1534],{"type":59,"value":111},{"type":59,"value":1536}," to inspect the agent trajectory and changed\nworkspace files.",{"type":54,"tag":95,"props":1538,"children":1539},{},[1540,1542,1548,1549,1555,1556,1562,1564,1570],{"type":59,"value":1541},"Emit custom metrics for each rubric criterion, for example\n",{"type":54,"tag":106,"props":1543,"children":1545},{"className":1544},[],[1546],{"type":59,"value":1547},"rapids_diagnosis",{"type":59,"value":137},{"type":54,"tag":106,"props":1550,"children":1552},{"className":1551},[],[1553],{"type":59,"value":1554},"rapids_requirements_repair",{"type":59,"value":1015},{"type":54,"tag":106,"props":1557,"children":1559},{"className":1558},[],[1560],{"type":59,"value":1561},"rapids_repair_safety",{"type":59,"value":1563},", and ",{"type":54,"tag":106,"props":1565,"children":1567},{"className":1566},[],[1568],{"type":59,"value":1569},"rapids_verification",{"type":59,"value":363},{"type":54,"tag":95,"props":1572,"children":1573},{},[1574],{"type":59,"value":1575},"Validate and run SkillEvaluator with and without the target skill, then\nreport both default evaluator metrics and custom metric deltas.",{"type":54,"tag":68,"props":1577,"children":1579},{"id":1578},"limitations",[1580],{"type":59,"value":1581},"Limitations",{"type":54,"tag":91,"props":1583,"children":1584},{},[1585,1590,1601],{"type":54,"tag":95,"props":1586,"children":1587},{},[1588],{"type":59,"value":1589},"The skill can design and implement deterministic checks, but ambiguous rubric\njudgment still needs explicit observable proxies or a human-approved scoring\npolicy.",{"type":54,"tag":95,"props":1591,"children":1592},{},[1593,1599],{"type":54,"tag":106,"props":1594,"children":1596},{"className":1595},[],[1597],{"type":59,"value":1598},"init-custom-grader",{"type":59,"value":1600}," creates scaffolding only; the agent must replace the\nplaceholder scoring logic.",{"type":54,"tag":95,"props":1602,"children":1603},{},[1604],{"type":59,"value":1605},"Local validation proves file contracts, not live agent behavior. Do not call\nthe benchmark proven until an evaluation run has produced real rewards.",{"type":54,"tag":68,"props":1607,"children":1609},{"id":1608},"troubleshooting",[1610],{"type":59,"value":1611},"Troubleshooting",{"type":54,"tag":392,"props":1613,"children":1614},{},[1615,1631],{"type":54,"tag":396,"props":1616,"children":1617},{},[1618],{"type":54,"tag":400,"props":1619,"children":1620},{},[1621,1626],{"type":54,"tag":404,"props":1622,"children":1623},{},[1624],{"type":59,"value":1625},"Problem",{"type":54,"tag":404,"props":1627,"children":1628},{},[1629],{"type":59,"value":1630},"Fix",{"type":54,"tag":415,"props":1632,"children":1633},{},[1634,1659,1687,1726],{"type":54,"tag":400,"props":1635,"children":1636},{},[1637,1647],{"type":54,"tag":422,"props":1638,"children":1639},{},[1640,1645],{"type":54,"tag":106,"props":1641,"children":1643},{"className":1642},[],[1644],{"type":59,"value":161},{"type":59,"value":1646}," missing",{"type":54,"tag":422,"props":1648,"children":1649},{},[1650,1652,1657],{"type":59,"value":1651},"Create entries from the benchmark prompt or run ",{"type":54,"tag":106,"props":1653,"children":1655},{"className":1654},[],[1656],{"type":59,"value":1598},{"type":59,"value":1658}," to seed one.",{"type":54,"tag":400,"props":1660,"children":1661},{},[1662,1667],{"type":54,"tag":422,"props":1663,"children":1664},{},[1665],{"type":59,"value":1666},"Custom metrics do not appear",{"type":54,"tag":422,"props":1668,"children":1669},{},[1670,1672,1678,1680,1685],{"type":59,"value":1671},"Ensure ",{"type":54,"tag":106,"props":1673,"children":1675},{"className":1674},[],[1676],{"type":59,"value":1677},"reward.json",{"type":59,"value":1679}," has numeric values under ",{"type":54,"tag":106,"props":1681,"children":1683},{"className":1682},[],[1684],{"type":59,"value":1028},{"type":59,"value":1686}," and no reserved-name collisions.",{"type":54,"tag":400,"props":1688,"children":1689},{},[1690,1700],{"type":54,"tag":422,"props":1691,"children":1692},{},[1693,1698],{"type":54,"tag":106,"props":1694,"children":1696},{"className":1695},[],[1697],{"type":59,"value":209},{"type":59,"value":1699}," fails",{"type":54,"tag":422,"props":1701,"children":1702},{},[1703,1705,1710,1712,1717,1719,1725],{"type":59,"value":1704},"Write numeric ",{"type":54,"tag":106,"props":1706,"children":1708},{"className":1707},[],[1709],{"type":59,"value":994},{"type":59,"value":1711}," in ",{"type":54,"tag":106,"props":1713,"children":1715},{"className":1714},[],[1716],{"type":59,"value":1677},{"type":59,"value":1718}," or numeric ",{"type":54,"tag":106,"props":1720,"children":1722},{"className":1721},[],[1723],{"type":59,"value":1724},"reward.txt",{"type":59,"value":363},{"type":54,"tag":400,"props":1727,"children":1728},{},[1729,1734],{"type":54,"tag":422,"props":1730,"children":1731},{},[1732],{"type":59,"value":1733},"Grader scores copied fixtures",{"type":54,"tag":422,"props":1735,"children":1736},{},[1737],{"type":59,"value":1738},"Restrict file searches to generated workspace\u002Foutput paths, not the skill package or grader source.",{"type":54,"tag":68,"props":1740,"children":1742},{"id":1741},"final-response",[1743],{"type":59,"value":1744},"Final Response",{"type":54,"tag":62,"props":1746,"children":1747},{},[1748],{"type":59,"value":1749},"When finished, report:",{"type":54,"tag":91,"props":1751,"children":1752},{},[1753,1758,1763,1768,1773,1778],{"type":54,"tag":95,"props":1754,"children":1755},{},[1756],{"type":59,"value":1757},"files created or changed",{"type":54,"tag":95,"props":1759,"children":1760},{},[1761],{"type":59,"value":1762},"exact validation and evaluation commands",{"type":54,"tag":95,"props":1764,"children":1765},{},[1766],{"type":59,"value":1767},"default evaluator metric results",{"type":54,"tag":95,"props":1769,"children":1770},{},[1771],{"type":59,"value":1772},"custom metric results",{"type":54,"tag":95,"props":1774,"children":1775},{},[1776],{"type":59,"value":1777},"whether the proof was full E2E or only static\u002Flocal validation",{"type":54,"tag":95,"props":1779,"children":1780},{},[1781],{"type":59,"value":1782},"any benchmark rubric criteria that remain partly judgment-based",{"type":54,"tag":1784,"props":1785,"children":1786},"style",{},[1787],{"type":59,"value":1788},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1790,"total":1075},[1791,1807,1820,1826,1840],{"slug":1792,"name":1792,"fn":1793,"description":1794,"org":1795,"tags":1796,"stars":20,"repoUrl":21,"updatedAt":1806},"api-caller","execute dynamic REST API calls","Call any REST API dynamically. Make GET, POST, PUT, DELETE requests to any endpoint with custom headers and JSON body.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1797,1800,1803],{"name":1798,"slug":1799,"type":15},"API Development","api-development",{"name":1801,"slug":1802,"type":15},"Automation","automation",{"name":1804,"slug":1805,"type":15},"REST API","rest-api","2026-08-31T09:18:49.771371",{"slug":1808,"name":1808,"fn":1809,"description":1810,"org":1811,"tags":1812,"stars":20,"repoUrl":21,"updatedAt":1819},"calculator","evaluate mathematical expressions and unit conversions","Evaluate mathematical expressions and unit conversions. Handles arithmetic, percentages, exponents, and common unit conversions (temperature, distance, weight). No external dependencies.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1813,1816],{"name":1814,"slug":1815,"type":15},"Analysis","analysis",{"name":1817,"slug":1818,"type":15},"Mathematics","mathematics","2026-08-31T09:19:10.508338",{"slug":4,"name":4,"fn":5,"description":6,"org":1821,"tags":1822,"stars":20,"repoUrl":21,"updatedAt":22},{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1823,1824,1825],{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},{"slug":1827,"name":1827,"fn":1828,"description":1829,"org":1830,"tags":1831,"stars":20,"repoUrl":21,"updatedAt":1839},"task-list","manage multi-step task lists","Required for 4+ step requests; add tasks at start and update status after each step.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1832,1833,1836],{"name":9,"slug":8,"type":15},{"name":1834,"slug":1835,"type":15},"Productivity","productivity",{"name":1837,"slug":1838,"type":15},"Task Management","task-management","2026-08-31T09:18:45.27459",{"slug":1841,"name":1841,"fn":1842,"description":1843,"org":1844,"tags":1845,"stars":20,"repoUrl":21,"updatedAt":1853},"text-analyzer","analyze text content and statistics","Analyze text content and produce statistics including word count, line count, character count, most frequent words, and readability metrics. Works on any plain text input provided inline or from a file path.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1846,1849,1850],{"name":1847,"slug":1848,"type":15},"Data Analysis","data-analysis",{"name":9,"slug":8,"type":15},{"name":1851,"slug":1852,"type":15},"Statistics","statistics","2026-08-31T09:18:44.240822",{"items":1855,"total":2010},[1856,1874,1892,1903,1915,1929,1942,1956,1967,1978,1992,2001],{"slug":1857,"name":1857,"fn":1858,"description":1859,"org":1860,"tags":1861,"stars":1871,"repoUrl":1872,"updatedAt":1873},"nemoclaw-user-guide","retrieve NemoClaw documentation and configuration","Guides human users' AI agents to the NemoClaw docs MCP server and canonical Fern documentation in Markdown form. Use when users ask how to install, configure, operate, troubleshoot, secure, or learn NemoClaw with an AI coding assistant. Trigger keywords - nemoclaw docs, use nemoclaw with ai agent, nemoclaw mcp docs, nemoclaw install help, nemoclaw quickstart, nemoclaw markdown docs, llms.txt, agent skills.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1862,1865,1868],{"name":1863,"slug":1864,"type":15},"Documentation","documentation",{"name":1866,"slug":1867,"type":15},"MCP","mcp",{"name":1869,"slug":1870,"type":15},"Search","search",21777,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNemoClaw","2026-08-25T03:29:57.273192",{"slug":1875,"name":1875,"fn":1876,"description":1877,"org":1878,"tags":1879,"stars":1889,"repoUrl":1890,"updatedAt":1891},"mcore-build-and-dependency","manage Megatron-LM development environments","Container-based dev environment setup and dependency management for Megatron-LM. Covers acquiring and launching the CI container, uv package management, and updating uv.lock.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1880,1883,1886],{"name":1881,"slug":1882,"type":15},"Containers","containers",{"name":1884,"slug":1885,"type":15},"Deployment","deployment",{"name":1887,"slug":1888,"type":15},"Python","python",17049,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM","2026-07-27T06:06:11.249662",{"slug":1893,"name":1893,"fn":1894,"description":1895,"org":1896,"tags":1897,"stars":1889,"repoUrl":1890,"updatedAt":1902},"mcore-bump-base-image","update NVIDIA PyTorch base images","Bump the NVIDIA PyTorch base image (`nvcr.io\u002Fnvidia\u002Fpytorch:YY.MM-py3`) used by Megatron-LM CI. Covers the two pin sites (GitHub CI in `docker\u002F.ngc_version.dev` and GitLab CI in `.gitlab\u002Fstages\u002F01.build.yml`), the post-bump CI loop (re-run functional tests, refresh golden values, mark broken tests), and the gotchas that bit PRs",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1898,1901],{"name":1899,"slug":1900,"type":15},"CI\u002FCD","ci-cd",{"name":1884,"slug":1885,"type":15},"2026-07-14T05:25:59.97109",{"slug":1904,"name":1904,"fn":1905,"description":1906,"org":1907,"tags":1908,"stars":1889,"repoUrl":1890,"updatedAt":1914},"mcore-cicd","manage CI\u002FCD pipelines for Megatron-LM","CI\u002FCD reference for Megatron-LM. Covers CI pipeline structure, PR scope labels, triggering internal GitLab CI (which force-pushes the current branch to a pull-request\u002FBRANCH ref — always dry-run and verify the destination first; never run against shared or protected branches), and CI failure investigation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1909,1910,1911],{"name":1899,"slug":1900,"type":15},{"name":1884,"slug":1885,"type":15},{"name":1912,"slug":1913,"type":15},"GitHub","github","2026-08-28T14:38:16.959248",{"slug":1916,"name":1916,"fn":1917,"description":1918,"org":1919,"tags":1920,"stars":1889,"repoUrl":1890,"updatedAt":1928},"mcore-create-issue","investigate CI failures and create issues","Investigate a failing GitHub Actions run or job and create a GitHub issue for the failure.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1921,1924,1925],{"name":1922,"slug":1923,"type":15},"Debugging","debugging",{"name":1912,"slug":1913,"type":15},{"name":1926,"slug":1927,"type":15},"Triage","triage","2026-07-14T05:25:57.442089",{"slug":1930,"name":1930,"fn":1931,"description":1932,"org":1933,"tags":1934,"stars":1889,"repoUrl":1890,"updatedAt":1941},"mcore-linting-and-formatting","lint and format Megatron-LM code","Linting and formatting for Megatron-LM. Covers running autoformat.sh, tools (ruff, black, isort, pylint, mypy), and code style rules.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1935,1938],{"name":1936,"slug":1937,"type":15},"Best Practices","best-practices",{"name":1939,"slug":1940,"type":15},"Code Analysis","code-analysis","2026-07-14T05:25:56.18433",{"slug":1943,"name":1943,"fn":1944,"description":1945,"org":1946,"tags":1947,"stars":1889,"repoUrl":1890,"updatedAt":1955},"mcore-migrate-gpt-to-hybrid","migrate Megatron-LM models to HybridModel","Migration guide for moving Megatron Core GPTModel checkpoints, model providers, training commands, and layer mappings to HybridModel, including the mechanical steps for transferring an existing pretrain_gpt.py launch script.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1948,1951,1954],{"name":1949,"slug":1950,"type":15},"Machine Learning","machine-learning",{"name":1952,"slug":1953,"type":15},"Migration","migration",{"name":9,"slug":8,"type":15},"2026-08-21T03:36:57.470256",{"slug":1957,"name":1957,"fn":1958,"description":1959,"org":1960,"tags":1961,"stars":1889,"repoUrl":1890,"updatedAt":1966},"mcore-onboard-gb200-1node-tests","onboard functional tests for GB200","Onboard 1-node GitHub MR functional tests for GB200 from existing mr-scoped 2-node tests.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1962,1965],{"name":1963,"slug":1964,"type":15},"QA","qa",{"name":18,"slug":19,"type":15},"2026-07-14T05:25:53.673039",{"slug":1968,"name":1968,"fn":1969,"description":1970,"org":1971,"tags":1972,"stars":1889,"repoUrl":1890,"updatedAt":1977},"mcore-run-on-slurm","launch distributed training jobs on SLURM","How to launch distributed Megatron-LM training jobs on a SLURM cluster. Covers a minimal sbatch skeleton, environment-variable setup for torch.distributed.run, CUDA_DEVICE_MAX_CONNECTIONS rules across hardware and parallelism modes, container conventions, monitoring, and per-rank failure diagnosis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1973,1974],{"name":1884,"slug":1885,"type":15},{"name":1975,"slug":1976,"type":15},"Infrastructure","infrastructure","2026-07-14T05:25:49.362534",{"slug":1979,"name":1979,"fn":1980,"description":1981,"org":1982,"tags":1983,"stars":1889,"repoUrl":1890,"updatedAt":1991},"mcore-split-pr","split pull requests to reduce review load","Split a PR into multiple PRs to reduce the number of required CODEOWNERS reviewer groups.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1984,1987,1988],{"name":1985,"slug":1986,"type":15},"Code Review","code-review",{"name":1912,"slug":1913,"type":15},{"name":1989,"slug":1990,"type":15},"Pull Requests","pull-requests","2026-08-25T03:29:16.211287",{"slug":1993,"name":1993,"fn":1994,"description":1995,"org":1996,"tags":1997,"stars":1889,"repoUrl":1890,"updatedAt":2000},"mcore-testing","run and manage Megatron-LM tests","Test system for Megatron-LM. Covers test layout, recipe YAML structure, adding and running unit and functional tests, golden values, marker filters, and CI parity.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1998,1999],{"name":1963,"slug":1964,"type":15},{"name":18,"slug":19,"type":15},"2026-07-14T05:25:54.928983",{"slug":2002,"name":2002,"fn":2003,"description":2004,"org":2005,"tags":2006,"stars":1889,"repoUrl":1890,"updatedAt":2009},"nightly-sync","manage nightly main-to-dev sync workflows","Domain knowledge for the nightly main-to-dev sync workflow. Covers merge strategy, CI architecture, failure investigation, and known issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2007,2008],{"name":1801,"slug":1802,"type":15},{"name":1899,"slug":1900,"type":15},"2026-07-30T05:29:03.275638",563]