Files
2025-11-29 17:55:23 +08:00

5.9 KiB

name, description
name description
website-debug Frontend website debugging toolkit using Chrome DevTools Protocol with Playwright/WebKit fallbacks. Use this skill when: (1) Debugging CSS, HTML, or JavaScript issues on a webpage, (2) Taking screenshots to verify visual changes, (3) Inspecting DOM structure or console errors, (4) Testing responsive layouts, (5) Extracting selectors for automation, (6) Self-debugging frontend work Claude has created, (7) User says "debug this page", "check my site", "why doesn't this look right", or "fix the frontend". Supports Chrome (primary) and Safari/WebKit (via Playwright). Designed for agent-driven debugging loops.

Website Debugging Skill

Lightweight, token-efficient browser debugging toolkit for frontend development. Uses CLI scripts instead of MCP servers to minimize context usage (~300 tokens vs 13k-18k).

Quick Start

Use the slash commands for easiest access:

  • /debug-page <url> - Start debugging session
  • /screenshot - Take screenshot
  • /pick-element - Interactive element selection
  • /test-responsive - Test at all breakpoints
  • /verify-changes - Verify after making changes

Or use scripts directly:

# Start browser
node scripts/browser-start.js
node scripts/browser-start.js --profile  # Preserve logins
node scripts/browser-start.js --webkit   # Safari/WebKit

# Navigate
node scripts/browser-nav.js https://localhost:3000

# Debug
node scripts/browser-screenshot.js
node scripts/browser-eval.js 'document.title'
node scripts/browser-pick.js "Select element"
node scripts/browser-console.js --errors
node scripts/browser-network.js --failures

Core Tools Reference

Script Purpose Output
browser-start.sh Launch Chrome/WebKit with debug port Status message
browser-nav.sh <url> Navigate to URL Confirmation
browser-screenshot.sh Capture viewport File path (PNG)
browser-eval.sh '<js>' Run JS in page Result or error
browser-pick.sh "<msg>" Interactive selector CSS selectors
browser-console.sh Get console output Logs/errors
browser-network.sh Network activity Request/response data
browser-dom.sh "<sel>" Get DOM snapshot HTML fragment
browser-close.sh Close browser Confirmation

Self-Debugging Workflow

When debugging frontend code Claude has written or modified:

1. Visual Verification Loop

# After making CSS/HTML changes, verify visually
./scripts/browser-screenshot.sh
# Claude reads the screenshot, identifies issues, iterates

2. Console Error Detection

# Check for JavaScript errors after changes
./scripts/browser-console.sh --errors
# Fix any errors found, re-verify

3. Responsive Testing

# Test at different viewport sizes
./scripts/browser-resize.sh 375 667   # iPhone SE
./scripts/browser-screenshot.sh
./scripts/browser-resize.sh 768 1024  # iPad
./scripts/browser-screenshot.sh
./scripts/browser-resize.sh 1920 1080 # Desktop
./scripts/browser-screenshot.sh

4. Element Inspection

# When user reports "X looks wrong", have them select it
./scripts/browser-pick.sh "Click on the element that looks wrong"
# Returns detailed info including computed styles

Browser Engine Selection

Chrome (Default)

Primary engine. Uses Chrome DevTools Protocol on port 9222.

  • Best debugging experience
  • Full DevTools compatibility
  • Use --profile to preserve logins

WebKit/Safari

Fallback via Playwright's WebKit build. Closest to Safari behavior on macOS.

./scripts/browser-start.sh --webkit
  • Use for Safari-specific testing
  • Layout verification
  • WebKit-specific bugs

When to Use Each

Scenario Engine
General debugging Chrome
Safari layout issues WebKit
Testing with logins Chrome --profile
Cross-browser comparison Both
CI/headless testing Chrome or WebKit

Advanced Usage

Detailed Documentation

For complex scenarios, load the appropriate reference:

Composable Output

All scripts output to files when practical, enabling:

# Capture multiple screenshots for comparison
./scripts/browser-screenshot.sh > /tmp/before.png
# ... make changes ...
./scripts/browser-screenshot.sh > /tmp/after.png

# Save DOM snapshot for analysis
./scripts/browser-dom.sh "body" > /tmp/page-structure.html

# Export console log for review
./scripts/browser-console.sh > /tmp/console-log.txt

Chaining Commands

# Navigate and screenshot in one command
./scripts/browser-nav.sh https://example.com && ./scripts/browser-screenshot.sh

# Full page audit
./scripts/browser-nav.sh $URL && \
  ./scripts/browser-console.sh --errors > /tmp/errors.txt && \
  ./scripts/browser-screenshot.sh

Setup Requirements

Chrome

Chrome must be launchable from command line. The start script handles this automatically.

WebKit (Optional)

For Safari testing, ensure Playwright is installed:

npm install -g playwright
npx playwright install webkit

Dependencies

Scripts require Node.js and puppeteer-core:

npm install -g puppeteer-core

Troubleshooting

"Cannot connect to browser"

Browser may not be running or wrong port:

./scripts/browser-start.sh  # Restart browser

"Permission denied"

Scripts may need execute permission:

chmod +x ./scripts/*.sh

Chrome already running

Kill existing instances first:

killall "Google Chrome" 2>/dev/null
./scripts/browser-start.sh

WebKit not found

Install Playwright browsers:

npx playwright install webkit