3.4 KiB
3.4 KiB
CLAUDE.md — website-evaluator
Overview
A Docker-based website audit pipeline. Given a URL it runs screenshots (Playwright), Lighthouse audits (desktop + mobile), and DOM analysis, then assembles a structured Markdown report optimised for consumption by Claude.
Repository Structure
website-evaluator/
├── ABOUT.md # One-line description for context-load menu
├── CLAUDE.md # This file
├── MEMORY.md # Index of memory topic files
├── FUTURE.md # Ideas not on the active roadmap
├── README.md # Human-readable overview and quick start
├── SPEC.md # Index of spec files
├── spec/ # Per-subsystem specs (WE-P, WE-S, WE-L, WE-D, WE-R)
├── src/
│ ├── index.js # Entrypoint — arg parsing and pipeline orchestration
│ ├── screenshot.js # Playwright screenshot capture (desktop + mobile)
│ ├── lighthouse.js # Lighthouse audit runner (desktop + mobile presets)
│ ├── dom-analysis.js # DOM metadata extraction via Playwright
│ └── report.js # Markdown report assembly
├── Dockerfile # Node 20 + Playwright base image
├── .dockerignore
├── package.json
└── scripts/
└── verify-m1.sh # Smoke test: run against example.com, check outputs
Tech Stack
- Runtime: Node.js 20, ES modules (
type: "module") - Screenshots + DOM: Playwright (Chromium)
- Audits: Lighthouse 12 + chrome-launcher (uses Playwright's bundled Chromium)
- Base image:
mcr.microsoft.com/playwright/node:20-noble
Running Locally (Docker)
# Build
docker build -t website-evaluator .
# Run — output lands in ./output/
mkdir -p output
docker run --rm -v "$(pwd)/output:/output" website-evaluator https://example.com
# Output
output/
report.md # Primary artifact — feed this to Claude
screenshots/
desktop.png
mobile.png
raw/
lighthouse-desktop.json
lighthouse-mobile.json
dom.json
Environment Variables
| Variable | Default | Purpose |
|---|---|---|
OUTPUT_DIR |
/output |
Where to write all output files |
URL is passed as a CLI argument. TARGET_URL env var is also accepted as fallback.
Spec Prefixes
| Spec file | Prefix | Domain |
|---|---|---|
| pipeline.md | WE-P | Orchestration + I/O contract |
| screenshot.md | WE-S | Screenshot capture |
| lighthouse.md | WE-L | Lighthouse audit |
| dom-analysis.md | WE-D | DOM metadata extraction |
| report.md | WE-R | Report structure + tone |
Conventions
- ES modules throughout (
import/export,.jsextensions in imports) - Async/await — no callbacks
- Each module exports one primary function; no side effects at import time
- Errors propagate to
index.jswhich handles process exit console.logfor progress,console.errorfor failures
Milestones
| # | Scope | Status |
|---|---|---|
| M1 | Core pipeline: screenshot + Lighthouse + DOM → report.md | In progress |
| M2 | --analyze flag: calls Claude API, appends AI recommendations |
Future |
| M3 | Comparison mode: before/after and competitor diffs | Future |
Gitea
- Org:
skynet - Remote:
git@gitea.oreillyit.nz-ai-enablement:skynet/website-evaluator.git