Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude/skills/webperf-core-web-vitals/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ description: Intelligent Core Web Vitals analysis with automated workflows and d
license: MIT
metadata:
author: Joan Leon | @nucliweb
version: 2.0.1
version: 2.1.0
mcp-server: chrome-devtools
category: web-performance
repository: https://github.com/nucliweb/webperf-snippets
Expand Down
2 changes: 1 addition & 1 deletion .claude/skills/webperf-interaction/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ description: Intelligent interaction performance analysis with automated workflo
license: MIT
metadata:
author: Joan Leon | @nucliweb
version: 2.0.1
version: 2.1.0
mcp-server: chrome-devtools
category: web-performance
repository: https://github.com/nucliweb/webperf-snippets
Expand Down
2 changes: 1 addition & 1 deletion .claude/skills/webperf-loading/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ description: Intelligent loading performance analysis with automated workflows f
license: MIT
metadata:
author: Joan Leon | @nucliweb
version: 2.0.1
version: 2.1.0
mcp-server: chrome-devtools
category: web-performance
repository: https://github.com/nucliweb/webperf-snippets
Expand Down
2 changes: 1 addition & 1 deletion .claude/skills/webperf-media/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ description: Intelligent media optimization with automated workflows for images,
license: MIT
metadata:
author: Joan Leon | @nucliweb
version: 2.0.1
version: 2.1.0
mcp-server: chrome-devtools
category: web-performance
repository: https://github.com/nucliweb/webperf-snippets
Expand Down
2 changes: 1 addition & 1 deletion .claude/skills/webperf-resources/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ description: Intelligent network quality analysis with adaptive loading strategi
license: MIT
metadata:
author: Joan Leon | @nucliweb
version: 2.0.1
version: 2.1.0
mcp-server: chrome-devtools
category: web-performance
repository: https://github.com/nucliweb/webperf-snippets
Expand Down
2 changes: 1 addition & 1 deletion .claude/skills/webperf/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ description: Web performance measurement and debugging toolkit. Use when the use
license: MIT
metadata:
author: Joan Leon | @nucliweb
version: 2.0.1
version: 2.1.0
mcp-server: chrome-devtools
category: web-performance
repository: https://github.com/nucliweb/webperf-snippets
Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/extension-feedback.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ body:
attributes:
label: Extension version
description: In chrome://extensions, next to the name.
placeholder: 0.1.1
placeholder: 0.2.0
validations:
required: true
- type: input
Expand Down
14 changes: 11 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,16 @@ Format based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).

## [Unreleased]

---

## [2.1.0] — 2026-10-25

One change breaks code or agents that read a result: `getINPDetails()` of INP returns a result object instead of an array, so they need to read `items`. It is listed first under Changed. Issues gain a stable `code`, and `target` when there is one issue per thing.

### Added
- Issues carry a `code`, kebab-case and stable across runs and versions, so a comparison pairs the issues of two runs without reading their message, and a `target` with the URL, selector or name of what the issue is about when there is one issue per thing, such as an image or a CSS property. `snippets/SCHEMA.md` lists the codes of each snippet under Issue codes, and `cli/tests/unit/issue-codes.test.js` fails when the source and the table differ. Every snippet that returns issues carries its codes, and the contract fails on an issue without one.
- `npm run eval:mcp`: the same question about a local page with a known answer, asked to an agent with the webperf MCP server, with Chrome DevTools MCP and the webperf skills, and with Chrome DevTools MCP alone, graded on the diagnosis and measured in tokens, turns and time. It runs by hand, not in CI.
- The CLI reaches version 1.5.0 (see [`cli/CHANGELOG.md`](cli/CHANGELOG.md)): `--baseline` pairs the errors of a snippet by their code and target, and the MCP server gives the issue codes of each snippet in its schema resource.
- The CLI reaches version 1.4.0 (see [`cli/CHANGELOG.md`](cli/CHANGELOG.md)): `--baseline` compares a page, or a matrix combination by combination, with the `--json` output of an earlier run, with a threshold per metric, the new and fixed errors, warnings when the conditions differ, and `--fail-on-regression` to exit with `1` on a regression. The JSON output carries the conditions of each measurement in `conditions`.
- The CLI reaches version 1.3.0 (see [`cli/CHANGELOG.md`](cli/CHANGELOG.md)): `--runs` measures a page several times and reports the median run, and `--matrix` measures several pages on several devices and in several variants, such as with and without the consent cookie, from one JSON file, with a table of the medians.
- The CLI reaches version 1.2.0 (see [`cli/CHANGELOG.md`](cli/CHANGELOG.md)): `--header` for pages behind an access proxy, sent only to the origin of the measured URL, `--cpu` and `--network` for CPU and network throttling with the presets of DevTools, and `--own-domains` for the domains of the site that count as first party.
Expand All @@ -19,11 +26,11 @@ Format based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
- LCP-Subparts splits the Resource Load Time into the wait for the server and the download of the resource, in `details.subParts.resourceLoadTime.waiting` and `.download`, from its Resource Timing entry. When the wait is the larger part of the slowest phase, the console recommends the server, CDN and cache instead of compressing the image. The split is missing when another origin hides its timing (no `Timing-Allow-Origin`).

### Changed
- The audit comparison of the extension pairs issues by their code and target, whatever their messages say, and an issue whose severity moves is listed as changed, with both severities, instead of new and resolved. An audit saved before the codes pairs by message as before. The downloaded report carries the `code` and `target` of each issue.
- `getINPDetails()` of INP returns a result object, `{ script, status, count, items }`, like the other functions the snippets expose, instead of an array. `items` holds the 15 slowest interactions as plain data, with the target as a CSS selector instead of the DOM element. Code or agents that read the array need to read `items`.
- The extension, at version 0.2.0: the audit comparison pairs issues by their code and target, whatever their messages say, and an issue whose severity moves is listed as changed, with both severities, instead of new and resolved. An audit saved before the codes pairs by message as before. The downloaded report carries the `code` and `target` of each issue.
- The code in the first column of a table, such as an option of the CLI or a property, stays on one line. A table wider than the content column scrolls sideways inside its own box.
- CI skips the build and the end-to-end tests on its own when a pull request only changes documentation, instead of waiting for the `skip-e2e` label. Opening a pull request with the label fired two runs and cancelled one, which showed as a failed check.
- Examples, CLI commands, the `OWN_DOMAINS` hint of the snippets and the test data use the domains reserved for documentation (`example.com`, `example.net`, `example.org`) instead of real sites. `scripts/example-domains.test.js`, in `npm run test:site`, fails when a real site comes back as an example.
- `getINPDetails()` of INP returns a result object, `{ script, status, count, items }`, like the other functions the snippets expose, instead of an array. `items` holds the 15 slowest interactions as plain data, with the target as a CSS selector instead of the DOM element. Code or agents that read the array need to read `items`.

### Fixed
- The generated skills run in the conversation of the agent, not in a forked context (`context: fork`): a forked skill runs in a subagent that does not get the conversation, so it did not know the URL or the open page and answered that it had no page to measure.
Expand Down Expand Up @@ -202,7 +209,8 @@ A major version: several snippets return different fields or values (listed unde

---

[Unreleased]: https://github.com/nucliweb/webperf-snippets/compare/v2.0.1...HEAD
[Unreleased]: https://github.com/nucliweb/webperf-snippets/compare/v2.1.0...HEAD
[2.1.0]: https://github.com/nucliweb/webperf-snippets/compare/v2.0.1...v2.1.0
[2.0.1]: https://github.com/nucliweb/webperf-snippets/compare/v2.0.0...v2.0.1
[2.0.0]: https://github.com/nucliweb/webperf-snippets/compare/v1.3.0...v2.0.0
[1.3.0]: https://github.com/nucliweb/webperf-snippets/compare/v1.2.0...v1.3.0
Expand Down
8 changes: 7 additions & 1 deletion cli/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,14 @@ Format based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). The CL

## [Unreleased]

---

## [1.5.0] — 2026-10-25

### Changed
- The `webperf://schema` resource of the MCP server keeps the rules of the issue codes and leaves out the table of each snippet, which goes in `webperf://schema/{snippet}`. A snippet with issue codes and no section of its own has a resource with its table.
- `--baseline` pairs the errors of a snippet by their code and the resource they name (`target`), whatever their messages say; a resource of the page itself compares by its path and query, so a review app on another host matches production. A snippet without codes on one side, as in a baseline of 1.4.0, keeps pairing by message with the figures normalized. The errors in `baseline.errors` carry their `target`.
- The snippets the CLI runs give each issue a stable `code`, and a `target` when there is one issue per thing, as listed under Issue codes in `snippets/SCHEMA.md`. No message changes.

---

Expand Down Expand Up @@ -172,7 +177,8 @@ Format based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). The CL

---

[Unreleased]: https://github.com/nucliweb/webperf-snippets/compare/cli-v1.4.0...HEAD
[Unreleased]: https://github.com/nucliweb/webperf-snippets/compare/cli-v1.5.0...HEAD
[1.5.0]: https://github.com/nucliweb/webperf-snippets/compare/cli-v1.4.0...cli-v1.5.0
[1.4.0]: https://github.com/nucliweb/webperf-snippets/compare/cli-v1.3.0...cli-v1.4.0
[1.3.0]: https://github.com/nucliweb/webperf-snippets/compare/cli-v1.2.0...cli-v1.3.0
[1.2.0]: https://github.com/nucliweb/webperf-snippets/compare/cli-v1.1.0...cli-v1.2.0
Expand Down
4 changes: 2 additions & 2 deletions cli/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ npx webperf-snippets https://example.com --json
The JSON output records how the page was measured in `conditions`, so a later run can tell whether it measured the same way: the viewport, the workflow (or the path of the snippet with `--snippet`), the wait and the version of the CLI.

```json
"conditions": { "viewport": "mobile", "workflow": "core-web-vitals", "waitMs": 3000, "cliVersion": "1.4.0" }
"conditions": { "viewport": "mobile", "workflow": "core-web-vitals", "waitMs": 3000, "cliVersion": "1.5.0" }
```

Single snippet:
Expand Down Expand Up @@ -158,7 +158,7 @@ Without `--report-to` the CLI makes no external calls. With it, the results are
"timestamp": "2026-05-06T10:00:00.000Z",
"navMs": 1240,
"results": [],
"meta": { "viewport": "mobile", "waitMs": 3000, "cli_version": "1.4.0" }
"meta": { "viewport": "mobile", "waitMs": 3000, "cli_version": "1.5.0" }
}
```

Expand Down
2 changes: 1 addition & 1 deletion cli/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "webperf-snippets",
"version": "1.4.0",
"version": "1.5.0",
"mcpName": "io.github.nucliweb/webperf-snippets",
"description": "Run curated WebPerf Snippets headlessly via Playwright. Diagnose Core Web Vitals beyond what Lighthouse exposes.",
"type": "module",
Expand Down
4 changes: 2 additions & 2 deletions cli/server.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@
"source": "github",
"subfolder": "cli"
},
"version": "1.4.0",
"version": "1.5.0",
"packages": [
{
"registryType": "npm",
"registryBaseUrl": "https://registry.npmjs.org",
"identifier": "webperf-snippets",
"version": "1.4.0",
"version": "1.5.0",
"transport": {
"type": "stdio"
},
Expand Down
4 changes: 2 additions & 2 deletions content/CLI.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ npx webperf-snippets https://example.com --json
The JSON output records how the page was measured in `conditions`, so a later run can tell whether it measured the same way: the viewport, the workflow (or the path of the snippet with `--snippet`), the wait and the version of the CLI.

```json
"conditions": { "viewport": "mobile", "workflow": "core-web-vitals", "waitMs": 3000, "cliVersion": "1.4.0" }
"conditions": { "viewport": "mobile", "workflow": "core-web-vitals", "waitMs": 3000, "cliVersion": "1.5.0" }
```

Run a single snippet by alias or by its own name, in any case. Every snippet of the collection runs this way, with or without its category:
Expand Down Expand Up @@ -159,7 +159,7 @@ Without `--report-to` the CLI makes no external calls. With it, the results are
"timestamp": "2026-05-06T10:00:00.000Z",
"navMs": 1240,
"results": [],
"meta": { "viewport": "mobile", "waitMs": 3000, "cli_version": "1.4.0" }
"meta": { "viewport": "mobile", "waitMs": 3000, "cli_version": "1.5.0" }
}
```

Expand Down
2 changes: 1 addition & 1 deletion dist/antigravity/webperf-core-web-vitals/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ tools:
license: MIT
metadata:
author: Joan Leon | @nucliweb
version: 2.0.1
version: 2.1.0
mcp-server: chrome-devtools
category: web-performance
repository: https://github.com/nucliweb/webperf-snippets
Expand Down
2 changes: 1 addition & 1 deletion dist/antigravity/webperf-interaction/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ tools:
license: MIT
metadata:
author: Joan Leon | @nucliweb
version: 2.0.1
version: 2.1.0
mcp-server: chrome-devtools
category: web-performance
repository: https://github.com/nucliweb/webperf-snippets
Expand Down
2 changes: 1 addition & 1 deletion dist/antigravity/webperf-loading/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ tools:
license: MIT
metadata:
author: Joan Leon | @nucliweb
version: 2.0.1
version: 2.1.0
mcp-server: chrome-devtools
category: web-performance
repository: https://github.com/nucliweb/webperf-snippets
Expand Down
2 changes: 1 addition & 1 deletion dist/antigravity/webperf-media/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ tools:
license: MIT
metadata:
author: Joan Leon | @nucliweb
version: 2.0.1
version: 2.1.0
mcp-server: chrome-devtools
category: web-performance
repository: https://github.com/nucliweb/webperf-snippets
Expand Down
2 changes: 1 addition & 1 deletion dist/antigravity/webperf-resources/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ tools:
license: MIT
metadata:
author: Joan Leon | @nucliweb
version: 2.0.1
version: 2.1.0
mcp-server: chrome-devtools
category: web-performance
repository: https://github.com/nucliweb/webperf-snippets
Expand Down
2 changes: 1 addition & 1 deletion dist/antigravity/webperf/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ max_turns: 5
license: MIT
metadata:
author: Joan Leon | @nucliweb
version: 2.0.1
version: 2.1.0
mcp-server: chrome-devtools
category: web-performance
repository: https://github.com/nucliweb/webperf-snippets
Expand Down
2 changes: 1 addition & 1 deletion extension/manifest.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"manifest_version": 3,
"name": "WebPerf Snippets",
"version": "0.1.1",
"version": "0.2.0",
"description": "Run the WebPerf Snippets on the inspected page from a DevTools panel, and read their results.",
"icons": {
"16": "icons/icon-16.png",
Expand Down
6 changes: 3 additions & 3 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "webperf-snippets-docs",
"private": true,
"version": "2.0.1",
"version": "2.1.0",
"description": "Web Performance Snippets — documentation site",
"workspaces": [
"cli"
Expand Down
2 changes: 1 addition & 1 deletion public/llms-full.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Tested JavaScript snippets that measure and debug web performance. Your AI agent runs them for you, or you run them yourself in DevTools.
Source: https://webperf-snippets.net
Version: 2.0.1
Version: 2.1.0

---

Expand Down
2 changes: 1 addition & 1 deletion public/llms.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

> Tested JavaScript snippets that measure and debug web performance. Your AI agent runs them for you, or you run them yourself in DevTools.
> Source: https://webperf-snippets.net
> Version: 2.0.1
> Version: 2.1.0
> Each link points to the Markdown version of a page; the HTML page is at the same URL without .md.

---
Expand Down
2 changes: 1 addition & 1 deletion skills/webperf-core-web-vitals/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ description: Intelligent Core Web Vitals analysis with automated workflows and d
license: MIT
metadata:
author: Joan Leon | @nucliweb
version: 2.0.1
version: 2.1.0
mcp-server: chrome-devtools
category: web-performance
repository: https://github.com/nucliweb/webperf-snippets
Expand Down
2 changes: 1 addition & 1 deletion skills/webperf-interaction/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ description: Intelligent interaction performance analysis with automated workflo
license: MIT
metadata:
author: Joan Leon | @nucliweb
version: 2.0.1
version: 2.1.0
mcp-server: chrome-devtools
category: web-performance
repository: https://github.com/nucliweb/webperf-snippets
Expand Down
2 changes: 1 addition & 1 deletion skills/webperf-loading/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ description: Intelligent loading performance analysis with automated workflows f
license: MIT
metadata:
author: Joan Leon | @nucliweb
version: 2.0.1
version: 2.1.0
mcp-server: chrome-devtools
category: web-performance
repository: https://github.com/nucliweb/webperf-snippets
Expand Down
2 changes: 1 addition & 1 deletion skills/webperf-media/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ description: Intelligent media optimization with automated workflows for images,
license: MIT
metadata:
author: Joan Leon | @nucliweb
version: 2.0.1
version: 2.1.0
mcp-server: chrome-devtools
category: web-performance
repository: https://github.com/nucliweb/webperf-snippets
Expand Down
2 changes: 1 addition & 1 deletion skills/webperf-resources/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ description: Intelligent network quality analysis with adaptive loading strategi
license: MIT
metadata:
author: Joan Leon | @nucliweb
version: 2.0.1
version: 2.1.0
mcp-server: chrome-devtools
category: web-performance
repository: https://github.com/nucliweb/webperf-snippets
Expand Down
2 changes: 1 addition & 1 deletion skills/webperf/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ description: Web performance measurement and debugging toolkit. Use when the use
license: MIT
metadata:
author: Joan Leon | @nucliweb
version: 2.0.1
version: 2.1.0
mcp-server: chrome-devtools
category: web-performance
repository: https://github.com/nucliweb/webperf-snippets
Expand Down
Loading