Fix bundled skill reference loading - #1015
Conversation
Add a 'Resolving file paths' blockquote to 21 SKILL.md files that reference references/ or scripts/ paths. The note instructs the agent to locate the skill's installation directory before resolving paths, fixing silent failures when skills are installed as VS Code agent plugins outside the workspace. Also update create-skill authoring guidance and CONTRIBUTING.md quality bar to prevent recurrence. Fixes #1008 Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Skill Coverage Report
Uncovered:
|
Resolve bundled files from each skill root, use one bounded directory listing when direct reads fail, and make reduced reference coverage visible. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9c391191-97d7-4a4b-bb79-1e279c37d095
…-reference-loading
…path-resolution' into abhitejjohn-fix-skill-reference-loading
There was a problem hiding this comment.
Pull request overview
This PR updates several skill authoring and runtime instructions so bundled reference files under references/ are resolved relative to the directory containing SKILL.md, preventing silent fallback when the skill is installed outside the user’s workspace (per issue #1008).
Changes:
- Clarify bundled-path resolution for
analyzing-dotnet-performanceandclr-activation-debuggingto beSKILL.md-directory-relative rather than workspace-relative. - Replace “give up on first miss” behavior with a bounded fallback: one
references/directory listing, then retry only if the expected file is present. - Require explicit disclosure of reduced reference coverage when references can’t be loaded, and update
create-skillguidance/checklist accordingly.
Show a summary per file
| File | Description |
|---|---|
| plugins/dotnet-diag/skills/clr-activation-debugging/SKILL.md | Makes reference loading robust (skill-root relative) and requires reporting when reference coverage is unavailable. |
| plugins/dotnet-diag/skills/analyzing-dotnet-performance/SKILL.md | Prevents silent degradation by using skill-root relative references, bounded retry behavior, and explicit coverage disclosure. |
| .agents/skills/create-skill/SKILL.md | Updates authoring guidance/checklist to mandate relative bundled-file paths and visible degradation reporting. |
Review details
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
- Files reviewed: 3/3 changed files
- Comments generated: 0
- Review effort level: Lite
📊 Skill Evaluation Results4 model/skill results across 2 skills and 2 models — ✅ 0 improved, ➖ 4 not proven improved, Measurement identity: evaluated commit Measurement health: 4 expected / 4 observed / 4 written; 0 missing, 0 unexpected, 0 invalid; 0 recovered comparison error slots and 0 unresolved comparison error slots. Objective completion gate: not enabled. Aggregate completion transitions are telemetry only, so this report does not claim that zero objective regressions were proven. A result passes only when the aggregate net win across distinct-stimulus votes is at least 20% and an exact one-sided sign-test result of
ℹ️ How to read this report
➖ Not proven improved — analyzing-dotnet-performance (claude-sonnet-4.6)Why: Net win +36.4% (7W/1T/3L over 11 stimulus vote(s), sign test p=0.172), mean preference +14.5% across 11 paired run(s) — not credible (sign test p=0.172 > 0.05) Next action: Inspect tied or lost stimuli and fix inconsistent skill behavior. State: Gate evidence: n=11; 7W/1T/3L; d=10; p=0.172; net +36.4% Overfit: High (score 0.74) Repeated-run reliability (not used by the gate): 11 paired runs (7W/1T/3L). Weak or warning scenarios:
Illustrative judge evidence:
This is one example, not the aggregate verdict. Open Full Results for every judgment. ➖ Not proven improved — analyzing-dotnet-performance (gpt-5.6-luna)Why: Net win +54.5% (8W/1T/2L over 11 stimulus vote(s), sign test p=0.055), mean preference +32.7% across 11 paired run(s) — not credible (sign test p=0.055 > 0.05) Next action: Inspect tied or lost stimuli and fix inconsistent skill behavior. State: Gate evidence: n=11; 8W/1T/2L; d=10; p=0.055; net +54.5% Overfit: Low (score 0.12) Repeated-run reliability (not used by the gate): 11 paired runs (8W/1T/2L). Weak or warning scenarios:
Illustrative judge evidence:
This is one example, not the aggregate verdict. Open Full Results for every judgment. ➖ Not proven improved — clr-activation-debugging (claude-sonnet-4.6)Why: Net win +57.1% (4W/3T/0L over 7 stimulus vote(s), sign test p=0.063), mean preference +48.6% across 7 paired run(s) — not credible — 3 of 7 stimulus vote(s) tied, leaving only 4 discordant stimulus vote(s). The sign test conditions on non-tie stimulus votes and cannot reach 0.05 below 5, so no record could have passed here — this is not a measured null. Either the skill is inert on these scenarios (make them discriminate) or the eval needs more distinct stimuli to clear the ties Next action: Inspect tied or lost stimuli; predeclare added breadth before a new experiment. State: Gate evidence: n=7; 4W/3T/0L; d=4; p=0.063; net +57.1% Overfit: Moderate (score 0.40) Repeated-run reliability (not used by the gate): 7 paired runs (4W/3T/0L). Weak or warning scenarios:
Illustrative judge evidence:
This is one example, not the aggregate verdict. Open Full Results for every judgment. ➖ Not proven improved — clr-activation-debugging (gpt-5.6-luna)Why: Net win +71.4% (6W/0T/1L over 7 stimulus vote(s), sign test p=0.063), mean preference +45.7% across 7 paired run(s) — not credible (sign test p=0.063 > 0.05) Next action: Inspect tied or lost stimuli and fix inconsistent skill behavior. State: Gate evidence: n=7; 6W/0T/1L; d=7; p=0.063; net +71.4% Overfit: Low (score 0.17) Repeated-run reliability (not used by the gate): 7 paired runs (6W/0T/1L). Weak or warning scenarios:
Illustrative judge evidence:
This is one example, not the aggregate verdict. Open Full Results for every judgment. 🔍 Full Results - all metrics and investigation details
▶ Sessions Visualisation -- interactive replay of all evaluation sessions |
|
✅ Evaluation passed for |
AbhitejJohn
left a comment
There was a problem hiding this comment.
/evaluate 0d9c3df
📊 Skill Evaluation Results4 model/skill results across 2 skills and 2 models — ✅ 3 improved, ➖ 1 not proven improved, Measurement identity: evaluated commit Measurement health: 4 expected / 4 observed / 4 written; 0 missing, 0 unexpected, 0 invalid; 0 recovered comparison error slots and 0 unresolved comparison error slots. Objective completion gate: not enabled. Aggregate completion transitions are telemetry only, so this report does not claim that zero objective regressions were proven. A result passes only when the aggregate net win across distinct-stimulus votes is at least 20% and an exact one-sided sign-test result of
ℹ️ How to read this report
➖ Not proven improved — clr-activation-debugging (claude-sonnet-4.6)Why: Net win +57.1% (5W/1T/1L over 7 stimulus vote(s), sign test p=0.109), mean preference +40.0% across 7 paired run(s) — not credible (sign test p=0.109 > 0.05) Next action: Inspect tied or lost stimuli and fix inconsistent skill behavior. State: Gate evidence: n=7; 5W/1T/1L; d=6; p=0.109; net +57.1% Overfit: Moderate (score 0.43) Repeated-run reliability (not used by the gate): 7 paired runs (5W/1T/1L). Weak or warning scenarios:
Illustrative judge evidence:
This is one example, not the aggregate verdict. Open Full Results for every judgment. ✅ Improved — analyzing-dotnet-performance (claude-sonnet-4.6)Why: Net win +72.7% (9W/1T/1L over 11 stimulus vote(s), sign test p=0.011), mean preference +29.1% across 11 paired run(s) — credibly better Next action: Review overfit evidence. State: Gate evidence: n=11; 9W/1T/1L; d=10; p=0.011; net +72.7% Overfit: Moderate (score 0.41) Repeated-run reliability (not used by the gate): 11 paired runs (9W/1T/1L). Weak or warning scenarios:
Illustrative judge evidence:
This is one example, not the aggregate verdict. Open Full Results for every judgment. Routine passing details for 2 results are in Full Results. 🔍 Full Results - all metrics and investigation details
▶ Sessions Visualisation -- interactive replay of all evaluation sessions |
Evangelink
left a comment
There was a problem hiding this comment.
One bundled-reference loading issue needs to be addressed before approval.
| ### Step 1: Load Reference Files | ||
|
|
||
| Try to load `references/critical-patterns.md` and the topic-specific reference files listed below. These contain detailed detection recipes and grep commands. | ||
| Resolve bundled paths from the directory that contains this `SKILL.md`, not from the user's workspace. Load `references/critical-patterns.md` and the topic-specific reference files listed below. These contain detailed detection recipes and grep commands. |
There was a problem hiding this comment.
The topic-specific references aren't actually listed below—the only literal path here is references/critical-patterns.md. Because the fallback listing is allowed only after a direct read fails, that successful read gives the agent no way to discover async-patterns.md, memory-and-strings.md, regex-patterns.md, collections-and-linq.md, io-and-serialization.md, or structural-patterns.md. Please enumerate those relative paths (or explicitly allow listing references/ before topic selection) so the bundled recipes are reliably loaded.
|
👋 @AbhitejJohn — this PR has changes requested,1 unresolved review thread(s). When you're ready, please address the feedback and push an update; the triage bot will pick up the next state automatically. (Add the |
Summary
Fix silent degradation when a skill cannot load its bundled reference files. Bundled paths remain relative to the directory that contains
SKILL.md; skills no longer treat one failed lookup as proof that the files are unavailable.Changes
analyzing-dotnet-performanceandclr-activation-debuggingto:references/directory after a direct-read failure;create-skillauthoring guidance and its checklist so new skills use relative bundled-file paths and cannot degrade silently.Validation
dotnet run --project eng/skill-validator/src/SkillValidator.csproj -- check --plugin ./plugins/dotnet-diagpython eng/eval-quality/check_eval_quality.pygit diff --checkFixes #1008