Execute a UAT plan against live MCP connections, tracking pass/fail per test and filing issues on failure
Scanned 9/4/2026
Install to Claude Code
npx -y skills add jmagly/ai-writing-guide --skill uat-execute --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Uat Execute?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/jmagly-uat-execute-aiwg)More formats (shields.io, HTML) on the badges page.
---
namespace: aiwg
name: uat-execute
platforms: [all]
description: Execute a UAT plan against live MCP connections, tracking pass/fail per test and filing issues on failure
commandHint:
argumentHint: <plan_path> [--mode mcp] [--execution-mode quick|standard|full] [--dry-run] [--no-issues] [--resume-from <phase>]
allowedTools: Read, Write, Bash, Glob, Grep, Edit, Task, mcp__gitea__*
model: sonnet
category: uat-mcp
modelRole: coding
modelTier: standard
---
# UAT Execute
Execute a UAT plan against live MCP connections. Runs each phase sequentially, tracks pass/fail per test, files issues for failures, and always runs cleanup.
## Usage
```bash
# Execute a UAT plan
/uat-execute .aiwg/testing/uat/plan-gitea-20260227.md
# Dry run — show what would be executed without making calls
/uat-execute .aiwg/testing/uat/plan.md --dry-run
# Skip issue filing
/uat-execute .aiwg/testing/uat/plan.md --no-issues
# Resume from a specific phase (after fixing a blocker)
/uat-execute .aiwg/testing/uat/plan.md --resume-from 3
# Override execution mode (run only quick smoke subset)
/uat-execute .aiwg/testing/uat/plan.md --execution-mode quick
```
## Parameters
### plan_path (required)
Path to the UAT plan document generated by `/uat-generate`.
### --mode (default: mcp)
Test mode. Must match the plan's mode. Currently only `mcp` is supported.
### --execution-mode (optional)
Override the plan's execution mode. Useful for running a quick smoke test from a full plan.
### --dry-run (optional)
Parse the plan and show what would be executed without making any MCP calls.
### --no-issues (optional)
Disable automatic issue filing for failures. Results are still recorded.
### --resume-from (optional)
Resume execution from a specific phase number. Useful after fixing a blocker found mid-execution. Previous phase results are loaded from the checkpoint file.
## Workflow
### Step 1: Parse Plan
Read the UAT plan and extract:
- Phase list with prerequisites
- Test cases per phase with MCP call specs
- Variable wiring requirements
- Negative test isolation flags
```
Parsing UAT Plan...
Plan: plan-gitea-20260227.md
Phases: 12
Test cases: 165
Negative tests: 32 (will be isolated)
Variables: 18 cross-phase references
```
### Step 2: Preflight Check
Before executing tests, verify:
- MCP server(s) are reachable
- Required tools are available
- Authentication is valid
```
Preflight Check...
Server: gitea — Connected
Tools available: 78/78
Auth: Valid (user: roctibot)
Ready to execute.
```
### Step 3: Execute Phases
For each phase in order:
```
═══════════════════════════════════════
Phase 3: Issue Tracking (12 tests)
═══════════════════════════════════════
P03-001: Create Issue (Happy Path)
Tool: mcp__gitea__create_issue
Parameters: {owner: "test-org", repo: "test-repo", title: "UAT Test Issue", body: "..."}
Response: {number: 1, title: "UAT Test Issue", state: "open"}
✅ Criterion 1: Returns issue with number field — PASS
✅ Criterion 2: title matches — PASS
✅ Criterion 3: state is "open" — PASS
Stored: ISSUE_INDEX = 1
Result: PASS (3/3)
P03-002: Get Issue by Index
Tool: mcp__gitea__get_issue_by_index
Parameters: {owner: "test-org", repo: "test-repo", index: 1}
Response: {number: 1, title: "UAT Test Issue", ...}
✅ Criterion 1: Returns issue matching ISSUE_INDEX — PASS
✅ Criterion 2: title is "UAT Test Issue" — PASS
Result: PASS (2/2)
P03-003: Create Issue — Missing Title (Negative)
[Isolation: single call]
Tool: mcp__gitea__create_issue
Parameters: {owner: "test-org", repo: "test-repo", body: "No title"}
Response: {error: "validation failed"}
✅ Criterion 1: Returns error — PASS
✅ Criterion 2: Error indicates missing title — PASS
Result: PASS (2/2)
Phase 3 Summary: 12/12 passed (0 failed, 0 skipped)
Duration: 45 seconds
```
### Step 4: Handle Failures
On test failure:
1. Record the failure with full details
2. File an issue (unless `--no-issues`)
3. Continue to next test (don't stop)
4. If a stored variable was expected but not captured, mark dependent tests as `error`
```
P04-007: Update Repository Description
Tool: mcp__gitea__update_repo
Parameters: {owner: "test-org", repo: "test-repo", description: "Updated"}
Response: {error: "not found", message: "repository not found"}
❌ Criterion 1: Returns updated repository — FAIL
Result: FAIL (0/1)
Issue filed: #415 "UAT: P04-007 — Update Repository returns not found"
```
### Step 5: Cleanup Phase
The cleanup phase ALWAYS runs, even if earlier phases failed:
```
═══════════════════════════════════════
Phase 11: Cleanup (always runs)
═══════════════════════════════════════
P11-001: Delete Test Repository
Tool: mcp__gitea__delete_repo (if available)
...
P11-002: Delete Test Organization
...
Cleanup complete. 3/3 test entities removed.
```
### Step 6: Save Results
Write results to `.aiwg/testing/uat/results/` following the `uat-result.yaml` schema:
```
Results saved:
File: .aiwg/testing/uat/results/results-gitea-20260227-143022.yaml
Checkpoint: .aiwg/testing/uat/results/checkpoint-gitea-20260227.yaml
Generate report with:
/uat-report .aiwg/testing/uat/results/results-gitea-20260227-143022.yaml
```
### Step 7: Summary
```
═══════════════════════════════════════════
UAT Execution Complete
═══════════════════════════════════════════
Plan: plan-gitea-20260227.md
Duration: 8 minutes 32 seconds
Results:
Total tests: 165
Passed: 159 (96.4%)
Failed: 4 (2.4%)
Skipped: 1 (0.6%)
Errors: 1 (0.6%)
Issues filed: 4
#415: P04-007 — Update Repository returns not found
#416: P06-003 — Wiki page creation timeout
#417: P08-002 — Release tag not created
#418: P09-011 — Search returns stale results
Coverage: 76/78 tools tested (97.4%)
Untested: mcp__gitea__cancel_repo_action_run (no active runs)
mcp__gitea__stop_stopwatch (no active stopwatch)
═══════════════════════════════════════════
```
## Error Handling
### Plan Not Found
```
Error: UAT plan not found at {path}
Generate a plan first:
/uat-generate --mode mcp
```
### MCP Server Unavailable
```
Error: MCP server {name} is not reachable.
The UAT plan requires this server. Check your MCP configuration.
Retry with: /uat-execute {plan_path}
```
### Checkpoint Recovery
If execution crashes mid-run, results are checkpointed per-phase:
```
Checkpoint detected: .aiwg/testing/uat/results/checkpoint-gitea-20260227.yaml
Phases completed: 0-5
Phases remaining: 6-11
Resume with: /uat-execute {plan_path} --resume-from 6
```
## References
- Agent: @$AIWG_ROOT/agentic/code/addons/uat-mcp/agents/uat-executor.md
- Schema: @$AIWG_ROOT/agentic/code/addons/uat-mcp/schemas/uat-result.yaml
- Template: @$AIWG_ROOT/agentic/code/addons/uat-mcp/templates/uat-executor-guide.md
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!