Skip to content

Docs markdown - #151

Open
justinmclean wants to merge 8 commits into
mainfrom
docs-markdown
Open

Docs markdown#151
justinmclean wants to merge 8 commits into
mainfrom
docs-markdown

Conversation

@justinmclean

Copy link
Copy Markdown
Member

Stacked on #150. Same shape as apache/iggy-website#79.

Every docs page gets a twin at the same path with .md in place of the slash (/docs/modes//docs/modes.md), so agents never parse the HTML. An Astro route beside [...slug].astro, same slug and HIDDEN_DOCS filter.

  • src/pages/docs/[...slug].md.ts: title, description, rendered and source URLs, then the body as synced (its H1 becomes the title, not repeated)
  • src/pages/llms-full.txt.ts: all twins in one file
  • llms.txt now links to the twins

Verified: 135 twins, one per rendered page; one H1 each. Excluded from the sitemap by #150's filter.

An is-agentic scan of magpie.apache.org found that unknown paths answer 200
with the app shell, that /llms.txt, /robots.txt and a sitemap do not exist,
and that the site's developer resources cannot be found by name. It also
inferred an HTTP API and marked it blocked; there is none.

- astro.config.mjs, package.json: @astrojs/sitemap, so every route the
  build emits is enumerated at /sitemap-index.xml
- public/.htaccess: ErrorDocument 404 /404.html so the ASF web server serves
  the site's own 404 page with the 404 status intact. Astro copies public/
  into dist/, which CI pushes to the publish branch, so no workflow change
- public/robots.txt: allow all, pointing at the sitemap
- src/pages/llms.txt.ts: an llmstxt.org index built from the docs
  collection, so it tracks the synced docs rather than duplicating them. It
  states plainly that Magpie is a set of agent skills with no API on this
  domain, which is what tools currently get wrong about us
- src/components/JsonLd.astro: Organization / WebSite / SoftwareSourceCode
  JSON-LD and a rel="llms-txt" link, with "<" escaped in the payload
- src/pages/404.astro: recovery links, so a 404 is not a dead end
- src/lib/site.ts: site constants, the hand-written route list, and
  HIDDEN_DOCS, which src/pages/docs/[...slug].astro now imports so the
  index and the site hide the same pages

Titles in llms.txt come from frontmatter, else the page's opening H1, else
the same dash-to-space fallback the docs page uses.

Left for the checkout: mount <JsonLd /> in src/layouts/BaseLayout.astro.

Generated-by: Claude (Fable 5.1)
Synced docs open with an SPDX comment and a doctoc block, so the H1 is
never on the first line and every readme was titled "readme".

Generated-by: Claude (Fable 5.1)
@justinmclean justinmclean mentioned this pull request Sep 5, 2026
justinmclean and others added 3 commits September 5, 2026 18:24
An agent that wants a docs page currently has to parse the rendered HTML.
This publishes a Markdown twin next to each page, so /docs/modes/ is also
available as /docs/modes.md.

The docs are already Markdown synced from apache/magpie, and Astro emits
endpoints as static files, so this is a route beside the existing
src/pages/docs/[...slug].astro, using the same slug and the same
HIDDEN_DOCS filter, not a prebuild script.

- src/pages/docs/[...slug].md.ts: one twin per public collection entry.
  The body carries the title, the description as a blockquote, the
  rendered and source URLs, then the page as synced. A body that already
  opens with an H1 supplies the title rather than printing it twice
- src/pages/llms-full.txt.ts: every twin concatenated, for one-fetch agents
- src/pages/llms.txt.ts: links go to the twins and state the convention
- src/lib/site.ts: docMarkdownPath, docSourceUrl and docMarkdown helpers

The sitemap filter from the previous change already excludes the twins:
they are alternates, not pages. How they are served and advertised is the
next change.

Generated-by: Claude (Fable 5.1)
Generated-by: Claude (Fable 5.1)
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