Skip to content

Serve /quickstart.md as plain markdown - #609

Merged
isuttell merged 3 commits into
mainfrom
cursor/spl-401-quickstart-md-4e27
Sep 16, 2026
Merged

isuttell merged 3 commits into
mainfrom
cursor/spl-401-quickstart-md-4e27

Conversation

@isuttell

@isuttell isuttell commented Sep 16, 2026

Copy link
Copy Markdown
Contributor

Summary

GET /quickstart.md now returns the same markdown as the rendered /quickstart page. That honors the "append .md to any page" promise on the first page published READMEs send agents to.

Changes

  • Worker negotiator serves any known .md URL as text/markdown without an Accept hint.
  • Path lookup strips .md, so /quickstart.md === /quickstart === quickstartMarkdown().
  • Dedicated /quickstart.md route matches the existing docs .md file-route pattern.
  • llms.txt lists https://splitch.dev/quickstart.md.
  • No quickstart copy change. No SDK docs refresh.

Top-level route sweep

Sitemap HTML pages that are not under /docs:

Page .md variant Result
/ /.md already served via llms.txt / Accept; suffix now resolves
/quickstart /quickstart.md 200 text/markdown; charset=utf-8, same body as HTML source

Non-HTML top-level routes left alone: /health, /llms.txt, /robots.txt, /sitemap.xml, /.well-known/api-catalog.

Pinned by markdown-route.test.ts against staticPagePaths from the sitemap (["/", "/quickstart"]) and by negotiate-markdown.test.ts for GET/HEAD /quickstart.md with no Accept header.

Risk: LOW

  • Areas touched: apps/marketing public markdown routing
  • Security: public content only
  • Performance: suffix check on GET/HEAD
  • Breaking: none; previously 404, now 200

Test plan / evidence

Head: 504915b4d2f9643b4fe3ac55f39d4e96b9c59b9d
Base / merge-base: 4ccab72d81e751e60ee3e9a8cc6f7fc3e1b68643 (origin/main)

Issue: SPL-401

Linear Issue: SPL-401

Open in Web Open in Cursor 

View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

Honor the append-.md rule on the top-level quickstart page agents are
told to read first, and pin the suffix lookup so a route refactor cannot
drop it.

Issue: SPL-401

Co-authored-by: Isaac Suttell <isaac@zaks.io>
@coderabbitai

coderabbitai Bot commented Sep 16, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. To trigger a review, include @coderabbitai review in the PR description. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Team

Run ID: 0d94892b-cfac-4100-8b33-060f4c3fff7d

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

@isuttell
isuttell marked this pull request as ready for review September 16, 2026 17:27
@isuttell
isuttell merged commit 6400ea3 into main Sep 16, 2026
4 checks passed
@isuttell
isuttell deleted the cursor/spl-401-quickstart-md-4e27 branch September 16, 2026 18:03
useotto-dev Bot added a commit that referenced this pull request Sep 17, 2026
… serves

Since #609 the Worker answers every `<page>.md` URL before TanStack Start
runs, so the five `[.]md.ts` file routes were unreachable. The dynamic twins
(SDK topics, error codes) never had file routes at all. One handler now serves
all of them.

The docs link linter used those file routes as its proof that a markdown twin
exists. It now applies one rule to every markdown URL: strip `.md` and require
the HTML page to be a route, which is how it already accepted the dynamic ones.
The marketing test that guards the twin invariant walks the canonical page list
from the sitemap, so a new page without markdown fails there.

Issue: SPL-663

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
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