该技能用于在用户要求提升某个已发布 Astro 页面的 PageSpeed Insights 得分、Core Web Vitals、无障碍、最佳实践或技术 SEO 时执行优化流程。每次运行只处理一个页面:测量、阅读与修复均针对所给 URL;共享组件可能影响其他页面,这一点会写入最终报告。
输入要求
需要一个完整的公开 https:// URL。PageSpeed Insights 在 Google 服务器上运行,无法访问 localhost、私有 IP 或 .local 域名。用户给多个 URL 时,要求其选择其中一个,其余列为后续运行;未给 URL 时询问要测量的页面,不代为选择。
前置检查
运行 pagespeedfy --version,命令不存在则按 Pagespeedfy README 指导安装并停止。运行 pagespeedfy auth status,未配置密钥时请用户在终端执行 ! pagespeedfy auth login;不得在聊天中索取 API key,不得写入项目文件或作为命令参数传递。确认当前目录是 Astro 项目(根目录有 astro.config.*,package.json 含 astro),阅读 AGENTS.md、CLAUDE.md 或 README 并遵循本地代码、设计与文档规则。运行 git status --short 保留已有改动。检查 pagespeedfy-reports/ 是否在 .gitignore 中,报告含 URL 与 HTML 片段,不属于仓库;缺失时不在此时编辑,而纳入第 4 步计划。
流程
-
用 pagespeedfy run <url> --print path 测基线,命令查询移动端与桌面端的四个类别并输出 report.json 路径,每策略耗时 20 至 90 秒;因每日配额、密钥被拒或 URL 不可访问失败时报告 CLI 消息并停止,不循环重试。
-
阅读 references/leitura-relatorio.md,再读取该次测量的全部文件:两种策略的 report.json;mobile.raw.json 与 desktop.raw.json,核对每个未通过审计并补全被截断(truncated: true)的条目;report.md 仅作摘要核对。随后列出同一路由在 pagespeedfy-reports/<host>/<rota>/ 下的历史测量并读取各自 report.json,用历史区分反复出现与新出现的问题,判断此前是否已尝试修复;多次测量时用 pagespeedfy compare 比较最早与当前。对每种策略记录 runtimeError(非空即测量失败,报告并停止)、runWarnings、scores、labMetrics、field(页面与来源的 CrUX)、failedAudits 全部条目、manualAudits(作为人工核查项写入计划)。
-
定位生成该 URL 的代码文件:读 astro.config.* 了解 base、trailingSlash、i18n、redirects 与集成;在 src/pages/ 查找,包括动态路由([slug].astro、[...rota].astro)与 src/content/ 集合;沿导入链追踪页面、布局、组件、样式与脚本。用条目数据定位文件:node.selector 与 node.snippet 用 rg 搜索类名、ID 与文本;/_astro/ 下 URL 为构建产物,需构建并按哈希前的基础名在项目导入中查找;其他域名 URL 属第三方脚本、外部字体或嵌入,按域名搜索代码。此阶段只读,不改文件。
-
按 references/modelo-plano.md 生成计划,写入测量目录下与 report.json 相邻的 plano.md。计划按 report.json 顺序每个未通过审计一行,说明受影响策略、范围、文件、建议修复与预期效果。范围分四类:Página(仅改该路由文件或其内容)、Componente(改被其他页面使用的组件,列出受影响页面)、Global(改基础布局、astro.config.*、依赖或设计 token)、Fora do código(服务器、CDN、缓存头、DNS、第三方内容,仅描述调整)。按 references/astro-correcoes.md 查各审计 ID 的修复方式;无条目且指引不明的审计作为已说明的待办,不编造修复。
-
在聊天中完整展示计划,而非仅给出文件路径,并以“Posso aplicar as correções deste plano?”结束,等待回复。用户答复前不得修改项目文件,该规则同样适用于自动模式、/goal 或 /loop 会话。用户可授权整个计划、部分行或部分范围,或要求调整;调整时更新 plano.md、展示新版本并再次询问。将答复记入 plano.md 的“Autorização”部分,含日期与授权行。
-
仅按计划顺序应用授权行,逐行更新 plano.md 的“Status”列:已应用、未应用(附原因)或超出代码范围。编辑时遵循项目设计系统与设计技能;对比度、点击目标尺寸或间距调整会改变外观,应使用现有 token 并展示修改前后的值;不得为提分删除内容、区块、功能、分析或 Cookie 同意,若唯一办法是删除则先询问;不添加授权计划未列出的依赖;优先使用 Astro 原生能力(astro:assets、client:* 指令、build.inlineStylesheets、prefetch);按项目规则为改动代码加文档。出现计划外修复时新增行、展示并获授权后再应用。
-
本地运行构建(npm run build 或等效脚本),如有则运行 astro check 与测试套件,修复破坏后再继续;打开 dist/ 生成的 HTML 核查 head、图片与脚本的改动结果。
-
重新测量:PageSpeed Insights 只能测公开 URL。若有已发布改动的预览 URL,运行 pagespeedfy run <url-de-preview> --print path 与 pagespeedfy compare <基线report> <新report>;无预览则交付改动并提供发布后使用的比较命令,不自行部署、提交或推送。实验室分数执行间会有波动,Performance 相差 5 分以内可能是噪声,结论应比较指标与已解决审计列表而非仅看分数。
-
以 Markdown 交付最终报告并更新 plano.md:URL、测量日期、report.json 与 plano.md 路径;各策略分数与指标(有重测时给前后值);计划表各行最终状态;共享组件改动及其影响页面;未授权或未应用行及原因;超出代码范围项及服务器/CDN 建议;manualAudits 人工核查项;CrUX 字段数据说明其反映 28 天真实用户、需该周期后才变化。
限制
每次运行一个 URL,换页需从第 1 步重新开始;未展示并获得用户授权的计划不得执行任何修复;技能不修改托管或 CDN 配置;不写入、读取或显示 API key。