From 36f91fbb7bbbd52ad4bf46f81fe91d364597a792 Mon Sep 17 00:00:00 2001 From: dacharyc Date: Tue, 21 Apr 2026 21:05:37 -0400 Subject: [PATCH 1/5] Rename 'llms-txt-freshness' to 'llms-txt-coverage' --- README.md | 4 ++-- SPEC.md | 44 ++++++++++++++++++++++++---------------- site/content/_index.md | 2 +- site/sharing-image.html | 2 +- site/static/sharing.png | Bin 78455 -> 78569 bytes 5 files changed, 30 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 2fc6df4..56fbabb 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ docs agent-friendly. The spec focuses on meeting the technical constraints of agent platforms (truncation limits, content negotiation, discovery); it does not consider qualitative evaluation of content. -**Status**: Draft (v0.3.0) +**Status**: Draft (v0.4.0) **Full spec**: [SPEC.md](SPEC.md) | **Website**: [agentdocsspec.com](https://agentdocsspec.com) @@ -38,7 +38,7 @@ The spec defines **22 checks across 7 categories**: | Page Size | 4 | Rendering strategy (SPA/CSR detection), markdown size, HTML size (pre/post conversion), content start position | | Content Structure | 3 | Tabbed content serialization blowup, section header quality, code fence validity | | URL Stability | 2 | Soft 404 detection, redirect behavior | -| Observability | 3 | `llms.txt` freshness, markdown/HTML content parity, cache header hygiene | +| Observability | 3 | `llms.txt` coverage, markdown/HTML content parity, cache header hygiene | | Authentication | 2 | Auth gate detection, alternative access paths for gated content | Each check has defined pass/warn/fail criteria, an automation level, and diff --git a/SPEC.md b/SPEC.md index eeac780..008e89a 100644 --- a/SPEC.md +++ b/SPEC.md @@ -3,8 +3,8 @@ | | | |--------------|--------------------------------------------------------------| | **Status** | Draft | -| **Version** | 0.3.0 | -| **Date** | 2026-03-31 | +| **Version** | 0.4.0 | +| **Date** | 2026-04-21 | | **Author** | Dachary Carey + community contributors | | **URL** | https://agentdocsspec.com | | **Repository** | https://github.com/agent-ecosystem/agent-docs-spec | @@ -133,7 +133,7 @@ are ordered by impact based on observed agent behavior: 6. **Monitor your agent-facing resources.** Treat `llms.txt` and markdown endpoints like any other production surface: check freshness, verify content parity with HTML, and ensure cache headers allow timely updates. - Checks: `llms-txt-freshness`, `markdown-content-parity`, + Checks: `llms-txt-coverage`, `markdown-content-parity`, `cache-header-hygiene` ## Spec Structure @@ -166,7 +166,7 @@ Some checks depend on the results of others: - `markdown-code-fence-validity` only runs if `markdown-url-support` or `content-negotiation` passes (the site must serve markdown for this check to apply). It also runs against any discovered `llms.txt` files. -- `llms-txt-freshness` only runs if `llms-txt-exists` passes. +- `llms-txt-coverage` only runs if `llms-txt-exists` passes. - `auth-alternative-access` only runs if `auth-gate-detection` returns warn or fail (the site must have auth-gated content for alternative access paths to be relevant). @@ -922,16 +922,16 @@ files and markdown endpoints are secondary outputs that often aren't wired into existing monitoring, so they can go stale, break, or drift from primary HTML content without anyone noticing. -### `llms-txt-freshness` +### `llms-txt-coverage` -- **What it checks**: Whether `llms.txt` content reflects the current state - of the documentation site. -- **Why it matters**: An `llms.txt` that was accurate at launch but hasn't - been updated since is a silent failure mode. New pages won't appear in the - index, deleted pages will send agents to 404s, and renamed pages will - produce redirect chains or broken links. Unlike `llms-txt-links-resolve` - (which catches broken links), this check catches missing coverage: pages - that exist on the site but aren't represented in `llms.txt`. +- **What it checks**: How much of the site's documentation is represented + in `llms.txt`. +- **Why it matters**: `llms.txt` is an agent's primary navigational index + into a documentation site. Pages missing from the index are effectively + invisible to agents that rely on it for discovery. Unlike + `llms-txt-links-resolve` (which catches broken links to pages that are + listed), this check catches the opposite problem: pages that exist on the + site but aren't listed at all. - **Result levels** (based on coverage of sitemap doc pages, excluding non-doc pages like blog posts, pricing, and login pages): - **Pass**: `llms.txt` links cover >=95% of the site's primary pages. @@ -948,8 +948,7 @@ HTML content without anyone noticing. Large sections of your documentation are missing from the index. - **Automation**: Heuristic. Compare links in `llms.txt` against a sitemap or crawled page list; flag pages present in the sitemap but absent from - `llms.txt`. Check `Last-Modified` or `ETag` headers on `llms.txt` vs. - recently changed doc pages. + `llms.txt`. - **Notes**: The definition of "primary pages" requires judgment. Not every page needs to be in `llms.txt` (changelog pages, release notes archives, and similar low-value pages can reasonably be omitted). Implementations @@ -1040,7 +1039,7 @@ markdown (as opposed to static files), where a backend issue could cause latency spikes that don't affect the HTML site. **Run freshness and parity checks on a schedule.** Rather than treating -`llms-txt-freshness` and `markdown-content-parity` as one-time audits, run +`llms-txt-coverage` and `markdown-content-parity` as one-time audits, run them weekly or on every deploy. A CI check that compares `llms.txt` link coverage against the sitemap can catch missing pages before they reach production. @@ -1251,7 +1250,7 @@ a first-class agent experience with their private documentation. | `http-status-codes` | URL Stability | Full | Medium | -- | | `redirect-behavior` | URL Stability | Partial | Medium | -- | | `llms-txt-directive` | Content Discoverability | Heuristic | Medium | -- | -| `llms-txt-freshness` | Observability | Heuristic | High | `llms-txt-exists` | +| `llms-txt-coverage` | Observability | Heuristic | High | `llms-txt-exists` | | `markdown-content-parity` | Observability | Heuristic | Medium | `markdown-url-support` or `content-negotiation` | | `cache-header-hygiene` | Observability | Full | Medium | -- | | `auth-gate-detection` | Authentication | Full | High | -- | @@ -1494,6 +1493,15 @@ welcome. ## Changelog +### v0.4.0 (2026-04-21) + +- Renamed `llms-txt-freshness` to `llms-txt-coverage`. The check compares + `llms.txt` URLs against the sitemap to measure how much of the site is + represented; that's coverage, not freshness. Whether listed URLs still + resolve is already handled by `llms-txt-links-resolve`. Rewrote the check + description to match. This is a breaking change for implementations that + reference the old check ID. + ### v0.3.0 (2026-03-31) - Merged Category 6 (Agent Discoverability Directives) into Category 1, @@ -1522,7 +1530,7 @@ spec. No new checks; all changes refine existing check definitions. - `llms-txt-directive`: Clarified that pass requires the directive in all (or nearly all) pages, not just presence in any single page. Clarified warn triggers: missing from some pages, or present but buried past 50%. -- `llms-txt-freshness`: Added default thresholds (>=95% pass, 80-95% warn, +- `llms-txt-freshness` (now `llms-txt-coverage`): Added default thresholds (>=95% pass, 80-95% warn, <80% fail) for sitemap coverage. The previous language was qualitative; implementations need concrete defaults for automation. - `markdown-content-parity`: Added default thresholds (<5% missing pass, diff --git a/site/content/_index.md b/site/content/_index.md index c04f864..39132fe 100644 --- a/site/content/_index.md +++ b/site/content/_index.md @@ -22,7 +22,7 @@ documentation site serves agent consumers. | Page Size | 4 | Rendering strategy (SPA/CSR detection), markdown size, HTML size (pre/post conversion), content start position | | Content Structure | 3 | Tabbed content serialization blowup, section header quality, code fence validity | | URL Stability | 2 | Soft 404 detection, redirect behavior | -| Observability | 3 | `llms.txt` freshness, markdown/HTML content parity, cache header hygiene | +| Observability | 3 | `llms.txt` coverage, markdown/HTML content parity, cache header hygiene | | Authentication | 2 | Auth gate detection, alternative access paths for gated content | Each check has defined pass/warn/fail criteria, an automation level, and diff --git a/site/sharing-image.html b/site/sharing-image.html index a70c46e..eca4cc1 100644 --- a/site/sharing-image.html +++ b/site/sharing-image.html @@ -113,7 +113,7 @@

Agent-Friendly Documentation Spec

Observability 3 - llms.txt freshness, content parity, cache header hygiene + llms.txt coverage, content parity, cache header hygiene Authentication diff --git a/site/static/sharing.png b/site/static/sharing.png index c5e8331e59b734e3a18c221064105f6091d9ce17..313383d008c611fcc73abb630ed2ddfb35618e9e 100644 GIT binary patch delta 27755 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 From 385b31e7f4986292d73ef7f16cba26dfe30c6d69 Mon Sep 17 00:00:00 2001 From: dacharyc Date: Tue, 21 Apr 2026 21:18:10 -0400 Subject: [PATCH 2/5] Generalize away from Claude Code-specific HTML-to-markdown pipeline --- SPEC.md | 70 ++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 42 insertions(+), 28 deletions(-) diff --git a/SPEC.md b/SPEC.md index 008e89a..5351938 100644 --- a/SPEC.md +++ b/SPEC.md @@ -712,28 +712,33 @@ that's only optimized for the markdown path is leaving most agents behind. ### `page-size-html` - **What it checks**: The character count of the HTML response, and the - character count after simulating an HTML-to-markdown conversion (using a - Turndown-equivalent pipeline). Reports both numbers. + character count after converting HTML to markdown (simulating what an + agent's processing pipeline produces). Reports both numbers. - **Why it matters**: Most agents receive HTML, not markdown. The raw HTML size determines whether the page even fits in the fetch buffer (Claude Code caps - at ~10MB). The post-conversion size is closer to what the agent's - summarization model actually sees, but conversion is lossy and - unpredictable. A 500KB HTML page might convert to 50KB of useful markdown - (safe) or 400KB of markdown including raw CSS text that survived conversion - (not safe). Both numbers matter. + at ~10MB). The post-conversion size is closer to what the agent actually + processes, but conversion pipelines vary across agents and are lossy and + unpredictable. Navigation boilerplate, serialized tabbed content, and + deeply nested page structure can all inflate the converted output well + beyond the documentation content itself. Both raw and post-conversion + sizes matter. - **Result levels** (based on post-conversion size, since that's what the model receives): - **Pass**: Converted content under 50,000 characters. - **Warn**: Converted content between 50,000 and 100,000 characters. - **Fail**: Converted content over 100,000 characters. - **Recommended action**: - - **Warn**: Review pages for reducible inline CSS/JS. Consider providing - markdown versions as a smaller alternative path for agents. - - **Fail**: Reduce inline CSS/JS, break large pages into smaller units, or - provide markdown versions that bypass the HTML conversion overhead. -- **Automation**: Full. Use a Turndown-equivalent library with default - configuration (no explicit `