New in 2.20.0
wxo-validate-test-case skill validates unified test case JSON files against a live watsonx Orchestrate agent. It directs the agent through the tool chain that the test case declares, and classifies any failures.
Source location: skills/wxo-validate-test-case/SKILL.md in the ADK repository.
Overview
A unified test case hastool_call steps and assert_llm assertions in goal_details, and a dependency graph in goals. For the format, see wxo-test-case-generation.
The skill checks that the agent calls the declared tools in a valid order. It doesn’t evaluate the assert_llm assertions.
Best for: Running regression or acceptance checks on existing test case files against a deployed agent.
Key capabilities
- Flexible input: Accepts a single
.jsontest case file or a directory of test case files. - Fixture checks before the live run: Validates the
goalsgraph and the structure of each test case before contacting the agent. - Directed conversation: Starts a fresh conversation for each test with the
chat_with_agenttool of the watsonx Orchestrate ADK MCP server, and keeps one thread for chained tool steps. - Failure classification: Classifies each failed run.
- Remediation: Offers to fix or regenerate test cases that are classified as bad.
Prerequisites
- Python environment for your project that has the evaluation framework (
agentops) installed. The skill runs a preflight check and stops if the import fails. - The watsonx Orchestrate ADK MCP server configured in Bob and connected to the environment where your agent is imported. If the
chat_with_agenttool isn’t available, the skill stops and reports the configuration problem.
How validation works
- Configure: You provide the path to a test case file or directory. Results are returned in the response. To write result files, ask Bob for durable output. The default directory is
results/strict-eval-run. - Evaluate: For each test, Bob starts a conversation with the test’s
starting_sentence. If the agent doesn’t call the next expected tool, Bob sends a follow-up message in the same thread that asks the agent to call it with the expected arguments. Tool steps can complete in any order unless the graph makes one depend on another. - Classify: Bob classifies each failed test.
- Report: Bob presents a run table, a failure classification table, and an aggregate summary.
- Remediate: If any test is classified as
BAD_TEST_CASE, Bob lists the affected files and offers to regenerate them with wxo-test-case-generation.
ignore matching, validation doesn’t treat a difference in argument values as a failure. A test case that uses another matching strategy is reported as unsupported, without a live run.
The conversation is limited to 2 * number of tool steps + 2 turns.
Failure classes
An expected not-found response in an intentional negative test isn’t a failure.

