Skip to content

improve agent readiness - #891

Open
HarshCasper wants to merge 8 commits into
mainfrom
aws-docs-agent-readiness
Open

improve agent readiness#891
HarshCasper wants to merge 8 commits into
mainfrom
aws-docs-agent-readiness

Conversation

@HarshCasper

Copy link
Copy Markdown
Member

Summary

Improves how docs.localstack.cloud presents itself to AI agents and crawlers,
following an Is-Agentic readiness audit that scored the
site 59/100. The site is a static Astro + Starlight build on Cloudflare Pages, so
every change here is a static-file or build-time change — no runtime or
architecture change, and the existing hero/product-card visual design is
preserved.

Changes (mapped to audit items)

Audit item What shipped
Agent-friendly 404 (Essential) src/content/docs/404.md overrides Starlight's default 404. Cloudflare Pages serves it with a real HTTP 404, and the body gives humans and agents recovery links: docs home + product sections, plus a dedicated "For AI agents" section pointing at the sitemap, llms.txt, llms-full.txt, agents.md, and the API catalog.
Content without JavaScript (Essential) Homepage gains server-rendered "What is LocalStack?", "Who is LocalStack for?", and "Where to go next" sections with a proper h1→h2→h3 hierarchy, plus a real description. Hero and product cards are unchanged.
JSON-LD structured data (Recommended) Homepage head emits a schema.org @graphOrganization + WebSite + SoftwareApplication.
Organization schema completeness (Recommended) The Organization node includes contactPoint (support@localstack.cloud) and a PostalAddress (LocalStack GmbH, Zurich).
Metadata completeness (Recommended) og:image / twitter:image added site-wide using the official LocalStack social card. canonical, html lang, and og:type were already present.
Agent instruction / when-to-use (Recommended) "When to use LocalStack" guidance added to both agents.md and llms.txt (via the details + optionalLinks plugin options), naming best-fit use cases and how to call LocalStack from an agent.
Markdown content negotiation (Essential — partial) Vary: Accept, Accept-Encoding advertised via _headers. Full Accept-header negotiation needs a Pages Function (see below) and is intentionally out of scope for this pure-static change.

The links validator config gains an exclude list for the generated/static
resources linked from the 404 page (llms*.txt, sitemap-index.xml,
agents.md, .well-known/**) so the build stays green.

Verification

  • npm run build (Node 22.12.0) — success, 401 pages, "All internal links are valid".
  • Manual checks against the built dist/: JSON-LD parses with all three nodes and the required Organization fields; og:image/twitter:image present; 404 recovery links present; Vary: Accept header present; when-to-use text in agents.md and llms.txt; .well-known JSON valid.
  • Browser check: homepage renders with the hero/cards intact and the new sections in the TOC; a nonexistent path returns HTTP 404 with the recovery page.

Deferred — need an infrastructure or product decision (not in this PR)

  • JSON error responses and full markdown content negotiation (both Essential): require a Cloudflare Pages Function for Accept-header content negotiation — a departure from the current pure-static architecture. Biggest remaining score lever if approved.
  • MCP full credit: needs a hosted Streamable HTTP MCP endpoint (the server is stdio today) — a decision for the MCP-server team.
  • Brand-name discoverability: off-site SEO (consistent NAP, press backlinks). The new Organization JSON-LD helps entity resolution; the rest is not a code change.
  • Trust anchor pages (/about, /contact): these live on www.localstack.cloud; not duplicated on the docs subdomain.

Add a schema.org JSON-LD @graph (Organization + WebSite +
SoftwareApplication) to the homepage head so agents and crawlers can
resolve LocalStack's identity programmatically. The Organization node
carries contactPoint (support email) and a PostalAddress for business
verification and contact queries.

Emit og:image / twitter:image site-wide using the official LocalStack
social card (1200x630); Starlight already emits og:type and
twitter:card but no image.

Addresses Is-Agentic checks: JSON-LD structured data, Organization
schema completeness, and metadata completeness (og:image).
Override Starlight's default 404 with a page that gives humans and
agents a way to recover: links to the docs home, each product section,
getting-started, and help/support, plus a dedicated section pointing
agents at the machine-readable indexes (sitemap, llms.txt,
llms-full.txt, agents.md, api-catalog).

Cloudflare Pages serves dist/404.html with a real HTTP 404 status for
unmatched paths, so agents get a 404 code and a useful body instead of
a bare 'Page not found'.

Exclude the generated/static resources linked from the page (llms*.txt,
sitemap-index.xml, agents.md, .well-known/**) from the links validator,
since they are not Starlight content routes.

Addresses Is-Agentic check: agent-friendly 404s.
Add three server-rendered sections below the hero and product cards —
'What is LocalStack?', 'Who is LocalStack for?', and 'Where to go
next' — with a proper h2 heading hierarchy and internal links. This
gives AI crawlers meaningful, structured content in the raw HTML
(no JavaScript required) and directly answers the common agent query
'what does this site do and who is it for?'.

Also replace the placeholder frontmatter description ('Welcome to
LocalStack Docs') with the real product one-liner, improving the meta
description and og:description.

The existing hero and product-card visual design is unchanged.

Addresses Is-Agentic check: content without JavaScript.
Tell agents when LocalStack is the right tool. Add a heading-less
'when to use' + 'how to call it from an agent' block to llms.txt via
the plugin's details option, plus optionalLinks surfacing agents.md and
the MCP server. Add a 'When to use LocalStack' section near the top of
agents.md naming the best-fit use cases (local dev, CI testing, IaC
validation, offline debugging) and the boundary (not a production
runtime).

Addresses Is-Agentic check: agent instruction / when-to-use guidance.
Add Vary: Accept, Accept-Encoding site-wide via _headers to signal
representation negotiation to caches and agents. Cloudflare's edge
cache ignores non-encoding Vary, so there is no caching cost. Full
text/markdown content negotiation still requires a Cloudflare Pages
Function and is intentionally out of scope here (pure-static build).
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Aug 24, 2026

Copy link
Copy Markdown

Deploying localstack-docs with  Cloudflare Pages  Cloudflare Pages

Latest commit: f427a16
Status: ✅  Deploy successful!
Preview URL: https://5664868c.localstack-docs.pages.dev
Branch Preview URL: https://aws-docs-agent-readiness.localstack-docs.pages.dev

View logs

@HarshCasper HarshCasper changed the title aws-docs: improve agent readiness (Is-Agentic score) aws-docs: improve agent readiness Aug 24, 2026
Update the LocalStack identity description (used in the homepage JSON-LD
Organization/WebSite/SoftwareApplication nodes and in the llms.txt
summary) to the platform-oriented wording, and correct the
SoftwareApplication offer to the current tiers (Hobby, Starter,
Ultimate, Enterprise).
Rewrite the homepage 'What is / Who is it for / Where to go next'
sections using facts from the localstack.cloud FAQ (same APIs, SDKs,
and IaC tools as the live cloud; development and testing only; no
provisioning delays or cloud bills; ephemeral and AI-agent sandboxes),
and align the page meta description with the platform wording.

Drop em dashes and promotional phrasing from the copy I authored (the
homepage sections and the 404 recovery links) so it does not read as
AI-generated. Remaining em dashes on the homepage are in the
pre-existing HeroSection component, which is out of scope here.
Replace the hero paragraph with plain, factual copy: LocalStack runs
AWS, Snowflake, and Azure APIs in local containers, you use the same
SDKs/CLIs/IaC tools, then deploy to the real cloud. Removes the em
dashes and promotional phrasing ('Spin up fully functional',
'integrates seamlessly', 'ship faster and safer') so the homepage does
not read as AI-generated. Styling and the 'Choose a product' heading
are unchanged.
@HarshCasper HarshCasper changed the title aws-docs: improve agent readiness improve agent readiness Aug 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant