Repository navigation
Run skill evals with a shared marketplace environment - #12
Merged
Merged
Conversation
Share the native Vally skill environment across the marketplace evals, prepare immutable remote skill sources, and check runtime loaded-skill evidence without changing plugin activation or CI. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
| if (typeof entry.source === "string") continue; | ||
| checkRemotePin(entry, api); | ||
| const { repo, path = "", sha } = entry.source; | ||
| const response = api(`repos/${repo}/git/trees/${sha}?recursive=1`); |
| if (gitHash(readFileSync(file)) !== item.sha) throw new Error(`Modified cached skill source: ${file}. Remove that cache and prepare again.`); | ||
| continue; | ||
| } | ||
| const blob = api(`repos/${repo}/git/blobs/${item.sha}`, undefined, "application/vnd.github+json"); |
There was a problem hiding this comment.
🟡 Changes recommended
Cache preparation can follow symlinks and write outside its intended directory, while validation incorrectly requires eval files for skills where they are optional.
2 open issues
What changed in this PR
Moves all six skill evals to a shared marketplace environment so agents can choose among local and pinned remote skills, while leaving the independent agent eval unchanged.
Changes:
- Defines the shared skill inventory and adds automatic remote-source preparation before evals.
- Adds catalog consistency checks, loaded-skill evidence grading, and model-free regression tests.
- Documents preparation, authentication, maintenance, and the skills-only capability boundary. Live loading still requires a separately approved paid run.
| File | Description |
|---|---|
| README.md | Introduces shared eval preparation and retirement updates. |
| package.json | Adds preparation and pre-eval scripts. |
| evals/pr-description/skills/pr-description/eval.yaml | Uses the shared environment and checks loaded skills. |
| evals/plugin-authoring/skills/try-plugin-locally/eval.yaml | Uses the shared environment. |
| evals/plugin-authoring/skills/submit-plugin/eval.yaml | Uses the shared environment. |
| evals/plugin-authoring/skills/add-plugin/eval.yaml | Uses the shared environment. |
| evals/marketplace-maintainer/skills/update-remote-pins/eval.yaml | Uses the shared environment. |
| evals/marketplace-maintainer/skills/release-plugins/eval.yaml | Uses the shared environment. |
| evals/_shared/graders/marketplace-context.mjs | Checks the native SDK’s loaded-skill inventory. |
| docs/checks-and-evals.md | Explains setup, maintenance, and runtime limitations. |
| .vally.yaml | Defines the twelve-skill marketplace environment. |
| .github/scripts/validation.test.mjs | Updates expected npm scripts. |
| .github/scripts/prepare-eval-context.mjs | Fetches pinned sources and validates cache contents and inventory. |
| .github/scripts/marketplace-context.test.mjs | Covers preparation, staging, environment coverage, and grading. |
| .github/scripts/lint.mjs | Adds model-free environment consistency checks. |
| .github/scripts/eval-report.test.mjs | Reads skill coverage from the shared environment. |
| .github/scripts/check-remote-pins.mjs | Supports configurable API response formats for blob fetching. |
Review effort: Balanced (auto)
Remove the extra source-preparation machinery, custom inventory grader, new tests, package/helper changes and expanded docs. Retain all marketplace skill paths and the minimal existing test adaptation. Remote source materialization and live runtime confirmation remain unresolved, not implicitly supplied by configuration. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Stage remote Evals skills through shared environment commands and native workspace discovery, without separate preparation infrastructure. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
🔵 Needs a closer look
Reported runs fail 3 of 16 cases, including required skill activation, and lack baseline comparisons, requiring maintainer review to determine whether shared-skill routing introduced regressions.
No open issues 🎉
2 resolved since last review
Review effort: Balanced (auto)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


Changes
Relates to #11.
Define one
environments.marketplacein.vally.yamland have the six skill evals referenceagent_environment: marketplace. Vally stages six local skills from their source directories. Native setup commands fetch the catalog-pinned remote Evals repository, copy its six skills into the trial's.github/skillsfor Copilot workspace discovery, and remove the temporary source clone. The checkout uses both the catalog ref and immutable SHA.No separate preparation script, cache, npm hook, manual source checkout, custom runtime grader, or new test file. The host needs Git/network access and ordinary Git read authentication to
github/evals. Only skills are staged; this does not install plugins or enable their agents, hooks, MCP servers, or extensions.Reduced from 17 changed files to 8, with 26 additions and 44 deletions: the shared environment, six eval references, and the existing cohort test's environment lookup. Case fixtures, invocation graders, negative-case protections, and the independent agent eval are unchanged. The earlier preparation/cache machinery, custom inventory grader, added tests, package/helper/lint changes, and expanded docs were unnecessary scope expansion and have been removed.
Native tooling contracts
The published reference documents named environments, local skill sources and setup commands, and native trial-workspace skill discovery.
Verified against installed Vally 0.19.0 source: planning passes the eval directory as baseDir, and skill sources resolve relative to it, not
.vally.yaml. The four../segments are intentional.environment.skillstakes literal existing directories, not glob patterns or remote catalog entries. Nativegit.type: clonepopulates the trial root and has no separate source-directory destination, so it is not a drop-in replacement for fetching only remote skills while preserving fixture workspaces. Setup runs automatically inside each disposable trial, without global configuration changes.Verification
npm run lint, andgit diff --checkpassed.claude-haiku-5.5, one worker, one trial each, zero trial retries. CLI run ID:ca30d729-fe3d-4ebe-bfd9-4c9eebdcf338; source commit:698e510ad0b4c6f19b06b25617f012f9bc0567ce.system.messagewhose<available_skills>inventory advertises all 12 marketplace skills: six local skills withlocation: custom, and the six remote Evals skills withlocation: project. Two builtin skills were also advertised. This proves actual discovery and availability for routing, not activation of every skill or loading every full skill body. Target activation remains separately graded.trajectory.metadata.skillsLoadedwas empty and nosession.skills_loadedevent was recorded; that field is not the evidence used. The proof is the actual runtime system-context inventory in each savedevents.jsonl, not a configuration list or synthetic executor. Original CLI JSONL, reports, trajectories and runtime logs are retained locally and are not committed.Recorded eval outcomes
The suite is not fully green: 13/16 cases pass all checks, and 4/6 evals pass their thresholds. No execution errors occurred. The three recorded failures are the existing local-session program checks, the release unknown-base program check, and missing release-skill activation for the unreleased-first-version case. The unknown-base answer explicitly requested evidence in a multiline list, which the existing sentence-based check rejected; the recorded failure is retained, not relabeled. No checks, prompts, skills, or thresholds were changed to obtain these results, and no causal baseline comparison was run.
No new CI/Action work, scheduled updates, plugin installation, global configuration changes, full plugin-runtime activation, or merge is included.