Repository navigation
Fix Copilot-only coupling in three Agent Skills - #4453
MerverliPy wants to merge 4 commits into
Conversation
The description said "Use when Copilot must preserve supporting, contradicting, qualifying, and missing evidence". A skill description is the routing text an agent reads to decide whether to load the skill; naming one vendor's agent there narrows it without adding information, and reads as a precondition to an agent that is not Copilot. Same sentence, agent-neutral: "Use when an agent must preserve ...".
`${selection}` is a GitHub Copilot prompt variable resolved by the editor's selection
context. It is not part of the Agent Skills specification, so outside Copilot it is
not substituted at all and the instruction reaches the model as the literal string
"${selection}".
That is worse than a cosmetic problem for this skill: the sentence is the task
statement, and it currently tells the agent to check the best practices of
"${selection}" - a scope that does not exist. Rewritten as "the .NET/C# code in the
scope you were asked about", which carries the same intent without depending on a
host that may or may not be there.
Found while porting this skill to a non-Copilot agent; the file is otherwise
unchanged.
Three changes, all in the same direction. Harness engineering is not Copilot-specific, but this file presented it as though it were. 1. The trigger list opened with "make a repository more reliable for GitHub Copilot or other coding agents". Named agents now appear as examples rather than as the subject, and `pi` and `Claude Code` are named alongside it. 2. The discovery list now includes `.pi/skills/` and `.agents/skills/`. Both are Agent Skills specification locations, so a repository that keeps its skills there was invisible to the discovery step that exists to find them. 3. The recommended-artifact table said "Always-on agent behavior: `AGENTS.md` or `.github/copilot-instructions.md`", which reads as a choice between equals. It is not: `AGENTS.md` is read by 20+ agents, `.github/copilot-instructions.md` by one. `AGENTS.md` is now listed first with the Copilot file described as a mirror, the file-scoped row offers nested `AGENTS.md` before the Copilot-only path, and a row was added for skills, which the table had no place for despite being the subject it appears in. No rule was weakened: where the Copilot-only mechanism is the right one it is still named, and it is still named for Copilot.
🔒 PR Risk Scan ResultsScanned 3 changed file(s).
✅ No matching risk patterns were detected in changed files.
|
🚦 Submission status: ⏳ Awaiting automationRisk tier: Why this tier
Automated checks
Action needed
Review
Commands
Updated for |
🔍 Vally Lint Results✅ All checks passed
Summary
Full linter output |
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
The generated skills catalog still contains the old Copilot-specific description.
Review effort: Balanced
Findings: 1
What changed in this PR
Decouples three Agent Skills from Copilot-specific assumptions.
Changes:
- Replaces
${selection}with host-neutral scope wording. - Generalizes routing and harness guidance across coding agents.
- Adds portable skill discovery and artifact recommendations.
| File | Description |
|---|---|
skills/harness-engineering/SKILL.md |
Expands multi-agent guidance. |
skills/dotnet-best-practices/SKILL.md |
Removes a Copilot-specific variable. |
skills/build-evidence-map/SKILL.md |
Generalizes skill routing text. |
💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| --- | ||
| name: build-evidence-map | ||
| description: 'Build an auditable evidence map for a contested technical choice, research synthesis, proposal review, or consequential decision. Use when Copilot must preserve supporting, contradicting, qualifying, and missing evidence with exact source regions instead of collapsing disagreement into prose.' | ||
| description: 'Build an auditable evidence map for a contested technical choice, research synthesis, proposal review, or consequential decision. Use when an agent must preserve supporting, contradicting, qualifying, and missing evidence with exact source regions instead of collapsing disagreement into prose.' |
`docs/README.skills.md` is generated from the skills' frontmatter by `eng/update-readme.mjs`, and `validate-readme` fails any pull request where the generated output does not match the sources. Changing a description without regenerating it leaves the catalogue advertising the old text. Output of `npm start`, unedited: one line, the build-evidence-map row. Nothing else in the generated tree moved, which is the useful part of the check - it confirms the committed generated files were otherwise in sync. Pairs with a3556e9; that commit's description change is what this line now matches.
|
Given that the repo is called Awesome Copilot, it makes sense that things are designed to optimise how Copilot behaves. |

Three skills in this collection are built on the Agent Skills specification but are coupled to one host agent in ways that make them misbehave elsewhere. Each fix is one or two lines; the reasoning is longer than the change.
Found while vendor-installing these skills into a non-Copilot agent. The three commits are independent and can be taken separately.
1.
dotnet-best-practices: the${selection}prompt variable is not spec${selection}is resolved by Copilot's editor selection context. It is not part of the Agent Skills specification, so outside Copilot it is never substituted and the model receives the literal string${selection}.This is not cosmetic here: that sentence is the skill's task statement, so the agent is being told to evaluate a scope that does not exist. The replacement carries the same intent with no host dependency.
2.
build-evidence-map: the description names one agentA description is the routing text an agent reads to decide whether to load the skill. Naming one vendor's agent there reduces its reach without adding routing information, and reads as a precondition to every other agent.
3.
harness-engineering: the harness-surface table is Copilot-onlyThree changes in the same direction — harness engineering is not Copilot-specific, but this file presents it as though it were.
a. Trigger list opened with "make a repository more reliable for GitHub Copilot or other coding agents". Named agents are now examples rather than the subject.
b. Discovery list gained two Agent Skills specification locations that were missing:
- `AGENTS.md` - `.github/copilot-instructions.md` - `.github/instructions/` +- `.pi/skills/` or `.agents/skills/`The discovery step exists to find a repository's agent instructions; a repository keeping its skills in either of those locations was invisible to it.
c. Recommended-artifact table said
AGENTS.mdor.github/copilot-instructions.md, which reads as a choice between equals. It is not one —AGENTS.mdis read by 20+ agents,.github/copilot-instructions.mdby one:The skill row is new. The table had no place for skills despite appearing in a skills collection.
Where the Copilot-only mechanism is genuinely the right answer, it is still named — and still named for Copilot. Nothing was weakened or removed.
Verification
^[a-z0-9-]+$≤64 chars, folder/name match, description 10–1024 chars), checked with a port ofeng/validate-skills.mjs.references/orscripts/file was touched —git diff --statshows 3 files, 7 insertions, 5 deletions.