Skip to content

Conversation

@nortonandreev
Copy link
Contributor

@nortonandreev nortonandreev commented Feb 2, 2026

User description

Replace flat sitemap llms.txt with curated, AI-optimized index

Summary

This PR replaces the auto-generated flat sitemap llms.txt with a curated, categorized index optimized for LLM consumption. Both versions are generated via @vuepress/plugin-llms — the difference is that we now supply custom template getters (getLlmsPluginOptions()) to filter, deduplicate, organize, and describe pages instead of dumping everything into a single flat list.

The exhaustive dump is preserved as llms-full.txt and cross-referenced from the new file's header. Per-page markdown (llms-page.txt) continues to generate as before.


Why this matters

When an LLM (ChatGPT, Claude, Copilot, etc.) ingests llms.txt — whether via an agent fetch, RAG pipeline, or IDE integration — the file's quality directly determines whether the model can find the right content, for the right version, without wasting context window tokens.

The old file made this nearly impossible. The new file makes it straightforward.


What changed

Implementation

A new getLlmsPluginOptions() function provides custom template getters for 15 sections of the curated llms.txt. The code is organized around four reusable factory helpers:

Factory Used for Selection strategy
createSlugOrderSection Installation, APIs, Configuration, Diagnostics, Cloud Picks exactly one page per slug in a fixed order
createPrefixSection Kubernetes Operator, Connectors Sinks Includes all pages under a path prefix, sorted alphabetically
createFilterSection Operations, Security, Tutorials Includes pages matching a predicate, with optional stable sorting, capped at a limit
createFilterSlugOrderSection Release Notes Filters by predicate, then picks one page per slug in fixed order

Additional helpers:

  • matchIndexSlug — reusable predicate for matching index/overview pages (e.g., /quick-start/ or /quick-start/index)
  • getPageDescription — extracts description from frontmatter or auto-excerpt
  • normalizeIndexUrl — fixes broken /.md URLs to /index.md

Key design decisions:

  • Version resolution is dynamicversioning.latest determines the server prefix; the Kubernetes operator version is resolved from versioning.versions. No hardcoded version strings.
  • Stable ordering — sections using createFilterSection can pass a sortBy comparator for deterministic output regardless of VuePress page order.
  • Curated Cloud section — instead of including all ~22 Cloud pages, the getter selects the ~6 most important (introduction, backups, sizing, events, account security, FAQ).
  • HTTP API Security deduplication — the security getter explicitly excludes http-api paths, so this page appears only under APIs.

The plugin is configured with all three output modes:

{
  llmsTxt: true,       // curated index (this PR)
  llmsFullTxt: true,   // exhaustive dump at llms-full.txt
  llmsPageTxt: true,   // per-page markdown
}

Output comparison at a glance

Aspect Old llms.txt New llms.txt
Generation method Default plugin (all pages) Custom template getters with filtering
Sections 1 (## Table of Contents) 15 categorized sections
Entry count ~500+ links ~100 links
Versions included All (v5 → v26.0, all client versions) Latest only (dynamic via versioning.latest)
Descriptions None (1 exception) Auto-excerpt or frontmatter for most entries
URL format Relative (/server/v26.0/...) Absolute (https://docs.kurrent.io/...)
Product context One-line tagline Intro paragraph + llms-full.txt cross-reference
Cloud docs All ~22 pages in flat list Curated 6 most important pages
Kubernetes Operator All 6 operator versions listed Latest only (v1.5.0), dedicated section
Connector sinks Only reachable via version-specific paths Dedicated section listing all 8 sinks
Output stability Depends on VuePress page order Deterministic via slug ordering or sortBy

Section order

Sections are ordered by importance for LLM comprehension — understanding what the product is, then how to use it, then how to operate it:

Overview → Core Concepts → Client Libraries → APIs → Configuration →
Installation → Security → Operations → Diagnostics → Connectors Sinks →
Kubernetes Operator → Kurrent Cloud → Tutorials → Release Notes → Community

Detailed comparison

Before: flat dump, no version awareness

# Kurrent Docs

> The stream database built for Event Sourcing

## Table of Contents

- [Appending events](/clients/dotnet/legacy/v23.3/appending-events.md)
- [Appending events](/clients/dotnet/v1.0/appending-events.md)
- [Appending events](/clients/dotnet/v1.1/appending-events.md)
- [Appending events](/clients/dotnet/v1.2/appending-events.md)
- [Appending events](/clients/dotnet/v1.3/appending-events.md)
...
- [Clustering](/server/v22.10/cluster.md)
- [Clustering](/server/v23.10/configuration/cluster.md)
- [Clustering](/server/v24.10/configuration/cluster.md)
- [Clustering](/server/v25.0/configuration/cluster.md)
- [Clustering](/server/v26.0/configuration/cluster.md)
...
- [FAQ](/cloud/faq.md)
- [AWS](/cloud/getting-started/private-access/aws.md)
- [Microsoft Azure](/cloud/getting-started/private-access/azure.md)
- [Google Cloud Platform](/cloud/getting-started/private-access/gcp.md)
- [Public Access Clusters](/cloud/getting-started/public.md)
- [Connect from Kubernetes](/cloud/guides/kubernetes.md)
- [Migrating data](/cloud/guides/migration.md)
... (22+ cloud pages)
...
(~500 total entries)

Problems:

  • "Appending events" appears 18 times — which is current?
  • "Clustering" appears 7 times across server versions
  • All 22+ Cloud pages listed with no prioritization
  • Kubernetes Operator "Installation" appears 6 times — every operator version
  • No descriptions, no grouping, relative URLs, no product context

After: curated, categorized, described

# Kurrent Docs – Human-Readable Index for AI (llms.txt)

Kurrent is the event-native data platform (database formerly known as
EventStoreDB), built for event sourcing, CQRS, and event-driven architecture.
...

For exhaustive coverage, use `llms-full.txt` at the same base URL.

---

## Configuration
- [Clustering](https://docs.kurrent.io/server/v26.0/configuration/cluster.md):
  KurrentDB allows you to run more than one node in a cluster for high availability...
- [Networking](https://docs.kurrent.io/server/v26.0/configuration/networking.md):
  KurrentDB provides two interfaces: HTTP(S) for gRPC communication and REST APIs...
- [Database settings](https://docs.kurrent.io/server/v26.0/configuration/db-config.md):
  Only modify these settings if you know what you are doing...

---

## Kurrent Cloud
- [Introduction](https://docs.kurrent.io/cloud/introduction.md): What is Kurrent Cloud?...
- [Backup and Restore](https://docs.kurrent.io/cloud/ops/backups.md): It is important to take regular backups...
- [Cloud instance sizing guide](https://docs.kurrent.io/cloud/ops/sizing.md): Use this guide to assess...
- [Events and notifications](https://docs.kurrent.io/cloud/ops/events.md): On the Event Console...
- [Account Security](https://docs.kurrent.io/cloud/ops/account-security.md): Multi-factor Authentication...
- [FAQ](https://docs.kurrent.io/cloud/faq.md): Cluster provisioning...

How the generation works

llmsTxtTemplate (markdown string with {placeholders})
       │
       ├── {overview}           → custom getter    → getting-started/* pages
       ├── {concepts}           → custom getter    → features/* by slug, with index URL normalization
       ├── {clients}            → custom getter    → latest version per language, 3 pages each
       ├── {apis}               → slugOrderSection → http-api/* in fixed order
       ├── {configuration}      → slugOrderSection → configuration/* in fixed order
       ├── {installation}       → slugOrderSection → quick-start/* (excludes whatsnew)
       ├── {security}           → filterSection    → security/* (excludes http-api), sorted by path
       ├── {operations}         → filterSection    → operations/*, sorted by path
       ├── {diagnostics}        → slugOrderSection → diagnostics/* in fixed order
       ├── {connectorsSinks}    → prefixSection    → features/connectors/sinks/* (sorted)
       ├── {kubernetesOperator} → prefixSection    → kubernetes-operator/v1.5.0/*
       ├── {cloud}              → slugOrderSection → curated top ~6 Cloud pages
       ├── {tutorials}          → filterSection    → /dev-center/*, sorted by path
       ├── {releaseNotes}       → filterSlugOrder  → whatsnew, release-notes in fixed order
       └── {community}          → custom getter    → hardcoded external links

Description priority: frontmatter description → auto-excerpt → omitted. Descriptions improve automatically as authors add description to page frontmatter.


Scenario walkthrough

"How do I append events using the Python client?"

Old New
Matches 3 entries titled "Appending events" for Python v1.0, v1.1, v1.2 1 entry: Python – Appending events with description
LLM can identify correct page? Must guess version Yes, immediately

"How do I get started with Kurrent Cloud?"

Old New
Matches 22+ Cloud pages in flat list, no prioritization 6 curated pages starting with Introduction
LLM can identify starting point? Must scan all entries Yes, Introduction is first

"How do I deploy KurrentDB on Kubernetes?"

Old New
Matches ~36 entries across 6 operator versions 7 entries for latest operator (v1.5.0)

Limitations and known issues

1. Descriptions are auto-generated excerpts, not hand-written summaries

Most descriptions come from VuePress's auto-excerpt (~first 200 characters). This causes:

Issue Example Impact
Empty/echo descriptions Auto-Scavenge: Auto-Scavenge, Redaction: Redaction LLM learns nothing
Mid-word truncation ...using thi... Looks broken
Title repetition Backup and restore: Backup and restore Backing up... Wastes tokens
Missing descriptions Kafka Sink, Elasticsearch Sink (no description) LLM must fetch to understand

Mitigation: The generator prioritizes frontmatter description. Adding it to any page immediately improves the output:

---
description: Configure the Kafka Sink connector to stream events from KurrentDB to Apache Kafka topics.
---

2. Community section is hardcoded

Community links are static strings rather than VuePress-derived data. Fine for rarely-changing URLs, but requires a code change if any URL changes.


Recommended follow-ups

Improvement Effort Impact
Add frontmatter description to ~25 pages with empty/echo descriptions Low High
Add Connectors Sources section when more sources ship (currently only Kafka) Low Low

PR Type

Enhancement


Description

  • Replace flat sitemap with curated, AI-optimized llms.txt index

  • Organize documentation into 15 categorized sections by importance

  • Reduce entry count from 500+ to ~100 links with descriptions

  • Use dynamic version resolution and custom template getters


Diagram Walkthrough

flowchart LR
  A["VuePress Config"] -->|imports| B["getLlmsPluginOptions"]
  B -->|uses| C["Versioning Object"]
  C -->|resolves| D["Latest Server Path"]
  C -->|resolves| E["Latest Operator Path"]
  B -->|creates| F["15 Section Getters"]
  F -->|uses| G["Factory Helpers"]
  G -->|generates| H["Curated llms.txt"]
  H -->|includes| I["Overview, Concepts, APIs, Config, etc."]
  B -->|enables| J["llms-full.txt exhaustive dump"]
Loading

File Walkthrough

Relevant files
Configuration changes
config.ts
Wire up custom LLMs plugin configuration                                 

docs/.vuepress/config.ts

  • Import new getLlmsPluginOptions function from llms config
  • Pass versioning object to llmsPlugin() instead of empty config
  • Enable custom template getters for curated llms.txt generation
+2/-1     
Enhancement
llms.ts
Implement curated LLMs plugin configuration with section getters

docs/.vuepress/configs/llms.ts

  • Create 15 section getters (overview, concepts, clients, APIs,
    configuration, etc.)
  • Implement 4 factory helpers: createPrefixSection,
    createSlugOrderSection, createFilterSection,
    createFilterSlugOrderSection
  • Add URL normalization and description extraction utilities
  • Define curated markdown template with dynamic version-based prefixes
  • Support latest server and Kubernetes operator versions via versioning
    object
+649/-0 

@github-actions
Copy link

github-actions bot commented Feb 2, 2026

Docs build

1 similar comment
@github-actions
Copy link

github-actions bot commented Feb 2, 2026

Docs build

@cloudflare-workers-and-pages
Copy link

cloudflare-workers-and-pages bot commented Feb 2, 2026

Deploying documentation with  Cloudflare Pages  Cloudflare Pages

Latest commit: 85b8a9d
Status: ✅  Deploy successful!
Preview URL: https://148a2bd3.documentation-21k.pages.dev
Branch Preview URL: https://improve-llm-config.documentation-21k.pages.dev

View logs

@nortonandreev nortonandreev force-pushed the improve-llm-config branch 2 times, most recently from b1dcfd9 to 30a73ca Compare February 3, 2026 12:27
@github-actions
Copy link

github-actions bot commented Feb 3, 2026

Docs build

1 similar comment
@github-actions
Copy link

github-actions bot commented Feb 3, 2026

Docs build

@nortonandreev
Copy link
Contributor Author

As a follow-up, the pages that are included in the LLMs, should be added a description.

@nortonandreev
Copy link
Contributor Author

nortonandreev commented Feb 3, 2026

This is the new export:

# Kurrent Docs – Human-Readable Index for AI (llms.txt)

Kurrent is the event-native data platform (database formerly known as EventStoreDB), built for event sourcing, CQRS, and event-driven architecture. This file points to the most important documentation sections for KurrentDB, ordered by importance for understanding and using KurrentDB. These links reflect authoritative, up-to-date docs from docs.kurrent.io.

For exhaustive coverage (all documentation pages in one file), use `llms-full.txt` at the same base URL (e.g. `https://docs.kurrent.io/llms-full.txt`). LLMs and tooling that need the complete list of docs can fetch that file instead.

---

## Overview
- [Concepts](https://docs.kurrent.io/getting-started/concepts.md): Concepts This section discusses some of the fundamental concepts of event sourcing and KurrentDB. Event In KurrentDB, an event is a factual occurrence from the past. It has an e...
- [Welcome to Kurrent](https://docs.kurrent.io/getting-started/introduction.md): What is KurrentDB? KurrentDB is an event-native database designed specifically to store, process, and deliver application state changes, known as events. Each event captures a s...
- [The Kurrent Ecosystem](https://docs.kurrent.io/getting-started/kurrent-ecosystem.md): The Kurrent ecosystem is made up of the core database (which can run standalone or in the cloud), client SDKs and APIs, connectors, and management user interfaces: KurrentDB At ...
- [Why Kurrent?](https://docs.kurrent.io/getting-started/kurrent-why.md): Traditional databases often focus only on current state and overwrite data, which discards valuable information about the past and the events that shaped the current state. In c...

---

## Core Concepts & Patterns
- [Event streams](https://docs.kurrent.io/server/v26.0/features/streams.md): Event streams KurrentDB is purpose-built for event storage. Unlike traditional state-based databases, which retain only the most recent entity state, KurrentDB allows you to sto...
- [Introduction to projections](https://docs.kurrent.io/server/v26.0/features/projections/index.md): Projections is a KurrentDB subsystem that lets you append new events or link existing events to streams in a reactive manner. Projections are good at solving one specific query ...
- [Persistent subscriptions](https://docs.kurrent.io/server/v26.0/features/persistent-subscriptions.md): Persistent subscription A typical operation is subscribing to a stream and receiving notifications for changes. As new events arrive, you continue following them. You can only s...
- [Understanding Connectors](https://docs.kurrent.io/server/v26.0/features/connectors/index.md): Understanding Connectors Connectors make it easy to integrate data from KurrentDB into other systems. Each connector runs on the server-side and uses a catch-up subscription to ...
- [Embedded Web UI](https://docs.kurrent.io/server/v26.0/features/admin-ui.md): Embedded Web UI The KurrentDB embedded UI is available at SERVER_IP:2113 and helps you interact with and visually manage a cluster. This guide explains the interface's tabs and ...
- [Default index](https://docs.kurrent.io/server/v26.0/features/indexes/default.md): The default index is the main indexing mechanism used by KurrentDB to locate events in streams quickly. Each entry in the default index maps the stream name hash and the event n...
- [Archiving](https://docs.kurrent.io/server/v26.0/features/archiving.md): Archiving Introducing Archiving KurrentDB 25.0 introduced the initial release of Archiving: a new major feature to reduce costs and increase scalability of a KurrentDB cluster. ...
- [Queries UI](https://docs.kurrent.io/server/v26.0/features/queries/ui.md): Queries UI The KurrentDB Web Admin UI provides a basic interface to write and run ad-hoc queries against your event streams. This is useful for quick analysis and exploration of...

---

## Client Libraries & Examples
- [.NET – Reading Events](https://docs.kurrent.io/clients/dotnet/v1.3/reading-events.md): Reading Events There are two options for reading events from KurrentDB. You can either read from an individual stream, or read from the $all stream, which will return all events...
- [.NET – Getting started](https://docs.kurrent.io/clients/dotnet/v1.3/getting-started.md): Getting started Get started by connecting your application to KurrentDB. Connecting to KurrentDB To connect your application to KurrentDB, instantiate and configure the client. ...
- [.NET – Appending events](https://docs.kurrent.io/clients/dotnet/v1.3/appending-events.md): Appending events When you start working with KurrentDB, your application streams are empty. The first meaningful operation is to add one or more events to the database using thi...
- [Go – Reading Events](https://docs.kurrent.io/clients/golang/v1.1/reading-events.md): Reading Events KurrentDB provides two primary methods for reading events: reading from an individual stream to retrieve events from a specific named stream, or reading from the ...
- [Go – Getting started](https://docs.kurrent.io/clients/golang/v1.1/getting-started.md): Getting started This guide will help you get started with KurrentDB in your Java application. It covers the basic steps to connect to KurrentDB, create events, append them to st...
- [Go – Appending events](https://docs.kurrent.io/clients/golang/v1.1/appending-events.md): Appending events When you start working with KurrentDB, your application streams are empty. The first meaningful operation is to add one or more events to the database using thi...
- [Java – Reading Events](https://docs.kurrent.io/clients/java/v1.1/reading-events.md): Reading Events KurrentDB provides two primary methods for reading events: reading from an individual stream to retrieve events from a specific named stream, or reading from the ...
- [Java – Getting started](https://docs.kurrent.io/clients/java/v1.1/getting-started.md): Getting started This guide will help you get started with KurrentDB in your Java application. It covers the basic steps to connect to KurrentDB, create events, append them to st...
- [Java – Appending events](https://docs.kurrent.io/clients/java/v1.1/appending-events.md): Appending events When you start working with KurrentDB, your application streams are empty. The first meaningful operation is to add one or more events to the database using thi...
- [Node.js – Reading Events](https://docs.kurrent.io/clients/node/v1.1/reading-events.md): Reading Events KurrentDB provides two primary methods for reading events: reading from an individual stream to retrieve events from a specific named stream, or reading from the ...
- [Node.js – Getting started](https://docs.kurrent.io/clients/node/v1.1/getting-started.md): Getting started This guide will help you get started with KurrentDB in your Java application. It covers the basic steps to connect to KurrentDB, create events, append them to st...
- [Node.js – Appending events](https://docs.kurrent.io/clients/node/v1.1/appending-events.md): Appending events When you start working with KurrentDB, your application streams are empty. The first meaningful operation is to add one or more events to the database using thi...
- [Python – Reading events](https://docs.kurrent.io/clients/python/v1.2/reading-events.md): Reading events This guide describes the Python client methods for reading events from KurrentDB. Introduction Recorded events can be read from a named stream, from the global tr...
- [Python – Getting started](https://docs.kurrent.io/clients/python/v1.2/getting-started.md): Getting started This guide will help you get started with the Python clients for KurrentDB: Start KurrentDB locally Install the Python package Client configuration Connect to Ku...
- [Python – Appending events](https://docs.kurrent.io/clients/python/v1.2/appending-events.md): Appending events This guide describes the Python client methods for recording new events in KurrentDB. Introduction In KurrentDB, events are appended to streams. The Python clie...
- [Rust – Reading Events](https://docs.kurrent.io/clients/rust/v1.0/reading-events.md): Reading Events KurrentDB provides two primary methods for reading events: reading from an individual stream to retrieve events from a specific named stream, or reading from the ...
- [Rust – Getting started](https://docs.kurrent.io/clients/rust/v1.0/getting-started.md): Getting started This guide will help you get started with KurrentDB in your Java application. It covers the basic steps to connect to KurrentDB, create events, append them to st...
- [Rust – Appending events](https://docs.kurrent.io/clients/rust/v1.0/appending-events.md): Appending events When you start working with KurrentDB, your application streams are empty. The first meaningful operation is to add one or more events to the database using thi...

---

## APIs
- [Introduction](https://docs.kurrent.io/server/v26.0/http-api/introduction.md): Introduction Overview KurrentDB provides a native interface of AtomPub over HTTP. AtomPub is a RESTful protocol that can reuse many existing components, for example reverse prox...
- [Security](https://docs.kurrent.io/server/v26.0/http-api/security.md): Security KurrentDB supports basic authentication for HTTP API calls, and access control lists (ACL). Authentication Creating users KurrentDB supports basic HTTP authentication t...
- [Persistent subscriptions](https://docs.kurrent.io/server/v26.0/http-api/persistent.md): Persistent subscriptions This document explains how to use the HTTP API for setting up and consuming persistent subscriptions and competing consumer subscription groups. For an ...
- [Optional HTTP headers](https://docs.kurrent.io/server/v26.0/http-api/optional-http-headers.md): Optional HTTP headers KurrentDB supports custom HTTP headers for requests in the form Kurrent-*. The headers supported are: EventID When you append to a stream and don't use the...
- [HTTP API Reference](https://docs.kurrent.io/server/v26.0/http-api/api.md): HTTP API Reference The Base URL used in this documentation is https://kurrent.io, you should replace it with the same url you use to view the administration UI. Authentication H...

---

## Configuration
- [Clustering](https://docs.kurrent.io/server/v26.0/configuration/cluster.md): Highly-available cluster KurrentDB allows you to run more than one node in a cluster for high availability. Cluster member authentication KurrentDB starts in secure mode by defa...
- [Networking](https://docs.kurrent.io/server/v26.0/configuration/networking.md): KurrentDB provides two interfaces: HTTP(S) for gRPC communication and REST APIs (node) TCP for cluster replication (replication) Nodes in the cluster replicate with each other u...
- [Database settings](https://docs.kurrent.io/server/v26.0/configuration/db-config.md): Database settings On this page, you find settings that tune the database server behaviour. Only modify these settings if you know what you are doing or when requested by Kurrent...

---

## Installation & Deployment
- [Installation](https://docs.kurrent.io/server/v26.0/quick-start/installation.md)
- [Default directories](https://docs.kurrent.io/server/v26.0/quick-start/default-directories.md): Default directories The default directories used by KurrentDB vary by platform to fit with the common practices each platform. Linux When you install KurrentDB on Linux, the fol...
- [Upgrade guide](https://docs.kurrent.io/server/v26.0/quick-start/upgrade-guide.md): Should you upgrade? KurrentDB 26.0 is a long term support (LTS) release and will be supported for a minimum of two years, with a two month grace period for organizing upgrades w...

---

## Security & Access Control
- [Protocol security](https://docs.kurrent.io/server/v26.0/security/protocol-security.md): Protocol security KurrentDB supports gRPC and the proprietary TCP protocol for high-throughput real-time communication. It also has some HTTP endpoints for the management operat...
- [Security options](https://docs.kurrent.io/server/v26.0/security/security-options.md): Security For production use, it is important to configure KurrentDB security features to prevent unauthorised access to your data. Security features of KurrentDB include: using ...
- [User authentication](https://docs.kurrent.io/server/v26.0/security/user-authentication.md): Authentication KurrentDB provides the following means to authenticate users connecting to the database: Basic authentication is enabled by default, and allows you to authenticat...
- [User authorization](https://docs.kurrent.io/server/v26.0/security/user-authorization.md): Authorization Authorization governs what an authenticated user can access and what actions they can perform based on that user's roles. Roles Users are granted roles by the . Th...

---

## Operations & Management
- [Auto-Scavenge](https://docs.kurrent.io/server/v26.0/operations/auto-scavenge.md): Auto-Scavenge
- [Backup and restore](https://docs.kurrent.io/server/v26.0/operations/backup.md): Backup and restore Backing up a KurrentDB database is straightforward but relies on carrying out the steps below in the correct order. Types of backups There are two main ways t...
- [Renew certificates](https://docs.kurrent.io/server/v26.0/operations/cert-update.md): Certificate update upon expiry In KurrentDB, the certificates require updating when they have expired or are going to expire soon. Follow the steps below to perform a rolling ce...
- [Redaction](https://docs.kurrent.io/server/v26.0/operations/redaction.md): Redaction
- [Scavenging](https://docs.kurrent.io/server/v26.0/operations/scavenge.md): Scavenging In KurrentDB, events are no longer present in stream reads or subscriptions after they have been deleted or they have expired according to the metadata of the stream....

---

## Diagnostics
- [Logs](https://docs.kurrent.io/server/v26.0/diagnostics/logs.md): Database logs KurrentDB logs its internal operations to the console (stdout) and to log files. The default location of the log files and the way to change it is described below....
- [Metrics](https://docs.kurrent.io/server/v26.0/diagnostics/metrics.md): Metrics KurrentDB collects metrics in Prometheus format, available on the /metrics endpoint. Prometheus can be configured to scrape this endpoint directly. The metrics are confi...
- [Integrations](https://docs.kurrent.io/server/v26.0/diagnostics/integrations.md): Monitoring integrations KurrentDB supports several methods to integrate with external monitoring and observability tools. Those include: OpenTelemetry: export metrics to an Open...
- [Best Practices](https://docs.kurrent.io/server/v26.0/diagnostics/best-practices.md): Monitoring Best Practices Background When monitoring the health of a KurrentDB cluster, one should investigate and alert on multiple factors. Here we discuss them in detail Metr...

---

## Connectors Sinks
- [Elasticsearch Sink](https://docs.kurrent.io/server/v26.0/features/connectors/sinks/elasticsearch.md)
- [HTTP Sink](https://docs.kurrent.io/server/v26.0/features/connectors/sinks/http.md): Overview The HTTP sink allows for integration between KurrentDB and external APIs over HTTP or HTTPS. This connector consumes events from a KurrentDB stream and converts each ev...
- [Kafka Sink](https://docs.kurrent.io/server/v26.0/features/connectors/sinks/kafka.md)
- [MongoDB Sink](https://docs.kurrent.io/server/v26.0/features/connectors/sinks/mongo.md)
- [Pulsar Sink](https://docs.kurrent.io/server/v26.0/features/connectors/sinks/pulsar.md)
- [RabbitMQ Sink](https://docs.kurrent.io/server/v26.0/features/connectors/sinks/rabbitmq.md)
- [Serilog Sink](https://docs.kurrent.io/server/v26.0/features/connectors/sinks/serilog.md): Overview The Serilog sink logs detailed messages about the connector and record details. The Serilog sink supports writing logs to the following outputs: Console File Seq These ...
- [Sql Sink](https://docs.kurrent.io/server/v26.0/features/connectors/sinks/sql.md)

---

## Kubernetes Operator
- [Installation](https://docs.kurrent.io/server/kubernetes-operator/v1.5.0/getting-started/installation.md): This section covers the various aspects of installing the Operator. The Operator supports installation via Helm and via the Operator Lifecycle Manager (OLM). OLM is the recommen...
- [Configuration Reference](https://docs.kurrent.io/server/kubernetes-operator/v1.5.0/getting-started/resource-types.md): The Operator supports the following resource types (known as Kind's): KurrentDB KurrentDBBackup KurrentDBBackupSchedule KurrentDB This resource type is used to define a database...
- [Advanced Networking](https://docs.kurrent.io/server/kubernetes-operator/v1.5.0/operations/advanced-networking.md): KurrentDB is a clustered database, and all official KurrentDB clients are cluster-aware. As a result, there are times when a client will find out from one server how to connect ...
- [Database Backup](https://docs.kurrent.io/server/kubernetes-operator/v1.5.0/operations/database-backup.md): The sections below detail how database backups can be performed. Refer to the for detailed information. Backing up the leader Assuming there is a cluster called kurrentdb-cluste...
- [Example Deployments](https://docs.kurrent.io/server/kubernetes-operator/v1.5.0/operations/database-deployment.md): This page shows various deployment examples of KurrentDB. Each example assumes the that the Operator has been installed in a way that it can at least control KurrentDB resources...
- [Managing Certificates](https://docs.kurrent.io/server/kubernetes-operator/v1.5.0/operations/managing-certificates.md): The Operator expects consumers to leverage a thirdparty tool to generate TLS certificates that can be wired in to deployments using secrets. The sections below describe how cert...
- [Modify Deployments](https://docs.kurrent.io/server/kubernetes-operator/v1.5.0/operations/modify-deployments.md): Updating KurrentDB deployments through the Operator is done by modifying the KurrentDB Custom Resources (CRs) using standard Kubernetes tools. Most updates are processed almost ...

---

## Kurrent Cloud
- [Introduction](https://docs.kurrent.io/cloud/introduction.md): What is Kurrent Cloud? Kurrent Cloud enables seamless deployment of managed KurrentDB clusters with major cloud providers. Learn more Not using Kurrent Cloud and want to learn m...
- [Backup and Restore](https://docs.kurrent.io/cloud/ops/backups.md): It is important to take regular backups of your clusters. Besides providing a safety net in case of data corruption, backups can also used for various operations, such as creati...
- [Cloud instance sizing guide](https://docs.kurrent.io/cloud/ops/sizing.md): Cloud instance sizing guide Use this guide to assess the needs of your application performance, compared with the capability of a given KurrentDB instance in Kurrent Cloud. Inst...
- [Events and notifications](https://docs.kurrent.io/cloud/ops/events.md): Events and notifications On the Event Console, you will find messages about issues with your provisioned resources in the Issues section and errors that happened during provisio...
- [Account Security](https://docs.kurrent.io/cloud/ops/account-security.md): Multi-factor Authentication (MFA) Our MFA solution integrates exclusively with authenticator apps, offering a convenient and secure method for users to verify their identities. ...
- [FAQ](https://docs.kurrent.io/cloud/faq.md): Cluster provisioning Is it possible to change the cluster instance size or topology? You can , but we do not support changing the topology of an existing cluster. If you need a ...

---

## Tutorials & Use Cases
- [Auto-Scavenge](https://docs.kurrent.io/dev-center/tutorials/Auto-Scavenge.md): Tutorial: Using Auto-Scavenge This step-by-step tutorial guides you through using, scheduling and managing Auto-Scavenge in KurrentDB. The Auto-scavenge feature is designed to m...
- [Encryption-At-Rest](https://docs.kurrent.io/dev-center/tutorials/Encryption-At-Rest.md): Tutorial: Setting up and using Encryption-At-Rest in KurrentDB The Encryption-At-Rest feature provides encryption for KurrentDB to secure database chunk files, ensuring data pro...
- [Migrate from EventStore to KurrentDB Java Client](https://docs.kurrent.io/dev-center/tutorials/eventstore-to-kurrent-migration-java-client.md): Automatically migrate your Java applications from the EventStore client to the new KurrentDB client using OpenRewrite.
- [HTTP Sink](https://docs.kurrent.io/dev-center/tutorials/HTTP_Connector.md): Tutorial: Setting up and using an HTTP Sink in KurrentDB Connectors simplify the integration of KurrentDB data into other systems. Each connector runs on the server-side and use...
- [Kafka Sink](https://docs.kurrent.io/dev-center/tutorials/Kafka_Sink.md): Tutorial: Setting up and using a Kafka Sink connector in KurrentDB This step-by-step tutorial guides you through configuring and deploying a Kafka Sink connector in KurrentDB to...
- [MongoDB Sink](https://docs.kurrent.io/dev-center/tutorials/MongoDB_Sink.md): Tutorial: Setting up and using a MongoDB Sink connector in KurrentDB This step-by-step tutorial guides you through configuring and deploying a MongoDB Sink connector in KurrentD...
- [RabbitMQ Sink](https://docs.kurrent.io/dev-center/tutorials/RabbitMQ_Sink.md): Tutorial: Setting up and using a RabbitMQ Sink connector in KurrentDB This tutorial guides you through the configuration and deployment of a RabbitMQ Sink connector in KurrentDB...
- [Stream Policy Authorization](https://docs.kurrent.io/dev-center/tutorials/Stream_Policy_Authorization.md): Tutorial: Setting up and using Stream Policy Authorization in KurrentDB This step-by-step tutorial guides you through enabling and configuring Stream Policy Authorization in Kur...
- [Overview](https://docs.kurrent.io/dev-center/use-cases/mix-and-match-database/introduction.md): Modern applications often deal with diverse data access patterns that a single database can’t efficiently handle. That’s where you can leverage a database mix-and-match approach...
- [Part 1 - Setup and Initialize KurrentDB](https://docs.kurrent.io/dev-center/use-cases/mix-and-match-database/tutorial/tutorial-1.md): Part 1: Setup and Initialize KurrentDB In this part, you will start a GitHub Codespaces session in your browser. Info GitHub Codespaces provides an instant and preconfigured dev...
- [Part 2 - Project KurrentDB Events to Postgres](https://docs.kurrent.io/dev-center/use-cases/mix-and-match-database/tutorial/tutorial-2.md): Part 2: Project KurrentDB Events to Postgres Now that KurrentDB is filled with shopping cart events, you will learn how to project these events to other databases as read models...
- [Part 3 - Project KurrentDB Events to Redis](https://docs.kurrent.io/dev-center/use-cases/mix-and-match-database/tutorial/tutorial-3.md): Part 3: Project KurrentDB Events to Redis Introducing the Redis Projection Application This application projects KurrentDB events to Redis sorted sets to calculate the top 10 pr...
- [Part 4 - Project KurrentDB Events in Real-Time](https://docs.kurrent.io/dev-center/use-cases/mix-and-match-database/tutorial/tutorial-4.md): Part 4: Project KurrentDB Events in Real-Time Now that the read models on the databases are synchronized with events on KurrentDB, you will learn how to synchronize the read mod...
- [Introduction](https://docs.kurrent.io/dev-center/use-cases/mix-and-match-database/tutorial/tutorial-intro.md): Introduction This tutorial will guide you through the Mix-and-Match Database sample with KurrentDB using GitHub Codespaces. Objectives In this tutorial, you will: Learn how to p...
- [Overview](https://docs.kurrent.io/dev-center/use-cases/outbox/introduction.md): Solving Dual Writes with KurrentDBSolving Dual Writes with KurrentDB Dual Write Problem Without distributed transactions, operations that write to multiple resources are not ato...
- [Summary](https://docs.kurrent.io/dev-center/use-cases/outbox/tutorial-summary.md): In this tutorial, you’ve explored how KurrentDB offers a powerful, event-driven approach to address the dual write problem — a core challenge in distributed systems where writes...
- [Part 1 - Set up Codespaces](https://docs.kurrent.io/dev-center/use-cases/outbox/tutorial/tutorial-1.md): Part 1: Set up Codespaces In this part, you will start a GitHub Codespaces session in your browser. Info GitHub Codespaces provides an instant and preconfigured development envi...
- [Part 2 - Trigger Writes to External Data Stores](https://docs.kurrent.io/dev-center/use-cases/outbox/tutorial/tutorial-2.md): Part 2: Trigger Writes to External Data Stores With KurrentDB, eventually consistent update to multiple resources often begin with an event that triggers the entire process. Sub...
- [Part 3 - Write to a External Data Store with Persistent Subscription](https://docs.kurrent.io/dev-center/use-cases/outbox/tutorial/tutorial-3.md): Part 3: Write to a External Data Store with Persistent Subscription Now that the event that triggers multiple writes is appended to KurrentDB, you will learn how to handle this ...
- [Part 4 - Error Handling for Writes to External Data Stores](https://docs.kurrent.io/dev-center/use-cases/outbox/tutorial/tutorial-4.md): Part 4: Error Handling for Writes to External Data Stores Writing to multiple data stores consistently is a critical challenge in distributed systems. Without proper handling, y...

---

## Release Notes / Changelog
- [What's New](https://docs.kurrent.io/server/v26.0/quick-start/whatsnew.md): What's New New in 26.0 Features User Defined Indexes Archiving Support for GCP and Azure Changes / Improvements Improved Request Processing Additional Thread Pool Metric YAML Co...
- [Previous versions](https://docs.kurrent.io/server/v26.0/release-schedule/previous-versions.md): Previous versions
- [Release notes](https://docs.kurrent.io/server/v26.0/release-schedule/release-notes.md): Release notes This page contains the release notes for KurrentDB v26.0. 26.0.0 16 January 2026 What's new Find out in this release. Projections: Fixed wake-up race condition (PR...

---

## Community & Learning
- [Kurrent – Main website](https://www.kurrent.io): Event-native data platform for event sourcing and event-driven architecture.
- [Kurrent Forum](https://discuss.kurrent.io): Community forum for KurrentDB and EventStoreDB questions and discussion.
- [Kurrent Blog](https://www.kurrent.io/blog): Articles, guides, and release updates.
- [Kurrent Webinars](https://www.kurrent.io/webinars): On-demand and upcoming webinars.
- [Kurrent Community Discord](https://discord.gg/Phn9pmCw3t): Join the Kurrent community on Discord.
- [Kurrent on YouTube](https://www.youtube.com/@Kurrent_io): Video tutorials, demos, and talks.
- [Kurrent on GitHub](https://github.com/kurrent-io): KurrentDB server, client libraries, and open-source projects.
- [Kurrent Academy](https://academy.kurrent.io): Free self-paced and live training on KurrentDB and event sourcing.

Few comments:

  • The issue where all of the clients say Java application should have been resolved, as I updated all of the SDKs docs yesterday – will double-check
  • The descriptions are auto-generated, so don't look great – but still provide some context, which is better than what we have now. As a next step, I will add a proper description to each of the pages within the LLMs file, so that the quality improves.
  • I wanted for @stktung and @George-Payne to review the links included – let me know if you think that there is something more important to include or something that can be excluded. Same with the tutorials, now they're alphabetically sorted and 20 have been picked automatically, but this might not be the best approach (also they are a bit too much) – I would focus on let's say 7-8 tutorials, would be thankful if @stktung could point out to me which he thinks would bring the best value.
  • For the Clients, I am wondering if we should just include the getting started pages for each SDK (so that LLMs can know we have SDK for each of the clients). I see that OpenAI uses at most 13 links per section, although most examples online show up to 5 links. So I would want to try to have links capped at 10, for example, Seems like the middle ground. But the more important one given a priority, so appearing first in each section.

cc: @Lougarou

@nortonandreev nortonandreev marked this pull request as ready for review February 3, 2026 13:02
@nortonandreev nortonandreev requested a review from a team as a code owner February 3, 2026 13:02
@qodo-code-review
Copy link
Contributor

qodo-code-review bot commented Feb 3, 2026

PR Compliance Guide 🔍

Below is a summary of compliance checks for this PR:

Security Compliance
🟢
No security concerns identified No security vulnerabilities detected by AI analysis. Human verification advised for critical code.
Ticket Compliance
🎫 No ticket provided
  • Create ticket/issue
Codebase Duplication Compliance
Codebase context is not defined

Follow the guide to enable codebase context checks.

Custom Compliance
🟢
Generic: Comprehensive Audit Trails

Objective: To create a detailed and reliable record of critical system actions for security analysis
and compliance.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Meaningful Naming and Self-Documenting Code

Objective: Ensure all identifiers clearly express their purpose and intent, making code
self-documenting

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Secure Error Handling

Objective: To prevent the leakage of sensitive system information through error messages while
providing sufficient detail for internal debugging.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Secure Logging Practices

Objective: To ensure logs are useful for debugging and auditing without exposing sensitive
information like PII, PHI, or cardholder data.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Security-First Input Validation and Data Handling

Objective: Ensure all data inputs are validated, sanitized, and handled securely to prevent
vulnerabilities

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

🔴
Generic: Robust Error Handling and Edge Case Management

Objective: Ensure comprehensive error handling that provides meaningful context and graceful
degradation

Status:
Missing edge checks: The Kubernetes operator version resolution assumes opGroup.versions[0] exists, which can
throw at runtime if the kubernetes-operator group has an empty versions array.

Referred Code
const opGroup = versioning.versions.find((v) => v.id === "kubernetes-operator");
const latestOperatorPrefix = opGroup
  ? `/${opGroup.basePath}/${opGroup.versions[0].path}/`
  : "";

Learn more about managing compliance generic rules or creating your own custom rules

  • Update
Compliance status legend 🟢 - Fully Compliant
🟡 - Partial Compliant
🔴 - Not Compliant
⚪ - Requires Further Human Verification
🏷️ - Compliance label

@nortonandreev nortonandreev self-assigned this Feb 3, 2026
@qodo-code-review
Copy link
Contributor

qodo-code-review bot commented Feb 3, 2026

PR Code Suggestions ✨

Explore these optional code suggestions:

CategorySuggestion                                                                                                                                    Impact
High-level
The curation logic is brittle

The suggestion proposes replacing the complex, brittle, path-based curation
logic with a more robust system where curation metadata is defined in the
frontmatter of each documentation page.

Examples:

docs/.vuepress/configs/llms.ts [215-243]
function createSlugOrderSection(
  prefix: string,
  slugOrder: string[],
  matchSlug: (
    slug: string,
    page: LLMPage,
    prefix: string,
    prefixBase: string
  ) => boolean,
  options?: { exclude?: (p: LLMPage) => boolean }

 ... (clipped 19 lines)
docs/.vuepress/configs/llms.ts [338-346]
  const installation: TemplateGetter = createSlugOrderSection(
    latestServerPrefix + "quick-start/",
    ["index", "installation", "default-directories", "upgrade-guide"],
    (slug, p, prefix, prefixBase) =>
      slug === "index"
        ? matchIndexSlug(p, prefix, prefixBase, "quick-start")
        : p.path.includes(slug),
    { exclude: (p) => p.path.includes("whatsnew") }
  );

Solution Walkthrough:

Before:

// docs/.vuepress/configs/llms.ts

function createSlugOrderSection(prefix, slugOrder, matchSlug, options) {
  // ... logic to find pages based on slug in a specific order within a prefix
}

export function getLlmsPluginOptions(versioning) {
  const latestServerPrefix = `/${versioning.latest}/`;

  // Installation section is built by hardcoded slugs and paths
  const installation = createSlugOrderSection(
    latestServerPrefix + "quick-start/",
    ["index", "installation", "default-directories", "upgrade-guide"],
    (slug, p) => p.path.includes(slug),
    { exclude: (p) => p.path.includes("whatsnew") }
  );

  // ... many other sections defined with similar hardcoded logic
}

After:

// docs/server/v26.0/quick-start/installation.md (example frontmatter)
---
title: 'Server Installation'
llms:
  section: 'installation'
  order: 2
---
...

// docs/.vuepress/configs/llms.ts (simplified generator)
export function getLlmsPluginOptions(versioning) {
  const sections = ["overview", "installation", ...];
  const getters = {};
  for (const section of sections) {
    getters[section] = (pages, state) => {
      const sectionPages = pages
        .filter(p => p.frontmatter?.llms?.section === section)
        .sort((a, b) => (a.frontmatter?.llms?.order ?? 99) - (b.frontmatter?.llms?.order ?? 99));
      return formatLinkWithDescription(sectionPages, state);
    };
  }
  // ... return plugin options with generic getters
}
Suggestion importance[1-10]: 9

__

Why: The suggestion correctly identifies a major design flaw—the brittle, hardcoded path logic in llms.ts—and proposes a more robust, maintainable solution using frontmatter, which would significantly improve the long-term quality of the feature.

High
Possible issue
Fix incorrect API section filtering logic

Correct the filtering logic in the apis getter to properly include pages about
'persistent subscriptions' instead of excluding them.

docs/.vuepress/configs/llms.ts [378-384]

     (slug, p, _prefix, _prefixBase) => {
-      if (!p.path.includes(`http-api/${slug}`)) return false;
-      if (slug === "persistent" && p.path.includes("persistent-subscriptions"))
-        return false;
-      return true;
+      if (slug === "persistent") {
+        return p.path.includes("persistent-subscriptions");
+      }
+      return p.path.includes(`http-api/${slug}`);
     }

[To ensure code accuracy, apply this suggestion manually]

Suggestion importance[1-10]: 8

__

Why: The suggestion correctly identifies and fixes a bug in the apis getter logic where pages about "persistent subscriptions" were being incorrectly excluded, contrary to the documented intent.

Medium
General
Improve path matching in overview section

Refine the path matching logic in the overview getter by using endsWith instead
of includes to prevent incorrect page selections.

docs/.vuepress/configs/llms.ts [327-333]

     const candidates = pages.filter((p) =>
       paths.some(
         (path) =>
           p.path === path ||
-          (path !== "/" && path !== "/getting-started/" && p.path.includes(path))
+          (path.endsWith("/") && p.path.startsWith(path)) || // for section paths like /getting-started/
+          (!path.endsWith("/") && p.path.endsWith(path)) // for specific pages
       )
     );
  • Apply / Chat
Suggestion importance[1-10]: 7

__

Why: The suggestion correctly points out that using includes for path matching is too broad and can lead to false positives, proposing a more robust endsWith check to improve accuracy.

Medium
Improve page selection for core concepts

Make the page selection for the "streams" concept more specific by checking if
the path ends with /streams or /streams/ instead of just including the string.

docs/.vuepress/configs/llms.ts [395-401]

     const conceptPredicates: Array<(p: LLMPage) => boolean> = [
-      (p) => p.path.includes("streams"),
+      (p) => p.path.endsWith("/streams") || p.path.endsWith("/streams/"),
       (p) =>
         p.path.includes("projections") &&
 ...

[To ensure code accuracy, apply this suggestion manually]

Suggestion importance[1-10]: 7

__

Why: The suggestion correctly identifies that using includes("streams") is too broad for selecting the core concept page and proposes a more specific check, improving the accuracy of the page selection.

Medium
Correct client pages sorting order

Change the sort order for client pages from descending to ascending to
prioritize general pages like 'getting-started' over more specific ones.

docs/.vuepress/configs/llms.ts [357]

-    .sort((a, b) => b.path.localeCompare(a.path));
+    .sort((a, b) => a.path.localeCompare(b.path));
  • Apply / Chat
Suggestion importance[1-10]: 6

__

Why: The suggestion correctly identifies that descending sort order might prioritize less important pages and proposes changing to ascending order, which is a sensible improvement for content curation.

Low
Organization
best practice
Clarify versioned product naming
Suggestion Impact:Updated the CURATED_TEMPLATE description to be version-aware, instructing use of "EventStoreDB" for ≤24.x content and "KurrentDB" for 25.0+ content, aligning product naming with version context.

code diff:

@@ -538,7 +539,7 @@
    */
   const CURATED_TEMPLATE = `# Kurrent Docs – Human-Readable Index for AI (llms.txt)
 
-Kurrent is the event-native data platform (database formerly known as EventStoreDB), built for event sourcing, CQRS, and event-driven architecture. This file points to the most important documentation sections for KurrentDB, ordered by importance for understanding and using KurrentDB. These links reflect authoritative, up-to-date docs from docs.kurrent.io.
+KurrentDB is the event-native stream database for event sourcing, CQRS, and event-driven architecture. In this documentation set, use "EventStoreDB" when referring to EventStoreDB ≤ 24.x content and "KurrentDB" for 25.0+ content. This file points to the most important documentation sections, ordered by importance for understanding and using KurrentDB. These links reflect authoritative, up-to-date docs from docs.kurrent.io.
 

Make the product naming explicitly version-aware (EventStoreDB for older
versions, KurrentDB for current versions) so readers and LLMs don’t conflate
legacy and current terminology.

docs/.vuepress/configs/llms.ts [539-541]

 const CURATED_TEMPLATE = `# Kurrent Docs – Human-Readable Index for AI (llms.txt)
 
-Kurrent is the event-native data platform (database formerly known as EventStoreDB), built for event sourcing, CQRS, and event-driven architecture. This file points to the most important documentation sections for KurrentDB, ordered by importance for understanding and using KurrentDB. These links reflect authoritative, up-to-date docs from docs.kurrent.io.
+KurrentDB is the event-native stream database for event sourcing, CQRS, and event-driven architecture. In this documentation set, use "EventStoreDB" when referring to EventStoreDB ≤ 24.x content and "KurrentDB" for 25.0+ content (formerly EventStoreDB). This file points to the most important documentation sections, ordered by importance for understanding and using KurrentDB. These links reflect authoritative, up-to-date docs from docs.kurrent.io.

[Suggestion processed]

Suggestion importance[1-10]: 6

__

Why:
Relevant best practice - Ensure version-specific documentation uses correct product names and preserves legacy terminology for older versions while introducing new terms for current releases.

Low
Standardize section heading casing

Use consistent heading casing for generic feature areas (e.g., “sinks”,
“operator”) while keeping branded product names capitalized.

docs/.vuepress/configs/llms.ts [592-603]

-## Connectors Sinks
+## Connector sinks
 {connectorsSinks}
 
 ---
 
-## Kubernetes Operator
+## Kubernetes operator
 {kubernetesOperator}
 
 ---
 
 ## Kurrent Cloud
 {cloud}
  • Apply / Chat
Suggestion importance[1-10]: 5

__

Why:
Relevant best practice - Normalize capitalization and terminology for branded versus generic feature names, keeping consistent casing across headings and labels.

Low
  • Update

@github-actions
Copy link

github-actions bot commented Feb 3, 2026

Docs Preview

  • Status: ⏳ Creating preview…

@nortonandreev
Copy link
Contributor Author

PR Code Suggestions ✨
The curation logic is brittle

I agree with this, but this would require a more substantial update of the documentation. Not against it – let's decide on which pages we want to include in the file, once approved, I can update them to include the llms meta.

@github-actions
Copy link

github-actions bot commented Feb 3, 2026

Docs build

@George-Payne George-Payne requested a review from Lougarou February 3, 2026 13:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant