beyhangl/Evalcraft CI Gate

Run evalcraft agent tests and gate pull requests on agent behavior. Installs evalcraft, runs your pytest suite, evaluates cassette metrics against thresholds, and posts a results table as a PR comment.

View on GitHub

Trust Signals

Scorecard Score
not yet scored
Maintenance Recency
Activelast commit Jul 5, 2026
License
MIT

Pinned Snippet

workflow.ymlSHA-pinned
uses: beyhangl/evalcraft@986027fd492c916888f90f348777bf539ddd639e # v0.5.0

tags can be moved; commit SHAs can't. why a SHA?

namedescriptionrequireddefault
test-pathPath to agent test files or directorynotests/
max-costMaximum total cost in USD across all cassettes. Fails the action if exceeded. Example: "0.10"no""
max-regressionMaximum allowed increase (%) for any cassette metric (tokens, cost) compared to the baseline cassettes committed in git. Requires record-mode=all or new so cassettes are re-recorded. Example: "5" or "5%"no""
cassette-dirDirectory where cassettes are stored and loaded fromnotests/cassettes
record-modeCassette record mode passed to --evalcraft-record: none — replay-only, skip tests with missing cassettes (default) new — record cassettes that don't exist yet all — always re-record (live LLM calls required)nonone
evalcraft-versionEvalcraft package version to install. Use "latest" for the most recent release or pin to a specific version (e.g. "0.1.0").nolatest
python-versionPython version to use when installing and running evalcraftno3.11
extra-pytest-argsAdditional arguments forwarded to pytest verbatimno""
post-commentPost a PR comment with the results table (true/false)notrue
github-tokenGitHub token used to post PR comments. Defaults to the auto-provided GITHUB_TOKEN secret.no${{ github.token }}
namedescription
total-costTotal cost in USD across all agent test cassettes
total-tokensTotal token count across all agent test cassettes
total-tool-callsTotal tool call count across all agent test cassettes
cassette-countNumber of cassette files evaluated
passedWhether all tests and thresholds passed ("true" / "false")