로컬 검증
순서대로 실행하고, 첫 번째 오류에서 멈춰서 수정합니다:
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 + 에이전트 친화성
python3 scripts/check_responsive.py --base http://localhost:8088 --shots /tmp/rs # 반응형 (Playwright)
docker rm -f bt-check
Playwright는 처음 실행 시: pip install playwright && python3 -m playwright install chromium.
셸 스크립트: bash -n deploy/*.sh nginx/*.sh (그리고 shellcheck가 설치되어 있다면 함께 실행).
육안 검사 항목 (dev: docker compose -f docker-compose.dev.yml up → http://localhost:8080)
- 배경 애니메이션이 끊김 없이 부드럽게 돌아가고,
감소된 움직임설정이 활성화되면 멈춥니다. - 콘솔에 오류가 없습니다(CSP가 모든 인라인 스크립트를 차단하므로 JS는
site/app.js에 있어야 함). /tmp/rs/*-320x640.png및*-375x667.png캡처: 잘린 부분이나 모서리에 붙은 내용이 없어야 함.- 브랜드 가이드라인을 준수합니다 (
bytetuto-brand스킬 참조).