Fix bundled skill reference loading - #1060
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>
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
Skill Coverage Report
Uncovered:
|
There was a problem hiding this comment.
Pull request overview
This pull request updates skill authoring and execution guidance to prevent silent quality degradation when bundled reference files (e.g., references/*.md) are not readable from the user workspace, by standardizing how skills resolve and fall back when bundled files are unavailable.
Changes:
- Clarify that bundled file paths should resolve relative to the directory containing
SKILL.md(not the user workspace). - Add a bounded fallback: if a direct read fails, list the skill’s
references/directory once and retry only when the expected file is present. - Require skills to explicitly report reduced “Reference coverage” when bundled files remain unavailable.
Show a summary per file
| File | Description |
|---|---|
| plugins/dotnet-diag/skills/clr-activation-debugging/SKILL.md | Updates Step 1 guidance for loading bundled reference material and reporting reduced reference coverage. |
| plugins/dotnet-diag/skills/analyzing-dotnet-performance/SKILL.md | Aligns Step 1 reference loading guidance with the new bundled-path and bounded-listing fallback behavior. |
| .agents/skills/create-skill/SKILL.md | Adds repo-wide authoring guidance and checklist items to preserve the bundled-reference behavior in newly created skills. |
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: 3
- Review effort level: Lite
Make directory listings specific and non-recursive, and format reduced-coverage requirements as explicit report lines. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9c391191-97d7-4a4b-bb79-1e279c37d095
Require both affected skills to use a single non-recursive references directory listing before retrying failed reads. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9c391191-97d7-4a4b-bb79-1e279c37d095
There was a problem hiding this comment.
Review details
Suppressed comments (1)
Previously missed (1) — in code that hasn't changed since the last review.
plugins/dotnet-diag/skills/analyzing-dotnet-performance/SKILL.md:42
- The phrase “Do not use workspace file or text search to locate the skill installation” is ambiguous in this skill because later steps explicitly instruct using
grepto scan the target repository. Clarify that the restriction is only about locating missing bundled reference files / the skill installation directory, not about code analysis searches.
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.
If a direct read fails, list this skill's `references/` directory once without recursion and retry only when the listing shows the expected file. Do not use workspace file or text search to locate the skill installation.
- Files reviewed: 3/3 changed files
- Comments generated: 1
- Review effort level: Lite
Clarify that the workspace-search restriction applies only to locating missing bundled references or the skill installation, not normal analysis searches. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9c391191-97d7-4a4b-bb79-1e279c37d095
📊 Skill Evaluation Results4 model/skill results across 2 skills and 2 models — ✅ 2 improved, ➖ 2 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 +28.6% (3W/3T/1L over 7 stimulus vote(s), sign test p=0.312), mean preference +28.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; 3W/3T/1L; d=4; p=0.312; net +28.6% Overfit: Moderate (score 0.35) Repeated-run reliability (not used by the gate): 7 paired runs (3W/3T/1L). 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 +42.9% (5W/0T/2L over 7 stimulus vote(s), sign test p=0.227), mean preference +25.7% across 7 paired run(s) — not credible (sign test p=0.227 > 0.05) Next action: Inspect tied or lost stimuli and fix inconsistent skill behavior. State: Gate evidence: n=7; 5W/0T/2L; d=7; p=0.227; net +42.9% Overfit: Low (score 0.17) Repeated-run reliability (not used by the gate): 7 paired runs (5W/0T/2L). 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 +63.6% (8W/2T/1L over 11 stimulus vote(s), sign test p=0.020), mean preference +20.0% across 11 paired run(s) — credibly better Next action: Fix activation gaps; Review overfit evidence. State: Gate evidence: n=11; 8W/2T/1L; d=9; p=0.020; net +63.6% Warnings: Activation: isolated 10/11; plugin 11/11 Overfit: Moderate (score 0.41) Repeated-run reliability (not used by the gate): 11 paired runs (8W/2T/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 1 result are in Full Results. 🔍 Full Results - all metrics and investigation details
▶ Sessions Visualisation -- interactive replay of all evaluation sessions |
|
✅ Evaluation passed for |
|
Same as #1015 |
Summary
Fix silent degradation when skills cannot load bundled references outside the user workspace. Bundled paths now resolve from the directory containing
SKILL.md; after a direct-read failure, affected skills use one bounded listing of the knownreferences/directory and report reduced coverage if the files remain unavailable.The authoring guidance now preserves this behavior for new skills without teaching agents to search for their installation directory.
Related issue
N/A
Validation
dotnet run --project eng/skill-validator/src/SkillValidator.csproj -- check --plugin ./plugins/dotnet-diag- passed for 7 skills, 1 agent, and 1 plugin.python eng/eval-quality/check_eval_quality.py- checked 99 eval specifications with no errors.git diff --check- passed.Checklist
eng/known-domains.txtfor any new external domains referenced by skill content.