microsoft/run-tests-kit
> Run a batch test suite via the Copilot Studio Kit (Dataverse API). Uses the Power CAT Copilot Studio Kit to execute test cases against a published agent and produces pass/fail results with latencies. Requires the Kit installed in the environment, an App Registration with Dataverse permissions, and a published agent.
npx skills add https://github.com/microsoft/skills-for-copilot-studio --skill run-tests-kit
Run a batch test suite against a published Copilot Studio agent using the Power CAT Copilot Studio Kit.
The user must have:
tests/settings.json (relative to the user's project CWD) and check for missing or placeholder values (containing YOUR_). cp ${CLAUDE_SKILL_DIR}/../../tests/settings-example.json ./tests/settings.json
dataverse.environmentUrl): "What is your Dataverse environment URL? Find it in Power Platform admin center or Copilot Studio > Settings > Session Details. It looks like https://orgXXXXXX.crm.dynamics.com"dataverse.tenantId): "What is your Azure tenant ID? Find it in Azure Portal > Microsoft Entra ID > Overview. It's a GUID like c87f36f7-fc65-453c-9019-0d724f21bc42"dataverse.clientId): "What is your App Registration client ID? Find it in Azure Portal > App Registrations > your app > Application (client) ID. It's a GUID."testRun.agentConfigurationId): "What is your agent configuration ID? In Copilot Studio, go to your agent > Tests tab. The ID is a GUID found in the URL or test configuration."testRun.agentTestSetId): "What is your test set ID? In Copilot Studio, go to your agent > Tests tab > select your test set. The ID is a GUID found in the URL."Ask for ALL missing values at once (don't ask one at a time).
tests/settings.json with the collected values: {
"dataverse": {
"environmentUrl": "<value>",
"tenantId": "<value>",
"clientId": "<value>"
},
"testRun": {
"agentConfigurationId": "<value>",
"agentTestSetId": "<value>"
}
}
tests/package.json exists in the user's project. If not, copy it: cp ${CLAUDE_SKILL_DIR}/../../tests/package.json ./tests/package.json
tests/node_modules/ doesn't exist: npm install --prefix tests
node ${CLAUDE_SKILL_DIR}/../../tests/run-tests.js --config-dir ./tests
Use run_in_background: true for this command. Save the returned task ID.
> Authentication Required
>
> Open your browser to: https://microsoft.com/devicelogin
> Enter the code: XXXXXXXXX (extract the actual code from the output)
>
> After signing in, the tests will continue automatically.
Glob: tests/test-results-*.csv — read the most recent CSV file (newest by modification time).| Column | Meaning |
|--------|---------|
| Test Utterance | The user message that was tested |
| Expected Response | What the test expected |
| Response | What the agent actually responded |
| Latency (ms) | Response time |
| Result | Success, Failed, Unknown, Error, or Pending |
| Test Type | Response Match, Topic Match, Generative Answers, Multi-turn, Plan Validation, or Attachments |
| Result Reason | Why the test passed or failed |
Failed or Error). For each failure, analyze:SendActivity messages, instructions, or generative answer config.SearchAndSummarizeContent, and agent instructions.Glob: **/agent.mcs.ymlResult: 1=Success, 2=Failed, 3=Unknown, 4=Error, 5=Pending
Test Type: 1=Response Match, 2=Topic Match, 3=Attachments, 4=Generative Answers, 5=Multi-turn, 6=Plan Validation
Run Status: 1=Not Run, 2=Running, 3=Complete, 4=Not Available, 5=Pending, 6=Error
Take microsoft/run-tests-kit from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference npm.
Without those the skill loads but fails at the first command.