From prism-devtools
Use to validate reported issues. Confirms reproducibility and documents validation evidence.
npx claudepluginhub resolve-io/.prismThis skill uses the workspace's default tool permissions.
<!-- Powered by Prism Core™ -->
Enables AI agents to execute x402 payments with per-task budgets, spending controls, and non-custodial wallets via MCP tools. Use when agents pay for APIs, services, or other agents.
Provides patterns for autonomous Claude Code loops: sequential pipelines, agentic REPLs, PR cycles, de-sloppify cleanups, and RFC-driven multi-agent DAGs. For continuous dev workflows without intervention.
Applies NestJS patterns for modules, controllers, providers, DTO validation, guards, interceptors, config, and production TypeScript backends with project structure and bootstrap examples.
Validate customer-reported issues using Playwright-MCP to reproduce and document the problem with evidence.
Use automated browser testing to reproduce exactly what the customer experienced, capture evidence, and confirm if the issue is real and reproducible.
playwright_setup:
- Use mcp__playwright-mcp__init-browser with the application URL
- Navigate to the affected page/feature
- Set up appropriate viewport for device type (mobile/desktop)
- Clear cookies/storage if needed for clean state
Execute each step the customer reported:
reproduction_steps:
- action: Navigate to specific page
playwright: mcp__playwright-mcp__execute-code
capture: screenshot before action
- action: Perform user interactions (click, type, submit)
playwright: mcp__playwright-mcp__execute-code
capture: screenshot after each action
- action: Wait for expected results
playwright: Check for errors in console
capture: final state screenshot
evidence_collection:
screenshots:
- Initial state
- Each interaction step
- Error state (if reproduced)
- Console errors: mcp__playwright-mcp__execute-code to get console.log
network:
- Failed API calls
- Response status codes
- Timing issues
state:
- DOM state at failure point
- JavaScript variable values
- Local storage/session data
validation_result:
reproducible: true/false
severity: P0/P1/P2/P3
reproduction_details:
steps_taken: [exact Playwright commands used]
success_rate: "3/3 attempts reproduced issue"
environment:
browser: "Chrome 120"
viewport: "1920x1080"
account_type: "trial/paid/admin"
evidence:
screenshots: [list of captured images]
console_errors: [any JavaScript errors]
network_failures: [failed requests]
impact_assessment:
affected_users: "All users on checkout flow"
business_impact: "Blocking purchases"
workaround_available: "Yes/No - describe if yes"
// Example validation using mcp__playwright-mcp__execute-code
async function run(page) {
// Navigate to the problem area
await page.goto('/checkout');
// Capture initial state
const initialScreenshot = await page.screenshot();
// Reproduce customer actions
await page.fill('#email', 'customer@example.com');
await page.fill('#card-number', '4242424242424242');
// Check for the reported issue
const submitButton = await page.locator('#submit-payment');
await submitButton.click();
// Wait and check for infinite spinner (customer's complaint)
await page.waitForTimeout(5000);
const spinnerStillVisible = await page.locator('.spinner').isVisible();
// Capture console errors
const consoleLogs = [];
page.on('console', msg => consoleLogs.push(msg.text()));
// Return validation result
return {
reproduced: spinnerStillVisible,
errors: consoleLogs,
finalState: await page.screenshot()
};
}