在前端工程圈,Addy Osmani的名字和"Web性能"几乎是绑定的。他在Google Chrome团队工作超过十三年,先后负责Chrome DevTools、Lighthouse、Core Web Vitals等项目的开发体验,2025年底转岗到Google Cloud AI参与Gemini的开发者体验工作,目前他已经离开谷歌,转向写作与侧项项目开发。他参与过的开源项目包括Lighthouse、Workbox、Quicklink、Guess.js、Yeoman、TodoMVC、Critical和Material Design Lite等。
本文从zhe.ink的视角,挑出他最具代表性的几个开源工具,按"前端性能优化"和"AI编码工程纪律"两条主线展开,讲清楚每个工具解决什么问题、怎么用、适合谁。
为什么是Addy Osmani的工具值得单独讲
Addy Osmani的特殊之处不在于他写了多少个工具,而在于他的工具链完整覆盖了Web开发的性能全生命周期:从构建期的CSS提取(Critical)、运行时的预取(Quicklink)、离线缓存(Workbox)、UI组件库(Material Design Lite),到今天的AI编码工程纪律(agent-skills)。
他的工具普遍有三个特征:一是解决的是真实存在的工程痛点,不是为开源而开源;二是默认轻量,不绑定重型框架;三是文档和理念先行,很多工具背后都有他在博客和会议演讲里系统阐述过的方法论。
一、Critical:首屏关键CSS提取与内联
Critical解决的问题非常具体:浏览器渲染页面时需要CSS,但现代网站的CSS文件往往几十KB甚至上百KB,全部加载完才能渲染——这就是"渲染阻塞"。Critical的做法是把首屏(above-the-fold)需要的CSS提取出来直接内联到HTML里,剩下的CSS异步加载。
安装与使用
npm install --save critical
基本用法:
var critical = require('critical');
critical.generate({
inline: true,
base: 'dist/',
src: 'index.html',
dest: 'index-critical.html',
width: 1300,
height: 900,
minify: true
});
inline: true表示把提取出的关键CSS内联进HTML;width和height定义首屏视口尺寸;minify: true启用压缩;extract: true会同时从原样式表中移除已内联的规则。
支持多分辨率
自适应站点可以为不同屏幕尺寸生成各自的关键CSS:
critical.generate({
base: 'test/',
src: 'index.html',
dest: 'styles/main.css',
dimensions: [
{ height: 200, width: 500 },
{ height: 900, width: 1200 }
]
});
适用边界
Critical已被多个生产站点验证稳定,但官方也明确指出:如果你的站点样式非常多,或者样式是动态注入到DOM的(Angular应用常见),建议直接使用底层的Penthouse模块。Critical的许可证是Apache 2.0,目前最新版本为7.2.1。
二、Workbox:生产级PWA工具包
Workbox是一组用于生成Service Worker脚本的库,处理缓存和离线功能。在Workbox出现之前,写一个能正确拦截网络请求、做预缓存和运行时缓存的Service Worker需要大量底层代码。Workbox把这一切简化成几行配置。
Google、Pinterest、Lyft等公司都用Workbox支撑他们的PWA,项目在GitHub上超过10000星。
Workbox的核心能力:
-
预缓存(Precache):部署时把核心资源装进Cache Storage
-
运行时缓存(Runtime Caching):按策略缓存运行时请求
-
多种缓存策略:CacheFirst、NetworkFirst、StaleWhileRevalidate等
-
流式响应:通过workbox-streams模块,Service Worker可以利用Streams API把页面的不同部分拼接后流式返回,加速多页应用的导航请求
对于想在现有站点上加离线能力的团队,Workbox是目前最成熟的开源方案,没有之一。
三、Quicklink:空闲时预取视口内的链接
Quicklink的思路很巧妙:当用户停留在页面上时,浏览器处于空闲,Quicklink趁机把视口内链接指向的页面预取回来。等用户真的点击时,目标页面几乎瞬时加载。
这个库2018年发布,GitHub上超过11000星,被很多高流量站点用于提升感知速度。Addy Osmani后来也基于Quicklink的理念,持续为浏览器规范的推测加载(Speculative Loading)提供输入。
Quicklink的价值在于:它不要求你改造现有页面结构,引入脚本即可生效,是典型的"低侵入高回报"工具。
四、Material Design Lite:轻量的Material Design实现
2015年发布的Material Design Lite(MDL),把Google的Material Design组件带到了普通网站,不需要Heavy JavaScript框架。项目在GitHub上获得超过32000星,后来演进为Material Design Components for Web。
MDL的意义在于:它让当时的普通HTML/CSS页面也能轻松拥有现代化的Material风格UI元素,而不必引入Angular或其他重型框架。对于今天仍在维护的老项目,MDL依然是可选项。
五、agent-skills:给AI编码智能体装上工程纪律
这是Addy Osmani在2026年最引人注目的开源项目,也是他离开Google前把Gemini工程经验"反哺"给整个开发者的代表作。项目地址github.com/addyosmani/agent-skills,MIT许可证,截至2026年8月GitHub星标已超过8万。
它解决什么问题
任何用过Claude Code、Cursor、Copilot的人都会遇到同一种翻车:让AI加个功能,它噼里啪啦写完代码宣布"Done!",但没写测试、没考虑权限边界、提交的diff大到没人能review。AI智能体默认走最短路径到"done",而资深工程师真正值钱的工作——写spec、拆任务、先写测试、做code review、控制变更范围——恰恰都不在diff里。
agent-skills把这些"不出现在diff里的工作"结构化成了技能文件。
核心结构
每个技能是一个SKILL.md文件,固定包含:
-
Overview:这个技能负责什么
-
When to Use:什么情况下触发
-
Process:分步骤的执行流程
-
Rationalizations:Agent惯用的偷懒借口,逐条列出逐条反驳
-
Red Flags:跑偏的迹象
-
Verification:完成的硬性证明——测试通过、构建输出、运行时数据,"我觉得应该没问题"不算
24个技能覆盖完整生命周期
项目包含24个技能(23个生命周期技能+1个元技能),通过7个斜杠命令串起整个开发流程:
|
命令 |
职责 |
核心原则 |
|---|---|---|
|
|
定义要做什么 |
先写规格,再动代码 |
|
|
规划怎么做 |
拆成小的、可独立交付的任务 |
|
|
增量写代码 |
一次一个垂直切片 |
|
|
验证能用 |
测试是证明,不是装饰 |
|
|
合并前审查 |
改善代码健康度 |
|
|
简化代码 |
清晰比聪明重要 |
|
|
上线 |
越快越安全 |
技能清单按阶段划分,例如Define阶段的interview-me(逐问题访谈)、spec-driven-development(先写PRD);Build阶段的test-driven-development(Red-Green-Refactor)、doubt-driven-development(对抗性审查);Verify阶段的browser-testing-with-devtools;Review阶段的code-review-and-quality、security-and-hardening;Ship阶段的git-workflow-and-versioning、ci-cd-and-automation。
其中doubt-driven-development尤其值得一说:它要求AI在做每个非平凡决策时,立刻开一个干净上下文的审查智能体来质疑自己——"一个自信的回答不等于一个正确的回答"。
安装方式
Claude Code用户:
/plugin marketplace add addyosmani/agent-skills
/plugin install agent-skills@addy-agent-skills
通用方式(支持70+ AI工具):
npx skills add addyosmani/agent-skills
按需装单个技能:
npx skills add addyosmani/agent-skills --skill test-driven-development
Cursor、Gemini CLI、Windsurf、GitHub Copilot、Kiro IDE等主流AI编码工具都有对应的接入文档。技能文件就是普通Markdown,任何接受system prompt或instruction文件的智能体都能用。
为什么agent-skills值得关注
agent-skills的设计参考了《Software Engineering at Google》和Google工程实践指南,把Hyrum's Law、测试金字塔、Chesterton's Fence、Trunk-based development、Shift Left、feature flags等工程原则直接嵌进技能的执行步骤。它不是Prompt Engineering,而是Workflow Engineering——把资深工程师脑子里那些"说不清但很重要"的判断,变成了AI必须走完的流程。
对于个人开发者,它让AI从"写雏形"进化到"写能上线的代码";对于团队,它的最大价值是统一标准——不管人和AI工具怎么换,代码质量都有保障。
六、其他值得关注的项目
除了上述核心工具,Addy Osmani的GitHub上还活跃着几个2026年的新项目:
-
web-quality-skills:基于Lighthouse和Core Web Vitals的Agent技能,用于优化Web质量,2583星
-
agentic-seo:Agentic SEO/AEO工具,289星
-
adverse:多智能体对抗性代码审查,44星
-
agent-house:给智能体运行打分,告诉它如何更快更省,14星
-
enhance:浏览器内AI图像增强工具,支持ESRGAN和MAXIM模型
这些项目共同反映出Addy Osmani当前的重心:把Web性能、工程质量和AI智能体能力三者打通。
工具选型建议
面对Addy Osmani如此多的开源工具,按场景给出选择路径:
-
想优化首屏渲染性能 → Critical
-
想给站点加离线能力和Service Worker缓存 → Workbox
-
想低成本提升多页站点的导航速度 → Quicklink
-
老项目想用Material Design但又不引框架 → Material Design Lite
-
用AI编码智能体(Cursor/Claude Code/Copilot等)写生产代码 → agent-skills
-
想让AI智能体关注Web质量指标 → web-quality-skills
写在最后
Addy Osmani的开源工具横跨了前端工程的三个时代:以Critical、Workbox、Quicklink为代表的"性能优化时代",以Material Design Lite为代表的"UI组件时代",以及今天以agent-skills、web-quality-skills为代表的"AI编码工程纪律时代"。贯穿这三个时代的共同主线是他对一句格言的坚持:"Every byte of JS is a tax you impose on your users."
对于今天的开发者,他的工具集既可以作为传统前端项目的性能优化武器库,也可以作为AI编码工作流的质量门禁。特别是agent-skills,它把一个资深工程师在Google十几年沉淀的工程纪律,变成任何AI编码智能体都能执行的技能文件——这是2026年AI辅助编程领域最值得认真评估的开源项目之一。
相关GitHub仓库:
agent-skills: github.com/addyosmani/agent-skills
critical: github.com/addyosmani/critical
个人站: addyosmani.com