Skip to main content

eval-author-task-create

Propose dataset improvements from Eval Author audit findings, then optionally create one Gym or Harbor task from one actionable uncovered tool. Prove it with Gym controls and native execution or Harbor's Oracle, then run it repeatedly with the repository's real agent when authorized, and accept it only when measured ATIF closes the selected gap every time. Use when the user asks to suggest dataset changes, fill an eval gap, turn audit uncovered_items into a Gym or Harbor task, or add missing tool coverage. Writes proposals, drafts, and measurements only under `.eval-author/`.

Source facts

Repository
NVIDIA-NeMo/eval-author
Last source activity
October 14, 2026 at 20:24
Detected SKILL.md language
English
Stars
7
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
9 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
eval-author-task-create
description
Propose dataset improvements from Eval Author audit findings, then optionally create one Gym or Harbor task from one actionable uncovered tool. Prove it with Gym controls and native execution or Harbor's Oracle, then run it repeatedly with the repository's real agent when authorized, and accept it only when measured ATIF closes the selected gap every time. Use when the user asks to suggest dataset changes, fill an eval gap, turn audit uncovered_items into a Gym or Harbor task, or add missing tool coverage. Writes proposals, drafts, and measurements only under `.eval-author/`.
triggers
["create a Gym task from an audit gap","create a Harbor task from an audit gap","fill an uncovered eval tool","generate missing eval tasks","close audit coverage gaps","turn uncovered_items into Harbor tasks","propose dataset improvements from audit findings","suggest new evals based on this audit"]
not-for
["eval-author-first-eval (use when the user has no evaluations yet)","eval-author (use for the shared standard and routing)","eval-author-audit (use to create the denominator and coverage report)","eval-author-discover (use to prove an existing suite is runnable)","nemo-evaluator (use to run an existing benchmark without authoring tasks)"]
compatibility
Proposals read local audit artifacts and task evidence without running Gym or Harbor. Task creation needs the selected provider’s authoring runtime verified by eval-author’s shared locator and runtime-policy.json. Keep Gym separate. Docker is required for Oracle and Docker-backed real-agent runs. Real-agent runs may require provider credentials and explicit user approval.
maturity
alpha
license
Apache-2.0
user-invocable
true
allowed-tools
Bash Read Write Grep Glob
<!-- SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. --> <!-- SPDX-License-Identifier: Apache-2.0 --> # Eval Author: create task ## Purpose Read `eval-author` for the shared evidence standard and boundaries. Read `eval-author-audit` for measurement and aggregation. Start with the proposal step to turn audit evidence into prioritized dataset improvements across tools, capabilities, and failure cases. For proposal-only requests, stop after Step 1. Enter that step directly from the core's proposal route, carrying existing audit findings and prior answers. Accepting the audit's offer to propose tasks also enters Step 1 directly; reuse the reviewed Audit coverage report and agreed priorities. When handing off from a guided audit, wait for an explicit answer accepting that offer; report acceptance alone is not permission to begin proposals. If required audit inputs are missing, obtain those inputs through the audit flow and return to proposals; do not restart first-eval onboarding or infer permission to create or run tasks. For task-creation requests, continue with an eligible tool gap through the existing execution path: ```text actionable uncovered tool → Gym-native or Harbor-native draft → native positive and negative controls → repeated real-agent ATIF → target tool covered in every report ``` Create and prove one tool gap at a time. Keep every generated artifact under `.eval-author/`; do not edit existing tasks or customer source. For an existing suite without sufficient audit findings, preserve the requested outcome: audit or proposal work obtains its missing coverage inputs through `eval-author-audit`; readiness work belongs in `eval-author-discover`. A missing report alone is not a first-eval request. A reviewed specification and Markdown report can support proposal-only work without measurement JSON: label such ideas as unmeasured candidates and carry the measurement limitation forward. Do not repeat an already-deferred measurement just to propose candidates. Automatic tool-gap task creation still requires the aggregate JSON report. ## Available Scripts Run `uv run <skill_dir>/scripts/task_pipeline.py <command>`. Run `task_evidence.py` with the selected runtime's Python; Harbor preparation imports Harbor. | Script | Purpose | Arguments | |---|---|---| | `scripts/task_evidence.py` | Record current-revision native controls and agent runs | `prepare --task-dir --contract --out`; `run --manifest --case --run-id --result --out [--trace] -- <command>` | | `scripts/task_pipeline.py` | Select, scaffold, and verify one audit-gap task | `select --report`; `scaffold --report --target` plus task metadata; `verify --before --after --target --evidence` | The three deterministic commands have these verdicts: | Command | Verdict | |---|---| | `select` | Lists only tool items with `reason: not_covered_by_any_input_report` and emits a deterministic `task_slug` plus artifact paths | | `scaffold` | Calls Gym's native scaffolder with `--provider gym` or Harbor's `harbor task init`, requires matching draft/proposal names for that slug, and installs the supplied instruction | | `verify` | Exits 0 only with current-revision control and agent receipts, matching task/trace identities, and tool coverage in both distinct agent runs | The script prints one JSON object. Exit code 0 is success; do not replace its verdict with model judgment. ## Step 1: propose dataset improvements Use the shared [Coverage planning](../eval-author/references/coverage-planning.md) procedure for source scope, priorities, and proposed example breadth. Reuse the audit's confirmed corpus and exclusions when inspecting evidence; a discovered path is not permission to include another corpus. Ask about an unresolved source before searching or reading it. Proposal-only work can use the available reviewed findings without requiring new traces or a creation-scope checkpoint. When available, read the **Audit coverage report** (`.eval-author/audit-coverage-report.md`) for test mappings, findings, limitations, and agreed next actions. Check its applicability against the underlying specification and reports; a mapped test does not establish measured coverage. The Markdown report supplies context, while measurement JSON remains the input for deterministic tool-gap selection and verification. Its absence alone does not require repeating an otherwise usable audit. Keep the audit's [artifact names](../eval-author-audit/references/coverage-report.md#artifact-names) in proposal replies and links: Audit specification (`audit.md`), Audit coverage report (`audit-coverage-report.md`), and Coverage measurements (JSON) (`audit-coverage-report.json`). Review status does not change these names. Read available aggregate measurements, relevant per-trace `details.json` and capability judgments, and the selected source traces or verifier results needed to explain the findings. When measurement is unavailable, ground candidate proposals in the reviewed specification and inspected eval definitions instead. Check existing task instructions, fixtures, and verifiers before claiming a scenario is absent or proposing a duplicate. A capability covered in one run can still fail in another; review observed failures even when the item is absent from `uncovered_items`. Distinguish the basis for each recommendation: | Basis | What it supports | |---|---| | Observed failure | A trace or verifier shows incorrect behavior on an exercised scenario. Preserve the existing failing task as a regression; propose strengthening it only when a specific fixture or verifier change adds value. An agent fix may be the next action without any dataset change. | | Coverage gap in inspected inputs | A measured item is not demonstrated and the inspected tasks or traces lack the intended scenario. Propose a concrete new task or extension; state the inspected scope rather than claiming the entire dataset lacks coverage. | | Unmeasured or insufficient evidence | The method was not selected or is unsupported, judgments are missing or unclear, or the scenario's trigger is unverified. Recommend measurement or inspection first. Ethos-backed scenarios may still be proposed as candidates, with their unmeasured status explicit. | `not_covered_by_any_input_report` alone does not distinguish an absent scenario, an agent failure, or missing judgments. `not_measured_by_any_method` is a measurement limitation, not proof of a dataset deficiency. Failure-case coverage requires the audit skill's `failure_cases` measurement; manual observations alone do not change measurement status. Failure cases remain ineligible for automatic tool-gap generation. Write recommendations to `.eval-author/proposals/dataset-recommendations.md` as skill-authored analysis; keep the generated coverage JSON unchanged. Rank by expected value and strength of evidence, explaining why the first action comes first. Apply established user priorities, including cost when relevant, and distinguish them from suggested priorities still awaiting review. Prefer a short, useful list over one suggestion per uncovered item. For each recommendation, include: - **Change and scenario:** add a task, strengthen a named existing task, retain an existing regression, or gather evidence; describe the concrete request and fixture or failure trigger that makes it useful. - **Expected behavior and verification:** the outcome to check and how a verifier would distinguish correct from incorrect behavior. For failure cases, identify evidence that the trigger actually occurred as well as the expected response. - **Basis and evidence:** the category above, stable audit item names, and task, run, trace-step, judgment, or verifier references supporting the recommendation. Mark proposed fixture details as proposals, not observed facts. - **Proposed breadth:** the distinct input examples, behavior variations, difficulty, positive and negative scenarios, expected outcomes, exclusions, and cost assumptions that would make this recommendation useful. Label counts and tradeoffs as provisional until agreed; repeated runs are not new examples. - **Next action:** say whether the suggestion is eligible for automatic tool-gap task creation, needs manual task design, or needs more measurement. A written recommendation is not a generated, validated, or accepted Gym or Harbor task. For Gym recommendations, include a [version and rerun plan](references/gym-tasks.md#version-and-rerun-plan) in the recommendation: exact pins supported by the available evidence, unresolved versions, and the settings and reset procedure needed to repeat the evaluation. Carry the selected plan into task creation; a proposed pin is not a verified lock. Lead the proposal response with the highest-value recommendations and enough scenario and expected-behavior detail to act on them. Follow with supporting coverage counts, measurement limits, and links to the proposals and Audit coverage report. Full tool coverage or an unsupported task-generation path must not suppress useful capability or failure-case suggestions. Do not relabel those suggestions as tool gaps to pass the selector. If evidence supports no dataset change, say why and identify any useful measurement or agent-fix action instead of inventing additions. Do not scaffold or run tasks for a proposal-only request. ## Step 2: select one actionable gap ```bash uv run <skill_dir>/scripts/task_pipeline.py select \ --report .eval-author/audit-coverage-report.json ``` Choose one item from `actionable_tools`. Stop task creation when the list is empty, and surface the dataset recommendations from Step 1. An empty selector means no eligible tool gaps, not that there are no useful dataset improvements. Capability and failure-case items are not task-generation inputs in v1, even when capability coverage was measured. Each actionable tool includes a deterministic `task_slug` of the form `cover-<tool-name>` and a `paths` object for the proposal, draft, and measurement directories. Use those paths verbatim for the rest of this flow. Do not invent alternate slugs or filenames. ## Step 3: design the smallest objective task Before generating task instructions, fixtures, or scaffolds, use the shared [coverage-planning checkpoint](../eval-author/references/coverage-planning.md). Use the core's [provider-selection rule](../eval-author/SKILL.md#select-the-evaluation-provider) to resolve Gym or Harbor when mapping scope to execution counts. Gym repeats selected dataset rows, while Harbor repeats tasks. Keep estimates conditional if that choice remains open. Present the proposed priorities and breadth for review, including an option to start with a minimal pilot and expand. Reuse already agreed scope rather than asking again. Save the agreement in `.eval-author/proposals/dataset-recommendations.md`: selected corpus and exclusions, priorities and cost constraints, distinct input-example counts per behavior, variations and difficulty, positive and negative scenarios, expected outcomes, and pilot or expansion status. Keep this planning record out of the agent-facing instruction file. Answer questions or complete scoped detours, then resume this checkpoint with the existing decisions intact. Explain how the agreement maps to the selected tool gap. The deterministic pipeline creates one tool-gap draft at a time; repeated runs test closure on the selected inputs and do not add distinct input examples. Keep any agreed examples beyond the current draft visible as pending work. A capability or failure-case proposal outside the generator's support remains an explicit gap requiring manual design, not a completed example or a relabeled tool gap. If the reviewed priorities change the target, return to Step 2 before generation. Read the selected item's `description`, `focus`, `needed_tools`, and `evidence_required`. Read one nearby task for domain conventions only. Do not copy its directory: a sibling can carry an obsolete Harbor schema, placeholder verifier, or unrelated solution. Write the instruction only to `paths.proposal` from Step 2. State the observable goal, paths, and constraints without naming the target tool or leaking verifier logic. The task should naturally require the selected tool and no unrelated capability. Decide the verifier before scaffolding. Prefer deterministic shell or pytest. The verifier must grade the task outcome, not the tool call; ATIF measurement proves tool coverage separately. ## Step 4: scaffold with Gym or Harbor Select the provider from the user's request and existing suite. For **Gym**, follow [Author and prove a Gym evaluation](references/gym-tasks.md) for native scaffolding, verifier controls, and real-agent runs. Keep Steps 1–3's selected gap and instruction, then return to the shared coverage verification steps. Do not apply Harbor file layouts or Oracle CLI flags to Gym. For either provider, build the task's environment with [`eval-author-environment`](../eval-author-environment/SKILL.md) and pass its smoke task before writing the verifier, reusing the agent's existing proven environment kit when one exists, and derive expected values with an independent reference query over the kit's data. For **Harbor**, use the following native scaffold: ```bash uv run <skill_dir>/scripts/task_pipeline.py scaffold \ --report .eval-author/audit-coverage-report.json \ --target <tool-name> \ --out .eval-author/task-drafts/<task-slug> \ --task-name <org>/<task-slug> \ --description "<one-line description>" \ --author "<author>" \ --instruction-file .eval-author/proposals/<task-slug>-instruction.md ``` Use the Step 2 `task_slug` for `<task-slug>` in every path above. `scaffold` rejects mismatched draft, task-name, or proposal filenames. Then complete Harbor's generated files: - `environment/`: a copy of the agent's environment kit plus this task's own records, buildable on its own rather than `FROM` a local kit image, and never the solution. - `tests/test.sh`: deterministic reward writer using absolute paths. - `solution/solve.sh`: executable Oracle solution. - `task.toml`: nonempty keywords, metadata, realistic timeouts and resources. - `README.md`: purpose, environment, verifier, layout, and persistent suite and individual-item run instructions. For either provider, create the generated suite's top-level review and rerun guide using [Suite review and rerun instructions](../eval-author/references/suite-readme.md). For a standalone draft, extend its task-level `README.md` without renaming it; when adding it to a generated collection, also update that collection's guide and coverage mapping. Present and link the case inventory when the cases are authored, with execution pending, then refresh it after native controls and actual-agent runs with their available results and execution traces. Do not leave generated placeholders, `pass`, unconditional reward 1, or empty keywords. ## Step 5: prove task correctness with native controls Confirm the environment kit's proof passed first; a proof failure is an environment defect to fix, not a task result, and that proof stays in the kit's plan rather than among the task's receipts. The task's own controls never count as environment proof. Apply [Task validation and execution evidence](../eval-author/references/task-validation.md). Prepare the result contract and revision manifest before execution. Record each native control and each agent attempt as its own `scripts/task_evidence.py run` invocation, with fresh native results and receipts outside the task tree. Harbor requires a reference and a realistic incorrect control; include applicable valid-alternative and side-effect cases. A failing command or missing evidence is not a passing negative control. Use the same Harbor Python runtime for preparation and runs. Follow [Execution recovery](../eval-author/references/execution-recovery.md) for native controls, real-agent trials, and reporting. Compatibility repairs must preserve the selected provider and original grading semantics. For Gym, use the positive and negative controls and native execution in the [Gym guide](references/gym-tasks.md). For Harbor, record the Oracle reference before spending model credentials. `harbor trial start` writes `result.json` and `agent/trajectory.json` under its `--trials-dir` and `--trial-name`, giving the recorder fixed paths; a Harbor job names its trials randomly: ```bash TRIALS="$PWD/.eval-author/jobs/<task-slug>" <harbor_python> <skill_dir>/scripts/task_evidence.py run \ --manifest .eval-author/task-measurements/<task-slug>/revision-1.json \ --case reference --run-id reference-1 \ --result "$TRIALS/reference-1/result.json" \ --out .eval-author/task-measurements/<task-slug>/reference-1.json \ -- harbor trial start -p .eval-author/task-drafts/<task-slug> -a oracle \ --trial-name reference-1 --trials-dir "$TRIALS" ``` Continue only when the receipt reports `passed`, with no exception and reward 1.0. Record the incorrect control the same way, choosing its agent as described in [Review the verifier before running](../eval-author/references/task-validation.md#review-the-verifier-before-running). Fix the task, solution, or verifier when Oracle fails; do not weaken the verifier merely to make it pass. ## Step 6: run the real agent twice Running a model spends credentials. Do it only when the user asked for the run or approved it. Use the repository's proven agent configuration and point it at the draft. Record each attempt as its own invocation with fresh native output: one Gym repeat per recorded run, or one Harbor trial per run with a distinct trial name. One job with two attempts cannot back two receipts. Keep all outputs under `.eval-author/`: ```bash <harbor_python> <skill_dir>/scripts/task_evidence.py run \ --manifest .eval-author/task-measurements/<task-slug>/revision-1.json \ --case agent --run-id repeat-1 \ --result "$TRIALS/repeat-1/result.json" \ --trace "$TRIALS/repeat-1/agent/trajectory.json" \ --out .eval-author/task-measurements/<task-slug>/agent-1.json \ -- harbor trial start -p .eval-author/task-drafts/<task-slug> \ -a <agent> -m <model> --trial-name repeat-1 --trials-dir "$TRIALS" ``` Repeat with `repeat-2` and `agent-2.json`. Carry a proven Harbor job's agent settings into the equivalent trial options or a trial `--config`. Require both trials to: 1. finish without an exception, 2. receive the intended verifier reward, and 3. retain interaction evidence accepted as ATIF by the audit `measure.py`: Gym Responses converted with receipts, original retained ATIF, or Harbor's `agent/trajectory.json`. Trace Loader output alone is not ATIF. `SUPPORTS_ATIF = true` is not evidence that the emitted JSON matches Harbor's current schema. A `measure.py` parse failure is an agent-adapter defect, not a coverage result. ## Step 7: measure and aggregate each trial Run `eval-author-audit`'s `measure.py` and `report.py` separately for each recorded attempt. Measure the recorded trace with the recorder's `--run-id` and the selected `<task-slug>`; `verify` rejects any other trace. For Harbor, pass the recorded trial directory; for Gym, pass the converted ATIF with `--trace`. Keep repeat outputs separate so one successful run cannot hide another: ```bash uv run --with-requirements <audit_skill_dir>/requirements.txt \ <audit_skill_dir>/scripts/audit_spec/measure.py \ --audit .eval-author/audit.md \ --trial-dir "$TRIALS/repeat-1" \ --task-id <task-slug> \ --run-id repeat-1 \ --out-dir .eval-author/task-measurements/<task-slug>/repeat-1 uv run --with-requirements <audit_skill_dir>/requirements.txt \ <audit_skill_dir>/scripts/audit_spec/report.py \ --audit .eval-author/audit.md \ --coverage-dir .eval-author/task-measurements/<task-slug>/repeat-1 \ --out .eval-author/task-measurements/<task-slug>/repeat-1-report.json ``` Repeat for `repeat-2`. These newly generated trials are evidence for the selected draft. Retain their relationship to the agreed examples separately from the original selected corpus; do not silently add them to or replace that corpus in an audit report. ## Step 8: accept only deterministic closure ```bash uv run <skill_dir>/scripts/task_pipeline.py verify \ --before .eval-author/audit-coverage-report.json \ --after .eval-author/task-measurements/<task-slug>/repeat-1-report.json \ --after .eval-author/task-measurements/<task-slug>/repeat-2-report.json \ --target <tool-name> \ --evidence .eval-author/task-measurements/<task-slug>/reference-1.json \ --evidence .eval-author/task-measurements/<task-slug>/incorrect-1.json \ --evidence .eval-author/task-measurements/<task-slug>/agent-1.json \ --evidence .eval-author/task-measurements/<task-slug>/agent-2.json ``` Add receipts for every other declared control. Use absolute trace paths in the measurement subjects, matching the recorder's trace paths and run IDs. v2 verification rejects stale revisions, missing controls, unrelated tasks, reused native runs, and traces unrelated to the execution receipts. Task
View on GitHub
This SKILL.md is very large, so SkillsMP previews the first section here. View on GitHub