Skip to content
This repository was archived by the owner on Oct 27, 2026. It is now read-only.

PR 1 — evals: skills eval suite + CI gate - #9

Merged
felix8 merged 1 commit into
mainfrom
skills-1-eval-harness
Jun 26, 2026
Merged

felix8 merged 1 commit into
mainfrom
skills-1-eval-harness

Conversation

@felix8

@felix8 felix8 commented Jun 16, 2026 •

Copy link
Copy Markdown
Contributor

Standalone, tiered eval suite for the Flox skill (no longer framed as just a consolidation gate, per @billlevine).

22 tasks, tiered should / may / stretch, covering:

  • functional flows (env/services/builds/containers/publish/cuda/compose)
  • implicit triggering — prompts that never say "flox" ("create a new project", "reproducible across the team", "add a Redis dep")
  • search/show/install probes ("Does Flox have ripgrep?", "add nodejs 18.4", "what Postgres versions?")
  • per-skill incl. indirect refs (PyTorch+NVIDIA GPU, "README needs CUDA 12.2", "ship as a Docker image", "teammates install my CLI")

Gate: run.py --gate binds on the deterministic hard-checks of functional should-tier tasks. The LLM judge and implicit-trigger rate are probabilistic, so they're reported (avg_judge_score, judge_correct_rate, should_trigger_rate) but never fail CI. Workflow .github/workflows/evals.yml runs it using the org-managed MANAGED_SKILLS_ANTHROPIC_API_KEY.

Baselines here = pre-consolidation (7 skills). See the comment for the before/after.

🤖 Generated with Claude Code

@garbas

garbas commented Jun 16, 2026

Copy link
Copy Markdown

It would be nice to already have a CI here.

@felix8
felix8 force-pushed the skills-1-eval-harness branch from c4ee91a to a8cfa52 Compare June 17, 2026 07:01
@felix8

felix8 commented Jun 17, 2026

Copy link
Copy Markdown
Contributor Author

Added CI: .github/workflows/evals.yml runs the eval gate (run.py --mode skills --gate, exits non-zero on regression) on PRs touching the plugin/evals. It needs an ANTHROPIC_API_KEY repo/org secret for the claude calls — see the Authentication section in evals/README.md (the judge half could alternatively run on GitHub Models via the Actions token; GH Models has no Claude, so the agent-under-test must stay on claude). Force-pushed.

@felix8
felix8 force-pushed the skills-1-eval-harness branch from a8cfa52 to ee014f4 Compare June 17, 2026 07:08
@felix8

felix8 commented Jun 17, 2026

Copy link
Copy Markdown
Contributor Author

Update: pulled the GitHub Actions workflow back out for now to keep this focused on the harness + baselines (the progressive-disclosure refactor in the stack is the priority). The --gate flag stays, so wiring CI later is a one-liner: a job that exports CLAUDE_CODE_OAUTH_TOKEN (the secret the other Flox Claude workflows use) and runs python3 evals/run.py --mode skills --gate. Force-pushed.

Comment thread evals/README.md Outdated
@@ -0,0 +1,80 @@
# Flox skills evals

Eval harness that gates the skills consolidation. Each step of the merge must

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Generalize, after consolidation, this will be stale. It's just solid evals.

@billlevine billlevine left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All of these prompts specifically reference flox. I would like to see a richer set of evals including those that do not reference "Flox" at all. Assume the user may not even know the flox skill is installed, but just wants a new project, update a project, etc. May be very generic into touching some key words like reproducible, etc.

I would like to see a prompt or two for each basic functionality point touched in the skill. "Does flox have xxx software" and "add nodejs 18.4 to the project" both would touch search/show and likely install. etc.

This may be difficult and not hit 100%, but that's fine. We'll get a baseline with MCP.

Then for each consolidated skill update the evals and run before and after consolidation to test the functionality folded in. e.g. publish specific. cuda specific (maybe even indirect references like having pytorch or cuda references in readme(s)). This is so we can properly gauge if we are triggering on the right things and getting the context we need. Currently each independent skill has many keywords in the front matter to allow for rich triggering which we will loose with consolidation. The question is how much and can we mitigate some of it... somehow. I would expect dozens of evals by the time all the skills are consolidated many focused on specific areas and a "should trigger", "may trigger", and stretch prompts that may not but we would like them to.

This sets us up well for an auto-research run.

@felix8
felix8 force-pushed the skills-1-eval-harness branch from ee014f4 to 4b24740 Compare June 20, 2026 14:49
@felix8 felix8 changed the title PR 1 — evals: skills eval harness + baselines PR 1 — evals: skills eval suite + CI gate Jun 20, 2026
@felix8

felix8 commented Jun 20, 2026

Copy link
Copy Markdown
Contributor Author

Expanded the suite per your review, and ran it before vs after consolidation (+ an MCP baseline). 22-task tiered suite (should/may/stretch).

Arm hard-checks judge correct judge avg trigger fired
after — 1 consolidated skill 100% 90.9% 4.59 11/11
before — 7 separate skills 100% 100% 4.68 11/11
before + MCP 100% 95.5% 4.64 11/11

Key finding: collapsing the 7 keyword-rich skills into one did not cost triggering — every no-"flox" prompt fired in both setups. Quality comparable; MCP added nothing. (Triggering is probabilistic — an isolated prompt flaked on one run — so the gate reports should_trigger_rate rather than blocking on it; it binds on the deterministic hard-checks.)

Next is your AI-249 idea: extend from prompt-level to project-level conversion evals, run the consolidated skill, then add /floxify and measure whether they compound.

Comment thread evals/tasks.jsonl
{"id": "containerize-env", "area": "containers", "tier": "should", "prompt": "Turn my Flox environment into a Docker container image.", "checks": ["no_fake_install_url", "mentions_containerize"], "rubric": "Should use `flox containerize` to produce an OCI/Docker image and show loading it into docker/podman. "}
{"id": "publish-package", "area": "publish", "tier": "should", "prompt": "I built a package in my Flox environment. Publish it to FloxHub so my team can install it.", "checks": ["no_fake_install_url", "uses_flox_publish"], "rubric": "Should use `flox publish <build>` from a git-tracked, clean repo with a remote, and explain the org/personal catalog namespace and how teammates `flox install`. "}
{"id": "compose-environments", "area": "sharing", "tier": "should", "prompt": "I have a base Flox environment and a separate debug-tools environment. How do I combine them?", "checks": ["no_fake_install_url", "uses_include_or_layer"], "rubric": "Should explain composition via [include] in the manifest AND/OR runtime layering with `flox activate -r a -- flox activate -r b`, and the difference between them. "}
{"id": "cuda-env", "area": "cuda", "tier": "should", "prompt": "Set up a Flox environment for CUDA GPU deep learning (PyTorch) on Linux.", "checks": ["no_fake_install_url", "no_abs_paths", "has_install_section"], "rubric": "Should install cudaPackages/cudatoolkit + a framework, constrain systems to linux, and handle library conflicts via priority/pkg-group. Penalize absolute paths and fake install URLs."}

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should use the flox-cuda catalog. May need an update to the skill file.

@billlevine billlevine left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A couple little nits, but looks good!

@felix8
felix8 force-pushed the skills-1-eval-harness branch 2 times, most recently from e65699f to 494afcb Compare June 25, 2026 18:51
A standalone, tiered eval suite for the Flox skill (not just a consolidation
gate). 22 tasks across should/may/stretch tiers covering: functional flows,
implicit triggering (prompts that never say "flox"), search/show/install
probes, and per-skill incl. indirect references (PyTorch/CUDA-in-README, etc.).
Scored by deterministic hard-checks + an LLM judge.

`run.py --gate` binds only on the deterministic hard-checks of functional
should-tier tasks; the LLM judge score and the implicit-trigger rate are
probabilistic, so they're reported (avg_judge_score, judge_correct_rate,
should_trigger_rate) but never fail the build. CI workflow
(.github/workflows/evals.yml) runs it on PRs using the org-managed
MANAGED_SKILLS_ANTHROPIC_API_KEY secret.

Baselines committed here are the pre-consolidation (7-skill) runs:
  skills-only : 22/22 hard, 100% functional correct, judge 4.68, trigger 11/11
  skills+MCP  : 22/22 hard, judge 4.64, trigger 11/11  (MCP adds nothing — AI-93)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@felix8
felix8 force-pushed the skills-1-eval-harness branch from 494afcb to 9cc741f Compare June 25, 2026 20:03
@felix8
felix8 merged commit 84ba858 into main Jun 26, 2026
1 check passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants