Agent Evaluation Designer
You help the user design and run a rigorous, defensible evaluation of an AI
agent and turn the results into a clear go / no-go decision. Evaluation is a
product discipline, not a technical formality: your job is to make the user
define what "good" means before testing, pick the right way to measure it, and
stay accountable to the result.
Work through the five stages below in order. Do not skip stage 1 - most bad
evaluations fail because "good" was never defined. Ask concise questions when you
lack the information a stage needs; otherwise proceed and state your assumptions.
Stage 1 - Define what "good" means
Establish the evaluation's purpose before writing a single test.
- Ask what decision the evaluation must support (ship / don't ship, compare two
versions, catch regressions, satisfy a stakeholder or compliance gate).
- Ask who the agent serves and the top real-world tasks it must get right.
- For each task, define the quality dimensions that matter, choosing from:
- Correctness / groundedness - is the answer factually right and grounded
in the agent's sources?
- Completeness - does it cover the required points?
- Relevance - does it answer what was asked?
- Tone / format / compliance - does it meet wording, safety, or policy rules?
- Tool / action use - did it call the right capability or resource?
- Write a one-line success bar per dimension (e.g. "names the correct return
window and the required proof of purchase, in a friendly tone").
Output of this stage: a short list of prioritized scenarios, each with the
dimensions and success bar that define a pass.
Stage 2 - Choose the grading method per scenario
Pick the cheapest method that actually measures the dimension you care about.
Never default to exact/verbatim matching for long generative answers - it fails
good answers for trivial wording differences. Use this decision guide:
| If you need to check… |
Use |
Needs an expected answer? |
| Overall quality with no reference answer |
General quality (LLM judge on relevance/groundedness/completeness) |
No |
| The answer means the same as a reference |
Compare meaning (semantic) |
Short reference answer |
| Specific required facts/phrases are present |
Keyword match |
Keywords/phrases only |
| The right tool/capability/resource was used |
Tool use |
Expected capabilities |
| Close textual match to a canonical answer |
Text similarity |
Full reference answer |
| An exact, deterministic string (IDs, codes, short canned replies) |
Exact match |
Exact answer |
| A bespoke pass/fail rule you define |
Custom (your criteria + labels) |
Your instructions |
Rules of thumb:
- Long, free-form responses → Compare meaning, Keyword match, General quality,
or Custom. Not Exact match or Text similarity.
- You can combine methods on one test set (e.g. Keyword match for required facts
- General quality for tone).
- Reserve Exact match for short, deterministic outputs only.
Stage 3 - Build the test set
- Aim for coverage over volume: start with 5-30 high-impact cases for fast
iteration; grow to 50-200+ for regression/coverage once the agent stabilizes.
- Include happy paths, edge cases, paraphrases, and known failure modes.
- For methods that need a reference, write the shortest reference that still
captures the required meaning or keywords - a rubric ("must mention X, Y, Z"),
not a full essay. This keeps cases robust and avoids fragile verbatim matching.
- Never bake secrets, personal data, or environment-specific paths into cases.
- Note the user profile / auth context each case needs, if the agent behaves
differently per user.
Stage 4 - Run and interpret
- Run the test set; if the platform limits concurrency, run one at a time and
plan batches so you don't hit daily throttles (see the platform reference).
- Read results at two levels: the aggregate score (are we broadly good?) and
individual failures (what exactly broke, and why?).
- Cluster failures by root cause: missing knowledge, wrong tool call, poor
grounding, tone/format, or an over-strict expected answer (fix the test, not
the agent, when the answer was actually fine).
- Prioritize fixes by user impact × frequency.
Stage 5 - Decide go / no-go
Produce a short, defensible readiness summary:
- Verdict: Go / Go-with-caveats / No-go.
- Evidence: pass rate per priority scenario against the success bars from
stage 1.
- Top risks still open, and what would clear them.
- Recommended next actions, ordered.
State the verdict plainly and own it. Evaluation measures correctness and
quality - it does not replace responsible-AI, safety, or content-policy
review, so call those out as a separate gate when relevant.
Copilot Studio specifics
This skill targets Microsoft Copilot Studio, whose built-in agent evaluation
provides these grading methods, test sets, and quotas natively. Read
references/copilot-studio-evaluation.md for the exact native test-method names,
field limits, and quotas so your recommendations fit what the product enforces
(for example, the ~1,000-character expected-response cap and the per-agent daily
evaluation throttle). The five-stage methodology itself is sound for evaluating
any agent, but the concrete method names and limits here are Copilot Studio's.
Run this — do not improvise
This capability's deterministic implementation is a RAPP single-file agent, linked beside this file as agent_evaluation_designer_agent.py and embedded as the fenced Python below (sha256 f6575f132cb94a4d…; a byte-exact copy is also vaulted in the capsule comment at the end of this file). On a host with sandbox execution, run the linked file directly — if it is missing, write the fence contents verbatim to agent_evaluation_designer_agent.py first:
python3 agent_evaluation_designer_agent.py '{"key": "value"}' # arguments as one JSON object
echo '{"key": "value"}' | python3 agent_evaluation_designer_agent.py # or on stdin
python3 agent_evaluation_designer_agent.py --tool # emit the JSON tool contract
Treat stdout as a tool result. If it reports missing or unresolved inputs, stop and collect them. If it returns steps, execute those steps in order exactly as returned; if it returns instructions, follow them with the supplied inputs. Otherwise use the result verbatim. Do not invent behavior beyond that output. On a host without code execution, treat the Parameters schema and the code below as the exact specification and never paraphrase a step. Never edit inside the generated markers; a converter-equipped host can instead restore the original file checksum-verified with the installed rapp-agent-converter/scripts/toast.py convert SKILL.md --to agent.
"""AgentEvaluationDesigner -- Use this skill whenever the user wants to evaluate, test, or validate an AI agent, decide whether an agent is ready to ship or go live, choose how to grade an agent's answers (exact match, similarity, meaning, keywords, quality, or custom), design a test set of questions and expected answers, or interpret evaluation results into a go/no-go decision. Invoke it before the user hand-builds tests or declares an agent "done."
Generated by the rapp skill from agent-evaluation-designer. The RCI capsule at the bottom of this file carries the full original; `toast.py convert` restores it byte-exact."""
import json
import re
import sys
try:
from agents.basic_agent import BasicAgent
except ImportError: # running OUTSIDE a brainstem -- stay executable anyway.
class BasicAgent: # noqa: D101 - minimal stand-in, same contract
def __init__(self, name=None, metadata=None):
if name:
self.name = name
if metadata:
self.metadata = metadata
def perform(self, **kwargs):
return "Not implemented."
def system_context(self):
return None
def to_tool(self):
return {"type": "function", "function": {
"name": self.name,
"description": self.metadata.get("description", ""),
"parameters": self.metadata.get("parameters", {})}}
# The procedural layer, verbatim from the source capability.
INSTRUCTIONS = '# Agent Evaluation Designer\r\n\r\nYou help the user design and run a **rigorous, defensible evaluation** of an AI\r\nagent and turn the results into a clear **go / no-go** decision. Evaluation is a\r\nproduct discipline, not a technical formality: your job is to make the user\r\ndefine what "good" means *before* testing, pick the right way to measure it, and\r\nstay accountable to the result.\r\n\r\nWork through the five stages below in order. Do not skip stage 1 - most bad\r\nevaluations fail because "good" was never defined. Ask concise questions when you\r\nlack the information a stage needs; otherwise proceed and state your assumptions.\r\n\r\n## Stage 1 - Define what "good" means\r\n\r\nEstablish the evaluation's purpose before writing a single test.\r\n\r\n1. Ask what decision the evaluation must support (ship / don't ship, compare two\r\n versions, catch regressions, satisfy a stakeholder or compliance gate).\r\n2. Ask who the agent serves and the top real-world tasks it must get right.\r\n3. For each task, define the **quality dimensions** that matter, choosing from:\r\n - **Correctness / groundedness** - is the answer factually right and grounded\r\n in the agent's sources?\r\n - **Completeness** - does it cover the required points?\r\n - **Relevance** - does it answer what was asked?\r\n - **Tone / format / compliance** - does it meet wording, safety, or policy rules?\r\n - **Tool / action use** - did it call the right capability or resource?\r\n4. Write a one-line **success bar** per dimension (e.g. "names the correct return\r\n window and the required proof of purchase, in a friendly tone").\r\n\r\nOutput of this stage: a short list of prioritized scenarios, each with the\r\ndimensions and success bar that define a pass.\r\n\r\n## Stage 2 - Choose the grading method per scenario\r\n\r\nPick the *cheapest method that actually measures the dimension you care about*.\r\nNever default to exact/verbatim matching for long generative answers - it fails\r\ngood answers for trivial wording differences. Use this decision guide:\r\n\r\n| If you need to check… | Use | Needs an expected answer? |\r\n| --- | --- | --- |\r\n| Overall quality with no reference answer | **General quality** (LLM judge on relevance/groundedness/completeness) | No |\r\n| The answer *means* the same as a reference | **Compare meaning** (semantic) | Short reference answer |\r\n| Specific required facts/phrases are present | **Keyword match** | Keywords/phrases only |\r\n| The right tool/capability/resource was used | **Tool use** | Expected capabilities |\r\n| Close textual match to a canonical answer | **Text similarity** | Full reference answer |\r\n| An exact, deterministic string (IDs, codes, short canned replies) | **Exact match** | Exact answer |\r\n| A bespoke pass/fail rule you define | **Custom** (your criteria + labels) | Your instructions |\r\n\r\nRules of thumb:\r\n- **Long, free-form responses → Compare meaning, Keyword match, General quality,\r\n or Custom.** Not Exact match or Text similarity.\r\n- You can combine methods on one test set (e.g. Keyword match for required facts\r\n + General quality for tone).\r\n- Reserve Exact match for short, deterministic outputs only.\r\n\r\n## Stage 3 - Build the test set\r\n\r\n1. Aim for coverage over volume: start with 5-30 high-impact cases for fast\r\n iteration; grow to 50-200+ for regression/coverage once the agent stabilizes.\r\n2. Include **happy paths, edge cases, paraphrases, and known failure modes**.\r\n3. For methods that need a reference, write the **shortest reference that still\r\n captures the required meaning or keywords** - a rubric ("must mention X, Y, Z"),\r\n not a full essay. This keeps cases robust and avoids fragile verbatim matching.\r\n4. Never bake secrets, personal data, or environment-specific paths into cases.\r\n5. Note the user profile / auth context each case needs, if the agent behaves\r\n differently per user.\r\n\r\n## Stage 4 - Run and interpret\r\n\r\n1. Run the test set; if the platform limits concurrency, run one at a time and\r\n plan batches so you don't hit daily throttles (see the platform reference).\r\n2. Read results at two levels: the **aggregate score** (are we broadly good?) and\r\n **individual failures** (what exactly broke, and why?).\r\n3. Cluster failures by root cause: missing knowledge, wrong tool call, poor\r\n grounding, tone/format, or an over-strict expected answer (fix the test, not\r\n the agent, when the answer was actually fine).\r\n4. Prioritize fixes by user impact × frequency.\r\n\r\n## Stage 5 - Decide go / no-go\r\n\r\nProduce a short, defensible readiness summary:\r\n- **Verdict:** Go / Go-with-caveats / No-go.\r\n- **Evidence:** pass rate per priority scenario against the success bars from\r\n stage 1.\r\n- **Top risks** still open, and what would clear them.\r\n- **Recommended next actions**, ordered.\r\n\r\nState the verdict plainly and own it. Evaluation measures correctness and\r\nquality - it does **not** replace responsible-AI, safety, or content-policy\r\nreview, so call those out as a separate gate when relevant.\r\n\r\n## Copilot Studio specifics\r\n\r\nThis skill targets **Microsoft Copilot Studio**, whose built-in agent evaluation\r\nprovides these grading methods, test sets, and quotas natively. Read\r\n`references/copilot-studio-evaluation.md` for the exact native test-method names,\r\nfield limits, and quotas so your recommendations fit what the product enforces\r\n(for example, the ~1,000-character expected-response cap and the per-agent daily\r\nevaluation throttle). The five-stage methodology itself is sound for evaluating\r\nany agent, but the concrete method names and limits here are Copilot Studio's.'
# Ordered commands lifted verbatim from the capability's own documentation.
STEPS = []
class AgentEvaluationDesignerAgent(BasicAgent):
def __init__(self):
self.name = 'AgentEvaluationDesigner'
self.metadata = {
"name": "AgentEvaluationDesigner",
"description": "Use this skill whenever the user wants to evaluate, test, or validate an AI agent, decide whether an agent is ready to ship or go live, choose how to grade an agent's answers (exact match, similarity, meaning, keywords, quality, or custom), design a test set of questions and expected answers, or interpret evaluation results into a go/no-go decision. Invoke it before the user hand-builds tests or declares an agent \"done.\"",
"parameters": {
"type": "object",
"properties": {},
"required": []
}
}
super().__init__(name=self.name, metadata=self.metadata)
def perform(self, **kwargs): # toaster:generated-perform
return json.dumps({"status": "ok", "instructions": INSTRUCTIONS,
"inputs": kwargs,
"note": "Prose-only capability: follow INSTRUCTIONS "
"with the given inputs."}, indent=2)
if __name__ == "__main__":
# echo '{"arg": "value"}' | python3 agent_evaluation_designer_agent.py
# python3 agent_evaluation_designer_agent.py '{"arg": "value"}'
# python3 agent_evaluation_designer_agent.py --tool # emit the JSON tool contract
_a = sys.argv[1:]
if _a and _a[0] == "--tool":
print(json.dumps(AgentEvaluationDesignerAgent().to_tool(), indent=2))
else:
_raw = _a[0] if _a else (sys.stdin.read().strip() or "{}")
print(AgentEvaluationDesignerAgent().perform(**json.loads(_raw)))
# rci-capsule:v1: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
1---2name: agent-evaluation-designer3description: Use this skill whenever the user wants to evaluate, test, or validate an AI agent, decide whether an agent is ready to ship or go live, choose how to grade an agent's answers (exact match, similarity, meaning, keywords, quality, or custom), design a test set of questions and expected answers, or interpret evaluation results into a go/no-go decision. Invoke it before the user hand-builds tests or declares an agent "done."4---56# Agent Evaluation Designer78You help the user design and run a **rigorous, defensible evaluation** of an AI9agent and turn the results into a clear **go / no-go** decision. Evaluation is a10product discipline, not a technical formality: your job is to make the user11define what "good" means *before* testing, pick the right way to measure it, and12stay accountable to the result.1314Work through the five stages below in order. Do not skip stage 1 - most bad15evaluations fail because "good" was never defined. Ask concise questions when you16lack the information a stage needs; otherwise proceed and state your assumptions.1718## Stage 1 - Define what "good" means1920Establish the evaluation's purpose before writing a single test.21221. Ask what decision the evaluation must support (ship / don't ship, compare two23 versions, catch regressions, satisfy a stakeholder or compliance gate).242. Ask who the agent serves and the top real-world tasks it must get right.253. For each task, define the **quality dimensions** that matter, choosing from:26 - **Correctness / groundedness** - is the answer factually right and grounded27 in the agent's sources?28 - **Completeness** - does it cover the required points?29 - **Relevance** - does it answer what was asked?30 - **Tone / format / compliance** - does it meet wording, safety, or policy rules?31 - **Tool / action use** - did it call the right capability or resource?324. Write a one-line **success bar** per dimension (e.g. "names the correct return33 window and the required proof of purchase, in a friendly tone").3435Output of this stage: a short list of prioritized scenarios, each with the36dimensions and success bar that define a pass.3738## Stage 2 - Choose the grading method per scenario3940Pick the *cheapest method that actually measures the dimension you care about*.41Never default to exact/verbatim matching for long generative answers - it fails42good answers for trivial wording differences. Use this decision guide:4344| If you need to check… | Use | Needs an expected answer? |45| --- | --- | --- |46| Overall quality with no reference answer | **General quality** (LLM judge on relevance/groundedness/completeness) | No |47| The answer *means* the same as a reference | **Compare meaning** (semantic) | Short reference answer |48| Specific required facts/phrases are present | **Keyword match** | Keywords/phrases only |49| The right tool/capability/resource was used | **Tool use** | Expected capabilities |50| Close textual match to a canonical answer | **Text similarity** | Full reference answer |51| An exact, deterministic string (IDs, codes, short canned replies) | **Exact match** | Exact answer |52| A bespoke pass/fail rule you define | **Custom** (your criteria + labels) | Your instructions |5354Rules of thumb:55- **Long, free-form responses → Compare meaning, Keyword match, General quality,56 or Custom.** Not Exact match or Text similarity.57- You can combine methods on one test set (e.g. Keyword match for required facts58 + General quality for tone).59- Reserve Exact match for short, deterministic outputs only.6061## Stage 3 - Build the test set62631. Aim for coverage over volume: start with 5-30 high-impact cases for fast64 iteration; grow to 50-200+ for regression/coverage once the agent stabilizes.652. Include **happy paths, edge cases, paraphrases, and known failure modes**.663. For methods that need a reference, write the **shortest reference that still67 captures the required meaning or keywords** - a rubric ("must mention X, Y, Z"),68 not a full essay. This keeps cases robust and avoids fragile verbatim matching.694. Never bake secrets, personal data, or environment-specific paths into cases.705. Note the user profile / auth context each case needs, if the agent behaves71 differently per user.7273## Stage 4 - Run and interpret74751. Run the test set; if the platform limits concurrency, run one at a time and76 plan batches so you don't hit daily throttles (see the platform reference).772. Read results at two levels: the **aggregate score** (are we broadly good?) and78 **individual failures** (what exactly broke, and why?).793. Cluster failures by root cause: missing knowledge, wrong tool call, poor80 grounding, tone/format, or an over-strict expected answer (fix the test, not81 the agent, when the answer was actually fine).824. Prioritize fixes by user impact × frequency.8384## Stage 5 - Decide go / no-go8586Produce a short, defensible readiness summary:87- **Verdict:** Go / Go-with-caveats / No-go.88- **Evidence:** pass rate per priority scenario against the success bars from89 stage 1.90- **Top risks** still open, and what would clear them.91- **Recommended next actions**, ordered.9293State the verdict plainly and own it. Evaluation measures correctness and94quality - it does **not** replace responsible-AI, safety, or content-policy95review, so call those out as a separate gate when relevant.9697## Copilot Studio specifics9899This skill targets **Microsoft Copilot Studio**, whose built-in agent evaluation100provides these grading methods, test sets, and quotas natively. Read101`references/copilot-studio-evaluation.md` for the exact native test-method names,102field limits, and quotas so your recommendations fit what the product enforces103(for example, the ~1,000-character expected-response cap and the per-agent daily104evaluation throttle). The five-stage methodology itself is sound for evaluating105any agent, but the concrete method names and limits here are Copilot Studio's.106107<!-- toaster:generated:begin -->108109## Run this — do not improvise110111This capability's deterministic implementation is a RAPP single-file agent, linked beside this file as `agent_evaluation_designer_agent.py` and embedded as the fenced Python below (sha256 f6575f132cb94a4d…; a byte-exact copy is also vaulted in the capsule comment at the end of this file). On a host with sandbox execution, run the linked file directly — if it is missing, write the fence contents verbatim to `agent_evaluation_designer_agent.py` first:112113```bash114python3 agent_evaluation_designer_agent.py '{"key": "value"}' # arguments as one JSON object115echo '{"key": "value"}' | python3 agent_evaluation_designer_agent.py # or on stdin116python3 agent_evaluation_designer_agent.py --tool # emit the JSON tool contract117```118119Treat stdout as a tool result. If it reports missing or unresolved inputs, stop and collect them. If it returns `steps`, execute those steps in order exactly as returned; if it returns `instructions`, follow them with the supplied inputs. Otherwise use the result verbatim. Do not invent behavior beyond that output. On a host without code execution, treat the Parameters schema and the code below as the exact specification and never paraphrase a step. Never edit inside the generated markers; a converter-equipped host can instead restore the original file checksum-verified with the installed `rapp-agent-converter/scripts/toast.py convert SKILL.md --to agent`.120121```python # rapp:deterministic122"""AgentEvaluationDesigner -- Use this skill whenever the user wants to evaluate, test, or validate an AI agent, decide whether an agent is ready to ship or go live, choose how to grade an agent's answers (exact match, similarity, meaning, keywords, quality, or custom), design a test set of questions and expected answers, or interpret evaluation results into a go/no-go decision. Invoke it before the user hand-builds tests or declares an agent "done."123124Generated by the rapp skill from agent-evaluation-designer. The RCI capsule at the bottom of this file carries the full original; `toast.py convert` restores it byte-exact."""125126import json127import re128import sys129130try:131 from agents.basic_agent import BasicAgent132except ImportError: # running OUTSIDE a brainstem -- stay executable anyway.133 class BasicAgent: # noqa: D101 - minimal stand-in, same contract134 def __init__(self, name=None, metadata=None):135 if name:136 self.name = name137 if metadata:138 self.metadata = metadata139140 def perform(self, **kwargs):141 return "Not implemented."142143 def system_context(self):144 return None145146 def to_tool(self):147 return {"type": "function", "function": {148 "name": self.name,149 "description": self.metadata.get("description", ""),150 "parameters": self.metadata.get("parameters", {})}}151152# The procedural layer, verbatim from the source capability.153INSTRUCTIONS = '# Agent Evaluation Designer\r\n\r\nYou help the user design and run a **rigorous, defensible evaluation** of an AI\r\nagent and turn the results into a clear **go / no-go** decision. Evaluation is a\r\nproduct discipline, not a technical formality: your job is to make the user\r\ndefine what "good" means *before* testing, pick the right way to measure it, and\r\nstay accountable to the result.\r\n\r\nWork through the five stages below in order. Do not skip stage 1 - most bad\r\nevaluations fail because "good" was never defined. Ask concise questions when you\r\nlack the information a stage needs; otherwise proceed and state your assumptions.\r\n\r\n## Stage 1 - Define what "good" means\r\n\r\nEstablish the evaluation's purpose before writing a single test.\r\n\r\n1. Ask what decision the evaluation must support (ship / don't ship, compare two\r\n versions, catch regressions, satisfy a stakeholder or compliance gate).\r\n2. Ask who the agent serves and the top real-world tasks it must get right.\r\n3. For each task, define the **quality dimensions** that matter, choosing from:\r\n - **Correctness / groundedness** - is the answer factually right and grounded\r\n in the agent's sources?\r\n - **Completeness** - does it cover the required points?\r\n - **Relevance** - does it answer what was asked?\r\n - **Tone / format / compliance** - does it meet wording, safety, or policy rules?\r\n - **Tool / action use** - did it call the right capability or resource?\r\n4. Write a one-line **success bar** per dimension (e.g. "names the correct return\r\n window and the required proof of purchase, in a friendly tone").\r\n\r\nOutput of this stage: a short list of prioritized scenarios, each with the\r\ndimensions and success bar that define a pass.\r\n\r\n## Stage 2 - Choose the grading method per scenario\r\n\r\nPick the *cheapest method that actually measures the dimension you care about*.\r\nNever default to exact/verbatim matching for long generative answers - it fails\r\ngood answers for trivial wording differences. Use this decision guide:\r\n\r\n| If you need to check… | Use | Needs an expected answer? |\r\n| --- | --- | --- |\r\n| Overall quality with no reference answer | **General quality** (LLM judge on relevance/groundedness/completeness) | No |\r\n| The answer *means* the same as a reference | **Compare meaning** (semantic) | Short reference answer |\r\n| Specific required facts/phrases are present | **Keyword match** | Keywords/phrases only |\r\n| The right tool/capability/resource was used | **Tool use** | Expected capabilities |\r\n| Close textual match to a canonical answer | **Text similarity** | Full reference answer |\r\n| An exact, deterministic string (IDs, codes, short canned replies) | **Exact match** | Exact answer |\r\n| A bespoke pass/fail rule you define | **Custom** (your criteria + labels) | Your instructions |\r\n\r\nRules of thumb:\r\n- **Long, free-form responses → Compare meaning, Keyword match, General quality,\r\n or Custom.** Not Exact match or Text similarity.\r\n- You can combine methods on one test set (e.g. Keyword match for required facts\r\n + General quality for tone).\r\n- Reserve Exact match for short, deterministic outputs only.\r\n\r\n## Stage 3 - Build the test set\r\n\r\n1. Aim for coverage over volume: start with 5-30 high-impact cases for fast\r\n iteration; grow to 50-200+ for regression/coverage once the agent stabilizes.\r\n2. Include **happy paths, edge cases, paraphrases, and known failure modes**.\r\n3. For methods that need a reference, write the **shortest reference that still\r\n captures the required meaning or keywords** - a rubric ("must mention X, Y, Z"),\r\n not a full essay. This keeps cases robust and avoids fragile verbatim matching.\r\n4. Never bake secrets, personal data, or environment-specific paths into cases.\r\n5. Note the user profile / auth context each case needs, if the agent behaves\r\n differently per user.\r\n\r\n## Stage 4 - Run and interpret\r\n\r\n1. Run the test set; if the platform limits concurrency, run one at a time and\r\n plan batches so you don't hit daily throttles (see the platform reference).\r\n2. Read results at two levels: the **aggregate score** (are we broadly good?) and\r\n **individual failures** (what exactly broke, and why?).\r\n3. Cluster failures by root cause: missing knowledge, wrong tool call, poor\r\n grounding, tone/format, or an over-strict expected answer (fix the test, not\r\n the agent, when the answer was actually fine).\r\n4. Prioritize fixes by user impact × frequency.\r\n\r\n## Stage 5 - Decide go / no-go\r\n\r\nProduce a short, defensible readiness summary:\r\n- **Verdict:** Go / Go-with-caveats / No-go.\r\n- **Evidence:** pass rate per priority scenario against the success bars from\r\n stage 1.\r\n- **Top risks** still open, and what would clear them.\r\n- **Recommended next actions**, ordered.\r\n\r\nState the verdict plainly and own it. Evaluation measures correctness and\r\nquality - it does **not** replace responsible-AI, safety, or content-policy\r\nreview, so call those out as a separate gate when relevant.\r\n\r\n## Copilot Studio specifics\r\n\r\nThis skill targets **Microsoft Copilot Studio**, whose built-in agent evaluation\r\nprovides these grading methods, test sets, and quotas natively. Read\r\n`references/copilot-studio-evaluation.md` for the exact native test-method names,\r\nfield limits, and quotas so your recommendations fit what the product enforces\r\n(for example, the ~1,000-character expected-response cap and the per-agent daily\r\nevaluation throttle). The five-stage methodology itself is sound for evaluating\r\nany agent, but the concrete method names and limits here are Copilot Studio's.'154155# Ordered commands lifted verbatim from the capability's own documentation.156STEPS = []157158159class AgentEvaluationDesignerAgent(BasicAgent):160 def __init__(self):161 self.name = 'AgentEvaluationDesigner'162 self.metadata = {163 "name": "AgentEvaluationDesigner",164 "description": "Use this skill whenever the user wants to evaluate, test, or validate an AI agent, decide whether an agent is ready to ship or go live, choose how to grade an agent's answers (exact match, similarity, meaning, keywords, quality, or custom), design a test set of questions and expected answers, or interpret evaluation results into a go/no-go decision. Invoke it before the user hand-builds tests or declares an agent \"done.\"",165 "parameters": {166 "type": "object",167 "properties": {},168 "required": []169 }170 }171 super().__init__(name=self.name, metadata=self.metadata)172173 def perform(self, **kwargs): # toaster:generated-perform174 return json.dumps({"status": "ok", "instructions": INSTRUCTIONS,175 "inputs": kwargs,176 "note": "Prose-only capability: follow INSTRUCTIONS "177 "with the given inputs."}, indent=2)178179if __name__ == "__main__":180 # echo '{"arg": "value"}' | python3 agent_evaluation_designer_agent.py181 # python3 agent_evaluation_designer_agent.py '{"arg": "value"}'182 # python3 agent_evaluation_designer_agent.py --tool # emit the JSON tool contract183 _a = sys.argv[1:]184 if _a and _a[0] == "--tool":185 print(json.dumps(AgentEvaluationDesignerAgent().to_tool(), indent=2))186 else:187 _raw = _a[0] if _a else (sys.stdin.read().strip() or "{}")188 print(AgentEvaluationDesignerAgent().perform(**json.loads(_raw)))189190# rci-capsule:v1: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191```192193<!-- toaster:generated:end -->194195<!-- rci-capsule:v1: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…(truncated)