launch-checklist 是做什么的?
运行自动审计,修复代码中失败的部分,重新运行直到干净,然后逐项检查脚本无法检测到的手动项目。向用户报告你更改的内容以及仍需他们处理的部分。
第1步 — 运行审计
针对生产环境的URL(如果存在),否则针对本地生产构建(npm run build && npm start,不要用开发服务器——开发服务器会添加脚本并跳过缓存):
python3 scripts/audit_site.py https://example.com # 文本报告
python3 scripts/audit_site.py http://localhost:3000 --max-pages 30 --json > audit.json
检查内容(详情见 references/checks.md):
- 每个页面:
<title>(10–60个字符)、meta描述(50–160字符)、恰好一个<h1>、<html lang>、视口、规范链接(绝对路径,同主机)、og:title/description/image、twitter:card、缺少alt属性的<img>、HTML大小、响应时间、你可能希望索引的页面上的noindex、跨页面的重复标题/描述。 - 网站:
/robots.txt存在且没有Disallow: /所有内容,并引用了一个sitemap;/sitemap.xml(或robots中指定的文件)可解析且其URL在相同主机上返回200;favicon可访问;apple-touch-icon;一个随机URL返回404(而不是200或重定向到首页);http→https重定向(针对https站点);链接到隐私政策/条款(如果网站销售商品,还需退款政策);/llms.txt存在(仅提供信息)。
当有任何FAIL时退出码为1。爬取页面:起始URL + 同主机链接,最多--max-pages(默认20)。
第2步 — 在代码库中修复
检测框架并使用匹配的修复方案。对于Next.js App Router,references/fixes-nextjs.md提供了可用的robots.ts、sitemap.ts、not-found.tsx、metadata、图标约定。通用HTML/其他框架:references/fixes-generic.md。
规则:
- 修复根本原因(共享布局/元数据辅助函数),而不是逐个页面修复,当问题重复出现时。
- 未经询问,永远不要添加
noindex或阻止爬虫。 - 缺少法律页面:如果已安装
legal-pages技能,则生成它们;否则告知用户——不要内联捏造法律文本。 - 缺少OG图片:如果已安装
og-image-kit技能,则使用它。
第3步 — 重新运行直到无FAIL
重新运行相同的命令。WARN项:修复容易修复的,其余列出给用户。
第4步 — 手动项目(脚本无法验证)
与用户一起检查references/manual-checklist.md——分析工具是否安装、错误跟踪、事务性邮件可送达性(SPF/DKIM/DMARC)、支付流程是否通过实际小额支付进行端到端测试、备份、正常运行监控、Search Console / Bing Webmaster验证和sitemap提交、域名续费状态。将每项标记为已完成/不适用/用户自行处理。
第4b步 — 支付自检(如果网站收款)
python3 scripts/payment_check.py --src . --provider creem # 代码扫描
python3 scripts/payment_check.py --url http://localhost:3000 # 探测正在运行的构建
python3 scripts/payment_check.py --url http://localhost:3000 --secret "$CREEM_WEBHOOK_SECRET" # 仅测试模式密钥
FAIL:Webhook接受未经签名或伪造的请求、在验证前解析JSON、未基于事件ID去重、成功页面授权访问、支付密钥出现在NEXT_PUBLIC_*或被提交、Webhook重定向或位于机器人挑战之后。修复它们,重新运行,然后执行references/payment-checks.md中的手动卡测试(成功卡、拒绝卡、退款、仪表盘重发、取消)。永远不要传递生产环境的Webhook密钥。scripts/test_payment_check.py是该脚本自身的测试。测试、规范和fixture文件(*.test.ts、*.spec.tsx、test_*.py、任何位于tests/、e2e/、__tests__/、fixtures/下的内容)不被视为处理器或成功页面,因为它们有意发送未经签名的请求并插入行;但它们仍会被扫描是否提交了生产环境的密钥。报告会说明跳过了多少个(INFO test files)。
报告格式
<url>的上线审计 — <日期>
FAIL已修复:… (文件:行号修改)
WARN已修复:…
仍待处理(需要您处理):…
手动检查清单:x/y 已完成