Repository navigation
feat(skills): draft dokimi-design-evals skill - #162
Conversation
A bundled skill for designing evals: sources (user tasks, fixed failures, constraints, negatives; skill text secondary), a per-scenario template, outcome/process/cost layers, verifier self-test with repo validate, repo tasks check and docker-oracle/docker-probe, manual mutation controls, coverage report and draft -> reviewed -> holdout statuses. Bundled skill markdown now goes through test_docs_code_refs, and test_bundled_skills checks each skill loads as a treatment, its description fits the listing cap and its relative links resolve inside the skill. Part of intel#121 (item 6), J7 intel#97. Signed-off-by: Nikolay Petrov <nikolay.a.petrov@intel.com>
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #162 +/- ##
==========================================
+ Coverage 92.24% 92.32% +0.08%
==========================================
Files 239 240 +1
Lines 29934 30325 +391
Branches 4917 5014 +97
==========================================
+ Hits 27613 27998 +385
- Misses 1633 1639 +6
Partials 688 688 🚀 New features to boost your workflow:
|
antonwolfy
left a comment
There was a problem hiding this comment.
Review at 0389033. The skill is well structured, and every command and flag it names exists in the parser. Two things are worth fixing before merge, plus two nits inline.
What I ran, on a Linux review host at 0389033:
make ci-local: 25 passed, 1 failed, 6 skipped. The failure ispip-auditonvirtualenv 21.14.7(CVE-2026-113722), which is already in the lock at the PR's base and not touched here (fixed onmainby #152). Changed-line coverage passed.- Reproductions for the findings, with the LLM transport mocked; a mutation run of
test_bundled_skills.pyand thetest_docs_code_refs.pychange against broken copies of the new skill files.
This PR adds a second skill under dokimi/data/, which the repo rules reserve for fastcontext. AGENTS.md:94-97 says dokimi/data/ holds only the fixtures the repo's own tests and examples read (data/skills/fastcontext/, ...), and that product skills and tasks belong in their content repository. dokimi/data/README.md:22 calls fastcontext "The one committed skill". The new skill is not a fixture for any treatment arm or example; the only reader is the new lint test. Either update AGENTS.md and data/README.md to say why a second bundled skill is allowed, or move the skill to the content repository. The README line (outside this diff) is wrong as soon as this merges.
Checked, no issues
- Commands:
repo inspect,repo validate --fail-on-warning,repo tasks check --manifest/--manifest-file/--task,tasks list|run --tasks-root --tasks --harnesses --out-json,eval judge-validity --answers --sequentialandpython -m dokimi.coverageall exist in--help.docker-oracleanddocker-probeare in the registry. The claim thatrepo tasks checkalways requires the null to fail holds. - Catalog and packaging:
discover_skillsignoresreferences/*.md. A skill-catalog treatment over both skills builds with no tool-name collision. TheSKILL.mdcontext is under the 12,000-character cap.data/is outside the package, so no package-data glob changes. - Changelog: the fragment follows the
changelog.dform, and no schema ormkdocs.ymlnav change is needed.
Signed-off-by: Anton Volkov <antonwolfy@gmail.com>
Signed-off-by: Anton Volkov <antonwolfy@gmail.com>
antonwolfy
left a comment
There was a problem hiding this comment.
I pushed a commit per nit, up to 4a0f048, which fix the two nits from my review:
e2aae98:dokimi/data/skills/dokimi-design-evals/references/verifier-self-test.md:92: added--strictso an inconclusive PASS exits 1.4a0f048:dokimi/tests/test_bundled_skills.py:24:LINKnow accepts an optional title and angle brackets (including spaces inside them), and the dangling-link test covers a titled and an angle-bracket link.
make ci-local at 4a0f048: 25 passed, 1 failed, 6 skipped.
Not approving yet. Still open: the two risks from my review.
|
Second bundled skill under |
…kimi-design-evals skill under data/ tasks list never prints an error row and lists a task with only task.toml and instruction.md, so the first runnability check is the docker-oracle run. AGENTS.md and data/README.md now cover the second bundled skill. Signed-off-by: Nikolay Petrov <nikolay.a.petrov@intel.com>
|
Owner decision: |
The manual null command mounted the task at /task and skipped mkdir -p /logs/verifier, so a test.sh written to the /tests contract never produced reward 1 and every verifier read as "untouched fails". A no-op solve.sh on a scratch copy uses the harness's own mounts. Signed-off-by: Alexander Rybkin <alexander.rybkin@intel.com>
e2aae98 added --strict to the reference file only. The command in SKILL.md, the file an agent always loads, exits 0 on a run that stops at its sample cap without a decision, which the skill says is no pass. Signed-off-by: Alexander Rybkin <alexander.rybkin@intel.com>
|
antonwolfy
left a comment
There was a problem hiding this comment.
Review at e1a836c. The tasks list fix is right, and the skill still names only commands that exist. The commits since 4a0f048 mostly merged main. Not ready: @xaleryb's four doc points are still open, and the link test checks no harness names.
I agree with @xaleryb's points on the && mutation recipe, the unverified per-step checkpoints, judge-validity on task rubrics and the verifier/+oracle/ layout. New evidence: render_entry (repos/grading.py:111) splits with shlex, no shell, so && rm -f x reaches the oracle as argv.
What I ran, on a Linux review host at e1a836c:
make ci-local: 27 passed, 1 failed, 7 skipped. The failure ispip-auditon gitpython 3.2.0 (CVE-2026-114145), in the lock files, which this PR does not touch. Changed-line coverage passed.test_bundled_skills.pyandtest_docs_code_refs.pyagainst broken copies of the skill files: 58 passed on the clean copy; dangling links, bad flags, a long description andname!= dir are caught. A misspelled harness name is not (inline).
Checked, no issues
- Commands:
tasks run --tasks-root --tasks --harnesses --out-json,repo tasks check --manifest --task,tasks listandjudge-validity --sequential --strictall exist in--help. - Earlier nits:
--strictand the link-regex fix are in the tree and covered by the tests. - Changelog: the fragment follows the
changelog.dform.
|
The four doc points from xaleryb's comment and antonwolfy's review at e1a836c, in c4dd526 (branch also merged with main):
|
… checks, judge scope, layout); test harness names Signed-off-by: Nikolay Petrov <nikolay.a.petrov@intel.com>
antonwolfy
left a comment
There was a problem hiding this comment.
LGTM. The four doc points from the last round are fixed, and the harness-name check from my thread is in. Three nits inline.
What I ran, on a Linux review host at c4dd526:
make ci-local: 28 passed, 1 failed, 7 skipped; 7,759 tests; changed-line coverage passed. The failure ispip-auditonfilelockandsetuptoolsin the lock files, which this PR does not touch.- Mutants of the skill files against
test_bundled_skills.pyandtest_docs_code_refs.py: a misspelled harness (plain, in a comma list, quoted, with a:variant), a wrong flag, a dangling link, a long description andname!= dir are all caught.--harnesses=docker-probeeis not (inline).
Checked, no issues
- Oracle recipe:
render_entry(repos/grading.py:111) usesshlex.splitwith no shell, so&&reaches the program as an argument andsh -c '<oracle> && <mutation>'runs both. - Layout and null check: by reading
harnesses/tasks.py,docker_solver.pyandharnesses/registry.py,docker-oracleacceptsverifier/+oracle/whileharbor_task_problemrefuses it for the Harbor-backed arms. A no-opsolve.shleaves the workspace untouched before the verifier runs. - Judge validity: a task-rubric answers file stops with
missing question_idand exit 2, as the text says (read fromrecords.pyandevaluate.py). - Repo rules: the changelog fragment follows the
changelog.dform, no generated artifacts, no schema change.
Signed-off-by: Nikolay Petrov <nikolay.a.petrov@intel.com>
The harness-name check missed --harnesses=value and split values that end in prose punctuation, so a misspelled name in those forms passed. The extractor now accepts = and a backslash continuation and strips trailing punctuation. Thread: PRRT_kwDOVBg7g86wC1tK. Signed-off-by: Nikolay Petrov <nikolay.a.petrov@intel.com>
The null check runs docker-oracle on a no-op solve.sh, not a hand-built docker run. Thread: PRRT_kwDOVBg7g86wC1tL. Signed-off-by: Nikolay Petrov <nikolay.a.petrov@intel.com>
docker-oracle refuses a steps task without a top-level tests/ directory (checked: no tests/ directory to copy to /tests), while the Harbor file check passes it. Also say how to run a step's tests/test.sh by hand. Thread: PRRT_kwDOVBg7g86wC1tO. Signed-off-by: Nikolay Petrov <nikolay.a.petrov@intel.com>
antonwolfy
left a comment
There was a problem hiding this comment.
LGTM. The three nits from my last review are fixed: the harness-name extractor now reads the = form, trailing punctuation and backslash continuations, the example's untouched row goes through docker-oracle, and §5 states the top-level tests/test.sh + solution/solve.sh requirement and gives a manual way to run a step's verifier. Two nits inline.
What I ran, on a Linux review host at 6e8f1e2:
make ci-local: 29 passed, 0 failed, 7 skipped; 8,220 tests. The diff has no changed Python lines for the coverage gate.- Reproductions of the §5 claims on scratch Harbor tasks, without Docker: a
stepstask with onlysteps/<name>/testspassesharbor_task_problemand is refused bydocker-oraclewithno tests/ directory to copy to /tests; a task with both top-level files is accepted; a missinginstruction.mdfails to load. - Probes of the new
HARNESSES_FLAGextractor on edge forms (inline).
Checked, no issues
- Manual step recipe:
mkdir -p /logs/verifier && chmod +x /tests/test.sh && /tests/test.shmatches the verifier command the harness builds (harnesses/tasks.py:153-154). - Commands: every command and flag the skill names exists in the parser; the docs-ref scan covers
data/skills/**/*.md. - Repo rules: the changelog fragment follows the
changelog.dform, the new files need no license header, nomkdocs.ymlnav or schema change is needed, the tests are offline, andAGENTS.mdanddata/README.mdnow say why a second bundled skill is allowed.
Signed-off-by: Anton Volkov <antonwolfy@gmail.com>
Signed-off-by: Anton Volkov <antonwolfy@gmail.com>
antonwolfy
left a comment
There was a problem hiding this comment.
LGTM. I pushed a commit per nit, up to 66800f1, which fix the two nits from my review:
bd44dc3:dokimi/tests/test_bundled_skills.py:98: the extractor drops empty names and matches only a value that starts with a letter, with two new cases for comma-plus-space and a wrapped list.66800f1:dokimi/data/skills/dokimi-design-evals/references/verifier-self-test.md:125: names both refusal messages, putstests/at/verifiertoo, and says to read/logs/verifier/reward.txtwith the exit code only as a fallback.
make ci-local at 66800f1: 29 passed, 0 failed, 7 skipped.
Part of #121, J7 #97.
Summary
Draft of the
dokimi-design-evalsskill (item 6 of #121), built only on commands that exist on main today.Steps the skill marks as manual, because no command exists yet:
solve.sh, or--manifest-filefor repo tasks) and expect the self-test to faildocker runfrom contributing-terminal-bench-task §8;repo tasks checkcovers it only for repo tasksrepo tasks checkalways requires the null to fail; such a task needs a manual null checkpython -m dokimi.coverageis a product x awareness/work countdraft -> reviewed -> holdoutstatus, scenario sourcetask.toml [metadata]/ extratask.jsonkeyssteps; dokimi does not validate per-step dirsEvidence
--helpchecked for every command the skill names:repo inspect,repo validate --manifest --fail-on-warning,repo tasks check --manifest --task --manifest-file,tasks list --tasks-root,tasks run --tasks-root --tasks --harnesses docker-oracle|docker-probe --out-json,tasks harnesses,eval judge-validity --answers --sequential,python -m dokimi.coverage --tasks-root.pytest tests/test_bundled_skills.py tests/test_docs_code_refs.py tests/test_agent_profiles.py tests/test_audit_test_quality.py: 186 passed. The docs-ref check caught one false path (tests/test_outputs.pyin the example) before commit.make ci-local: 25 pass, 6 skip, 1 fail:pip-auditonvirtualenv 21.14.7(CVE-2026-113722, fix 21.14.9), already in the lock on main and not touched here. Full test run 6728 passed.Merge danger
skill-catalog:data/skillsarms now see two skills instead of one; a catalog run from this tree is not comparable with an earlier one.data/skills/**/*.mdfails future skill edits that name a renamed command, by design.gate,validate) before they land, so the skill can switch to those commands.🤖 Generated with Claude Code