Build fast, accessible, and SEO-friendly websites with modern best practices.
OpenClaw skills run inside an OpenClaw container. EasyClawd deploys and manages yours โ no server setup needed.
Initial release
---
name: Website
description: Build fast, accessible, and SEO-friendly websites with modern best practices.
metadata: {"clawdbot":{"emoji":"๐","os":["linux","darwin","win32"]}}
---
# Website Development Rules
## Performance
- Images are the #1 cause of slow sites โ use WebP/AVIF, lazy-load below-the-fold, and set explicit width/height to prevent layout shift
- Render-blocking CSS delays first paint โ inline critical CSS in `<head>`, defer the rest
- Third-party scripts (analytics, chat widgets) often add 500ms+ โ load them with `async` or `defer`, audit regularly
- Fonts cause invisible text flash (FOIT) โ use `font-display: swap` and preload critical fonts
- Measure with Lighthouse in incognito mode โ extensions skew results
## Mobile First
- Start CSS with mobile styles, add complexity with `min-width` media queries โ easier to scale up than strip down
- Touch targets need 44x44px minimum โ fingers are imprecise, small buttons frustrate users
- Test on real devices, not just browser DevTools โ throttling simulation misses real-world jank
- Horizontal scroll is a critical bug โ test every page at 320px width minimum
- `viewport` meta tag is required: `<meta name="viewport" content="width=device-width, initial-scale=1">`
## Accessibility
- Every `<img>` needs `alt` text โ empty `alt=""` for decorative images, descriptive text for meaningful ones
- Color contrast ratio 4.5:1 minimum for body text โ use WebAIM contrast checker
- Form inputs must have associated `<label>` elements โ placeholders alone are not accessible
- Keyboard navigation must work โ test every interactive element with Tab key
- Screen readers announce heading hierarchy โ use H1-H6 in logical order, never skip levels
## HTML Structure
- One `<h1>` per page only โ it's the page title, not a styling tool
- Use semantic elements: `<nav>`, `<main>`, `<article>`, `<aside>`, `<footer>` โ they communicate structure to browsers and assistive tech
- `<button>` for actions, `<a>` for navigation โ don't use divs with click handlers
- External links should have `rel="noopener"` โ prevents security vulnerability with `target="_blank"`
- Validate HTML โ broken markup causes unpredictable rendering across browsers
## CSS Patterns
- Avoid `!important` โ it breaks cascade and makes debugging painful. Fix specificity instead
- Use relative units (`rem`, `em`, `%`) over fixed `px` for text โ respects user font size preferences
- CSS custom properties (variables) reduce repetition โ define colors and spacing once, use everywhere
- Flexbox for 1D layouts, Grid for 2D โ don't force one to do the other's job
- Test without CSS loading โ content should still be readable in plain HTML
## Common Mistakes
- Missing favicon causes 404 spam in server logs โ always include one, even a simple PNG
- Not setting `<html lang="en">` breaks screen reader pronunciation
- Hardcoded `http://` links break on HTTPS sites โ use protocol-relative `//` or always `https://`
- Assuming JavaScript is available โ core content should work without JS (progressive enhancement)
- Forgetting print styles โ add `@media print` for pages users might print (receipts, articles)
## Before Launch
- Test all forms actually submit โ broken contact forms lose leads silently
- Check 404 page exists and is helpful โ default server 404 looks unprofessional
- Verify social sharing previews with Open Graph tags โ test in Facebook/Twitter debuggers
- Submit sitemap to Google Search Console โ speeds up indexing
- Set up uptime monitoring โ know when your site goes down before users tell you