Skill Evaluation
By the Syncfusion DevTutorials team · Last updated
Testing skills at five levels: structure, activation, output, behavior and human review, with control cases, baselines and regression checks.
Why Skills Need Tests
Skill evaluation = testing a skill the same way every time, so you know a change made it better. In this lesson, you will learn the five kinds of skill tests. You will also learn how to catch a change that breaks something.
A skill is like code.
When you change it, something else may break.
For example:
- You add a word to a description.
- One request now works.
- But two other requests stop working.
You may not notice, because you only tried the request you fixed.
Simple lesson: do not trust one quick try. Run the same tests after every change.
A Real-World Example
A cook changes the soup recipe to add more salt.
The soup tastes better. But the cook never tastes the bread, which uses the same salt jar.
A taste test of every dish catches the problem. Skill tests do the same thing for your skills.
Run the DevKit evals
Click the button and open the Evals tab. Press Run evals.
- Activation cases: 16 requests, and the skill each one should fire.
- Output cases: a good reply for each sample. It must pass the checks.
- Control cases: a bad reply for each sample. It must fail the checks.
One activation case fails on purpose. Leave it for now.
Simple lesson: a test set is a fixed list of requests and replies. You run it again and again.
What You Will Learn
In this lesson, you will learn:
- The five kinds of skill tests.
- How to write activation tests.
- How control cases prove a check works.
- How a baseline catches a regression.
- When to run the slow tests.
About the Evals tab
- Run evals runs the whole DevKit test set.
- Save as baseline saves today's result.
- Later runs show FIXED or REGRESSION next to each case.
Five Kinds of Tests
Some tests are free and instant. Others cost time and money.
Here are the five kinds, from cheapest to most costly:
| Level | What it checks | Example |
|---|---|---|
| Structure | The file itself | Front matter is valid, sections exist |
| Activation | Which skill fires | "Create a React component" fires react-component |
| Output | The shape of the reply | All five release-note headings are there |
| Behavior | Real inputs with a real model | 10 real diffs through pr-review |
| Human review | Judgment and quality | A senior dev reads five security reviews |
Five levels of skill testing. The wide, cheap levels at the bottom run on every change. The narrow, costly levels at the top run before a release.
Watch one small change go through all five levels:
The cheap activation test caught the problem in a second.
Write an Output Test
Output test = a small file that lists the headings a reply must have, in order.
For pr-review, the file evals/output-test.md holds four lines:
## Summary
## Findings
## Tests to add
## Verdict
After a change, run the test on a saved good reply. If a heading is missing or moved, the test fails.
Simple lesson: an output test is a list of headings. It catches a reply that lost its shape.
Simple lesson: run the cheap tests on every change. Run the costly ones before a release.
Activation Tests
Activation test = a request, plus the skill that should fire for it.
Write requests the way people really type them.
A good activation test set has three kinds of requests:
- Typical: a normal request. Your skill should fire.
- Near miss: a similar request. Another skill should fire.
- None: a request no skill should answer.
Example for api-endpoint:
Add a backend API endpoint to cancel an order => api-endpoint
Create a React component for the order list => react-component
What time zone is Tokyo in? => none
The near miss matters most. It shows your skill does not grab other skills' work.
Simple lesson: test what should fire, what should not, and what should fire nothing.
Control Cases
An output check looks at the reply. For example, it checks the headings.
But how do you know the check works?
Control case = a bad reply that the checks must fail.
If a bad reply passes, the check is too weak. It tests nothing.
Watch the checks run on a good reply and a bad reply:
The release-note checks failed the bad reply. The UI script let a bad reply pass.
Simple lesson: prove every check can fail. Give it a bad reply on purpose.
Add one control case per check.
- Paste a bad reply.
- Run the check.
- It must fail. If it passes, make the check stricter.
Baselines and Regressions
Baseline = a saved test result from a time when things worked.
Regression = something that worked before and fails now.
After each change, run the tests again. Then compare with the baseline.
Watch a short description break two requests:
The file was still valid. Only the activation tests showed the damage.
Cause a regression on purpose
Click the button and open the Library tab. Then try this:
- In Evals, press Run evals, then Save as baseline.
- In the Library, change the
ui-reviewdescription to "Reviews things." Press Save. - In Evals, press Run evals again. Two UI cases show REGRESSION.
- Press Reset in the Library to bring the DevKit back.
Simple lesson: save a baseline first. Never share a change that causes a regression.
Slow Tests: Behavior and Human Review
Behavior test = running real inputs through a real model with the skill.
A model does not give the same reply every time.
So one run is not enough. Run it a few times and count the passes.
Example:
- Release notes: 5 of 5 runs pass. Stable.
- Security review: 4 of 5 runs pass. Watch it.
- React component: 2 of 5 runs pass. Fix the skill.
A low pass rate usually means a step is unclear.
Small models follow skills less well.
- A small model in your browser may skip steps.
- Use it to find unclear steps.
- Check final quality with the model your team really uses.
Human review = a person reads the replies and judges them.
Code cannot judge everything. A person is needed for:
- How serious a finding really is.
- Whether the advice is useful.
- Whether the tone fits your team.
When a person finds a problem, turn it into a new test case.
Simple lesson: count passes over many runs. Let a person judge what code cannot.
Start Small
You do not need a big test set on day one.
Start with this for each skill:
- 2 activation cases.
- 1 output case.
- 1 control case.
Then add a test every time something goes wrong in real use.
Keep the tests inside the skill folder, next to SKILL.md:
pr-review/
SKILL.md
evals/
activation.md
output-test.md
Then the tests move with the skill. Run them again after every change.
In the lab, try it:
- Open
pr-reviewin the Library tab. - Type
evals/activation.mdin the new file box and press + Add file. - Add lines like
please review my pull request => pr-reviewandwrite release notes => release-note-helper. Press Save. - Add
evals/output-test.mdwith the four##headings above. Press Save. - Open the Evals tab and press Run evals. Your tests show up as your test rows.
Add your own tests to pr-review
Simple lesson: every real failure becomes a new test.
TL;DR
- Skill evaluation = running the same tests after every change.
Five levels = structure, activation, output, behavior, human review.
- Cheap levels run on every change.
- Costly levels run before a release.
Activation test = a request plus the skill that should fire.
- Include typical, near miss and none.
- Control case = a bad reply that the checks must fail.
- Baseline = a saved good result.
- Regression = something that worked before and fails now.
- Pass rate = how many model runs pass, out of several.
- Output test = the headings a reply must have, in order. Keep it in
evals/next toSKILL.md.
Common mistakes
| Mistake | Wrong idea | Correct idea | What goes wrong |
|---|---|---|---|
| No tests at all | "I tried it once and it worked." | Run a fixed test set after every change. | Your team finds the break first. |
| Only typical requests | "If it fires, it works." | Add near misses and none cases. | The skill grabs other skills' work. |
| Checks without controls | "The check passed, so the reply is good." | Give every check a bad reply that must fail. | A weak check lets bad replies through. |
| No baseline | "I will remember what passed." | Save a baseline before you change anything. | You cannot tell what broke. |
| Trusting one model run | "It passed once, so it is fine." | Count passes over several runs. | The skill fails half the time for users. |
| Skipping human review | "The checks cover everything." | Let a person judge severity and advice. | Wrong judgment slips through. |
Check Your Understanding
Exercises
What to Remember
- Test skills at five levels: structure, activation, output, behavior and human review.
- Run cheap tests on every change. Run slow tests before a release.
- Activation tests need typical, near miss and none requests.
- Every check needs a control case that must fail.
- Save a baseline. Do not share a change that causes a regression.
- Count model passes over several runs.
- Turn every real failure into a new test.
Next: Skill Security. You will check a skill from the internet before you trust it.