diff --git a/src/styles/styles.css b/src/styles/styles.css
index cf7a9322..0d3acf7b 100644
--- a/src/styles/styles.css
+++ b/src/styles/styles.css
@@ -905,3 +905,38 @@ input {
#answers h2:first-child {
margin-top: 0;
}
+
+.terminal {
+ display: flex;
+ flex-direction: column;
+ gap: 4px;
+ padding: 24px;
+ border-radius: 8px;
+ background: #2f3b3d;
+ color: #e8eef0;
+ font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
+ font-size: 13px;
+ line-height: 1.6;
+ text-decoration: none;
+ overflow-wrap: anywhere;
+}
+
+.terminal:hover,
+.terminal:focus {
+ color: #fff;
+ text-decoration: none;
+}
+
+.terminal-comment {
+ color: #9bb8bb;
+}
+
+.terminal-comment:not(:first-child) {
+ margin-top: 12px;
+}
+
+.terminal-prompt {
+ color: #9bb8bb;
+ margin-right: 8px;
+ user-select: none;
+}
From c807522112810e093cb6c5dec84d0f3807b46258 Mon Sep 17 00:00:00 2001
From: Max Ostapenko <1611259+max-ostapenko@users.noreply.github.com>
Date: Fri, 23 Oct 2026 22:42:01 +0200
Subject: [PATCH 2/5] docs: serve per-page Markdown and drop gh/curl from agent
requirements
---
astro.config.mjs | 2 +
package-lock.json | 318 +++++++++++++++++++++
package.json | 1 +
src/content/docs/docs/guides/ai-agents.mdx | 18 +-
src/pages/index.astro | 2 +-
5 files changed, 332 insertions(+), 9 deletions(-)
diff --git a/astro.config.mjs b/astro.config.mjs
index 729d7dbc..0adefb38 100644
--- a/astro.config.mjs
+++ b/astro.config.mjs
@@ -2,6 +2,7 @@ import { defineConfig } from 'astro/config';
import starlight from '@astrojs/starlight';
import starlightLinksValidator from 'starlight-links-validator';
import starlightLlmsTxt from 'starlight-llms-txt';
+import starlightMdTxt from 'starlight-md-txt';
const sourceMaps = process.env.SOURCE_MAPS === 'true';
@@ -72,6 +73,7 @@ export default defineConfig({
},
plugins: [
starlightLlmsTxt(),
+ starlightMdTxt(),
starlightLinksValidator({
exclude: ['/', '/about/**', '/faq/**', '/reports/**'], // Pages outside starlight
}),
diff --git a/package-lock.json b/package-lock.json
index 137ad04e..feec769b 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -23,6 +23,7 @@
"run-script-os": "1.1.6",
"starlight-links-validator": "^0.26.0",
"starlight-llms-txt": "^0.12.0",
+ "starlight-md-txt": "^0.1.1",
"web-vitals": "6.2.2",
"xml-js": "1.6.11",
"zod": "^4.6.5"
@@ -4162,6 +4163,29 @@
"node": ">= 0.6"
}
},
+ "node_modules/acorn": {
+ "version": "8.19.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.19.0.tgz",
+ "integrity": "sha512-oJlA3XiRm7Cyk6qFD2Jn8ak9B7jSy0qy00ADO3+8dpT0LSjFihQYv4C02LFCSYJV3Q37xYwwRy5m+IpIiUzqWw==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
"node_modules/agent-base": {
"version": "7.1.4",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
@@ -6841,6 +6865,32 @@
"node": ">=4.0"
}
},
+ "node_modules/estree-util-is-identifier-name": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz",
+ "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/estree-util-visit": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz",
+ "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree-jsx": "^1.0.0",
+ "@types/unist": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
"node_modules/esutils": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
@@ -10554,6 +10604,43 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/mdast-util-mdx": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz",
+ "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-mdx-expression": "^2.0.0",
+ "mdast-util-mdx-jsx": "^3.0.0",
+ "mdast-util-mdxjs-esm": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-mdx-expression": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz",
+ "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree-jsx": "^1.0.0",
+ "@types/hast": "^3.0.0",
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
"node_modules/mdast-util-mdx-jsx": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz",
@@ -10579,6 +10666,25 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/mdast-util-mdxjs-esm": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz",
+ "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree-jsx": "^1.0.0",
+ "@types/hast": "^3.0.0",
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
"node_modules/mdast-util-phrasing": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz",
@@ -10912,6 +11018,113 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/micromark-extension-mdx-expression": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz",
+ "integrity": "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "devlop": "^1.0.0",
+ "micromark-factory-mdx-expression": "^2.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-events-to-acorn": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-extension-mdx-jsx": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.2.tgz",
+ "integrity": "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "devlop": "^1.0.0",
+ "estree-util-is-identifier-name": "^3.0.0",
+ "micromark-factory-mdx-expression": "^2.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-events-to-acorn": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-mdx-md": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz",
+ "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-mdxjs": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz",
+ "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "acorn": "^8.0.0",
+ "acorn-jsx": "^5.0.0",
+ "micromark-extension-mdx-expression": "^3.0.0",
+ "micromark-extension-mdx-jsx": "^3.0.0",
+ "micromark-extension-mdx-md": "^2.0.0",
+ "micromark-extension-mdxjs-esm": "^3.0.0",
+ "micromark-util-combine-extensions": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-mdxjs-esm": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz",
+ "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "devlop": "^1.0.0",
+ "micromark-core-commonmark": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-events-to-acorn": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0",
+ "unist-util-position-from-estree": "^2.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
"node_modules/micromark-factory-destination": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz",
@@ -10957,6 +11170,34 @@
"micromark-util-types": "^2.0.0"
}
},
+ "node_modules/micromark-factory-mdx-expression": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.3.tgz",
+ "integrity": "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "devlop": "^1.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-events-to-acorn": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0",
+ "unist-util-position-from-estree": "^2.0.0",
+ "vfile-message": "^4.0.0"
+ }
+ },
"node_modules/micromark-factory-space": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz",
@@ -11168,6 +11409,32 @@
],
"license": "MIT"
},
+ "node_modules/micromark-util-events-to-acorn": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.3.tgz",
+ "integrity": "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "@types/unist": "^3.0.0",
+ "devlop": "^1.0.0",
+ "estree-util-visit": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0",
+ "vfile-message": "^4.0.0"
+ }
+ },
"node_modules/micromark-util-html-tag-name": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz",
@@ -13061,6 +13328,21 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/remark-mdx": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.1.tgz",
+ "integrity": "sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mdast-util-mdx": "^3.0.0",
+ "micromark-extension-mdxjs": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
"node_modules/remark-parse": {
"version": "11.0.0",
"resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz",
@@ -13871,6 +14153,28 @@
"astro": "^7.0.0"
}
},
+ "node_modules/starlight-md-txt": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/starlight-md-txt/-/starlight-md-txt-0.1.1.tgz",
+ "integrity": "sha512-BIkDcMO2T7aeghfM7HkZeK408SNHlxgV1Ew2BKEb6itSjH0ynGjlpF0ugZbZz4zjSK/P7Ns8VkA0watq5z/R8g==",
+ "dev": true,
+ "license": "MIT",
+ "workspaces": [
+ ".",
+ "docs"
+ ],
+ "dependencies": {
+ "remark-mdx": "^3.0.0",
+ "remark-parse": "^11.0.0",
+ "remark-stringify": "^11.0.0",
+ "unified": "^11.0.0",
+ "unist-util-visit": "^5.0.0"
+ },
+ "peerDependencies": {
+ "@astrojs/starlight": ">=0.30.0",
+ "astro": ">=4.0.0 || >=5.0.0 || >=6.0.0 || >=7.0.0"
+ }
+ },
"node_modules/statuses": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz",
@@ -14756,6 +15060,20 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/unist-util-position-from-estree": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz",
+ "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
"node_modules/unist-util-remove": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-4.0.0.tgz",
diff --git a/package.json b/package.json
index b89640df..bd041206 100644
--- a/package.json
+++ b/package.json
@@ -44,6 +44,7 @@
"run-script-os": "1.1.6",
"starlight-links-validator": "^0.26.0",
"starlight-llms-txt": "^0.12.0",
+ "starlight-md-txt": "^0.1.1",
"web-vitals": "6.2.2",
"xml-js": "1.6.11",
"zod": "^4.6.5"
diff --git a/src/content/docs/docs/guides/ai-agents.mdx b/src/content/docs/docs/guides/ai-agents.mdx
index 2ebce505..15df6a17 100644
--- a/src/content/docs/docs/guides/ai-agents.mdx
+++ b/src/content/docs/docs/guides/ai-agents.mdx
@@ -52,6 +52,13 @@ The plugin connects the Tech Report MCP server automatically. To use the server
## What's included
+### Skills
+
+| Skill | Use |
+|---|---|
+| `httparchive-docs-and-metrics` | Looks up these docs and discovers which `custom_metrics` keys exist in `crawl.pages` |
+| `httparchive-query-optimizer` | Inspects schemas, previews rows with `bq head`, dry-runs queries, and applies the rules in [Minimizing query costs](/docs/guides/minimizing-costs/) |
+
### Tech Report tools
| Tool | Returns |
@@ -63,18 +70,13 @@ The plugin connects the Tech Report MCP server automatically. To use the server
| `get_lighthouse_metrics`, `get_audits_metrics` | Lighthouse category scores and audit results |
| `get_page_weight_metrics` | Page, JavaScript and CSS weight |
-### Skills
-
-| Skill | Use |
-|---|---|
-| `httparchive-docs-and-metrics` | Looks up these docs and discovers which `custom_metrics` keys exist in `crawl.pages` |
-| `httparchive-query-optimizer` | Inspects schemas, previews rows with `bq head`, dry-runs queries, and applies the rules in [Minimizing query costs](/docs/guides/minimizing-costs/) |
-
## Requirements
The Tech Report tools work out of the box.
-The BigQuery skills run the `bq`, `curl` and `gh` command-line tools, so install the [Google Cloud CLI](https://cloud.google.com/sdk/docs/install) and authenticate against a project with BigQuery enabled, as described in [Getting started](/docs/guides/getting-started/). Queries are billed to that project.
+The BigQuery skills run the `bq` command-line tool, so install the [Google Cloud CLI](https://cloud.google.com/sdk/docs/install) and authenticate against a project with BigQuery enabled, as described in [Getting started](/docs/guides/getting-started/). Queries are billed to that project. The skills read these docs with the agent's built-in web fetch, so they need no other tools.
+
+Every docs page is also available as Markdown at its URL plus `.md`, for example [`/docs/guides/minimizing-costs.md`](/docs/guides/minimizing-costs.md), and the full docs are at [`/llms.txt`](/llms.txt). Point any agent at these to give it HTTP Archive context.
:::caution
An agent can write queries that scan terabytes. The skills tell it to dry-run before every query and to prototype on `rank <= 1000` first, but review the estimated bytes before letting it run anything large. Consider setting a [custom query quota](https://cloud.google.com/bigquery/docs/custom-quotas) on the project.
diff --git a/src/pages/index.astro b/src/pages/index.astro
index 5b3e4405..4aa8ca81 100644
--- a/src/pages/index.astro
+++ b/src/pages/index.astro
@@ -165,7 +165,7 @@ const description =
AI Agents
- Claude Code & Codex Plugin
+ Agents Plugin
From 05a0ccb5da256f56d4ab67dd0195c9fa79d7ba2e Mon Sep 17 00:00:00 2001
From: Max Ostapenko <1611259+max-ostapenko@users.noreply.github.com>
Date: Fri, 23 Oct 2026 22:53:43 +0200
Subject: [PATCH 3/5] Apply suggestion from @tunetheweb
Co-authored-by: Barry Pollard
---
src/content/docs/docs/guides/ai-agents.mdx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/content/docs/docs/guides/ai-agents.mdx b/src/content/docs/docs/guides/ai-agents.mdx
index 15df6a17..fee9a188 100644
--- a/src/content/docs/docs/guides/ai-agents.mdx
+++ b/src/content/docs/docs/guides/ai-agents.mdx
@@ -79,7 +79,7 @@ The BigQuery skills run the `bq` command-line tool, so install the [Google Cloud
Every docs page is also available as Markdown at its URL plus `.md`, for example [`/docs/guides/minimizing-costs.md`](/docs/guides/minimizing-costs.md), and the full docs are at [`/llms.txt`](/llms.txt). Point any agent at these to give it HTTP Archive context.
:::caution
-An agent can write queries that scan terabytes. The skills tell it to dry-run before every query and to prototype on `rank <= 1000` first, but review the estimated bytes before letting it run anything large. Consider setting a [custom query quota](https://cloud.google.com/bigquery/docs/custom-quotas) on the project.
+An agent can write queries that scan terabytes. The skills tell it to dry-run before every query and to prototype on `rank <= 1000` first, but review the estimated bytes before letting it run anything large. We **strongly** recommend setting a [custom query quota](https://cloud.google.com/bigquery/docs/custom-quotas) on the project.
:::
## Example prompts
From 30a870fee9813965b1de41da4502796fc30da8f8 Mon Sep 17 00:00:00 2001
From: Max Ostapenko <1611259+max-ostapenko@users.noreply.github.com>
Date: Fri, 23 Oct 2026 22:54:06 +0200
Subject: [PATCH 4/5] Apply suggestion from @tunetheweb
Co-authored-by: Barry Pollard
---
src/content/docs/docs/guides/ai-agents.mdx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/content/docs/docs/guides/ai-agents.mdx b/src/content/docs/docs/guides/ai-agents.mdx
index fee9a188..fe67c9e6 100644
--- a/src/content/docs/docs/guides/ai-agents.mdx
+++ b/src/content/docs/docs/guides/ai-agents.mdx
@@ -78,7 +78,7 @@ The BigQuery skills run the `bq` command-line tool, so install the [Google Cloud
Every docs page is also available as Markdown at its URL plus `.md`, for example [`/docs/guides/minimizing-costs.md`](/docs/guides/minimizing-costs.md), and the full docs are at [`/llms.txt`](/llms.txt). Point any agent at these to give it HTTP Archive context.
-:::caution
+:::danger
An agent can write queries that scan terabytes. The skills tell it to dry-run before every query and to prototype on `rank <= 1000` first, but review the estimated bytes before letting it run anything large. We **strongly** recommend setting a [custom query quota](https://cloud.google.com/bigquery/docs/custom-quotas) on the project.
:::
From 9509e50716cc4aa8f1bf5859746b81f9ae519db5 Mon Sep 17 00:00:00 2001
From: Max Ostapenko <1611259+max-ostapenko@users.noreply.github.com>
Date: Sat, 24 Oct 2026 00:25:42 +0200
Subject: [PATCH 5/5] docs: bump starlight-md-txt to 0.2.0 and enable
absoluteLinks
---
astro.config.mjs | 2 +-
package-lock.json | 16 ++++++++++++----
package.json | 2 +-
3 files changed, 14 insertions(+), 6 deletions(-)
diff --git a/astro.config.mjs b/astro.config.mjs
index 0adefb38..150e39de 100644
--- a/astro.config.mjs
+++ b/astro.config.mjs
@@ -73,7 +73,7 @@ export default defineConfig({
},
plugins: [
starlightLlmsTxt(),
- starlightMdTxt(),
+ starlightMdTxt({ absoluteLinks: true }),
starlightLinksValidator({
exclude: ['/', '/about/**', '/faq/**', '/reports/**'], // Pages outside starlight
}),
diff --git a/package-lock.json b/package-lock.json
index feec769b..6f528c5f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -23,7 +23,7 @@
"run-script-os": "1.1.6",
"starlight-links-validator": "^0.26.0",
"starlight-llms-txt": "^0.12.0",
- "starlight-md-txt": "^0.1.1",
+ "starlight-md-txt": "^0.2.0",
"web-vitals": "6.2.2",
"xml-js": "1.6.11",
"zod": "^4.6.5"
@@ -14154,9 +14154,9 @@
}
},
"node_modules/starlight-md-txt": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/starlight-md-txt/-/starlight-md-txt-0.1.1.tgz",
- "integrity": "sha512-BIkDcMO2T7aeghfM7HkZeK408SNHlxgV1Ew2BKEb6itSjH0ynGjlpF0ugZbZz4zjSK/P7Ns8VkA0watq5z/R8g==",
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/starlight-md-txt/-/starlight-md-txt-0.2.0.tgz",
+ "integrity": "sha512-uzZai1PJJoDLkuFTe2D2dKR5O839skOxHU+kbVwRhJsZgwHy/Xen5rsRi4uTvp6ssC2E4PVxWoDp2r/D/cA7rw==",
"dev": true,
"license": "MIT",
"workspaces": [
@@ -14164,6 +14164,8 @@
"docs"
],
"dependencies": {
+ "mdast-util-gfm-table": "^2.0.0",
+ "micromark-extension-gfm-table": "^2.1.2",
"remark-mdx": "^3.0.0",
"remark-parse": "^11.0.0",
"remark-stringify": "^11.0.0",
@@ -14171,8 +14173,14 @@
"unist-util-visit": "^5.0.0"
},
"peerDependencies": {
+ "@astrojs/mdx": ">=3.0.0",
"@astrojs/starlight": ">=0.30.0",
"astro": ">=4.0.0 || >=5.0.0 || >=6.0.0 || >=7.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@astrojs/mdx": {
+ "optional": true
+ }
}
},
"node_modules/statuses": {
diff --git a/package.json b/package.json
index bd041206..6bbf84ec 100644
--- a/package.json
+++ b/package.json
@@ -44,7 +44,7 @@
"run-script-os": "1.1.6",
"starlight-links-validator": "^0.26.0",
"starlight-llms-txt": "^0.12.0",
- "starlight-md-txt": "^0.1.1",
+ "starlight-md-txt": "^0.2.0",
"web-vitals": "6.2.2",
"xml-js": "1.6.11",
"zod": "^4.6.5"