You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Rebuild homepage to match original, fix overlays, update skills
- Replace pink/purple gradient overlay with dark overlay matching original
- Rebuild homepage with proper section structure: hero with curved
bottom, icon cards overlapping hero, blog posts, location banner
with lab background, partner logos, bottom cityscape banner
- Add Font Awesome for proper icons
- Add homepage-specific SCSS partial
- Fix featured image on latest blog post
- Update wp-to-ghpages and wp-audit skills with lessons learned:
extract actual overlay colors from CSS, include icon libraries,
check per-page CSS for backgrounds/sections, verify post images
Copy file name to clipboardExpand all lines: .claude/skills/wp-audit.md
+40-7Lines changed: 40 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -103,6 +103,37 @@ done
103
103
104
104
**Gotcha: Use headless Chrome screenshots to see actual colors/fonts — don't search for theme defaults.** WordPress sites customize colors via the Theme Customizer, overriding theme defaults. The actual values live in inline `<style>` blocks, not the theme's CSS file.
105
105
106
+
**CRITICAL: Extract per-page CSS for every key page.** WordPress page builders (Elementor, WPBakery, Divi, etc.) generate per-page CSS files that contain the REAL design values — background images, overlay colors, section padding, shape dividers, font sizes/families, icon sizes, and hover effects. The theme CSS only has defaults. You must find these per-page CSS files and extract the actual values.
**Gotcha: Don't invent overlay colors.** Many themes apply dark semi-transparent overlays over hero/banner images, NOT colored gradients. If you guess a pink/purple gradient when the site uses a dark overlay, every page header will look wrong. Always extract the exact overlay `background-color` and `opacity` from the site's actual CSS.
7.**Interactive elements** — what needs special handling or must be skipped
208
-
8.**Forms** — which can be replaced with Google Forms links, which to skip
209
-
9.**External dependencies** — Google Maps, third-party scripts, etc.
238
+
7.**Full-width sections** — for each page (especially the homepage), document every full-width background section: what background image it uses, what overlay color/opacity, what shape dividers separate it from adjacent sections, and what content sits on top of it
239
+
8.**Icon libraries** — which icon library the site loads (Font Awesome, Material Icons, etc.) and the CDN URL
240
+
9.**Interactive elements** — what needs special handling or must be skipped
241
+
10.**Forms** — which can be replaced with Google Forms links, which to skip
242
+
11.**External dependencies** — Google Maps, third-party scripts, etc.
- `_sass/_blog.scss`— blog listing, post preview cards, single post styles
124
125
- `_sass/_comments.scss`— comment thread styling
@@ -136,15 +137,21 @@ Entry point `assets/css/style.scss` (must have empty front matter for Jekyll to
136
137
137
138
**Key design decisions:**
138
139
- Use the exact colors, fonts, and gradients from the audit's design tokens
139
-
- Keep the WordPress site's visual structure (sticky nav, page header with gradient overlay, content cards with shadow)
140
+
- Keep the WordPress site's visual structure (sticky nav, page header, content cards with shadow)
140
141
- Page backgrounds should match the original (usually light gray, not white)
141
142
- Content areas should be white cards with subtle shadows, floating above the background
142
143
144
+
**CRITICAL: Extract overlay/background values from the site's actual CSS — never guess.**
145
+
Many WordPress themes use dark overlays (`rgba(0,0,0,0.3)`) over hero/banner images, not colored gradients. If you invent a pink/purple gradient when the site actually uses a subtle dark overlay, every page header will look wrong. Fetch the site's per-page CSS files (look for `<link>` tags with CSS URLs containing `post-` or `page-` IDs) and extract the exact `background-color`, `opacity`, and `background-image` values for each section.
146
+
147
+
**CRITICAL: Include any icon libraries the original site uses.**
148
+
WordPress sites commonly use Font Awesome, Material Icons, or similar icon libraries. Check the original page source for icon `<link>` tags (e.g., Font Awesome CDN) and include the same library in your `default.html` `<head>`. Don't substitute emoji Unicode characters for proper icons — they look completely different.
149
+
143
150
### Step 5: Create layouts
144
151
145
152
Four layouts cover most WordPress sites:
146
153
147
-
**`_layouts/default.html`** — HTML shell with head, nav, main, footer, scripts.
154
+
**`_layouts/default.html`** — HTML shell with head, nav, main, footer, scripts. Include any icon libraries (Font Awesome, etc.) and Google Fonts the original site uses in the `<head>`.
148
155
149
156
**`_layouts/home.html`** — extends default, includes page-header, renders content directly (no card wrapper — homepage has custom sections).
150
157
@@ -375,8 +382,12 @@ No GitHub Actions configuration needed. GitHub Pages detects the Jekyll project
375
382
1. **`collections_dir` breaks post discovery** — Do NOT set `collections_dir: .` (or any value) in `_config.yml`. With the github-pages gem, this silently prevents Jekyll from finding `_posts/`. You'll get zero posts with no error message — blog sections render empty, homepage blog previews show nothing. Just omit the key entirely.
376
383
2. **`{{ content }}` in page-header include causes duplication** — If `_includes/page-header.html` contains `{{ content }}`, every page's body renders twice: once inside the header overlay (mangled, overlapping the hero image) and once in the normal position. The include should only render title and subtitle — never `{{ content }}`.
377
384
3. **Permalink mismatches break navigation** — Extract every URL from the original site's nav links. Set each Jekyll page's `permalink:` to match exactly. Don't guess — fetch the page and read the hrefs. If the WP blog is at `/posts/`, use `permalink: /posts/`, not `/blog/`.
378
-
4. **GitHub Pages gem version conflicts** — `github-pages` pins specific gem versions. Don't add gems that conflict.
379
-
5. **Sass deprecation warnings** — GitHub Pages uses an older Sass version. Avoid newer Sass features (`@use`, `@forward`). Stick with `@import`.
380
-
6. **Large files** — GitHub has a 100MB file limit. Compress images before committing.
381
-
7. **Missing images** — After porting, grep for any remaining `wp-content/uploads` references and replace them.
382
-
8. **Comment slugs** — The comment YAML filename must match the post's `page.slug` (derived from the filename by default). If you set a custom `slug` in front matter, use `comment_slug` to override.
385
+
4. **Wrong overlay colors on page headers** — Don't guess overlay colors. Most WordPress sites use a dark semi-transparent overlay on hero/banner images, not a colored gradient. Extract the exact overlay `background-color` and `opacity` values from the site's per-page CSS files. A pink gradient on a site that uses a dark overlay makes every page look completely wrong.
386
+
5. **Missing full-width background sections** — WordPress pages often have full-width sections with background images, overlays, and shape dividers between them. If you don't fetch the per-page CSS to discover these background images, you'll miss entire sections. Check the CSS for every `background-image: url(...)` on each page you're porting.
387
+
6. **Wrong images on blog posts** — If the site uses featured images or inline images in posts, verify each post's images individually against the original. Don't reuse the same image across posts or guess which image belongs to which post.
388
+
7. **Missing icon libraries** — WordPress sites commonly use Font Awesome or similar icon libraries. If you substitute emoji characters for proper icons, the visual match will be way off. Check the original `<head>` for icon library `<link>` tags and include them.
389
+
8. **GitHub Pages gem version conflicts** — `github-pages` pins specific gem versions. Don't add gems that conflict.
390
+
9. **Sass deprecation warnings** — GitHub Pages uses an older Sass version. Avoid newer Sass features (`@use`, `@forward`). Stick with `@import`.
391
+
10. **Large files** — GitHub has a 100MB file limit. Compress images before committing.
392
+
11. **Missing images** — After porting, grep for any remaining `wp-content/uploads` references and replace them.
393
+
12. **Comment slugs** — The comment YAML filename must match the post's `page.slug` (derived from the filename by default). If you set a custom `slug` in front matter, use `comment_slug` to override.
0 commit comments