skills/uat-testing/SKILL.md
End-to-end User Acceptance Testing for web applications. Analyzes branch changes and specs to generate exhaustive test cases, sets up the local environment, executes tests via Playwright browser automation, and produces a pass/fail results report with screenshots and fix documentation. Use when the user says "run UAT", "test this feature", "UAT testing", "acceptance test", "test my branch", "generate test cases", or wants to verify a feature branch against its spec before merge.
npx skillsauth add ooiyeefei/ccc uat-testingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
End-to-end UAT workflow: analyze → generate test cases → set up environment → execute → report.
Phase 1: Discovery
├─ Read spec/requirements (if provided)
├─ Analyze git branch diff against base
└─ Identify what was built/changed
Phase 2: Environment Setup
├─ Determine target: local or production/staging?
├─ Local path:
│ ├─ Check for .env.local → ask user if missing
│ └─ Start dev server (npm run dev or equivalent)
├─ Prod/staging path:
│ └─ Get application URL, verify reachable
└─ Ask user for test account credentials (both paths)
Phase 3: Test Case Generation
├─ Write uat-test-cases.md (see references/test-case-template.md)
├─ Cover: happy path, errors, persistence, auth, responsive
└─ Present to user for review before execution
Phase 4: Test Execution
├─ Start dev server (framework-appropriate command)
├─ Authenticate with test account via browser
├─ Execute test cases with Playwright MCP tools
├─ Take screenshots as evidence
└─ If a test fails → document the failure, continue testing
Phase 5: Reporting
├─ Write uat-results.md (see references/results-template.md)
├─ Include: summary table, detailed results, screenshots, fixes
└─ Present overall PASS/FAIL verdict
Look for feature context in this priority order:
specs/[branch-name]/spec.md or specs/[feature-id]/spec.mdtasks/todo.md or similar for what was plannedgh pr view# What branch are we on?
git branch --show-current
# What changed vs base branch?
git log main..HEAD --oneline
git diff main..HEAD --stat
# What files were modified?
git diff main..HEAD --name-only
Read the changed files to understand what was built. Focus on:
Summarize findings to the user:
Ask the user (or infer from context) whether this is local or production testing:
Are we testing locally (I'll start the dev server) or against a deployed environment (provide the URL)?
| Aspect | Local | Production / Staging |
|--------|-------|----------------------|
| Server | Start with npm run dev | Already running at provided URL |
| Env vars | Need .env.local with all keys | N/A — app is already configured |
| Test data | May need seeding or setup | Uses existing real/staging data |
| Auth | Test account on local auth provider | Test account on prod/staging auth |
| Base URL | http://localhost:3000 (or configured port) | https://app.example.com |
# Check if env file exists
ls -la .env.local .env 2>/dev/null
If .env.local does not exist, ask the user:
I don't see a
.env.localfile. Do you have an environment file or credentials I should use? Common needs:
- Database connection (e.g., Convex URL/deploy key)
- Auth provider keys (e.g., Clerk publishable/secret key)
- API keys (e.g., AI model keys, external service keys)
Please provide the file path or paste the required variables.
Detect the framework and start the dev server:
| Signal | Framework | Start Command |
|--------|-----------|---------------|
| next.config.* | Next.js | npm run dev |
| vite.config.* | Vite | npm run dev |
| angular.json | Angular | ng serve |
| nuxt.config.* | Nuxt | npm run dev |
| package.json scripts | Generic | Read dev script |
If the project needs multiple services (e.g., Next.js + Convex), start all of them.
Verify the server is reachable before proceeding:
curl -s -o /dev/null -w "%{http_code}" http://localhost:3000
No server startup or env file needed. Ask the user for:
Please provide:
- Application URL (e.g.,
https://app.example.com)- Any test data considerations (is there a staging org/business to use?)
Verify the URL is reachable:
curl -s -o /dev/null -w "%{http_code}" https://app.example.com
Always ask before attempting to authenticate:
For UAT testing I need a test account to log in. Most auth systems require email verification, so I can't create a new account.
Please provide:
- Login URL (if not the default
/sign-in)- Email/username for the test account
- Password
- Any 2FA/MFA steps I should be aware of
- Which business/org/team to select after login (if applicable)
Read references/test-case-template.md for the full template format.
Write uat-test-cases.md to the spec directory (e.g., specs/[feature-id]/uat-test-cases.md) or to the project root if no spec directory exists.
Present the test cases to the user for review before executing. Ask:
I've generated [N] test cases in [file path]. Review them and let me know:
- Any test cases to add or remove?
- Any priority adjustments?
- Ready to proceed with execution?
Load the Playwright tools via ToolSearch before starting:
ToolSearch: "playwright browser"
Key tools: browser_navigate, browser_snapshot, browser_click, browser_fill_form, browser_type, browser_press_key, browser_take_screenshot, browser_wait_for, browser_console_messages, browser_evaluate.
See references/agent-guide.md for the full tool reference and auth handling patterns.
For each test case:
browser_wait_for or snapshot check)browser_snapshot (check accessibility tree for expected text/elements)browser_take_screenshot for evidencebrowser_console_messages for JS errorsWhen a test fails:
browser_console_messages)Save screenshots to the project root with descriptive names:
uat-tc001-invoice-card.png
uat-tc002-cashflow-dashboard.png
uat-tc003-fail-missing-button.png
Read references/results-template.md for the full report format.
Write uat-results.md alongside the test cases file.
Include:
testing
Decide whether your agent actually needs persistent memory, feedback loops, or closed-loop learning, then design the smallest thing that pays for itself. Use when the user says "add memory", "give my agent context management", "make my agent learn", "self-improving / closed-loop", "Reflexion / mem0 / Letta / MemGPT", "AriGraph", "agent memory architecture", "long-term memory for chatbot", "why does my agent keep forgetting / making the same mistake", "fine-tune from agent traces", or asks for a memory schema / experience store / reward model. Filters ruthlessly — most teams want a state cache, not memory + learning. Default position is scratchpad-only with a stateless agent shipped first.
tools
Prescriptive Q&A workflow for designing agentic pipelines, multi-model councils, sub-agent hierarchies, and tool-loop hardening for any domain. Use when the user asks to "design an agent", "design a multi-agent system", "should I use a council/debate", "build a [domain] review agent" (HAZOP, finance, tutorial, marketing, compliance, accounting), "real agency vs workflow", "how to add sub-agents", "AI for [domain] review", or names patterns like "orchestrator-worker", "evaluator-optimizer", "Magentic", "ReAct", "plan-and-execute", "handoffs". Walks the user through 12 stages one question at a time and emits a buildable design doc with citations. Do NOT use for general coding questions, single-shot prompt tuning, or bare "use Claude to do X" requests with no agency requirement.
development
Build and update high-converting SaaS landing pages with GTM-aware marketing copy, competitive positioning, and sales psychology. Use when creating new landing pages, rewriting feature cards, updating marketing copy, launching product pages, or transforming technical features into customer-facing sales language. Triggers on "build landing page", "update feature cards", "rewrite marketing copy", "create product page", "launch page", "GTM", "sales copy", "competitive positioning", or when converting product features into conversion-focused web pages.
development
This skill should be used when the user asks to "share this HTML", "publish HTML", "get a link for this file", "share this report", "make this shareable", "upload this HTML", or wants to publish any HTML artifact for others to view. ALSO use it for collaborative review on an HTML doc/spec/report — triggers include "get feedback on this", "let reviewers comment", "collect feedback", "share for review", "let people annotate this", "synthesize the feedback", "converge the feedback", "what did reviewers say", "incorporate the comments", or "improve this from the feedback". Wraps Surge.sh for zero-cost hosting with guided privacy options, plus an embedded annotation + AI converge workflow.