--- name: website-finishing-director description: "Run a structured 5-pass finishing audit on any website before launch — scoring visual polish, technical foundation, UX completeness, content quality, and cross-device readiness on 100 points. Use when: **Pre-launch** - Final validation before going live; **Post-redesign** - Verify nothing broke during the overhaul; **Client handoff** - Structured proof that the site is ready; **Quarterly review** - Catch accumulated debt; **Single-pass focus** - Run just Pass 2 after a perf sprint" license: MIT metadata: author: ClawFu version: 1.0.0 mcp-server: "@clawfu/mcp-skills" --- # Website Finishing Director > Structured 5-pass website finishing audit — from first impression to launch readiness — scored on 100 points. Like painting: primer, base coat, details, clear coat, final inspection. No site ships without a finishing pass. ## When to Use This Skill - **Pre-launch gate** — Final validation before DNS goes live or traffic is sent - **Post-redesign audit** — After a visual overhaul, verify nothing regressed - **Client handoff** — Generate a structured report proving the site meets quality standards - **Quarterly maintenance** — Catch accumulated UX debt, broken links, stale content - **Targeted pass** — Run just one pass (e.g., "Pass 2 only" after a performance sprint) ## Methodology Foundation **Sources**: - Nielsen Norman Group — Heuristic evaluation framework (10 usability heuristics) - Google Web Vitals — LCP, CLS, INP thresholds - OWASP — Security headers baseline - Oli Gardner / Unbounce — Landing page conversion best practices - Don Norman — Emotional Design (visceral/behavioral/reflective layers) - GUIA production memory — 8 shipped websites, documented gotchas across Next.js, Framer Motion, GSAP, Lenis, Railway, Docker **Core Principle**: A website that passes Lighthouse and has correct meta tags is technically valid but not *finished*. Finishing is the gap between "it works" and "it's ready." It requires evaluating the site as a visitor experiences it — progressive, emotional, cross-device — not as a checklist of individual metrics. **Why This Matters**: Existing tools (Lighthouse, Screaming Frog, Awwwards) each audit one dimension. No tool combines visual polish + UX completeness + technical foundation + content quality + brand alignment in a sequential, scored workflow. This skill is that tool. --- ## What Claude Does vs What You Decide > "Claude runs the audit. You decide what ships." | Claude handles | You provide | |---------------|-------------| | Running each pass systematically against the checklist | The live URL or codebase access | | Scoring each checkpoint with rationale | Context: brand positioning, target audience, launch timeline | | Classifying issues as P0/P1/P2 | Override decisions (e.g., "P1 is acceptable for MVP") | | Generating the final report with fix suggestions | Final Go/No-Go judgment | | Flagging GUIA stack gotchas from production memory | Validation on real devices (Claude can't open Safari) | **Remember**: This is a centaur workflow. Claude structures the audit rigorously; you validate the verdict with human eyes on real devices. --- ## What This Skill Does 1. **5-Second First Impression Test** — Evaluates clarity, emotional fit, and CTA visibility in the first moments 2. **Technical Foundation Audit** — Performance (Core Web Vitals), SEO basics, security headers, broken links 3. **UX Completeness Check** — Component states, form behavior, animation polish, mobile usability 4. **Content & Brand Validation** — Copy quality, placeholder detection, voice consistency, visual coherence 5. **Cross-Device & Launch Readiness** — Browser testing, OG previews, analytics, 404 page, favicon ## How to Use ### Full website audit before launch ``` I'm about to launch [site URL]. Run a full website-finishing-director audit (all 5 passes). Brand quadrant: [Warm+Calm / Warm+Active / Cold+Active / Cold+Calm]. Target audience: [who]. ``` ### Single pass after a specific fix ``` I just optimized performance on [site URL]. Run Pass 2 only (Technical Foundation). ``` ### Landing page quick audit ``` Audit this landing page: [URL]. Use the Landing Page profile (passes 1, 2, 4). ``` --- ## Instructions When running this audit, follow the 5 passes in order. Each pass builds on the previous one — foundation before polish. Score each checkpoint, classify issues by priority, then generate the final report. ### Audit Profiles Not every site needs all 5 passes. Select the profile that matches the project: | Profile | Passes | When to use | |---------|--------|-------------| | **Landing Page** | 1, 2, 4 | Single-page campaign or product page | | **Full Website** | 1, 2, 3, 4, 5 | Multi-page site with navigation, forms, content | | **E-commerce** | 2, 3, 5 | Store with cart, checkout, product pages | Adjust point totals proportionally when using a reduced profile. The Go/No-Go thresholds apply to the percentage score, not raw points. --- ### Pass 1: First Impression (15 points) *"What does a visitor understand and feel in 5 seconds?"* Show the homepage (or hero section) for 5 seconds. Answer these 5 questions — 3 points each: ``` ## Pass 1 — First Impression (5-Second Test) ### 1. WHAT is this? (3 pts) Can a visitor identify what the site/product/service IS? [ ] 3 — Immediately clear, no ambiguity [ ] 2 — Clear after reading subheadline [ ] 1 — Vague, requires scrolling to understand [ ] 0 — No idea what this is ### 2. WHO is it for? (3 pts) Are there signals identifying the target audience? [ ] 3 — Obvious demographic/psychographic signals [ ] 2 — Implied but not explicit [ ] 1 — Generic ("everyone") [ ] 0 — Actively confusing (signals wrong audience) ### 3. WHY should I care? (3 pts) Is the value proposition or benefit visible? [ ] 3 — Clear benefit, emotionally resonant [ ] 2 — Feature-focused but understandable [ ] 1 — Present but buried [ ] 0 — No value proposition visible ### 4. WHAT do I do next? (3 pts) Is the primary CTA visible and clear? [ ] 3 — CTA visible above fold, action-specific text [ ] 2 — CTA present but generic ("Learn more") [ ] 1 — CTA below the fold or hard to find [ ] 0 — No CTA visible ### 5. HOW does it feel? (3 pts) Does the emotional tone match the brand quadrant? [ ] 3 — Perfect quadrant match (warm brand = warm design) [ ] 2 — Mostly aligned, minor dissonance [ ] 1 — Noticeable mismatch (warm brand + cold design) [ ] 0 — Opposite quadrant (positioning confusion) ### Pass 1 Score: ___/15 Verdict: - 12-15: PASS — First impression is clear and emotionally aligned - 8-11: NEEDS WORK — Visitor gets it, but slowly or with friction - <8: FAIL — Redesign the above-fold experience ``` **Integration**: Compare the emotional feel against the `web-design-director` quadrant system. If the brand is Warm+Calm but the site feels Cold+Active, that's a P0 regardless of score. **GUIA gotchas for this pass**: - Calendly URL hardcoded in CTA instead of `/contact/` page (breaks analytics) - Mixing warm copy tone with cold UI elements (terracotta palette + monospace font = confusion) --- ### Pass 2: Technical Foundation (25 points) *"Is the infrastructure solid enough to build on?"* ``` ## Pass 2 — Technical Foundation ### Performance (10 pts) | Metric | Target | Score | |--------|--------|-------| | LCP (Largest Contentful Paint) | ≤ 2.5s | 0-3 pts | | INP (Interaction to Next Paint) | ≤ 200ms | 0-2 pts | | CLS (Cumulative Layout Shift) | ≤ 0.1 | 0-2 pts | | Lighthouse Performance score | ≥ 85 | 0-3 pts | Scoring: - LCP: 3 = ≤2.5s, 2 = ≤4.0s, 1 = ≤6.0s, 0 = >6.0s - INP: 2 = ≤200ms, 1 = ≤500ms, 0 = >500ms - CLS: 2 = ≤0.1, 1 = ≤0.25, 0 = >0.25 - Lighthouse: 3 = ≥90, 2 = ≥85, 1 = ≥70, 0 = <70 ### SEO Basics (8 pts) - [ ] (2 pts) Canonical URLs defined + trailing slash consistent - [ ] (1 pt) Meta titles unique per page (≤60 chars) - [ ] (1 pt) Meta descriptions present per page (≤160 chars) - [ ] (1 pt) Sitemap.xml accessible and valid - [ ] (1 pt) robots.txt present and correct - [ ] (1 pt) Structured data present (JSON-LD) - [ ] (1 pt) Alt text on all images ### Security & Links (7 pts) - [ ] (2 pts) HTTPS enforced (no mixed content) - [ ] (2 pts) Security headers present (CSP, X-Frame-Options, HSTS, X-Content-Type-Options) - [ ] (1 pt) No broken internal links (404s) - [ ] (1 pt) No broken external links - [ ] (1 pt) No exposed source maps or debug endpoints in production ### Pass 2 Score: ___/25 Verdict: - 21-25: SOLID — Ship it - 16-20: ACCEPTABLE — Fix P0s, ship with P1 backlog - 11-15: FRAGILE — Significant technical debt - <11: BROKEN — Do not launch ``` **GUIA gotchas for this pass**: - `trailingSlash: true` missing in `next.config.js` (caused deindexation on Rental-CRM, Jan 2026) - `export const metadata` on a `'use client'` component (metadata not rendered server-side) - Module-level SDK init (Supabase/Stripe) fails at build when env vars missing — lazy-initialize inside functions - Vercel env vars trailing newline from `echo` — use `printf` instead - Railway `*.railway.internal` hostnames unreachable during Nixpacks build — use public URLs --- ### Pass 3: UX Completeness (25 points) *"Does the site handle real-world usage, not just the happy path?"* ``` ## Pass 3 — UX Completeness ### Component States (8 pts) For EACH interactive component (buttons, cards, forms, modals, lists): - [ ] (2 pts) Loading state — skeleton, spinner, or progressive render - [ ] (2 pts) Error state — clear message + recovery action - [ ] (2 pts) Empty state — helpful message, not blank screen - [ ] (2 pts) Success state — confirmation feedback Score: deduct per missing state across all components. 8 pts = all states covered. -1 per missing state (cap at 0). ### Forms (6 pts) - [ ] (1 pt) Client-side validation with clear error messages - [ ] (1 pt) Server-side validation (not just client) - [ ] (1 pt) Success feedback after submission (toast, redirect, or inline) - [ ] (1 pt) Submit button disabled during processing (no double-submit) - [ ] (1 pt) Spam protection (honeypot, reCAPTCHA, or rate limiting) - [ ] (1 pt) Privacy policy link near form (GDPR) ### Animation Polish (6 pts) - [ ] (1 pt) `viewport={{ once: true }}` on scroll animations (no replay on scroll-back) - [ ] (1 pt) `useGSAP` hook used (not `useEffect`) for GSAP animations - [ ] (1 pt) `prefers-reduced-motion` respected (disable or reduce animations) - [ ] (1 pt) No animation blocks content access (content visible even if animation fails) - [ ] (1 pt) Lenis initialized correctly (not Locomotive Scroll) - [ ] (1 pt) Exit animations don't cause layout shift ### Mobile Usability (5 pts) - [ ] (1 pt) Touch targets ≥ 44px (iOS HIG standard) - [ ] (1 pt) No horizontal overflow / horizontal scroll - [ ] (1 pt) Font sizes ≥ 16px for body text (prevents iOS zoom) - [ ] (1 pt) Sticky/fixed elements don't overlap content - [ ] (1 pt) Scroll behavior works correctly (no scroll-jacking that traps users) ### Pass 3 Score: ___/25 Verdict: - 21-25: COMPLETE — Real-world usage covered - 16-20: MOSTLY THERE — Edge cases need attention - 11-15: INCOMPLETE — Users will hit dead ends - <11: UNFINISHED — UX not production-ready ``` **GUIA gotchas for this pass**: - GSAP + React 18 Strict Mode fires animations 2x in dev (use `useGSAP`, not `useEffect`) - Global CSS `a { color: var(--color-coral) }` overrides Tailwind `text-white` on anchor CTAs — use inline `style={{ color: 'white' }}` - Framer Motion `AnimatePresence` exit animations break with Next.js App Router - Too many simultaneous `ScrollTrigger` instances kill mobile performance - Lenis package name: `npm install lenis` (NOT `@studio-freight/lenis`) --- ### Pass 4: Content & Brand (20 points) *"Is the content finished, consistent, and on-brand?"* ``` ## Pass 4 — Content & Brand ### Copy Quality (8 pts) - [ ] (2 pts) No placeholder text detected ("Lorem ipsum", "[Your Name]", "Coming soon", "example.com", "TODO", empty sections) - [ ] (1 pt) No spelling or grammar errors - [ ] (1 pt) Link text is descriptive (not "click here" or naked URLs) - [ ] (1 pt) CTA copy is specific ("Start free trial" not "Submit") - [ ] (1 pt) Heading hierarchy is logical (H1 → H2 → H3, one H1 per page) - [ ] (1 pt) Alt text is descriptive (not "image1.png" or empty) - [ ] (1 pt) Phone numbers, emails, addresses are real (not placeholder) ### Brand Voice (6 pts) - [ ] (2 pts) Tone matches brand positioning (warm/cold, formal/casual) - [ ] (2 pts) Voice is consistent across all pages (same person "speaking") - [ ] (1 pt) No AI-smoothing markers ("Don't hesitate to contact us", "In today's fast-paced world", "It's important to note that") - [ ] (1 pt) CTAs match the emotional quadrant (warm brand = inviting CTA, not aggressive) ### Visual Consistency (6 pts) - [ ] (1 pt) Color palette used consistently (no off-brand colors) - [ ] (1 pt) Typography hierarchy clear (display, heading, body, caption — max 2-3 fonts) - [ ] (1 pt) Spacing rhythm consistent (not random padding between sections) - [ ] (1 pt) Icon style uniform (don't mix outline, filled, and emoji) - [ ] (1 pt) Image treatment consistent (all photos same filter/tone, or all illustrations) - [ ] (1 pt) Component style consistent (cards, buttons, inputs follow same pattern) ### Pass 4 Score: ___/20 Verdict: - 17-20: POLISHED — Content is finished and on-brand - 13-16: GOOD — Minor inconsistencies, shippable - 9-12: ROUGH — Content needs editing pass - <9: UNFINISHED — Major content gaps or brand mismatch ``` **GUIA gotchas for this pass**: - Calendly URL must match the correct professional (Valeria vs Matthieu vs client) - Mixing warm copy ("We understand your challenges") with cold UI (dark mode, monospace, sharp corners) - AI-generated copy detection: remove double line breaks before publishing (AI signature on LinkedIn) - credou.bzh copy direction: mechanism-first, no CV, no parcours/timeline --- ### Pass 5: Cross-Device & Launch (15 points) *"Does it work everywhere, and is everything ready to go live?"* ``` ## Pass 5 — Cross-Device & Launch ### Browser Testing (5 pts) Test on the 3 major browsers. Score per browser: - [ ] (2 pts) Safari — renders correctly, animations work, fonts load - [ ] (2 pts) Chrome — renders correctly, animations work, fonts load - [ ] (1 pt) Firefox — renders correctly, no major breaks Per browser, check: layout, animations, fonts, forms, scroll behavior. Deduct 1 pt per browser with visual bugs. Deduct 2 pts per browser with functional bugs. ### Device Testing (4 pts) - [ ] (2 pts) Mobile (375px) — full site usable, no content cut off - [ ] (1 pt) Tablet (768px) — layout adapts, no awkward breakpoints - [ ] (1 pt) Desktop (1440px) — content doesn't stretch or float in empty space ### Launch Readiness (6 pts) - [ ] (1 pt) Analytics installed and firing (GA4, Plausible, or equivalent) - [ ] (1 pt) OG image renders correctly (test with opengraph.xyz or Twitter card validator) - [ ] (1 pt) 404 page exists and is styled (not default browser/framework error) - [ ] (1 pt) Favicon present in all sizes (16, 32, 180, 192, 512 — or SVG adaptive) - [ ] (1 pt) Google Search Console configured (or equivalent) - [ ] (1 pt) Social preview correct on LinkedIn, Twitter, WhatsApp ### Pass 5 Score: ___/15 Verdict: - 12-15: LAUNCH READY — Ship it - 9-11: ALMOST — Fix critical device/browser issues - <9: NOT READY — Cross-device experience is broken ``` **GUIA gotchas for this pass**: - Lenis smooth scroll has known issues on Safari — test carefully - Vercel env vars with trailing newline break OG image URLs - Docker healthcheck must pass before CI/CD reports success - `deploy.sh` uses `flock` — no concurrent deploys on VPS - Resend subdomain DNS: `send.send.` looks wrong but is correct (Resend adds `send.` prefix) --- ### Step 6: Generate the Final Report After running all applicable passes, compile the report: ``` ## Final Report Template # Website Finishing Audit: [Site Name] **URL:** [https://...] **Date:** [YYYY-MM-DD] **Profile:** [Landing Page / Full Website / E-commerce] **Auditor:** [Name] + Claude (website-finishing-director) --- ## Score Summary | Pass | Name | Score | Max | Status | |------|------|-------|-----|--------| | 1 | First Impression | __/15 | 15 | [PASS/NEEDS WORK/FAIL] | | 2 | Technical Foundation | __/25 | 25 | [SOLID/ACCEPTABLE/FRAGILE/BROKEN] | | 3 | UX Completeness | __/25 | 25 | [COMPLETE/MOSTLY/INCOMPLETE/UNFINISHED] | | 4 | Content & Brand | __/20 | 20 | [POLISHED/GOOD/ROUGH/UNFINISHED] | | 5 | Cross-Device & Launch | __/15 | 15 | [READY/ALMOST/NOT READY] | | **TOTAL** | | **__/100** | **100** | | --- ## Verdict | Score Range | Verdict | |-------------|---------| | 85-100 | LAUNCH READY | | 70-84 | CONDITIONAL — fix P0s then ship | | 50-69 | NEEDS WORK — significant issues | | <50 | NOT READY — major gaps | **Override rule:** 1 unresolved P0 = NOT READY, regardless of total score. **VERDICT: [LAUNCH READY / CONDITIONAL / NEEDS WORK / NOT READY]** --- ## Issues ### P0 — Blockers (must fix before launch) | # | Pass | Issue | Location | Fix | |---|------|-------|----------|-----| | 1 | [1-5] | [Description] | [file:line or URL path] | [Concrete solution] | ### P1 — Important (fix within 1 week of launch) | # | Pass | Issue | Location | Fix | |---|------|-------|----------|-----| | 1 | [1-5] | [Description] | [file:line or URL path] | [Concrete solution] | ### P2 — Nice-to-have (backlog) | # | Pass | Issue | Location | Fix | |---|------|-------|----------|-----| | 1 | [1-5] | [Description] | [file:line or URL path] | [Concrete solution] | --- ## Strengths - [What the site does well — acknowledge good work] - [Specific design/technical/content wins] ## Recommendations 1. [Highest-priority improvement] 2. [Second priority] 3. [Strategic suggestion for next iteration] --- ## Sign-off - [ ] All P0s resolved - [ ] P0 + P1 resolved (optimal) - [ ] Stakeholder review completed - [ ] Go-live date confirmed: ____________ ``` --- ## Examples ### Example 1: Full Website Audit — credou.bzh **Context**: Personal brand website for a consultant. Warm+Calm quadrant. Next.js 16, Framer Motion, Lenis. Just completed copy v3 and deployed. **Input**: > Run a full website-finishing-director audit on credou.bzh. Brand quadrant: Warm+Calm. Target: decision-makers struggling with AI integration. **Output**: # Website Finishing Audit: credou.bzh **URL:** https://credou.bzh **Date:** 2026-02-12 **Profile:** Full Website **Auditor:** Matthieu + Claude (website-finishing-director) --- ## Score Summary | Pass | Name | Score | Max | Status | |------|------|-------|-----|--------| | 1 | First Impression | 13/15 | 15 | PASS | | 2 | Technical Foundation | 19/25 | 25 | ACCEPTABLE | | 3 | UX Completeness | 18/25 | 25 | MOSTLY THERE | | 4 | Content & Brand | 17/20 | 20 | POLISHED | | 5 | Cross-Device & Launch | 11/15 | 15 | ALMOST | | **TOTAL** | | **78/100** | **100** | | --- ## Verdict **CONDITIONAL** — Score 78/100. Fix P0s then ship. --- ## Issues ### P0 — Blockers | # | Pass | Issue | Location | Fix | |---|------|-------|----------|-----| | 1 | 2 | Security headers missing (no CSP, no X-Frame-Options) | `next.config.js` | Add `headers()` config with CSP, X-Frame, HSTS, X-Content-Type | | 2 | 5 | 404 page is default Next.js error | `/app/not-found.tsx` | Create styled 404 page matching Papier/Encre theme | ### P1 — Important | # | Pass | Issue | Location | Fix | |---|------|-------|----------|-----| | 1 | 2 | eslint.config.js missing | Project root | Add ESLint flat config | | 2 | 3 | `prefers-reduced-motion` not handled | `globals.css` | Add `@media (prefers-reduced-motion: reduce)` to disable animations | | 3 | 3 | Skip-to-content link missing | `layout.tsx` | Add visually hidden skip link | | 4 | 5 | Social preview not tested on WhatsApp | OG image | Verify OG renders on WhatsApp share | ### P2 — Nice-to-have | # | Pass | Issue | Location | Fix | |---|------|-------|----------|-----| | 1 | 4 | "Le plan" section cards could use more varied spacing | `HomeContent.tsx` | Vary vertical padding between card rows | --- ## Strengths - Copy v3 (articulation bottleneck) is sharp — mechanism-first, no CV padding - Papier/Encre dual theme is cohesive and on-brand - Grain texture + borderless cards create genuine warmth (not template-y) - Edge-rendered OG image is a solid SEO win ## Recommendations 1. Fix security headers (P0) — 15 min task, high security impact 2. Create custom 404 page (P0) — maintain brand experience on dead links 3. Add `prefers-reduced-motion` (P1) — accessibility compliance --- **Why this works**: The audit catches the gap between "technically deployed" and "actually finished." The site scores well on impression and content but has infrastructure gaps (security headers, 404) that a pure Lighthouse audit would flag separately without prioritization. --- ### Example 2: Landing Page Audit — SaaS Product Launch **Context**: New SaaS landing page for a productivity tool. Cold+Active quadrant. Single page, no forms, CTA links to waitlist. **Input**: > Audit this landing page with the Landing Page profile (passes 1, 2, 4): taskflow.app. Quadrant: Cold+Active. Audience: engineering managers. **Output**: # Website Finishing Audit: TaskFlow **URL:** https://taskflow.app **Date:** 2026-02-12 **Profile:** Landing Page (Passes 1, 2, 4) **Auditor:** Product team + Claude (website-finishing-director) --- ## Score Summary | Pass | Name | Score | Max | Status | |------|------|-------|-----|--------| | 1 | First Impression | 9/15 | 15 | NEEDS WORK | | 2 | Technical Foundation | 22/25 | 25 | SOLID | | 4 | Content & Brand | 11/20 | 20 | ROUGH | | **TOTAL** | | **42/60** | **60** | **(70%)** | --- ## Verdict **CONDITIONAL** — 70% score. P0 in Pass 1 requires attention. --- ## Issues ### P0 — Blockers | # | Pass | Issue | Location | Fix | |---|------|-------|----------|-----| | 1 | 1 | WHAT is this? scored 1/3 — product category unclear in hero | Hero section | Add one line: "Project tracking for engineering teams" above the tagline | | 2 | 4 | 3 placeholder testimonials with stock photos | Social proof section | Remove section entirely, or replace with real beta user quotes | ### P1 — Important | # | Pass | Issue | Location | Fix | |---|------|-------|----------|-----| | 1 | 1 | CTA says "Get Started" — generic for a waitlist | Hero CTA | Change to "Join the Waitlist" or "Request Early Access" | | 2 | 4 | AI-smoothing detected: "In today's fast-paced engineering landscape..." | Hero subtitle | Rewrite: direct, specific, no filler | | 3 | 4 | Feature icons mix filled and outline styles | Features grid | Standardize on one icon style | ### P2 — Nice-to-have | # | Pass | Issue | Location | Fix | |---|------|-------|----------|-----| | 1 | 2 | Structured data missing (no Product or SoftwareApplication schema) | `` | Add JSON-LD SoftwareApplication schema | | 2 | 4 | Footer copyright says 2025 | Footer | Update to 2026 | --- ## Strengths - Technical foundation is solid (22/25) — fast, well-optimized - Dark UI + gradient accents match Cold+Active quadrant perfectly - Responsive layout works well across breakpoints ## Recommendations 1. Clarify the hero — visitors need to understand the product category in 3 seconds 2. Remove fake testimonials — empty space is better than fake social proof 3. Rewrite CTA to match the actual action (waitlist, not "get started") --- **Why this works**: The Landing Page profile skips UX completeness (Pass 3) and cross-device (Pass 5), focusing on what matters most for a single page: does it communicate clearly, is the tech solid, and is the content honest? The 70% score flags it as shippable with fixes — the P0s are copy problems, not engineering problems. --- ## Skill Boundaries (Frontier Recognition) ### This skill excels for: - Pre-launch validation of any website (static, dynamic, SPA, SSR) - Generating structured audit reports for client handoff - Catching the "finishing gap" between technically working and truly ready - Teams using GUIA stack (Next.js, Framer Motion, GSAP, Lenis) — gotchas are baked in ### This skill is NOT ideal for: - **Deep performance engineering** — Use Lighthouse, WebPageTest, or Chrome DevTools directly - **Accessibility audit (WCAG compliance)** — This covers basics but isn't a full a11y audit. Use axe-core or WAVE. - **Security penetration testing** — This checks headers, not vulnerabilities. Use OWASP ZAP. - **Conversion rate optimization** — Use `landing-page-optimizer` for CRO. This skill checks if the CTA exists, not if it converts. - **Design direction** — Use `web-design-director` for choosing the visual direction. This skill validates the execution. ### Quality Checkpoints Before accepting the audit output, verify: - [ ] All 5 passes (or profile-appropriate passes) have been scored - [ ] Total points match (15 + 25 + 25 + 20 + 15 = 100 for full audit) - [ ] Every P0 has a concrete fix (not just "improve this") - [ ] The verdict respects the override rule (1 P0 = NOT READY) - [ ] Strengths section acknowledges genuine wins (not just problems) --- ## Iteration Guide > "First pass catches the obvious. Second pass catches the subtle." ### Recommended Iteration Pattern | Pass | Focus | Questions to Ask | |------|-------|------------------| | **1st audit** | Full sweep | "What's broken? What's missing? What's off-brand?" | | **2nd audit** (after fixes) | P0 verification | "Are the blockers actually fixed? Did fixes introduce regressions?" | | **3rd audit** (pre-launch) | Polish | "Would I be proud to share this URL publicly?" | ### Useful Follow-up Prompts - "Re-run Pass 2 only — I fixed the security headers and 404 page." - "The brand voice feels inconsistent between the homepage and about page. Deep-dive on Pass 4." - "Score this against the E-commerce profile — we added a checkout flow." - "Compare this audit to the previous one and show me what improved." --- ## Learning Curve | Usage | What You'll Experience | |-------|----------------------| | **1st audit** | You discover gaps you didn't know existed (especially states and mobile) | | **3rd audit** | You start building finishing into your workflow, not just tacking it on | | **10th audit** | Your sites ship with fewer issues because you internalize the checklist | **Pro tip**: Run Pass 1 (First Impression) at 50% completion, not just at the end. Catching positioning mismatches early saves redesign time. --- ## Checklists & Templates ### Quick Pre-Launch Checklist (5 min) ``` ## Quick Check (non-negotiable minimums) - [ ] Site loads in < 4s on mobile - [ ] CTA visible above the fold - [ ] No placeholder text anywhere - [ ] No broken links on main pages - [ ] HTTPS enforced - [ ] 404 page exists - [ ] OG image renders If ALL checked → safe to soft-launch If ANY unchecked → run full audit ``` ### GUIA Stack Checklist (Next.js + Framer + GSAP) ``` ## GUIA Stack Finishing Checklist ### Next.js Config - [ ] trailingSlash: true in next.config.js - [ ] export const metadata on server components (not 'use client') - [ ] Lazy SDK init (getSupabase(), getStripe()) — not module-level - [ ] sitemap.ts + robots.ts present ### Animation - [ ] useGSAP (not useEffect) for GSAP - [ ] viewport={{ once: true }} on scroll animations - [ ] prefers-reduced-motion media query - [ ] Lenis (not Locomotive Scroll) ### CSS - [ ] Global a{color} doesn't override CTA text — use inline style if needed - [ ] No horizontal overflow on mobile - [ ] Touch targets ≥ 44px ### Deploy - [ ] Env vars set with printf (no trailing newline) - [ ] Docker healthcheck passes before success report - [ ] deploy.sh flock prevents concurrent deploys ``` ### Red Flags Checklist ``` ## Warning Signs in Your Audit - [ ] Score is 85+ but something still "feels off" → trust your gut, re-examine Pass 1 - [ ] All passes score well except one pass scores <50% → that pass is a blocker - [ ] P0 list has more than 3 items → the site isn't ready, period - [ ] Multiple P2s in the same area → that's actually a P1 (systemic issue) - [ ] "It works on my machine" for any browser test → test on real devices ``` --- ## Integration with Other ClawFu Skills | Skill | Integration Point | |-------|------------------| | **[web-design-director](../web-design-director/)** | Use BEFORE building — determines the emotional quadrant. Pass 1 validates against it. | | **[design-trends-2026](../design-trends-2026/)** | Pass 4 visual consistency can reference current trend alignment | | **[minimalist-image-director](../minimalist-image-director/)** | Pass 4 image treatment consistency | | **[landing-page-optimizer](../../content/landing-page-optimizer/)** | Conversion optimization AFTER this audit passes — CRO assumes the foundation works | | **[landing-page-copy](../../content/landing-page-copy/)** | Pass 4 copy quality — if copy fails, route to this skill for rewrite | **Workflow sequence**: ``` web-design-director → [build site] → website-finishing-director → [fix issues] → landing-page-optimizer (direction) (code) (QA/finishing) (iterate) (CRO/optimization) ``` --- ## References - Nielsen, Jakob. "10 Usability Heuristics for User Interface Design" (1994, updated 2020) — Foundation for UX completeness checks - Google. "Web Vitals" — LCP, CLS, INP threshold definitions - OWASP. "Secure Headers Project" — Security header recommendations - Gardner, Oli. "101 Landing Page Optimization Tips" (Unbounce) — Pre-launch conversion checklist - Norman, Don. "Emotional Design" (2004) — Visceral/behavioral/reflective design evaluation - GUIA Production Memory — `.claude/memory/agents/webdesign.md`, `seo.md`, `devops.md`, `gotchas.md` ## Related Skills - [web-design-director](../web-design-director/) — Visual direction framework (use BEFORE this skill) - [design-trends-2026](../design-trends-2026/) — Current visual trends for Pass 4 validation - [minimalist-image-director](../minimalist-image-director/) — AI photography direction for image consistency - [landing-page-optimizer](../../content/landing-page-optimizer/) — Conversion optimization (use AFTER this skill) - [ai-video-qa](../../video/ai-video-qa/) — Sibling QA skill for video content (same scoring philosophy) --- ## Skill Metadata ```yaml name: website-finishing-director category: ai-design subcategory: quality-assurance version: 1.0 author: GUIA source_expert: Nielsen Norman Group + Google Web Vitals + OWASP + GUIA Production Memory (8 shipped sites) source_work: null difficulty: intermediate mode: centaur estimated_value: QA/finishing audit engagement (~1500-3000 EUR per site) tags: [web-design, qa, audit, finishing, pre-launch, ux, performance, seo, brand, cross-device, scoring] created: 2026-02-12 updated: 2026-02-12 ``` --- *This skill is part of the GUIA Premium Marketing Skills Library — the 201 layer that bridges AI basics and technical implementation.*