Verificación local
Ejecutar en orden, detenerse ante el primer error y corregirlo:
docker build -t bytetuto-site:local .
docker run --rm bytetuto-site:local nginx -t
docker rm -f bt-check 2>/dev/null; docker run -d --name bt-check -p 8088:80 bytetuto-site:local
sleep 2
curl -fsS http://localhost:8088/healthz # -> ok
curl -fsS http://localhost:8088/ | grep -c byteTuto # > 0
curl -s -o /dev/null -w '%{http_code}\n' http://localhost:8088/x # -> 404
curl -sI http://localhost:8088/ | grep -iE 'content-security|x-frame|cache-control'
curl -sI http://localhost:8088/index.md | grep -i 'content-type: text/markdown'
curl -s -H 'Accept: text/markdown' http://localhost:8088/ | head -3 # -> front matter ---
python3 scripts/check_seo_agents.py # SEO + agent-friendly
python3 scripts/check_responsive.py --base http://localhost:8088 --shots /tmp/rs # responsive (Playwright)
docker rm -f bt-check
Playwright, la primera vez: pip install playwright && python3 -m playwright install chromium.
Scripts shell: bash -n deploy/*.sh nginx/*.sh (y shellcheck si está instalado).
Puntos a verificar visualmente (dev: docker compose -f docker-compose.dev.yml up → http://localhost:8080)
- La animación del fondo gira sin tirones y se detiene con « reducir las animaciones » activado.
- Sin errores en la consola (la CSP bloquea todo script inline: el JS va en
site/app.js). - Capturas
/tmp/rs/*-320x640.pngy*-375x667.png: nada cortado, nada pegado a los bordes. - Normativa respetada (consultar skill
bytetuto-brand).