Skip to content

improve agent readiness - #891

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

improve agent readiness#891
HarshCasper wants to merge 10 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: 64d8d65
Status: ✅  Deploy successful!
Preview URL: https://cc83350f.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
Comment thread src/content/docs/index.mdx

@quetzalliwrites quetzalliwrites left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this looks like a messy ai slop hastily slapped into the homepage, so let's not :D

https://5664868c.localstack-docs.pages.dev/

@quetzalliwrites

quetzalliwrites commented Aug 26, 2026

Copy link
Copy Markdown
Collaborator

PR Review: Structural & Information Architecture Adjustments

Thanks for again for working on this @HarshCasper and helping us keep improving our agentic readiness in docs!

Adding a summary here of what we discussed today offline...


The current page structure (homepage updates) is inverted because it asks users to choose a product line before explaining what LocalStack is. We need to align the layout with standard progressive disclosure principles.

Here is what needs to be updated and why:

  • Inverted Hierarchy (Above the Fold): Move "What is LocalStack?" and "Who is LocalStack for?" to the top. We must establish core value and ICP relevance before asking users to select a path.
  • Redundant CTAs: Delete the bottom "Where to go next" section entirely. It duplicates routing that belongs on our dedicated product landing pages.
  • Repositioned Product Choice: Move the "Choose a Product" section (AWS vs. Snowflake) to the bottom. It functions best as the primary conversion point after the context is set.
  • Strategic AI Note: Add a distinct callout/note component near the product section pointing users to our documentation on building with AI agents.

Target Page Sequence:

  1. Definition: What is LocalStack? (Above the fold)
  2. ICP Alignment: Who is LocalStack for? (Include AI agents persona)
  3. Primary CTA: Choose your product line (AWS vs. Snowflake)
  4. Strategic Note: AI & Agentic Workflow documentation link

I will now reorder these components to match this flow, and add a commit w/ the fixes. @HarshCasper

Lead with "What is LocalStack?" and "Who is LocalStack for?" above the
fold, move the product-choice hero/cards below that context, drop the
redundant "Where to go next" section, and turn the AI-agent pointer
into a note callout next to the product cards.
@quetzalliwrites

quetzalliwrites commented Aug 26, 2026

Copy link
Copy Markdown
Collaborator

Pushed 8ab97c22 implementing the restructure discussed above:

  • What is LocalStack? and Who is LocalStack for? now lead, above the fold.
  • The hero + product cards (Choose a product to get started) moved below that context, as the primary CTA.
  • Where to go next is removed entirely.
  • The AI-agent pointer (agents.md / llms.txt) is now a :::note callout right after the product cards, instead of a plain closing paragraph.

@quetzalliwrites

Copy link
Copy Markdown
Collaborator

Already much better experience:
https://2f7079f7.localstack-docs.pages.dev/

Next, I'm taking a quick look at the homepage content. I want to make it concise where possible while retaining the new value.

@quetzalliwrites

quetzalliwrites commented Aug 26, 2026

Copy link
Copy Markdown
Collaborator

@HarshCasper @remotesynth wty, thoughts? What if we update harsh's new suggested content in the homepage for a slightly more concise version, like below? Let me know if you think it's strips away value to the reader/too brief.


Welcome to LocalStack Docs

What is LocalStack?
LocalStack is a local cloud emulator. It runs AWS (120+ services), Snowflake, and Azure APIs in containers on your local machine, enabling you to build, test, and debug cloud apps without a cloud account.

Use your existing SDKs, CLIs, and IaC tools (CDK, Terraform, Pulumi). Code that runs against LocalStack deploys to the real cloud without changes. It is designed purely for development and test workloads, giving you instant feedback loops with zero cloud costs or provisioning delays.

Who is LocalStack for?
Engineers building cloud applications and the AI agents working alongside them:

  • Developers: Instant, on-demand local environments instead of shared staging accounts.
  • Test & CI Engineers: Isolated, reproducible environments that eliminate flaky test runs.
  • Platform & DevOps: Local IaC validation and self-service sandboxes via the Ephemeral Instance API.
  • Data Engineers: Fast, local iteration on Snowflake queries and data pipelines.
  • AI Agents: Dedicated local sandboxes to reproduce and fix bugs without cloud access or added cost.

@quetzalliwrites

Copy link
Copy Markdown
Collaborator

hey @HarshCasper brian just noticed a tiny css font centering problem in the last paragragh

Screenshot 2026-08-27 at 2 29 20 PM

Apply the more concise rewrite proposed in PR review discussion,
trimming both sections roughly in half while keeping the core claims.
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.

2 participants