bake-site-compare

Compare production WordPress sites against their baked static versions to find differences. Use when testing Bake deployments, checking for missing assets, broken styles, console errors, or any visual/functional discrepancies between production and static sites. Triggers on requests to compare sites, verify bake output, check for differences, or test static deployments.

12 stars

Best use case

bake-site-compare is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Compare production WordPress sites against their baked static versions to find differences. Use when testing Bake deployments, checking for missing assets, broken styles, console errors, or any visual/functional discrepancies between production and static sites. Triggers on requests to compare sites, verify bake output, check for differences, or test static deployments.

Teams using bake-site-compare should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/bake-site-compare/SKILL.md --create-dirs "https://raw.githubusercontent.com/coreyja/dotfiles/main/.claude/skills/bake-site-compare/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/bake-site-compare/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How bake-site-compare Compares

Feature / Agentbake-site-compareStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Compare production WordPress sites against their baked static versions to find differences. Use when testing Bake deployments, checking for missing assets, broken styles, console errors, or any visual/functional discrepancies between production and static sites. Triggers on requests to compare sites, verify bake output, check for differences, or test static deployments.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Bake Site Comparison

Compare a production WordPress site against its baked static version to ensure they're visually and functionally identical.

## Prerequisites

- Browser automation MCP must be available (Playwright or claude-in-chrome)
- Access to the bake.kdl config file at `/Users/coreyja/Projects/bake/bake.kdl`

## Workflow

### 1. Parse Site Configuration

Read `/Users/coreyja/Projects/bake/bake.kdl` to get:
- **Production URL**: The `production` field (e.g., `https://theconnectedapproach.com`)
- **Baked URL**: The `alternative-hosts` entry ending in `.lavenderiguana.live` (e.g., `tca.lavenderiguana.live`)
- **CDN Allowlist**: External domains that should NOT be rewritten (important for checking asset loading)

If user specifies a site name (e.g., "tca", "lavenderiguana"), use that site's config. Otherwise, ask which site to compare.

### 2. Discover All Pages

Get all pages to compare using one of:
- Fetch and parse `/sitemap.xml` from production site
- Fetch and parse `/sitemap_index.xml` if it's a sitemap index
- Include key pages: `/`, `/contact/`, and any pages from sitemap

### 3. Compare Each Page

For each page, compare production vs baked version:

#### Visual Comparison
1. Navigate to production URL in one tab
2. Navigate to corresponding baked URL in another tab
3. Take screenshots of both
4. Scroll down incrementally, taking screenshots at each section
5. Note any visual differences (missing images, broken layouts, different text)

#### Network Analysis
1. Check for 404 errors on the baked site
2. Check for failed resource loads (CSS, JS, images, fonts)
3. Compare network requests - anything loading on production but failing on baked

#### Console Errors
1. Capture console errors/warnings from both sites
2. Flag any errors unique to the baked version

#### Specific Checks

**FontAwesome Icons:**
```javascript
// Check if FontAwesome icons are rendering
document.querySelectorAll('[class*="fa-"]').length
// Check FontAwesome stylesheets loaded
Array.from(document.styleSheets).filter(s => s.href?.includes('fontawesome')).map(s => s.href)
```

**Lazy-Loaded Images:**
```javascript
// Check for images with data-src/data-srcset (WordPress lazy loading)
document.querySelectorAll('img[data-src], img[data-srcset]').length
// Verify actual src is populated after scroll
document.querySelectorAll('img').forEach(img => {
  if (img.dataset.src && !img.src.includes(img.dataset.src)) {
    console.log('Lazy image not loaded:', img.dataset.src);
  }
});
```

**Background Images:**
```javascript
// Check for elements with background-image in inline styles
document.querySelectorAll('[style*="background"]').length
// Check Elementor data-settings for background images
document.querySelectorAll('[data-settings]').forEach(el => {
  const settings = JSON.parse(el.dataset.settings || '{}');
  if (settings.background_image) console.log('BG:', settings.background_image);
});
```

**Elementor Forms:**
```javascript
// Check if Elementor Pro frontend config exists and has correct ajaxurl
window.ElementorProFrontendConfig?.ajaxurl
// On baked sites, this should point to the form handler service, not WordPress
```

**External Resources:**
```javascript
// Check if CDN resources are loading (should NOT be rewritten to /external/)
Array.from(document.querySelectorAll('link[href], script[src]'))
  .filter(el => (el.href || el.src)?.includes('/external/'))
  .map(el => el.href || el.src)
```

### 4. Document Findings

For each difference found, record:
- Page URL (both production and baked)
- Type of issue (visual, network, console, specific check)
- Screenshot or evidence
- Severity (blocking vs cosmetic)

### 5. Create Linear Issues

For each significant issue, create a Linear issue in the Bake project:

```
Team: Bake (or appropriate team)
Title: [BAKE-XXX] Brief description of the issue
Labels: bug, site-comparison
Description:
  - Production URL: [url]
  - Baked URL: [url]
  - Issue: [detailed description]
  - Evidence: [screenshot/console output/network log]
  - Affected pages: [list if multiple]
```

Group related issues (e.g., if the same asset is missing on multiple pages, create one issue).

## Known Issue Patterns

### FontAwesome Icons Not Rendering
- **Cause**: CDN URLs being rewritten to `/external/` paths when they should be allowed
- **Check**: Verify domain is in `cdn-allowlist` in bake.kdl
- **Issue prefix**: BAKE-018

### Lazy-Loaded Images Missing
- **Cause**: `data-src`/`data-srcset` attributes not being processed
- **Check**: Compare img element attributes between production and baked
- **Issue prefix**: BAKE-022

### CSS Background Images Missing
- **Cause**: Inline styles or Elementor data-settings JSON not being parsed
- **Check**: Look for missing hero sections, client logos, background patterns
- **Issue prefix**: BAKE-023

### Elementor Forms Not Working
- **Cause**: `ajaxurl` pointing to WordPress instead of form handler
- **Check**: Verify `ElementorProFrontendConfig.ajaxurl` value
- **Issue prefix**: BAKE-019

### External Domain Assets 404
- **Cause**: External URLs rewritten but not downloaded to correct path
- **Check**: Network tab for 404s on `/external/` paths
- **Issue prefix**: BAKE-021

## Output Format

After comparison, provide a summary:

```
## Site Comparison Results: [site-name]
Production: [url]
Baked: [url]

### Pages Checked: X

### Issues Found: Y
- [Issue 1]: Brief description (Linear: BAKE-XXX)
- [Issue 2]: Brief description (Linear: BAKE-XXX)

### All Clear:
- FontAwesome: OK/Issues
- Lazy Images: OK/Issues
- Background Images: OK/Issues
- Forms: OK/Issues
- Console Errors: OK/Issues
- Network 404s: OK/Issues

### Linear Issues Created:
- BAKE-XXX: [title]
- BAKE-YYY: [title]
```

Related Skills

skill-writer

12
from coreyja/dotfiles

Create and improve Claude Code skills. Use when drafting new skills, writing SKILL.md files, improving skill descriptions, or structuring skill directories. Triggers on requests to create skills, write skills, draft skills, improve skill triggering, or fix skills that aren't activating.

rust-github-ci

12
from coreyja/dotfiles

Set up GitHub Actions CI for Rust projects. Creates reusable workflows for clippy, rustfmt, tests, cargo-deny, and sqlx. Use when setting up CI, adding GitHub workflows, configuring Rust pipelines, or fixing CI issues in Rust projects.

jj

12
from coreyja/dotfiles

Use Jujutsu (jj) for version control. Covers workflow, commits, bookmarks, pushing to GitHub, absorb, squash, and stacked PRs. Use when working with jj, creating commits, pushing changes, or managing version control.

claude-code-automation

12
from coreyja/dotfiles

Run Claude Code programmatically in headless mode or via bidirectional stream-json protocol. Use when building agents, automating Claude, running headless Claude, implementing multi-turn conversations, or integrating Claude CLI into applications.

performing-paste-site-monitoring-for-credentials

16
from plurigrid/asi

Monitor paste sites like Pastebin and GitHub Gists for leaked credentials, API keys, and sensitive data dumps using automated scraping and keyword matching to detect breaches early.

analyzing-ransomware-leak-site-intelligence

16
from plurigrid/asi

Monitor and analyze ransomware group data leak sites (DLS) to track victim postings, extract threat intelligence on group tactics, and assess sector-specific ransomware risk for proactive defense.

website

15
from niklam/iracedeck

Use when modifying the iRaceDeck website, updating site content, changing styles, adding pages, or working with Firebase deployment. Also use when updating action counts, feature lists, or any public-facing content on iracedeck.com.

clone-anywebsite

12
from SylphAI-Inc/skills

Guide and recipe for high-fidelity, visual-first web cloning mainly using the Chrome DevTools MCP and Deep DOM Interrogation. and screenshot and read image tool

sitespeakai-automation

11
from EricGrill/agents-skills-plugins

Automate Sitespeakai tasks via Rube MCP (Composio). Always search tools first for current schemas.

formsite-automation

11
from EricGrill/agents-skills-plugins

Automate Formsite tasks via Rube MCP (Composio). Always search tools first for current schemas.

site-architecture

11
from abeldotam/bmad-viewer

When the user wants to plan, map, or restructure their website's page hierarchy, navigation, URL structure, or internal linking. Also use when the user mentions "sitemap," "site map," "visual sitemap," "site structure," "page hierarchy," "information architecture," "IA," "navigation design," "URL structure," "breadcrumbs," "internal linking strategy," or "website planning." NOT for XML sitemaps (that's technical SEO — see seo-audit). For SEO audits, see seo-audit. For structured data, see schema-markup.

audit-website

11
from abeldotam/bmad-viewer

Audit websites for SEO, performance, security, technical, content, and 15 other issue cateories with 230+ rules using the squirrelscan CLI. Returns LLM-optimized reports with health scores, broken links, meta tag analysis, and actionable recommendations. Use to discover and asses website or webapp issues and health.