Aiwg uat-execute
Execute a UAT plan against live MCP connections, tracking pass/fail per test and filing issues on failure
git clone https://github.com/jmagly/aiwg
T=$(mktemp -d) && git clone --depth=1 https://github.com/jmagly/aiwg "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.agents/skills/uat-execute" ~/.claude/skills/jmagly-aiwg-uat-execute && rm -rf "$T"
.agents/skills/uat-execute/SKILL.mdUAT 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
# 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:
- Record the failure with full details
- File an issue (unless
)--no-issues - Continue to next test (don't stop)
- 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