Improving an AI-facing interface¶
An AI-facing interface is what Copilot sees when it decides how to act: tool
descriptions, parameter schemas, system prompts, skills, custom agent
definitions, and the user's task. Improving that interface is what this project
calls skill engineering. It is broader than editing a SKILL.md file.
Unit tests can show that a tool calculates the right answer. A Copilot test can show whether the agent selects that tool and supplies the right inputs for a real task. You need both: neither substitutes for the other.
The improvement loop¶
- Define a representative user task and observable success criteria.
- Configure
CopilotEval, execute the task withcopilot_eval, and save JSON. - Verify actual output, not just a model's claim or a call's presence.
- Investigate failures alongside the source and environment.
- Change the source or instructions supported by that investigation and rerun affected cases.
- Check regressions and repeat cases when reliability is the question.
The framework supplies execution and evidence. Your tests supply verification. Your existing coding agent or a human investigates the evidence alongside the source; the framework does not automatically grade free-text expectations.
Do not assume every failure is an instruction problem¶
Wrong fixture data, startup problems, permission denials, application bugs, ambiguous tasks, and incorrect tests can look like skill failures. Read actual arguments and returned operation results before rewriting a system prompt.
Keep criteria fixed across comparisons. If the test's criterion was wrong, correct it and establish a new baseline for both configurations. Do not count the new result as an improvement against the old criterion.
One passing run establishes an observation, not production reliability. Repeated, representative tasks are needed when reliability is the question.
What you are testing¶
| Term | Meaning here |
|---|---|
| Skill | A domain-guidance package with a SKILL.md entry point |
| System prompt | Instructions configuring behavior, supplied through CopilotEval.instructions |
| Prompt | The user task sent to copilot_eval |
| Custom agent | A .agent.md definition |
| Custom agent dispatch | The runtime routing being tested |
| Subagent | An actual runtime invocation, recorded in result.subagent_invocations |
| Eval | The test harness, not the interface under test |
Start with a first test, then compare configurations using fixed checks.