Add python skills and test.#375
Conversation
…mprovements to skill-experiments script
…tion or class' Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>
Updated pnpm dependencies Removed agentic workflows for evaluation Renamed workflow 2 Renamed workflow Oops, wrong evaluation Try pull_request_target Added back evaluation workflow separate from agentic workflow Try defining a token for vally to use For ce update to prompt CI fixes Added lockfile explicitly Fixed lockfile enable copilot-requests permission Moved back to agentic workflow; update to vally 0.7.0 Moved back to agentic workflow; update to vally 0.7.0 Restored older ealuations Updated evaluations And set the environment variable Install copilot Just try out copilot cli before doing expensive stuff
…kills into larryo/python_skills
…et available from crates.io
Reducing confusion on vally scope notifications.
richardpark-msft
left a comment
There was a problem hiding this comment.
Still looking through it, but found some things worth addressing now.
| with: | ||
| fetch-depth: 0 | ||
|
|
||
| - uses: actions/setup-node@v4 |
There was a problem hiding this comment.
You can use the latest setup-node action here instead of v4. v6 (currently v6.5.0) has been stable for months; I'd stick with v6 rather than v7, which only just shipped. Apply this to move up a major version:
| - uses: actions/setup-node@v4 | |
| - uses: actions/setup-node@v6 |
One thing to watch: since v5, setup-node auto-caches when package.json has a packageManager field. This step just does a global npm install, so it should be a non-issue, but set package-manager-cache: false if you see odd caching.
| fi | ||
| elif [ "${{ github.event_name }}" = "pull_request" ]; then | ||
| collect_from_changed_dirs "${{ github.event.pull_request.base.sha }}" "${{ github.sha }}" | sort -u > "$specs_file" | ||
| elif [ "${{ github.event_name }}" = "pull_request" ] || [ "${{ github.event_name }}" = "pull_request_target" ]; then |
There was a problem hiding this comment.
You didn't end up using pull_request_target, so you can probably just revert this line (and any other ones related to it).
| echo "::notice::Running Vally evaluations for same-repo PR from ${{ github.event.pull_request.head.repo.full_name }}." | ||
|
|
||
| - name: Vally PR scope notice (cross-repo) | ||
| if: ${{ steps.specs.outputs.has_specs == 'true' && github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != github.repository }} |
There was a problem hiding this comment.
I was going back and forth on this with copilot - the checks (for PR vs non-PR) are a bit noisy but apparently you can break it apart a bit, which I think would help. So your overall purpose (everybody gets linted) happens easily enough and eval is a bit more special, but now it's confined to it's own job.
jobs:
lint:
runs-on: ubuntu-latest
# runs for everyone, no token
steps:
- uses: actions/checkout@v6
# resolve specs + schema-only lint
eval:
needs: lint
runs-on: ubuntu-latest
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
permissions:
contents: read
copilot-requests: write
env:
GH_TOKEN: ${{ github.token }}
steps:
- uses: actions/checkout@v6
# build grader plugin + run vally eval| [string]$SkillPattern = "*-py", | ||
|
|
||
| [Parameter(Mandatory = $false)] | ||
| [ValidateRange(1, 128)] |
There was a problem hiding this comment.
Please get me the 128 core machine...
| @@ -0,0 +1 @@ | |||
| Error: Experiment config file not found: Q:\src\skills\tests\scenarios\agent-framework-azure-ai-py\skill_effectiveness_experiment.yaml | |||
There was a problem hiding this comment.
Is this file supposed to be checked in? Also, Q:\ is not universal....
| @@ -0,0 +1,94 @@ | |||
| Running experiment 'azure-monitor-ingestion-py-skill-experiment' | |||
| Output: Q:\src\skills\tests\scenarios\azure-monitor-ingestion-py\vally\vally-experiment-results\2026-06-30T23-35-17-490Z | |||
There was a problem hiding this comment.
Another one, not sure if this file should be checked in. Maybe do a scrub and then add in a .gitignore file?
| $npmLoaderPath = $null | ||
| $loaderCandidates = @( | ||
| (Join-Path $copilotDir "node_modules\@github\copilot\npm-loader.js"), | ||
| "q:\.tools\.npm-global\node_modules\@github\copilot\npm-loader.js" |
There was a problem hiding this comment.
Might be worth doing a pass, making sure you don't have other paths hardcoded from your dev setup.
| [bool]$EnableNodeLoaderFallback = $true | ||
| ) | ||
|
|
||
| $copilotCommand = Get-Command copilot -ErrorAction SilentlyContinue |
There was a problem hiding this comment.
There's a lot of code in here trying to be accomodating to all sorts of scenarios around copilot, but it's probably okay to just say 'use the copilot in the path, and if it's not t here, then bail' and then you can delete a bunch of code.
Adds Python skill-effectiveness experiments, expands skill reference documentation, and updates the Vally test harness.
Changes:
Adds Python Vally experiments and standardizes test models.
Adds capability/non-hero references and lifecycle guidance.
Updates Vally/Rust graders, harness output capture, and CI checks.
Reviewed Changes