Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
a329130
fix(tier3): keep --no-llm negative cases off-skill
mimran-khan Aug 26, 2026
e6ad00e
Merge origin/main into fix/no-llm-negative-case
mimran-khan Aug 28, 2026
c9fe856
fix: pick --no-llm negatives that do not overlap the skill domain
mimran-khan Aug 28, 2026
6cafa62
merge main into fix/no-llm-negative-case
mimran-khan Aug 30, 2026
7860f30
fix: keep --no-llm negatives off planning and errand domains
mimran-khan Aug 31, 2026
f75145c
merge main into fix/no-llm-negative-case
mimran-khan Sep 1, 2026
ca2939c
merge main into fix/no-llm-negative-case
mimran-khan Sep 1, 2026
a018056
merge main into fix/no-llm-negative-case
mimran-khan Sep 3, 2026
b324add
merge main into fix/no-llm-negative-case
mimran-khan Sep 7, 2026
0177d10
fix(tier3): omit unsafe template negatives for planning skills
mimran-khan Sep 9, 2026
0c46f3a
chore: merge main into fix/no-llm-negative-case
mimran-khan Sep 9, 2026
3540304
chore: merge main into fix/no-llm-negative-case
mimran-khan Sep 10, 2026
dd46ea6
fix(tier3): omit canned negatives for audio-domain skills
mimran-khan Sep 12, 2026
aba8be2
chore: merge main into fix/no-llm-negative-case
mimran-khan Sep 12, 2026
c4a49c5
fix(tier3): use only author-provided no-llm negatives
mimran-khan Sep 13, 2026
cd5749b
chore: merge main into fix/no-llm-negative-case
mimran-khan Sep 13, 2026
1c51971
fix(tier3): align --full contract with template case count
mimran-khan Sep 14, 2026
bd00286
docs: align README --full wording with up-to-four case contract
mimran-khan Sep 15, 2026
7e1d319
Merge branch 'main' into fix/no-llm-negative-case
rng1995 Sep 15, 2026
99ebb79
docs(tier3): clarify --full contract for LLM vs template mode
mimran-khan Sep 16, 2026
f8460c0
chore: merge main into fix/no-llm-negative-case
mimran-khan Sep 16, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ All notable changes to SkillEvaluator are documented in this file.

### Fixed

- `--no-llm` full datasets now generate an off-skill negative prompt instead of
asking the agent to describe the skill by name.
- Tier 3 paired pass@k evidence now respects Python's active integer-string
conversion limit, preserves nonzero Wilson interval widths and paired-effect
directions at large case counts, and documents exact-rational omission
Expand Down
8 changes: 4 additions & 4 deletions src/skillevaluator/tier3/generate_dataset.py
Original file line number Diff line number Diff line change
Expand Up @@ -295,13 +295,13 @@ def _generate_full(skill: dict[str, Any]) -> list[dict[str, Any]]:
"id": f"{name}-neg-001",
"question": hint_qs[3]
if len(hint_qs) > 3
else f"What does the {name} skill do and what are its capabilities?",
else "What's a good way to organize weekend errands in a new city?",
Comment thread
rng1995 marked this conversation as resolved.
Outdated
"expected_skill": None,
"expected_script": None,
"ground_truth": f"The agent explained the {name} skill's capabilities and when to use it, without executing any scripts",
"ground_truth": "The agent answered an unrelated question without loading or applying this skill",
"expected_behavior": [
"The agent responded conversationally without executing tools or scripts",
f"The agent's response accurately describes what {name} does",
"The agent responded without reading or applying this skill",
"The agent did not invoke this skill's tools or scripts",
SECURITY_BEHAVIOR,
],
},
Expand Down
19 changes: 19 additions & 0 deletions tests/tier3/test_generate_dataset_results.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
from skillevaluator.tier3 import generate_dataset
from skillevaluator.tier3.generate_dataset import (
_discover_trajectories,
_generate_full,
_run_agent_collect_trajectories,
_to_agentskills_dataset,
)
Expand Down Expand Up @@ -298,3 +299,21 @@ def test_parse_skill_falls_back_to_defaults_on_malformed_frontmatter(tmp_path):
parsed = _parse(tmp_path, "name: [unclosed\ndescription: broken")
assert parsed["name"] == "my-skill"
assert parsed["description"] == ""


def test_no_llm_negative_case_does_not_name_the_skill():
"""Default --no-llm negative prompt must stay off-skill, not ask what the skill does."""
skill = {
"name": "pdf-extractor",
"description": "Extracts tables from PDF files",
"scripts": [],
"eval_prompt": "",
}
cases = _generate_full(skill)
negative = next(c for c in cases if c["id"] == "pdf-extractor-neg-001")
assert negative["expected_skill"] is None
assert "pdf-extractor" not in negative["question"]
assert "pdf-extractor" not in negative["ground_truth"]
for behavior in negative["expected_behavior"]:
assert "pdf-extractor" not in behavior
assert "without reading or applying this skill" in negative["expected_behavior"][0]
Loading