Skip to content
Back to skills

Coval Evals As Code

ASecurity

Maintain Coval evaluation configuration in a repository using Terraform. Use to adopt existing agents, suites, cases and metrics, add regression cases, review drift, or prepare isolated CI evaluations while preserving resource identity and run evidence.

  • 3 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 11, 2026
businessterraformapibackend

Works with

  • cli
  • api
  • mcp

Security analysis

A100/100

Pro scans all 8 files and shows the line behind each finding

Scanned November 11, 2026

npx -y skills add coval-ai/coval-external-skills --skill coval-evals-as-code --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Coval Evals As Code?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Coval Evals As Code
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/coval-ai-coval-evals-as-code/badge)](https://www.skillsdirectory.com/skills/coval-ai-coval-evals-as-code)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: coval-evals-as-code
description: Maintain Coval evaluation configuration in a repository using Terraform. Use to adopt existing agents, suites, cases and metrics, add regression cases, review drift, or prepare isolated CI evaluations while preserving resource identity and run evidence.
---

# Maintain Coval evaluations as code

Make the customer's existing evaluation setup reproducible and maintainable.
Terraform owns configuration; the customer's runner or Agent SDK owns execution
and result collection. Keep their repository structure, authoring format and
transport unless the task calls for changing them.

## Find the source of truth

Inspect repository instructions, Terraform configuration/state ownership, provider
lockfile, case definitions, runner and CI. Confirm the intended organization,
workspace and API environment from supplied configuration and scoped readback.
A valid credential or successful CLI doctor check does not establish the tenant.
Use the public `/v1` API only; do not print credentials or inspect other tenants.

Inventory the full requested scope, including suites excluded by old allowlists,
development/held-out splits, existing IDs, criteria, personas and runtime fixtures.
Distinguish configuration resources from execution history and offline tests.
Do not convert an offline evaluator into a chat script if that loses its semantics.

Choose the authoritative writer for each resource. In a Terraform-managed project,
edit its declared source instead of silently using CLI/MCP/UI configuration writes.
Read APIs, run launches and result retrieval remain useful. If the customer uses
mixed ownership, document the boundary rather than migrating everything by default.

## Author a useful change

Keep cases in one reviewed source (existing JSON/YAML/HCL is fine) and derive
Terraform inputs from it. Do not maintain a second copy of scripts or expectations.
Use stable case keys and explicit suite/split identity; equal content in different
suites does not establish shared ownership. Record requirement/provenance, caller
input, separate expected behaviors, and the evidence needed to judge each behavior.

Use `build-test-suite` or `configure-metrics`, if installed, for coverage/rubric
design; their direct-create examples must respect the ownership choice above.
Retain held-out cases for explicit checkpoints, not iterative prompt tuning.
Declare fixture, permission, audio and tool-evidence requirements alongside cases;
adding a definition alone does not provide those capabilities.

For a new setup, adapt the [tested Terraform example](references/example.md).
For an existing setup, read [the lifecycle guide](references/lifecycle.md) and make
the smallest change in its conventions. Verify the pinned provider's schema before
inventing fields or copying old examples. Upgrade versions deliberately and keep
the dependency lockfile; a version shown here is a tested reference, not a mandate
to downgrade an existing project.

## Reconcile configuration deliberately

Prepare and inspect a plan before applying. Honor authority already given for
configuration changes; ask only for missing authority after the change is reviewable.
Creating configuration does not authorize paid runs or a production agent rollout.

- **Adopt:** match exact workspace, IDs and content; import existing resources to
  retain history. Name matches alone are insufficient. Reconcile differences before
  accepting an import-plus-update plan. Do not create duplicates on ambiguous retries.
- **Edit:** preserve stable addresses for ordinary serialized maintenance. If a PR
  changes shared fixtures while other runs use them, choose explicit isolation before
  applying: immutable versioned definitions or an independent candidate workspace.
- **Retry:** retain the same state owner, resource bindings and launch intent. Never
  switch an attempt from owned fixtures to a newly published shared binding midway.
- **Verify:** read back affected resources, compare content and IDs, then require a
  no-op plan. Unexpected updates, replacements or deletes need reconciliation, not
  deleted state, blanket `ignore_changes`, or removed destruction guards.

Serialize one shared state owner or use a remote backend with appropriate locking
and access control. A file lock does not coordinate separate CI machines. Every
concurrent candidate needs its own target registration/session and owned state;
never rotate another run's endpoint or credential. Share only immutable definitions
whose exact suite/split and complete definition fingerprint match.

State, saved plans, variable files and provider diagnostics can contain secrets,
even with `sensitive = true`. Keep them private and out of CI artifacts. Export only
allowlisted IDs, source/definition revisions and sanitized verdicts. Keep state
recoverable for retries; stopping processes does not require deleting resources
that explain historical runs.

## Execute and interpret separately

Use the existing runner and a concrete authorized budget. Pin the candidate source,
case/criteria fingerprint, metric version, target configuration, persona and fixture
version in a receipt before launch. On timeout, reconcile the saved intent and run
ID before retrying; do not blindly spend again. Keep the baseline explicit when
checking a fix and require it to reproduce the alleged failure.

Check required capabilities and read scopes before paid launch. Keep runner and
target credentials separate: a management key is not a substitute for the target's
scoped key. A missing fixture or actual API access denial is an incomplete test;
retain the raw result and investigate the intended access contract before blaming
the agent or environment. Do not infer HTTP errors solely from model dialogue.

Retrieve complete transcripts and individual criterion outputs, not just a summary
score. Reconcile planned, launched, completed, scored and untested counts. Inspect
contradictions between verdict and explanation. Side effects need independent
state/tool evidence; acoustic claims need audio. Preserve failures and disagreements
rather than redefining criteria until the run passes. Route judge calibration to
`coval-calibrate-metric` if available; never fabricate human labels.

For Agent SDK voice targets, the provider supports `MODEL_TYPE_SDK_WEBSOCKET` with
no customer endpoint. That registers configuration; the SDK still needs to start
and serve the intended candidate. Read the installed SDK version's public guidance.
A text-over-HTTPS check, mock-provider test or successful registration does not
qualify WebSocket audio execution. Keep target readiness, execution completion and
quality verdict distinct. Do not turn advisory coverage gaps into successful checks
or install a release-blocking gate without a validated, agreed policy.

## Leave a reviewable result

Report changed sources/resources, imported or retained IDs, plan/readback/no-op
results, run links and pinned revisions, actual coverage, and remaining gaps.
Separate configuration validation, live execution, agent quality and deployment.
Use the [lifecycle acceptance cases](references/lifecycle.md#acceptance-cases) when
introducing this workflow or changing its ownership model. Keep account-specific
receipts private; publish only fictional examples and generalized lessons.

Files in this skill

  • SKILL.md7.2 KB
  • examples/terraform/.gitignore122 B
  • examples/terraform/.terraform.lock.hcl1.4 KB
  • examples/terraform/catalog.json1.5 KB
  • examples/terraform/main.tf3.3 KB
  • examples/terraform/tests/catalog.tftest.hcl2 KB
  • references/example.md5.1 KB
  • references/lifecycle.md6.7 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

View all in business →

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.