Repository navigation
Add skill distribution audit with discovery reconciliation - #5991
Conversation
🔒 PR Risk Scan ResultsScanned 39 changed file(s).
|
🚦 Submission status: 💬 Review in progressRisk tier: Why this tier
Automated checks
Review
Commands
Updated for |
|
🟡 Contributor Reputation Check: MEDIUM risk
Maintainers: please review this contributor before merging. |
🔍 Vally Lint Results✅ All checks passed
Summary
Full linter output |
aaronpowell
left a comment
There was a problem hiding this comment.
I'm struggling to understand how this uplifts Copilot's capabilities.
Copilot is already very capable of discovering agent capabilities (such as skill, mcp servers, etc.) since the tooling will load those.
|
Thanks @aaronpowell, that's a fair point. I've narrowed the contribution in 11a11ef to a skill distribution audit for collection maintainers. The concrete motivating case was a collection with 1,093 intended active skills where the installer listed 1,076 entries: 38 active skills were missing, while 20 archived skills and one template were included. Comparing totals hid the omissions and leaks. The historical receipt records the source revision, consumer version, and before/after results. The updated skill reconciles the intended public source set, the applicable manifest, and actual discovery output, with a deterministic helper for missing, unexpected, and duplicate identities. I removed the generic inventory, onboarding, and extension-selection guidance. Seven helper tests pass, along with validation, lint, and build checks. The intended value is a repeatable release-validation workflow. Discovery coverage is explicitly separate from runtime loading or successful execution, and I haven't claimed a measured improvement over baseline Copilot. |
aaronpowell
left a comment
There was a problem hiding this comment.
Thanks for narrowing this to a distribution audit and adding the deterministic comparison helper. The instructions around source-of-truth sets, consumer-version filtering, and separating omissions from leaked entries make the workflow concrete. The validation still leaves one gap: the skill-guided run described in the PR is on an isolated synthetic collection, while the historical receipt is presented as replaying previously captured data rather than as an application of this skill in GitHub Copilot. Could you add a short, reproducible report of using the skill in GitHub Copilot on real captured collection data (no fresh installer run is needed), including the source revision, consumer version, expected/discovered evidence, helper output, and what the result does and does not establish?
|
Thanks @aaronpowell — I've added the reproducible real-data Copilot report in 942a7b7. GitHub Copilot CLI 1.0.106 invoked the project skill on the historical captures, derived the intended sets, and ran the comparison helper. The report includes source revisions, consumer version, complete identity inputs, actual helper outputs/exit codes, prompts, and selected tool/session evidence. It records 38 omissions and 21 unexpected entries before the repair, and an exact match afterward; both marketplace comparisons also match. The bundled offline replay reproduces all four results without running an installer. The report discloses the initial operator-permission interruption and same-session continuation, capture provenance limits, and the distinction between distribution coverage and runtime execution. No fresh installer run or baseline-Copilot performance claim is made. |
There was a problem hiding this comment.
🟢 Approval recommended
The skill-distribution audit addition has no active review issues.
No open issues 🎉
What changed in this PR
Adds skill-distribution-audit to the skill collection, helping maintainers reconcile intended public skills with distribution manifests and consumer discovery by identity rather than totals.
Changes:
- Defines an evidence-based audit workflow with consumer-specific checks and explicit verification limits.
- Adds a dependency-free comparison helper and regression tests for mismatches, duplicates, invalid inputs, and linked installations.
- Bundles historical Copilot validation evidence, an offline replay script, and a catalog entry.
| File | Description |
|---|---|
skills/skill-distribution-audit/SKILL.md |
Defines the audit workflow and helper usage. |
skills/skill-distribution-audit/scripts/compare-discovery.test.mjs |
Tests identity comparison and CLI behavior. |
skills/skill-distribution-audit/scripts/compare-discovery.mjs |
Reports identity differences, duplicates, and exit status. |
skills/skill-distribution-audit/references/worked-example.md |
Demonstrates mismatches hidden by equal totals. |
skills/skill-distribution-audit/references/copilot-real-data-validation.md |
Documents the historical validation and its limits. |
skills/skill-distribution-audit/assets/copilot-validation/session-evidence.json |
Records selected Copilot invocations and tool results. |
skills/skill-distribution-audit/assets/copilot-validation/reproduce.mjs |
Replays comparisons in a temporary workspace. |
skills/skill-distribution-audit/assets/copilot-validation/provenance.json |
Records artifact origins, hashes, and publication changes. |
skills/skill-distribution-audit/assets/copilot-validation/prompt.txt |
Preserves the original audit request and constraints. |
skills/skill-distribution-audit/assets/copilot-validation/outputs/run-comparisons.mjs |
Runs and saves all four comparisons. |
skills/skill-distribution-audit/assets/copilot-validation/outputs/discovery-finding-paths.json |
Maps historical differences to source paths. |
skills/skill-distribution-audit/assets/copilot-validation/outputs/derived-counts-and-ambiguities.json |
Records derived counts and ambiguity checks. |
skills/skill-distribution-audit/assets/copilot-validation/outputs/derive-audit-inputs.mjs |
Derives comparable source, manifest, and discovery identities. |
skills/skill-distribution-audit/assets/copilot-validation/outputs/before-manifest-comparison.json |
Captures the initial manifest match. |
skills/skill-distribution-audit/assets/copilot-validation/outputs/before-manifest-comparison.exitcode.txt |
Records the initial manifest comparison exit code. |
skills/skill-distribution-audit/assets/copilot-validation/outputs/before-discovery-comparison.json |
Captures 38 missing and 21 unexpected identities. |
skills/skill-distribution-audit/assets/copilot-validation/outputs/before-discovery-comparison.exitcode.txt |
Records the initial discovery mismatch exit code. |
skills/skill-distribution-audit/assets/copilot-validation/outputs/audit-report.md |
Preserves the historical audit conclusions and limits. |
skills/skill-distribution-audit/assets/copilot-validation/outputs/annotate-findings.mjs |
Adds source paths and index lines to differences. |
skills/skill-distribution-audit/assets/copilot-validation/outputs/after-manifest-comparison.json |
Captures the later manifest match. |
skills/skill-distribution-audit/assets/copilot-validation/outputs/after-manifest-comparison.exitcode.txt |
Records the later manifest comparison exit code. |
skills/skill-distribution-audit/assets/copilot-validation/outputs/after-discovery-comparison.json |
Captures the later exact discovery match. |
skills/skill-distribution-audit/assets/copilot-validation/outputs/after-discovery-comparison.exitcode.txt |
Records the later discovery comparison exit code. |
skills/skill-distribution-audit/assets/copilot-validation/inputs/release-policy-source.json |
Supplies versioned release-policy excerpts. |
skills/skill-distribution-audit/assets/copilot-validation/inputs/release-context.json |
Describes release scope and distribution channels. |
skills/skill-distribution-audit/assets/copilot-validation/inputs/consumer-policy-source.json |
Supplies consumer parser and filtering excerpts. |
skills/skill-distribution-audit/assets/copilot-validation/inputs/consumer-package.json |
Records consumer version and package metadata. |
skills/skill-distribution-audit/assets/copilot-validation/inputs/before-discovery.json |
Supplies the initial captured discovery identities. |
skills/skill-distribution-audit/assets/copilot-validation/inputs/before-discovery-stderr.txt |
Preserves historical YAML parsing warnings. |
skills/skill-distribution-audit/assets/copilot-validation/inputs/before-capture.json |
Records initial capture provenance and limitations. |
skills/skill-distribution-audit/assets/copilot-validation/inputs/after-discovery.json |
Supplies the later captured discovery identities. |
skills/skill-distribution-audit/assets/copilot-validation/inputs/after-discovery-stderr.txt |
Preserves the empty later stderr capture. |
skills/skill-distribution-audit/assets/copilot-validation/inputs/after-capture.json |
Records later capture revision, timestamp, and status. |
skills/skill-distribution-audit/assets/copilot-validation/followup.txt |
Preserves the continuation request after permission restrictions. |
docs/README.skills.md |
Registers the skill and lists its bundled resources. |
Review effort: Balanced (auto)
aaronpowell
left a comment
There was a problem hiding this comment.
Thanks for contributing this focused audit workflow. It distinguishes the intended source set, manifest, and consumer discovery instead of relying on counts alone, and the bundled helper makes missing, unexpected, and duplicate identities reproducible without invoking an installer. The documented Copilot CLI run on historical captures also states its limits clearly, which makes the release-audit scope useful and verifiable.
Problem and resulting behavior
A skill collection can pass its own index/build checks while a consumer omits intended skills or exposes archived and template entries. Comparing total counts can hide both kinds of error.
This adds
skill-distribution-auditfor maintainers investigating release/discovery mismatches. It reconciles the intended public source set, applicable distribution manifest, and actual consumer discovery output at a specified revision and consumer version. A dependency-free Node.js helper reports missing, unexpected, and duplicate identities separately; it never launches an installer.Concrete motivating case
In a collection I maintain,
skills@1.7.4discovered 1,076 entries against an intended active set of 1,093: 38 active skills were missing, while 20 archived skills and one template were included. The net difference of 17 hid the two directions of failure. Recorded follow-up discovery matched all 1,093 unique intended identities.GitHub Copilot validation on real data
Reproducible report and evidence
GitHub Copilot CLI 1.0.106 used the project skill on the real historical captures on November 6. The hosted Copilot provider automatically selected GPT-6 Luna; this was not a BYOK run. The report includes the actual prompts, source revisions, consumer version, full identity inputs, helper outputs/exit codes, and selected tool/session evidence.
Copilot independently derived the intended source identities and checked name ambiguity, then executed the bundled helper for four comparisons:
The initial request hit an operator tool-permission restriction and was incomplete; the same session resumed and completed the comparisons. The report discloses that retry and all remaining evidence limits. The offline reproduction command creates an isolated temporary workspace and reproduces all four captured reports without invoking Copilot or an installer.
These results demonstrate a real skill-guided Copilot run and reproducible distribution reconciliation. They do not establish a measured improvement over baseline Copilot, current installer behavior, or successful execution of the collection's skills. Consumer-specific filtering is not presented as a universal Copilot requirement.
Validation
npm run skill:validate; Vally spec-compliance and valid-refs passed.Affiliation: None