
eval-creator
[Beta] Creates permanent eval cases from promoted learnings and runs regression checks against them. Turns failures into test cases that prevent silent regression. This is the outer loop's regress-test step. Use when a learning is promoted and has a clear pass/fail condition, or on cadence to verify promoted rules still hold.
- Installs
- 63
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/pskoett/pskoett-ai-skills --skill eval-creator- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads eval-creator automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Eval Creator
Turns promoted learnings into permanent eval cases. Runs regression checks to verify promoted rules hold. This is the outer loop's regress-test step.
The blog says: "If a failure taught you something important, it should become a permanent test case. Otherwise the knowledge is still fragile."
When to Use
- After harness-updater promotes a pattern — create an eval for it
- On cadence — run all evals to check for regression
- Before major releases — verify the harness is holding
- When a promoted rule seems to have stopped working — diagnose with targeted eval run
Eval Directory Structure
.evals/
EVAL_INDEX.md # Index of all eval cases with status
cases/
eval-YYYYMMDD-001.md # Individual eval case
eval-YYYYMMDD-002.md
...
Creating an Eval Case
Input
From harness-updater or manually:
- Pattern-Key of the promoted learning
- The rule that was added to the project instruction files (CLAUDE.md, AGENTS.md, .github/copilot-instructions.md)
- What to test (the assertion)
- Verification method
Eval Case Format
---
id: eval-YYYYMMDD-NNN
pattern-key: [from learning]
source: [LRN-YYYYMMDD-001, ERR-YYYYMMDD-003]
promoted-rule: "[the rule text in project instruction files]"
promoted-to: CLAUDE.md # or AGENTS.md, .github/copilot-instructions.md, or equivalent
created: YYYY-MM-DD
last-run: YYYY-MM-DD
last-result: pass | fail | skip
evidence-level: presence | structural | behavioral
---
## What This Tests
[One sentence: what failure this eval prevents from recurring]
## Precondition
[What must be true for this eval to be runnable]
- File X exists
- Project uses framework Y
- etc.
## Verification Method
[One of: grep-check, command-check, file-check, rule-check, behavior-check]
### grep-check
Search for a pattern that should (or should not) exist:
target: src/**/*.ts pattern: "hardcoded-secret-pattern" expect: not_found
### command-check
Run a command and check the exit code or output:
command: npm run typecheck expect_exit: 0
### file-check
Verify a file or section exists:
target: CLAUDE.md # or AGENTS.md, .github/copilot-instructions.md section: "## Verification" expect: exists
### rule-check
Verify a rule exists in an instruction file:
target: CLAUDE.md # or AGENTS.md, .github/copilot-instructions.md contains: "[the promoted rule text or key phrase]" expect: found
`rule-check` proves only that guidance is installed. It must not be reported as
proof that an agent follows the guidance.
### behavior-check
Exercise the relevant behavior with synthetic positive and negative controls:
command: bash bench/run-contract-case.sh bounded-retry expect_exit: 0 positive_control: "transient failure is retried within budget" negative_control: "deterministic failure changes input or stops"
A behavioral pass requires observable evidence for both controls. Prefer the
repository's existing test, bench, or fixture mechanism; do not create a new
test framework for one eval.
## Expected Result
**Pass:** [What "good" looks like]
**Fail:** [What regression looks like]
## Recovery Action
If this eval fails:
1. [Specific step to diagnose]
2. [Specific step to fix]
3. Re-run this eval to verify
Running Evals
Run All
Read .evals/EVAL_INDEX.md, iterate through all cases, execute each verification method.
Run by Pattern-Key
Filter to evals matching a specific pattern.
Run by Area
Filter to evals whose source files match an area (frontend, backend, etc.).
Execution
For each eval case:
- Check precondition — if not met, mark as
skip - Execute verification method:
grep-check: Use Grep tool to search target files for the patterncommand-check: Run the command via Bash, check exit code and/or outputfile-check: Use Read/Glob to verify file/section existencerule-check: Read the target file, search for the expected contentbehavior-check: Run the existing synthetic fixture or bench case and require the positive control to pass and the negative control to be rejectedskill-check: Runquick_validate.pyon a skill directory (see Skill Validation below)script-check: Run a custom mcp-script by name (see Custom Verification Methods)
- Compare result to expected
- Check evidence strength — a presence/structural method cannot satisfy a
behavioral assertion. Mark the case
failwithinsufficient_evidencerather than upgrading the claim. - Update
last-runandlast-resultin the eval case file - Update
EVAL_INDEX.mdwith the result
Regression Report
## Eval Run: YYYY-MM-DD
**Total:** N evals
**Passed:** N
**Failed:** N
**Skipped:** N
### Failures
#### eval-YYYYMMDD-001 — [pattern-key]
- **What regressed:** [description]
- **Expected:** [X]
- **Got:** [Y]
- **Recovery action:** [from eval case]
### Summary
[All green / N regressions need attention]
Eval Index Format
.evals/EVAL_INDEX.md:
# Eval Index
| ID | Pattern-Key | Rule Summary | Last Run | Result | Created |
|----|-------------|-------------|----------|--------|---------|
| eval-YYYYMMDD-001 | auth-middleware-lock | Run migrations on test DB first | YYYY-MM-DD | pass | YYYY-MM-DD |
| eval-YYYYMMDD-002 | pnpm-not-npm | Use pnpm in this repo | YYYY-MM-DD | fail | YYYY-MM-DD |
Integration
Upstream
- harness-updater flags eval candidates after promoting a pattern (harness-updater is a plugin-bundle agent,
plugin/agents/harness-updater.md; without the plugin, the human applying promotions manually flags eval candidates from the gap report instead) - learning-aggregator identifies patterns with clear pass/fail conditions
Downstream
- Regression failures feed back into self-improvement as new error entries
- Persistent failures may indicate the promoted rule needs refinement → feed back to harness-updater
Scheduled Use
For projects with a CI pipeline, eval-creator can run as a scheduled check:
- Weekly: run all evals
- Per-PR: run evals related to changed files
- Post-promotion: run the newly created eval immediately
Custom Verification Methods (mcp-scripts)
Beyond the five built-in methods (grep-check, command-check, file-check, rule-check, behavior-check), projects can define custom verification tools as mcp-scripts for complex assertions that the built-ins can't express.
Example — an eval that verifies a promoted auth rule is enforced:
# In gh-aw workflow config
mcp-scripts:
check-auth-middleware:
lang: javascript
description: "Verify all /admin routes have auth middleware"
run: |
const routes = require('./src/routes/admin');
const unprotected = routes.filter(r => !r.auth);
if (unprotected.length) {
console.error('Unprotected admin routes:', unprotected.map(r => r.path));
process.exit(1);
}
Reference the script in an eval case as verification_method: script-check with the mcp-script name. This is an extension point — the built-in methods cover most cases, but mcp-scripts handle project-specific behavioral assertions.
Persistence
Eval cases live in .evals/ in the working directory. The skill does not integrate with external memory backends in interactive sessions. For CI-side durable storage, see eval-creator-ci, which can optionally back its run history with gh-aw's repo-memory.
Skill Validation (skill-check)
The Anthropic /skill-creator skill includes two validation systems that eval-creator can use:
Structural validation via quick_validate.py
The skill-check verification method runs the skill-creator's quick_validate.py script on a skill directory. It checks:
- SKILL.md exists with valid YAML frontmatter
- Only allowed frontmatter keys (
name,description,license,allowed-tools,metadata,compatibility) - Name is kebab-case, max 64 chars, no leading/trailing/consecutive hyphens
- Description has no angle brackets, max 1024 chars
- Compatibility field max 500 chars if present
Eval case example:
---
id: eval-YYYYMMDD-NNN
pattern-key: skill-quality.verify-gate
verification_method: skill-check
target: skills/verify-gate
expect: valid
---
## What This Tests
Verify that the verify-gate skill passes structural validation after harness updates.
Execution: python .claude/skills/skill-creator/scripts/quick_validate.py <target>. Exit 0 = pass, exit 1 = fail.
Behavioral validation via run_eval.py
For deeper validation, the skill-creator's run_eval.py tests whether a skill's description causes Claude to invoke it for given queries. This is useful when harness-updater modifies a skill's description or the outer loop creates a new skill — the eval verifies the skill still triggers correctly.
This requires Claude CLI access and is expensive. Use it for high-value skills only, not as a routine CI check.
When to create skill-check evals
Two scenarios connect the outer loop to skill validation:
-
Harness-updater modifies a skill: When a promoted rule is inserted into a SKILL.md (rather than a project instruction file), create a
skill-checkeval to verify the skill remains structurally valid after the edit. -
Self-improvement identifies a skill gap: When learning-aggregator classifies a pattern as
skill_gapand recommends "create a new skill", the new skill should passquick_validate.pybefore being committed. Create askill-checkeval for it that persists as a regression test.
This closes the loop: failure → learning → new/updated skill → eval verifies skill quality → regression prevents quality drift.
What This Skill Does NOT Do
- Does not fix regressions (reports them for the agent or human to fix)
- Does not promote learnings (that's harness-updater)
- Does not analyze patterns (that's learning-aggregator)
- Does not replace project test suites — evals test the harness, not the code
FAQ
What does the eval-creator skill do?
[Beta] Creates permanent eval cases from promoted learnings and runs regression checks against them. Turns failures into test cases that prevent silent regression. This is the outer loop's regress-test step. Use when a learning is promoted and has a clear pass/fail condition, or on cadence to verify promoted rules still hold.
How do I install eval-creator?
Run npx skills add https://github.com/pskoett/pskoett-ai-skills --skill eval-creator in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/eval-creator/ (personal) or .claude/skills/eval-creator/ (project).
Which AI agents can use eval-creator?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is eval-creator safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains eval-creator?
It is published by pskoett in pskoett/pskoett-ai-skills. It has 63 recorded installs.
More from pskoett/pskoett-ai-skills
self-improvement
pskoett/pskoett-ai-skills
Captures learnings, errors, corrections, and feature requests to enable continuous improvement. Use when: (1) User corrects Claude ('No, that's wrong...', 'Actually...'), (2) User requests a capability that doesn't exist, (3) Claude realizes its knowledge is outdated or incorrect, (4) A better approach is discovered for a recurring task, (5) Receiving a Handoff block from self-healing (a recurring verified heal with Recurrence-Count at least 3) to distill into a memory file or new skill. For ACTIVE runtime failures where the agent needs to apply and verify a fix mid-task, use self-healing instead (it files HEAL- entries with proof; self-improvement promotes accumulated patterns). Also review learnings before major tasks. For CI-only/headless learning capture, use self-improvement-ci.
self-improvement-ci
pskoett/pskoett-ai-skills
CI-only self-improvement workflow using gh-aw (GitHub Agentic Workflows). Captures recurring failure patterns and quality signals from pull request checks, emits structured learning candidates, and proposes durable prevention rules without interactive prompts. Use when: you want automated learning capture in CI/headless pipelines.
simplify-and-harden
pskoett/pskoett-ai-skills
Post-completion self-review for coding agents that runs simplify, harden, re-verification, and micro-documentation passes on non-trivial code or high-impact configuration changes. Use when a task is complete in a general agent session and you want a bounded quality and security sweep before signaling done. For CI pipeline execution, use simplify-and-harden-ci.
agent-teams-simplify-and-harden
pskoett/pskoett-ai-skills
Implementation + audit loop using parallel agent teams with structured simplify, harden, and document passes. Spawns implementation agents to do the work, then audit agents to find complexity, security gaps, and spec deviations, then loops until code compiles cleanly, all tests pass, and auditors find zero issues or the loop cap is reached. Use when: implementing features from a spec or plan, hardening existing code, fixing a batch of issues, or any multi-file task that benefits from a build-verify-fix cycle.
plan-interview
pskoett/pskoett-ai-skills
Ensures alignment between user and Claude during feature/spec planning through a structured interview process. Use this skill when the user invokes /plan-interview before implementing a new feature, refactoring, or any non-trivial implementation task. The skill runs an upfront interview to gather requirements across technical constraints, scope boundaries, risk tolerance, and success criteria before any codebase exploration. Do NOT use this skill for: pure research/exploration tasks, simple bug fixes, or when the user just wants standard planning without the interview process.
intent-framed-agent
pskoett/pskoett-ai-skills
Frames coding-agent work sessions with explicit intent capture and drift monitoring. Use when a session transitions from planning/Q&A to implementation for coding tasks, refactors, feature builds, bug fixes, or other multi-step execution where scope drift is a risk.
Popular ai & agents skills
google-agents-cli-publish
google/agents-cli
This skill should be used when the user wants to "publish an agent", "publish my ADK agent", "register an agent with Gemini", "publish to Gemini" (formerly Gemini Enterprise), or needs guidance on the agents-cli publish gemini command. Also use when the user wants to "manage agents in Agent Registry", "list/update/delete registered agents", or "register an MCP server". Covers ADK vs A2A registration modes, programmatic and interactive usage, flag reference, auto-detection from deployment metadata, Agent Registry fleet management, and troubleshooting. Part of the agents-cli skills suite. Do NOT use for deployment (use google-agents-cli-deploy).
google-agents-cli-eval
google/agents-cli
This skill should be used when the user wants to "run an evaluation", "evaluate my agent", "evaluate my ADK agent", "write an eval dataset", "analyze eval failures", "compare eval results", "optimize agent", or needs guidance on the Gemini platform eval methodology and the Quality Flywheel. Covers eval metrics, dataset schema, LLM-as-judge scoring, and common failure causes. Applies to any agents-cli project, whatever framework the agent is written in. Do NOT use for agent API code patterns (ADK: use google-agents-cli-adk-code), deployment (use google-agents-cli-deploy), or project scaffolding (use google-agents-cli-scaffold).
skill-creator
anthropics/skills
Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.
codex-pet
prime-skills/runcomfy-agent-skills
Codex Pet generator on RunComfy. Build a Codex-compatible Codex Pet spritesheet.webp + pet.json from a single reference image, drop it into ${CODEXHOME:-$HOME/.codex}/pets/ / and Codex picks it up as a custom Codex Pet next to the 8 built-ins. This skill produces the exact Codex Pet atlas Codex expects (1536x1872 PNG/WebP, 8 cols x 9 rows, 192x208 cells, 9 animation states — idle, running-right, running-left, waving, jumping, failed, waiting, running, review). Calls OpenAI GPT Image 2 edit ONCE via the local RunComfy CLI as runcomfy run openai/gpt-image-2/edit to produce a canonical Codex Pet pose, then assembles all 9 animation rows programmatically with ImageMagick micro-transforms — no Codex Pro, no $imagegen, no OPENAIAPIKEY required, only RUNCOMFYTOKEN. Triggers on "codex pet", "create codex pet", "make codex pet", "hatch codex pet", "/hatch image", "desktop pet codex", "codex pets", "spritesheet.webp", or any explicit ask to build a custom pet for OpenAI Codex.
full-output-enforcement
leonxlnx/taste-skill
Overrides default LLM truncation behavior. Enforces complete code generation, bans placeholder patterns, and handles token-limit splits cleanly. Apply to any task requiring exhaustive, unabridged output.
executing-plans
obra/superpowers
Use when executing an implementation plan in the current session as the implementer yourself — your human partner chose inline execution, or no subagent tool is available