Skip to content

v0.2.0 — the MCP server is gone, the CLI and the skill are the product

Latest

Choose a tag to compare

@Be1zebub Be1zebub released this 21 Oct 00:29

Breaking: the MCP server is gone

The MCP stdio transport could not carry a long analysis reliably. Browser launch,
collection and Lighthouse regularly exceeded the client timeout, and the server
died mid-run without returning a partial result. A full run takes about three
minutes, and a page that never goes network-idle could not be measured at all.

The CLI is now the only runtime interface, and the agent-facing layer is a skill.

Removed

  • the perfgraph mcp subcommand, the MCP server, handlers, resources, prompts
    and progress reporting
  • the @modelcontextprotocol/sdk dependency

Added

  • skills/perfgraph — the agent skill: how to run the CLI, which artifacts
    to read in which order, and how to qualify causal claims. It ships inside
    the npm package.
  • insights.toon separates the two measurements: metrics from the
    PerfGraph run and lighthouse from Lighthouse's own navigation.
  • Lighthouse insight audits become findings — forced reflows, oversized
    images, bytes that are not cached, duplicated or legacy JavaScript, fonts
    that block the text. Each carries the value Lighthouse measured and the
    sources involved.
  • criticalPath.documentChain reports a page that loaded more than one
    document, with the server time spent on a response nobody used.
  • insights.documentResponse carries the headers of the document the
    visitor received: cache status, cache-control, content encoding, alt-svc.
  • insights.lighthouse.failedAudits lists the audits that did not pass,
    with their values.
  • The network summary lists the heaviest resources, not only the slowest, and
    the run summary reports the spread of the lab run — the run the report
    describes — next to the spread of the Lighthouse runs.
  • The CLI prints a short summary for the person who ran it: score, issue
    counts, data-quality warnings and where the report is.
  • perfgraph --version, so an agent can check that the skill it loaded
    matches the tool it runs.

Fixed

The report used to state more than it had measured. Most of the work in this
release went into that.

  • The LCP element is the one the browser reported, taken from the final
    Performance API candidate — not the largest downloaded image. The trace LCP
    was never parsed at all, because the event name did not match the one Chrome
    emits.
  • The time to the first byte is measured, not added up wrongly: the TLS
    handshake is no longer counted twice, the time a request spent in a proxy is
    part of it, and the server wait is the server wait.
  • Main-thread work is counted per process and only for the outermost
    events, and Total Blocking Time counts the main thread only.
  • The run environment and the collection warnings reach the report, and
    the report and the insights judge the quality of the data the same way.
  • One finding is counted once. The impact node of a chain states the
    consequence and no longer raises the severity of the verdict, and a
    Lighthouse audit is a warning at most — the measured signals of the run
    decide how bad the page is.
  • A page that never goes network-idle can be measured: the run waits for
    the load event and for the LCP.
  • A run against a site that serves a request initiated by itself — Google
    does — no longer dies with a stack overflow while building the critical
    path.
  • A URL without a scheme is accepted, and a failed run prints its message
    instead of a stack trace.

Installing

npm install -g perfgraph
npx playwright install chromium

The skill can be copied into an agent's skills directory:

cp -r node_modules/perfgraph/skills/perfgraph ~/.config/opencode/skills/

Full Changelog: v0.1.2...v0.2.0