From 8c310f4f8d03ad4640f9f1c41f12a1e817301722 Mon Sep 17 00:00:00 2001
From: Mara Nikola Kiefer
Date: Fri, 28 Aug 2026 04:47:35 +0200
Subject: [PATCH] Add llms.txt & update footer
---
docs/components/SiteFooter.astro | 6 +--
docs/pages/llms.txt.ts | 74 ++++++++++++++++++++++++++++++++
2 files changed, 77 insertions(+), 3 deletions(-)
create mode 100644 docs/pages/llms.txt.ts
diff --git a/docs/components/SiteFooter.astro b/docs/components/SiteFooter.astro
index 4b9164d..ab6d61d 100644
--- a/docs/components/SiteFooter.astro
+++ b/docs/components/SiteFooter.astro
@@ -19,9 +19,9 @@ const year = new Date().getFullYear();
love
by
- @mnkiefer
- ·
- GitHub Next
+ GitHub Next
+ &
+ Microsoft Research
© {year} GitHub, Inc.
diff --git a/docs/pages/llms.txt.ts b/docs/pages/llms.txt.ts
new file mode 100644
index 0000000..e985985
--- /dev/null
+++ b/docs/pages/llms.txt.ts
@@ -0,0 +1,74 @@
+import type { APIRoute } from "astro";
+import { getCollection } from "astro:content";
+import { catalogEntries } from "../lib/catalog";
+
+const documentationOrder = [
+ "getting-started",
+ "architecture",
+ "configuration",
+ "authentication",
+ "bootstrap-configuration",
+ "rollout-and-routing",
+ "execution-and-safety",
+ "orchestrators-and-workers",
+ "deployment-and-governance",
+ "operations",
+ "dashboard-language-specification",
+] as const;
+
+function link(title: string, url: URL, description: string): string {
+ return `- [${title}](${url}): ${description}`;
+}
+
+export const GET: APIRoute = async ({ url }) => {
+ const baseUrl = new URL(".", url);
+ const docs = await getCollection("docs");
+ const docsById = new Map(docs.map((entry) => [entry.id, entry]));
+ const documentation = documentationOrder.map((id) => {
+ const entry = docsById.get(id);
+ if (!entry) throw new Error(`Missing documentation page for llms.txt: ${id}`);
+
+ return link(
+ entry.data.title,
+ new URL(`${id}/`, baseUrl),
+ entry.data.description ?? "",
+ );
+ });
+ const packages = catalogEntries.map((entry) =>
+ link(entry.name, new URL(`catalog/${entry.slug}/`, baseUrl), entry.description)
+ );
+
+ const body = [
+ "# Central Agentic Ops",
+ "",
+ "> Enterprise control planes for GitHub Agentic Workflows.",
+ "",
+ "Central Agentic Ops provides an open-source operation catalog and a governed model for running trusted workflows across many repositories from one private control plane.",
+ "",
+ "## Documentation",
+ "",
+ ...documentation,
+ "",
+ "## Operation Packages",
+ "",
+ link(
+ "Package catalog",
+ new URL("catalog/", baseUrl),
+ "Browse the operations available for installation into a control plane.",
+ ),
+ ...packages,
+ "",
+ "## Source",
+ "",
+ link(
+ "GitHub repository",
+ new URL("https://github.com/githubnext/central-agentic-ops"),
+ "Read the source, package manifests, workflow definitions, and contribution history.",
+ ),
+ "",
+ ].join("\n");
+
+ return new Response(body, {
+ headers: { "Content-Type": "text/plain; charset=utf-8" },
+ });
+};
\ No newline at end of file