con un clic
debugging-skill
// Always start a fresh browser session after any file change, walk through the full user flow, and monitor for errors before proceeding with further work.
// Always start a fresh browser session after any file change, walk through the full user flow, and monitor for errors before proceeding with further work.
Set up and run different development service arrangements for testing specific features. Use when starting dev servers, testing Storybook addon (SB8 or SB10), testing Tailwind v3 vs v4, testing Astro, or when asked which services to run. Covers compound tasks, port assignments, and which services need each other.
Defines the interaction behavior of global mode buttons (Select, Insert) and component row buttons (Place, Replace). Use when modifying button states, colors, labels, tab visibility, or page interaction behavior. Must review and update these tables before making changes.
Canonical naming for all Convey UI parts, features, and concepts. Reference when discussing, documenting, or writing code for any part of the app. Ensures consistent terminology across humans and AI agents.
Build panel UI components that live-preview Tailwind className changes in the user's app via WebSocket. Use when creating any control (dropdown, scrubber, color picker, toggle, etc.) that lets users hover/scrub values before committing. Covers the preview/revert/stage lifecycle, the onHover/onLeave prop contract, and the focus-trap pattern that prevents preview leaks.
Debug and fix failing Playwright E2E tests. Use when tests fail, when asked to fix failing tests, or when investigating test failures. Analyzes test output, screenshots, error context, and uses Playwright MCP to identify root causes.
Canonical terminology for Tailwind CSS concepts used throughout the codebase. Reference this skill to ensure consistent naming in code, docs, and conversation.
| name | debugging-skill |
| description | Always start a fresh browser session after any file change, walk through the full user flow, and monitor for errors before proceeding with further work. |
Ensure that after any code change, the app is fully reloaded, the user flow is tested from the beginning, and no runtime errors or warnings are present before continuing with feature work or test automation.
Restart Browser Session
Start with the Test App (http://localhost:5173)
Walk Through Full User Flow
Monitor for Errors and Warnings
The Convey toggle button (aria-label="Open Convey inspector") lives inside a shadow DOM (#tw-visual-editor-host). Playwright MCP's click_element and snapshot tools cannot reach shadow DOM elements directly.
Always use page.evaluate() to click it:
await page.waitForFunction(() => {
const host = document.querySelector('#tw-visual-editor-host') as HTMLElement;
return !!(host?.shadowRoot?.querySelector('.toggle-btn'));
}, { timeout: 5000 });
await page.evaluate(() => {
const host = document.querySelector('#tw-visual-editor-host') as HTMLElement;
const btn = host.shadowRoot!.querySelector('.toggle-btn') as HTMLButtonElement;
btn.click();
});
Or with Playwright MCP's mcp_playwright_browser_evaluate:
// Step 1: wait for button
await page.waitForFunction(() =>
!!(document.querySelector('#tw-visual-editor-host') as HTMLElement)?.shadowRoot?.querySelector('.toggle-btn')
);
// Step 2: click it
await page.evaluate(() => {
const host = document.querySelector('#tw-visual-editor-host') as HTMLElement;
(host.shadowRoot!.querySelector('.toggle-btn') as HTMLButtonElement).click();
});
Do NOT try
getByRole('button', { name: 'Open Convey inspector' })or snapshot-based clicks — they will not find the shadow DOM element.
This skill should be followed for all feature implementation, E2E test writing, and UI debugging.