Repository navigation
Simplify the starter to a marketplace with two maintenance plugins - #4
Conversation
Remove the six sample plugins (bug-report, code-review, customization-authoring, format-json, json-configuration, team-brainstorm) with their evals, graders, fixtures, and tests. Add plugin-authoring (add-plugin, try-plugin-locally, submit-plugin) and marketplace-maintainer (the read-only plugin-reviewer agent, update-remote-pins, release-plugins), each with evals. Evals mirror plugins/: one eval per asset at evals/<plugin>/skills/<skill>/ or evals/<plugin>/agents/<agent>/, with plugin-only graders and fixtures under evals/<plugin>/ and shared helpers in evals/graders/ and evals/support/. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Keep only what the marketplace, its two included plugins and their evals, adoption (rename, add, remove), and the open source release checklist need. - new-plugin now creates only the plugin shell: plugin.json, README, CHANGELOG, the catalog entry, the overlay entry, and the README row. No --with flags, skills, agents, MCP servers, hooks, extensions, or evals. - remove-plugin is the one removal command. remove-example, scripts/examples.mjs, and the examples markers are gone. A plugin owns plugins/<name>/, evals/<name>/, and its tests. - validate.mjs checks the catalog, each plugin.json against the schema, versions and changelogs, the repository overlay, and Markdown links. - Remove the canvas eval host, the TypeScript MCP build and typecheck, bundled grader builds, eval coverage and layout enforcement, and the eval launcher's selection options. The launcher keeps absolute params and the pinned runtime bridge the plugins' evals and evals.yml need. - Remove docs/ and .github/copilot-instructions.md. README covers setup, adding and removing plugins, and the OSPO sections. Remote pin rules and local install steps move into the skills that use them. - Drop esbuild, typescript, @types/node, zod, and @modelcontextprotocol/sdk. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
The marketplace and its two plugins work with plain files, so the template no longer ships a scripted framework. - Remove scripts/, test/, schemas/, the pull request template, and the issue form. Adding, removing, renaming, and pinning are now short manual steps in README.md, and the skills do them by editing files and using git or gh. - add-plugin creates the plugin shell by hand. release-plugins retires a plugin by deleting its folders and registrations. update-remote-pins resolves shas with gh api or git ls-remote. submit-plugin writes the pull request description itself. plugin-reviewer carries its whole checklist. - The plugins' evals use small static synthetic fixtures (shared base in evals/support/marketplace, overlays next to each eval) instead of a generated workspace, and the graders check the files the skills produce. - package.json keeps only the pinned Vally CLI and Copilot CLI, with lint and eval scripts. validate.yml runs npm run lint. evals.yml runs the pinned Vally CLI with COPILOT_CLI_PATH pointing at the pinned Copilot CLI and adds Vally's report to the job summary. - SECURITY.md is the OSPO template. CONTRIBUTING.md and AGENTS.md describe the manual workflow. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Opening a marketplace repository to work on its plugins shouldn't install or turn on those plugins. Delete .github/copilot/settings.json, and have people add the marketplace and install only the plugins they want. - README, AGENTS.md, CODEOWNERS, the plugin READMEs, plugin-reviewer, and the add-plugin, submit-plugin, try-plugin-locally, release-plugins, and update-remote-pins instructions no longer write or check the file. try-plugin-locally uses --plugin-dir or an isolated install instead. - The eval fixtures drop their settings.json files, and the graders drop their settings.json assertions. Every eval case stays. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Both workflows pick up new plugins and evals from plugins/ and evals/ without listing them. - validate.yml runs npm run lint (vally lint plugins --eval-spec evals --strict) and a short inline check that parses marketplace.json and every plugin.json and matches each local entry's name and version, since Vally doesn't read those files. - evals.yml runs the smoke suite by hand, or on pull requests that change plugins/ or evals/ when ENABLE_EVALS is true, never for forks or drafts. It drops the suite input, environment, results upload, and job summary, and keeps COPILOT_CLI_PATH for the plugin-reviewer eval. - The eval npm script no longer writes JUnit, and the README's Checks section matches. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
- validate.yml checks every plugins/*/plugin.json against the official Agent Plugins schema with a pinned one-off ajv-cli run. The pinned Copilot CLI has no plugin validate command, and Agent Plugins publishes no marketplace.json schema. - A short inline step checks each remote catalog entry: a github source, a full 40-character sha for a commit that exists, and a plugin.json at that commit whose name matches the entry. It uses gh api with the workflow token and passes when there are no remote entries. - README and AGENTS.md describe the new checks. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
evals/graders and evals/support could collide with a plugin of the same name now that no script reserves those names. evals/_shared can't, because plugin names start with a lowercase letter or digit. - Move evals/graders to evals/_shared/graders and evals/support to evals/_shared/support, and update the eval files' src paths. The graders still import ./common.mjs from the grading folder. - README, AGENTS.md, add-plugin, and the retire steps describe evals/_shared and drop the reserved-name rule. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Every assertion in the two graders.mjs files maps to a built-in Vally grader in the eval YAML: file-matches, file-exists, file-not-exists, file-contains, file-not-contains, file-not-matches, output-matches, tool-calls (required and disallowed, with argument and result patterns), and run-command to confirm marketplace.json still parses. Delete both graders.mjs files, evals/_shared/graders/common.mjs, and the grading_environment staging. Every case, smoke tag, and negative control stays. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Restore .github/copilot/settings.json, but enable only marketplace-maintainer and plugin-authoring. Other plugins added to the marketplace stay opt-in. - README and AGENTS.md say the file is only for the repository's own maintenance plugins, and "Make it yours" renames the marketplace there too. - add-plugin never adds a plugin to the file. Retiring a plugin removes its key only if the file lists it. plugin-reviewer flags a change that enables any other plugin there. try-plugin-locally notes which plugins the checkout turns on. - The shared eval fixture gets a matching settings.json, and the add-plugin eval checks that it's left unchanged. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Move evals/_shared/support/marketplace to evals/_shared/fixtures/sample-marketplace and rename per-eval fixture folders to fixtures, matching Vally's term for files staged into the workspace. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
This reverts 15245f0, which replaced the shared and per-plugin graders with Vally built-ins. It keeps the later fixtures rename and settings.json behavior, and adds a file-matches check that add-plugin leaves settings.json unchanged. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Each skill's checks now live in grader.mjs next to its eval, unchanged. The json and text readers moved into evals/_shared/graders/common.mjs. Only release-plugins keeps a mode argument, for its release and retire scenarios. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…tral pin example Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…ittle graders Ran the full eval suite (5 trials per case) and fixed what it found until all 14 cases passed every trial on claude-haiku-5.5. - Skills: sharper trigger descriptions for add-plugin, submit-plugin, release-plugins, and update-remote-pins; add-plugin always lists the plugin in the root README; try-plugin-locally uses a test home path the user names. - plugin-reviewer: fixed first line for a clean result and a fixed closing line about not running commands; reads every catalog entry and treats a missing remote sha as a finding. - Evals: default model claude-haiku-5.5 (gpt-5.4-mini isn't available to every account); graders accept reading a skill's files as using it, since Vally copies skills into the workspace; looser wording checks; fixture AGENTS.md mirrors the real one's skill hint. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
🟡 Changes recommended
The local-install recipe reuses a fixed temporary directory and then recursively deletes its contents, risking deletion of pre-existing files.
4 open issues
What changed in this PR
Simplifies the starter into a minimal plugin marketplace with two maintenance plugins, replacing six example plugins and their supporting tooling.
Changes:
- Add contributor-facing
plugin-authoringand owner-facingmarketplace-maintainer, including a read-only reviewer agent. - Add mirrored behavioral evals, synthetic fixtures, and shared grading helpers.
- Streamline npm commands, CI workflows, repository settings, and template documentation; remove legacy examples and tooling.
This pull request requires changes. Unresolved findings include critical cleanup behavior that can delete pre-existing files, missing eval triggers, catalog-validation and manifest-resolution gaps, grader false positives, and incomplete first-pin README updates.
| File | Description |
|---|---|
tsconfig.json |
Remove TypeScript configuration. |
test/runtime-environment.test.mjs |
Remove runtime bridge tests. |
test/remote-plugins.test.mjs |
Remove remote-pin checker tests. |
test/installation.test.mjs |
Remove standalone installation tests. |
test/grader-format-json.test.mjs |
Remove formatter grader tests. |
test/grader-common.test.mjs |
Remove shared scoring tests. |
test/grader-bug-report.test.mjs |
Remove bug-report grader tests. |
test/grader-brainstorm.test.mjs |
Remove brainstorm grader tests. |
test/extension.test.mjs |
Remove canvas extension tests. |
test/entrypoint.test.mjs |
Remove entrypoint and symlink tests. |
test/board-ui.test.mjs |
Remove board accessibility tests. |
SUPPORT.md |
Remove template-only comment markers. |
SECURITY.md |
Restore template security-reporting guidance. |
scripts/typecheck.mjs |
Remove custom TypeScript checker. |
scripts/problems.mjs |
Remove validation error utilities. |
scripts/examples.mjs |
Remove example ownership utilities. |
scripts/eval-runtime.js |
Remove custom Copilot runtime bridge. |
scripts/entrypoint.mjs |
Remove entrypoint detection helper. |
schemas/plugin.schema.json |
Remove vendored plugin schema. |
schemas/NOTICE |
Remove vendored schema notice. |
schemas/mcp.schema.json |
Remove vendored MCP schema. |
plugins/team-brainstorm/skills/team-brainstorm/SKILL.md |
Remove brainstorm skill. |
plugins/team-brainstorm/README.md |
Remove brainstorm documentation. |
plugins/team-brainstorm/plugin.json |
Remove brainstorm manifest. |
plugins/team-brainstorm/com.github.copilot/extensions/brainstorm/server.mjs |
Remove board HTTP server. |
plugins/team-brainstorm/com.github.copilot/extensions/brainstorm/extension.mjs |
Remove canvas registration and lifecycle code. |
plugins/team-brainstorm/com.github.copilot/extensions/brainstorm/board.mjs |
Remove session-local board model. |
plugins/team-brainstorm/CHANGELOG.md |
Remove brainstorm release history. |
plugins/plugin-authoring/skills/try-plugin-locally/SKILL.md |
Add local trial and cleanup workflow. |
plugins/plugin-authoring/skills/try-plugin-locally/references/local-install.md |
Document CLI and VS Code trials. |
plugins/plugin-authoring/skills/submit-plugin/SKILL.md |
Add contribution preparation workflow. |
plugins/plugin-authoring/skills/add-plugin/SKILL.md |
Add plugin scaffolding workflow. |
plugins/plugin-authoring/README.md |
Document authoring assets and installation. |
plugins/plugin-authoring/plugin.json |
Declare authoring plugin metadata. |
plugins/plugin-authoring/CHANGELOG.md |
Record initial authoring release. |
plugins/marketplace-maintainer/skills/update-remote-pins/SKILL.md |
Add reviewed remote-pin maintenance. |
plugins/marketplace-maintainer/skills/update-remote-pins/references/remote-pins.md |
Document remote sources and verification. |
plugins/marketplace-maintainer/skills/release-plugins/SKILL.md |
Add release readiness workflow. |
plugins/marketplace-maintainer/skills/release-plugins/references/retire-plugin.md |
Document plugin retirement procedure. |
plugins/marketplace-maintainer/README.md |
Document maintenance assets and installation. |
plugins/marketplace-maintainer/plugin.json |
Declare maintenance plugin metadata. |
plugins/marketplace-maintainer/com.github.copilot/agents/plugin-reviewer.agent.md |
Add read-only contribution reviewer. |
plugins/marketplace-maintainer/CHANGELOG.md |
Record initial maintenance release. |
plugins/json-configuration/skills/json-configuration/SKILL.md |
Remove JSON inspection skill. |
plugins/json-configuration/README.md |
Remove JSON plugin documentation. |
plugins/json-configuration/plugin.json |
Remove JSON plugin manifest. |
plugins/json-configuration/mcp.json |
Remove MCP server registration. |
plugins/json-configuration/CHANGELOG.md |
Remove JSON plugin release history. |
plugins/format-json/README.md |
Remove formatter documentation. |
plugins/format-json/plugin.json |
Remove formatter manifest. |
plugins/format-json/com.github.copilot/hooks/hooks.json |
Remove formatter hook registration. |
plugins/format-json/com.github.copilot/hooks/format.mjs |
Remove post-edit formatting implementation. |
plugins/format-json/CHANGELOG.md |
Remove formatter release history. |
plugins/customization-authoring/skills/skill-authoring/SKILL.md |
Remove general skill-authoring workflow. |
plugins/customization-authoring/skills/skill-authoring/references/evals.md |
Remove eval-authoring reference. |
plugins/customization-authoring/README.md |
Remove customization plugin documentation. |
plugins/customization-authoring/plugin.json |
Remove customization plugin manifest. |
plugins/customization-authoring/CHANGELOG.md |
Remove customization release history. |
plugins/code-review/skills/adversarial-review/SKILL.md |
Remove general review workflow. |
plugins/code-review/README.md |
Remove code-review documentation. |
plugins/code-review/plugin.json |
Remove code-review manifest. |
plugins/code-review/com.github.copilot/agents/code-reviewer.agent.md |
Remove general reviewer agent. |
plugins/code-review/CHANGELOG.md |
Remove code-review release history. |
plugins/bug-report/skills/bug-report/templates/ui.md |
Remove UI report template. |
plugins/bug-report/skills/bug-report/templates/cli.md |
Remove CLI report template. |
plugins/bug-report/skills/bug-report/SKILL.md |
Remove bug-report skill. |
plugins/bug-report/README.md |
Remove bug-report documentation. |
plugins/bug-report/plugin.json |
Remove bug-report manifest. |
plugins/bug-report/CHANGELOG.md |
Remove bug-report release history. |
package.json |
Retain only lint and eval tooling. |
marketplace.json |
Replace examples with maintenance plugins. |
evals/team-brainstorm/eval.yaml |
Remove brainstorm behavioral evals. |
evals/support/canvas-sdk.mjs |
Remove canvas SDK fixture. |
evals/support/canvas-loader.mjs |
Remove canvas module loader. |
evals/plugin-authoring/skills/try-plugin-locally/grader.mjs |
Grade isolated installation and cleanup. |
evals/plugin-authoring/skills/try-plugin-locally/eval.yaml |
Add installation and non-trigger cases. |
evals/plugin-authoring/skills/submit-plugin/grader.mjs |
Grade versions and PR descriptions. |
evals/plugin-authoring/skills/submit-plugin/fixtures/released.json |
Supply synthetic comparison baseline. |
evals/plugin-authoring/skills/submit-plugin/eval.yaml |
Add submission preparation cases. |
evals/plugin-authoring/skills/add-plugin/grader.mjs |
Grade plugin scaffolding and registration. |
evals/plugin-authoring/skills/add-plugin/eval.yaml |
Add scaffolding and non-trigger cases. |
evals/marketplace-maintainer/skills/update-remote-pins/grader.mjs |
Grade reviewed offline pin updates. |
evals/marketplace-maintainer/skills/update-remote-pins/fixtures/upstream-snapshot.json |
Supply recorded synthetic upstream evidence. |
evals/marketplace-maintainer/skills/update-remote-pins/fixtures/marketplace.json |
Supply an existing remote pin. |
evals/marketplace-maintainer/skills/update-remote-pins/eval.yaml |
Add remote-pin behavior cases. |
evals/marketplace-maintainer/skills/release-plugins/grader.mjs |
Grade release preparation and retirement. |
evals/marketplace-maintainer/skills/release-plugins/fixtures/released.json |
Supply prior release metadata. |
evals/marketplace-maintainer/skills/release-plugins/fixtures/plugins/sample-notes/plugin.json |
Supply already-bumped plugin metadata. |
evals/marketplace-maintainer/skills/release-plugins/fixtures/plugins/sample-notes/CHANGELOG.md |
Supply matching release notes. |
evals/marketplace-maintainer/skills/release-plugins/fixtures/marketplace.json |
Supply synchronized candidate catalog. |
evals/marketplace-maintainer/skills/release-plugins/fixtures/evals/sample-notes/cases.json |
Supply removable eval fixture. |
evals/marketplace-maintainer/skills/release-plugins/eval.yaml |
Add release and retirement scenarios. |
evals/marketplace-maintainer/agents/plugin-reviewer/fixtures/unpinned/marketplace.json |
Seed an unpinned remote-source defect. |
evals/marketplace-maintainer/agents/plugin-reviewer/fixtures/common/REVIEW-SCOPE.md |
Define synthetic contribution scope. |
evals/marketplace-maintainer/agents/plugin-reviewer/fixtures/common/plugins/review-notes/skills/review-notes/SKILL.md |
Supply reviewable synthetic skill. |
evals/marketplace-maintainer/agents/plugin-reviewer/fixtures/common/plugins/review-notes/README.md |
Record synthetic ownership and runtime facts. |
evals/marketplace-maintainer/agents/plugin-reviewer/fixtures/common/plugins/review-notes/plugin.json |
Supply reviewable plugin metadata. |
evals/marketplace-maintainer/agents/plugin-reviewer/fixtures/common/plugins/review-notes/CHANGELOG.md |
Supply initial-release evidence. |
evals/marketplace-maintainer/agents/plugin-reviewer/fixtures/clean/marketplace.json |
Supply clean catalog control. |
evals/marketplace-maintainer/agents/plugin-reviewer/eval.yaml |
Test delegation, findings, and read-only behavior. |
evals/json-configuration/eval.yaml |
Remove JSON MCP behavioral evals. |
evals/graders/src/authoring.mjs |
Remove generated-skill contract grader. |
evals/graders/format-json.mjs |
Remove formatter integration grader. |
evals/graders/dist/THIRD_PARTY_NOTICES.txt |
Remove bundled grader notices. |
evals/graders/bug-report.mjs |
Remove report contract grader. |
evals/graders/brainstorm.mjs |
Remove brainstorm contract grader. |
evals/format-json/fixtures/input.json |
Remove formatter input fixture. |
evals/format-json/eval.yaml |
Remove formatting integration evals. |
evals/fixtures/review/clean.js |
Remove clean pagination fixture. |
evals/fixtures/review/buggy.js |
Remove defective pagination fixture. |
evals/customization-authoring/eval.yaml |
Remove skill-generation evals. |
evals/code-review/eval.yaml |
Remove adversarial-review evals. |
evals/code-review/agent/eval.yaml |
Remove standalone reviewer eval. |
evals/bug-report/eval.yaml |
Remove bug-report behavioral evals. |
evals/_shared/graders/common.mjs |
Relocate helpers and add skill-use detection. |
evals/_shared/fixtures/sample-marketplace/README.md |
Supply shared catalog documentation fixture. |
evals/_shared/fixtures/sample-marketplace/plugins/sample-notes/skills/sample-notes/SKILL.md |
Supply shared synthetic plugin skill. |
evals/_shared/fixtures/sample-marketplace/plugins/sample-notes/README.md |
Supply synthetic plugin documentation. |
evals/_shared/fixtures/sample-marketplace/plugins/sample-notes/plugin.json |
Supply baseline plugin metadata. |
evals/_shared/fixtures/sample-marketplace/plugins/sample-notes/CHANGELOG.md |
Supply baseline release history. |
evals/_shared/fixtures/sample-marketplace/marketplace.json |
Supply shared synthetic catalog. |
evals/_shared/fixtures/sample-marketplace/AGENTS.md |
Define fixture maintenance rules. |
evals/_shared/fixtures/sample-marketplace/.github/copilot/settings.json |
Supply fixture maintenance-plugin settings. |
docs/security.md |
Remove detailed security guide. |
docs/remote-plugins.md |
Remove standalone remote-plugin guide. |
docs/hooks.md |
Remove hook development guide. |
docs/examples.md |
Remove example catalog documentation. |
docs/eval-authoring.md |
Remove standalone eval-authoring guide. |
.vally.yaml |
Simplify eval discovery and suites. |
.gitignore |
Simplify ignored development artifacts. |
.github/workflows/validate.yml |
Replace custom validation with lint and inline checks. |
.github/workflows/evals.yml |
Run gated smoke evals directly through npm. |
.github/PULL_REQUEST_TEMPLATE.md |
Remove legacy contribution checklist. |
.github/ISSUE_TEMPLATE/new-plugin.yml |
Remove plugin proposal form. |
.github/copilot/settings.json |
Enable only the two maintenance plugins. |
.github/copilot-instructions.md |
Remove legacy tooling instructions. |
.github/CODEOWNERS |
Simplify ownership guidance while retaining maintainers. |
Review effort: Balanced (auto)
Compare all local catalog metadata, preserve schema-aware and legacy remote manifest precedence, and safely create and clean up isolated local install homes. Keep paid evals manual-only and cover the fixes with deterministic CI regression tests. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 80b93953-2b51-4e0b-8b73-311db41ea52e
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 80b93953-2b51-4e0b-8b73-311db41ea52e
Treat checkout content as untrusted metadata beside the document reads. Keep command execution, settings changes and cleanup inside the trusted procedure and actual user authorization, with policy-placement and procedure-preservation regression checks. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 80b93953-2b51-4e0b-8b73-311db41ea52e
Keep relevant repository conventions available while rejecting checkout instructions that override approvals, tools, scope, instruction hierarchy, secrets handling, or safety. Add adjacent-policy and procedure-preservation regression checks for both skills. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 80b93953-2b51-4e0b-8b73-311db41ea52e
Bundle a small validator with the skill to reject unsafe identifiers, ambiguous metadata and out-of-scope paths before CLI calls. Preserve exclusive test-home ownership, fixed command operands, failure cleanup and safe generated defaults, with executable PowerShell and bash regression coverage. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 80b93953-2b51-4e0b-8b73-311db41ea52e
Shorten the README, move detailed check and eval instructions into one directly linked guide, and record the documentation rule in AGENTS.md. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 80b93953-2b51-4e0b-8b73-311db41ea52e
Make repeated Git option forms and quoted operands disjoint while preserving benign-output and mutation-attempt checks. Add a bounded regression for long option lists. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 80b93953-2b51-4e0b-8b73-311db41ea52e
|
Great simplification of the marketplace starter! We stacked #7 (ignite-skill-eval-golden-paths -> Alignment notes with github/evals-internal#754 and github/evals-action#24
|
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…al-report comparison Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…d aggregate deltas Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…ount test summaries Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…ling Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
… creation Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
feat: add pr-description plugin, multi-skill cohort eval, and baseline/token report
|
Verified all historical Copilot reviews (5746482082, 5833163990, 5833926486, 5834212190, 5835003229, 5835407017, 5837258428) and resolved the .DS_Store directory filter finding ( |
There was a problem hiding this comment.
🟡 Changes recommended
The workflow removes the evals environment approval gate while retaining a token with copilot-requests: write, allowing manual branch runs to bypass configured required reviewers.
7 open issues
Restore the evals environment approval gate · New Distinguish affirmative readiness claims from uncertainty and echoed goals · New Allow read-only tag inspection and ignore non-shell tool arguments · New Parse and deduplicate command operands without counting prose · New Make eval cohort checks and retirement removal-aware · New Reject backlog items mentioned anywhere in the Changes section · New Accept valid zero-failure summaries and reject plural failures · New
1 resolved since last review
Review effort: Max (auto)
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
Addressed all 7 findings from Copilot review (5845604249) in commit e55dcce and resolved the threads. |
There was a problem hiding this comment.
🟡 Changes recommended
The publication check misclassifies multiline, compound, and quoted shell commands, allowing tag creation to pass while rejecting legitimate read-only commands.
1 open issue
7 resolved since last review
Restore the evals environment approval gate Accept valid zero-failure summaries and reject plural failures Reject backlog items mentioned anywhere in the Changes section Make eval cohort checks and retirement removal-aware Parse and deduplicate command operands without counting prose Allow read-only tag inspection and ignore non-shell tool arguments Distinguish affirmative readiness claims from uncertainty and echoed goals
Review effort: Max (auto)
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
Addressed Copilot review (5846082899) in commit 6f246d7 by tokenizing shell invocations across quotes and compound separators; thread PRRT_kwDOVRlbx861zx3t is resolved. |


Turns the starter into a simple template: a plugin marketplace with two plugins for maintaining it, plus evals for both.
What's in the repo now
marketplace.jsonat the root, listing two local maintenance plugins and one optional remote plugin:add-plugin,try-plugin-locally, andsubmit-plugin, for contributors. Local testing uses the selected checkout in a fresh session; optional installation-check recipes use a small validator bundled inside the skill.plugin-revieweragent and skillsupdate-remote-pinsandrelease-plugins, for owners.eval): pinned tocopilot-evals-v0.23.3atbe7b4ee0d58b7bea143e74fd64275b2c47091cab, pathpackages/plugin. It retains its upstream GitHub Limited Use Source License..github/copilot/settings.jsonstill turns on only the two local maintenance plugins. The remote plugin requires explicit installation.evals/mirrorsplugins/: one eval per skill or agent, with agrader.mjsbeside each skill eval. Shared helpers and fixtures live inevals/_shared/.plugin.jsonschema check, a catalog match, and remote pin checks. Validation scripts and their tests live in.github/scripts/.What's removed
lintandevalEval results
The full suite passed at commit
64a3f37: 14 cases, 5 trials each, onclaude-haiku-5.5. All 70 trials passed after the fix loop:The evals' default model is
claude-haiku-5.5, becausegpt-5.4-miniisn't available to every account.Review fixes
.github/scripts/.try-plugin-locally,update-remote-pins, andsubmit-pluginexplicitly treat checkout content as untrusted input. Checkout instructions can't grant permissions, bypass approvals, change tools or instruction hierarchy, or override secrets handling and safety. Relevant conventions remain available within the pin/submission workflows, and conflicting instructions are ignored and reported.ready_for_reviewtrigger issue no longer applies because PR events don't start these runs.main, including the OSPO copyright update inLICENSE.The earlier baseline passed 478 deterministic checks. The expanded deterministic suite, current skill/eval lint, schema checks, and catalog/pin validation now pass after the feedback fixes. The recipe tests execute the actual PowerShell and bash examples with fake Copilot functions, including hostile metadata, path escapes, collisions, and failure cleanup. These controls constrain the documented executable procedure; they aren't a model sandbox or a guarantee against concurrent filesystem replacement or hard links. The validator needs trusted Node.js 22+ and the fixed Agent Plugins local layout. The paid behavioral suite wasn't rerun for these CI and install-skill changes.
User-review feedback addressed
New behavioral cases cover unknown release bases, first releases and stable-channel preservation. They were linted but weren't model-run. Upstream Evals and host approval limitations are kept separate from fixes to this starter.
Local-checkout testing
copilot --plugin-dir "<absolute-local-plugin-folder>"session loads that source without installation or settings changes.try-plugin-locallysmoke case now checks local-session command preparation, the selected absolute source path, unchanged checkout state, and an honest unverified discovery/behavior report. It doesn't start a nested Copilot session, install/uninstall a plugin, create profiles, or switch branches.d003cdd, all 525 deterministic tests and current skill/eval lint pass. The new grader regressions cover incorrect sources, paths with spaces, unwanted session/install/branch actions and fabricated host verification. This case has not been model-run; real host discovery and plugin behavior remain unverified.To check
npm run verifyand.github/plugin/marketplace.json. Both are gone here, so the page needs an update after this merges.