fix: correct layer precedence to custom > community > microsoft in both entry.md and read.md

Agent-Logs-Url: https://github.com/microsoft/BCQuality/sessions/3fac9b79-8598-4dfb-814c-6acbb1afe8a3

Co-authored-by: JeremyVyska <35526546+JeremyVyska@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot] 2026-05-22 09:55:35 +00:00 committed by GitHub
parent f34ad24bec
commit 5596321ba6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 3 additions and 3 deletions

View file

@ -54,7 +54,7 @@ Narrow the relevant set to the skills that will actually be dispatched:
1. **Goal match.** Score each candidate's `description` and `id` against `task-context.goal`. Drop candidates that do not plausibly address the goal; record them in `skipped` with `reason: "goal-mismatch"`. Scoring is implementation-defined; agents MUST prefer exact keyword overlap before fuzzy signals.
2. **Super-skill precedence.** When a super-skill and any skill listed in its `sub-skills` are both in the remaining set, the super-skill supersedes the sub-skill **only when the goal is a broader match for the super-skill than for the sub-skill**. When the goal specifically names a concern the sub-skill handles (for example, goal = *"performance review"* with `al-code-review` and `al-performance-review` both present), the sub-skill wins and the super-skill is dropped with `reason: "narrower-sub-skill-selected"`. Otherwise the super-skill wins and each listed sub-skill in the set is dropped with `reason: "superseded-by-super-skill"`. The principle is: Entry dispatches the narrowest skill that satisfies the goal. A dropped sub-skill's `skipped` entry MUST carry `superseded-by` naming the super-skill that won; a dropped super-skill's entry MUST carry `superseded-by` naming the winning sub-skill.
3. **Layer precedence.** When two remaining candidates share the same `id` across layers, keep the highest-precedence one. Skill layer precedence is `/custom/` over `/microsoft/` over `/community/` — the same ordering READ defines for knowledge files. Drop the losers with `reason: "layer-precedence"` and `superseded-by` naming the winning path.
3. **Layer precedence.** When two remaining candidates share the same `id` across layers, keep the highest-precedence one. Skill layer precedence is `/custom/` over `/community/` over `/microsoft/` — the same ordering READ defines for knowledge files. Drop the losers with `reason: "layer-precedence"` and `superseded-by` naming the winning path.
Each dropped candidate appears in `skipped[]` at most once; record the first reason that caused the drop.

View file

@ -80,8 +80,8 @@ The default consumption model is **additive**: an action skill sees files from e
When two files give **directly contradictory normative guidance**, the conflict is resolved by layer precedence:
1. `/custom/` wins over `/microsoft/` and `/community/`.
2. `/microsoft/` wins over `/community/`.
1. `/custom/` wins over `/community/` and `/microsoft/`.
2. `/community/` wins over `/microsoft/`.
A conflict exists when both of the following are true: