Skip to content

justinwetch/SkillEval

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

19 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ§ͺ Skill Evaluator

A visual workbench for A/B testing AI skills. Upload two Agent Skill packages or single-file skills, run them through a batch of test prompts, and let an AI judge score the results.

DEMO VIDEO: SkillEval v1.1 product video

I built this to improve Anthropic's frontend design skill and prove the improvements with data. That project was hardcoded to frontend evaluation, so I extracted the core evaluation engine and made it extensibleβ€”now you can 1v1 any two skills, in any domain, with any model.

For the full story on how this started and why data-driven skill development matters, see Teaching Claude to Design Better.


v1.2 Update

v1.2.1

Skill Evaluator v1.2.1 refreshes the supported frontier model list with Claude Opus 4.8, newer Gemini options, and Grok 4.3 through xAI. It also removes disabled Anthropic Fable access, migrates older saved Opus defaults to Opus 4.8, and validates saved defaults so unsupported model IDs fall back safely.

Skill Evaluator v1.2 adds support for zipped Agent Skill packages. You can now upload a standard .zip skill package with a root SKILL.md, and Skill Evaluator will preserve its separate references, scripts, assets, and supporting files when generating configs and running evaluations.

Single-file .md and .txt skills still work as before, but internally they are treated as one-file Agent Skill packages so both upload paths use the same evaluation model.


v1.1 Update

Skill Evaluator v1.1 adds support for current Anthropic, OpenAI, Google, and xAI models, expanding the app beyond Anthropic-only workflows. Model selection now supports provider-specific API keys, cross-provider choices, and separate defaults for skill output generation and judge scoring.

This release also introduces a refreshed design language, with cleaner surfaces, tighter controls, restrained depth, and fully considered light and dark modes.


Using the GUI

Configure β€” Upload two single-file skills or zipped Agent Skill packages (A and B) and set up your evaluation. Click the ✨ Generate button to have AI analyze your skills and create appropriate evaluation criteria and test prompts automatically. Choose your output type (text, visual, or both) based on what your skills produce.

Light: Configure - Upload skills and generate criteria in light mode

Dark: Configure - Upload skills and generate criteria in dark mode

Light: Configure - Generated criteria and prompts in light mode

Dark: Configure - Generated criteria and prompts in dark mode

Evaluate β€” Select your model and run all prompts through both skills simultaneously. Each prompt generates two outputs (one from Skill A, one from Skill B) which you can compare side-by-side. The status badges show progress in real-time.

Light: Evaluate - Running prompts through both skills in light mode

Dark: Evaluate - Running prompts through both skills in dark mode

Results β€” After generation, run the judge to score both outputs against your criteria. The summary view shows overall wins/losses, while the detailed breakdown reveals per-criterion scores and patterns.

Light: Results - Summary view with wins and scores in light mode

Dark: Results - Summary view with wins and scores in dark mode

Light: Results - Per-criterion breakdown in light mode

Dark: Results - Per-criterion breakdown in dark mode

Settings β€” Manage provider keys for Anthropic, OpenAI, Gemini, and xAI, then set default models for configuration, generation, and judging.

Light: Settings - provider keys and default models in light mode

Dark: Settings - provider keys and default models in dark mode


Installation

Prerequisites

Clone and Setup

git clone https://github.com/justinwetch/SkillEval.git
cd SkillEval
npm install
npm --prefix app install

Running the GUI

npm run dev:app

Open http://localhost:5173 in your browser.

Running an Evaluation

  1. Go to Configure and choose the Output model and Judge model
  2. If a selected model needs provider access, click its Add Key action to open the right Settings panel
  3. Upload two single-file skills or zipped Agent Skill packages
  4. Click Generate All from Skills to auto-generate criteria and prompts
  5. Go to Evaluate and click Run All Evals
  6. Once generation completes, click Judge All to score the outputs
  7. Review the results in Summary and Detailed Breakdown tabs

Model Selection

Choose models deliberately for the two major phases. The Output model runs both skills, while the Judge model generates criteria/prompts and scores the results.

Model Provider Characteristics
Claude Opus 4.8 Anthropic Strong model for criteria, prompts, and judging (default judge)
Claude Sonnet 4.6 Anthropic Balanced capability and speed (default output generation)
Claude Haiku 4.5 Anthropic Fast, cost-effective, good for iteration
GPT-5.5 OpenAI Frontier model for complex reasoning and coding
GPT-5.4 Mini / Nano OpenAI Lower-latency, lower-cost OpenAI options
Gemini 3.5 Flash Gemini Stable Gemini model for sustained coding and agentic tasks
Gemini 3.1 Pro Preview Gemini Advanced Gemini Pro option
Gemini 3 Flash Preview / 3.1 Flash-Lite Gemini Newer Gemini speed/capability options for agentic and lightweight workloads
Grok 4.3 xAI xAI flagship text and image-input model via the Responses API

For judging, Claude Opus 4.8 is the default because strong reasoning is useful for criteria, prompts, and nuanced scoring. Claude Sonnet 4.6 is the default for skill output generation. Anthropic, OpenAI, Gemini, and xAI models are available in the same selectors when their provider keys are configured.


Writing Skills

For documentation on how to write effective skill files, see Claude Code Skills.

Skill Evaluator accepts:

  • .zip Agent Skill packages with a root SKILL.md
  • .md single-file skills
  • .txt single-file skills

The test-skills/ folder contains example skill files you can use as reference:

  • sql-skill-a.md β€” Basic SQL query generation skill
  • sql-skill-b.md β€” Advanced SQL skill with optimization focus
  • zip-fixtures/ β€” Example zipped Agent Skill packages

Local Runner (Optional)

For visual evaluations (HTML/CSS skills that produce rendered output), you'll need the local runner:

# From the project root
npm run server

The server runs on port 3001 and uses local Chrome through Puppeteer to capture screenshots of rendered HTML. If you're evaluating text-only skills (code, SQL, writing, etc.), you don't need this.


Project Structure

SkillEval/
β”œβ”€β”€ app/                      # React application
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ components/       # UI components
β”‚   β”‚   β”œβ”€β”€ contexts/         # React context (config, run state, settings)
β”‚   β”‚   β”œβ”€β”€ utils/            # Core logic (API, eval, judging)
β”‚   β”‚   └── views/            # Page components
β”‚   └── package.json
β”œβ”€β”€ test-skills/              # Example skill files
β”œβ”€β”€ screenshots/              # GUI screenshots
└── screenshot-server.js      # Optional local runner for visual evaluation

Contributing

Contributions welcome! Open an issue for bugs, feature requests, or to share interesting skill files you've tested.


License

MIT


Credits

Built by Justin Wetch

About

A visual workbench for A/B testing AI skills. Upload two skill files, run them through a batch of test prompts, and let an AI judge score the results.

Topics

Resources

License

Stars

33 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors