Add an agent-skill eval scenario for the skill builder - #53
Add an agent-skill eval scenario for the skill builder#53Karim Mehalebi (karimad) wants to merge 1 commit into
Conversation
microsoft#47 added the "agent-skill" (generic) architecture but only covered it with structural/manifest tests (architecture-registry.test.ts, catalogue-registry.test.ts) — nothing exercises the real builder LLM against the new catalogue the way the skillbuilder eval suite does for scout/cowork. Adds two scenarios: - github-issue-triage-agent-skill: clones github-issue-triage-skill onto architecture: "agent-skill". Requires the gh CLI (a universal primitive) while forbidding any vendor-specific tool name. Ran against the real Copilot CLI builder: 100% pass — generalizes to gh CLI shell steps with zero product-specific references. - teams-digest-agent-skill: clones cowork-teams-digest onto architecture: "agent-skill" — a harder case, since there's no CLI at all for Teams. Confirms the builder doesn't invent a plausible- sounding native tool name when none exists in the catalogue; instead it correctly falls back to documented Microsoft Graph HTTP calls via curl. Ran against the real builder: 100% pass. Both scenarios are additive only; no production code changed.
f557357 to
2b4ddfc
Compare
|
Thanks for adding this. I’m closing the PR because these scenarios evaluate only the builder’s proposed plan inside Copilot CLI, rather than evaluating the generated skill within the target architecture itself. For an agent-skill eval to be meaningful, it should generate and export the skill, load it into the target architecture, execute the task there, and score the resulting behavior. Checking that the builder mentions We’re open to other ideas for how to evaluate this well, including proposals for representative target architectures or an interoperability/conformance approach. |
Thanks for the feedback. I understand the distinction you’re making between evaluating the SkillBuilder output and evaluating the generated skill at runtime. I noticed that the existing scenarios in evals/skillbuilder/scenarios.ts also focus on validating the builder’s proposed plan (tool selection, step structure, constraints, etc.) rather than executing the generated skill in a target architecture. Would it make sense to separate these into two categories:
I’d be interested in contributing toward the runtime/conformance direction if that aligns with where the project is heading. issue created : #55 |
|
Follow-up on this feedback: #70 adds the runtime-conformance layer you described — actually generates → exports → loads → executes a |
Summary
#47 added the
agent-skill(generic) architecture but only covered it with structural/manifest tests (architecture-registry.test.ts,catalogue-registry.test.ts) — nothing exercises the real builder LLM against the new catalogue the way the existing skillbuilder eval suite does forscout/cowork.Adds two scenarios to
evals/skillbuilder/scenarios.ts:github-issue-triage-agent-skill— a clone of the existinggithub-issue-triage-skillscenario, retargeted toarchitecture: "agent-skill". Requires theghCLI (a universal primitive) while forbidding any vendor-specific tool name (workiq_*,m365_*, named browser-tool suites).teams-digest-agent-skill— a clone ofcowork-teams-digest, retargeted toagent-skill. A harder case than thegh-CLI scenario, since there's no CLI at all for Teams. Confirms the builder doesn't invent a plausible-sounding native tool name when none exists in the catalogue — it correctly falls back to documented Microsoft Graph HTTP calls viacurlinstead.Test plan
npm run typecheck— cleannpm run eval:skill -- --only=github-issue-triage-agent-skill— 100% pass against the real Copilot CLI builder; generalizes toghCLI shell steps with zero product-specific tool referencesnpm run eval:skill -- --only=teams-digest-agent-skill— 100% pass; generalizes to Microsoft Graph HTTP calls (curl) rather than inventing a native Teams toolnpm run eval:skillsuite — no regressions (pre-existing scout/cowork scenarios flaked independent of this change and passed on rerun, consistent with known LLM run-to-run variance)Related: #19, #47