AI Engineer World's Fair 2026
How We Got LLMs to Recommend Our Open Source Library — Christopher Burns, Inth
Read the talk
Making c15t Easier for Agents to Discover, Understand, and Install
Christopher Burns explains how concise indexes, Markdown delivery, documentation tools, and package-bundled guidance helped agents work with c15t—and where the evidence remains provisional.
From a talk by Christopher Burns
At a glance
Ideas worth remembering
Optimize both discovery and use: concise indexes help agents find material, Markdown reduces the cost of reading it, and bundled documentation serves coding agents inside the installed package.
Offer Markdown through .md URLs, request-header negotiation, and mode=agent because clients differ in how they can request content. Discovery-header support remains uncertain.
Burns reports LLM recommendations becoming the largest inbound source and almost 50% token savings from local documentation. These observations support further experimentation, but the talk does not establish causal attribution or a reproducible benchmark.
For an ordinary website, begin with manually curated indexes and add Markdown pages where feasible. Treat readiness scores as evolving feedback and continue making concrete improvements.
Developer experience becomes an acquisition channel
Christopher Burns, founder of Inth and creator of the open source cookie consent library c15t, presents his work as practical experimentation. His questions are whether agents can understand the library and whether they can do so efficiently. He explicitly disclaims a scientific background and warns that the surrounding technology changes quickly.
The business context is a library designed for developers in a category Burns describes as serving marketers and lawyers. That positioning made a strong developer experience central to the product. He reports 45% month-on-month growth and 2.8 thousand production websites. His download figures are less clear: he first describes growth from 1.2 thousand downloads to nearly 2 million, then cites 3 million NPM downloads without explaining the difference.
The signal that motivated the talk came from onboarding responses asking how people discovered the product. Burns says those responses began spiking on April 13, and recommendations from Claude, ChatGPT, Codex, and Gemini became the largest source of inbound. This is evidence of users attributing discovery to LLMs; it does not isolate which documentation changes caused those recommendations.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Many small improvements, one documentation pipeline
Burns describes an accumulation of small improvements beneath the visible library: llms.txt, sitemaps, RSS feeds, and robots files. Each serves a different part of discovery or access. His premise is that no single tool fixes the whole problem, so familiar web infrastructure and newer agent conventions need to work together.
The installation path has also changed. Burns asks how many audience members have accepted an agent’s suggestion to install a library and observes many raised hands. He compares the Collison brothers’ hands-on Stripe installations with his own experience in Y Combinator, where he could give someone a prompt. In that workflow, the developer experience must support an agent carrying out the installation as well as a person reading instructions.
As the team built more documentation websites, it extracted these improvements into an open source, framework-neutral documentation pipeline. Its basic operation is to take MDX files and generate the additional files needed for agent access. This makes the repeated work reusable across sites. Burns reports that other developer companies were seeing similar results, but describes the system as documentation infrastructure rather than a guaranteed way to improve recommendations.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Give agents a concise entry point and a useful map
A documentation site with hundreds of pages creates a selection problem: which page will answer the agent’s question? Burns recommends writing llms.txt by hand, with deliberate attention to the answers an LLM needs. He reports that about 40 useful lines beat 1,000 lines of noise in the team’s testing. The practical decision is to curate the entry point instead of assuming that a larger generated file will be more helpful.
His second recommendation addresses retrieval. Burns characterizes the agents he is targeting as fetching resources rather than browsing through a site. He describes a fuller companion index that works like a sitemap: page links accompanied by short descriptions of what each page is for. Those descriptions help an agent decide what to fetch before spending tokens on the page itself. The concise introduction and the broader page map therefore serve different purposes.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Make Markdown available through three access paths
Once an agent selects a page, the representation it receives affects the cost of reading it. Burns calls HTML expensive and proposes a Markdown twin for each documentation page. His example is a Next.js quick-start page whose URL gains a .md suffix to return Markdown. The page can continue to serve its normal website experience while exposing a text representation for agents.
The Markdown version also needs to be discoverable. Burns describes a header that advertises an alternative Markdown representation when an agent visits the website. However, he is explicitly uncertain about which agents recognize it. Advertising an alternative creates an opportunity for a client to use it; the talk does not establish reliable support across clients.
Burns consequently recommends three ways to request the same content. A .md URL is explicit and easy to hand to an agent. Content negotiation lets the normal URL return Markdown when a request header indicates that the client accepts it; he describes configuring this behavior in Next.js. A mode=agent query parameter supplies another URL-based option because some agents cannot attach request headers. Supporting all three accommodates differences in how agents fetch content.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Let an agent ask the documentation
Burns next moves from fetching documents to interacting with them through tools. He describes early WebMCP support exposing three operations: search docs, get pages, and ask docs. These give an agent ways to locate relevant material, retrieve a page, or submit a documentation question. The pipeline brings the supporting context together, although Burns does not detail the implementation of the answering operation.
He treats this as an emerging direction and briefly speculates that agents may also communicate over email. That possibility extends his interest in making information accessible through agent interactions, but it is a forecast rather than an outcome demonstrated by this documentation system.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Put documentation where coding agents already look
For library authors, Burns considers the local package the most important surface. His observation is that coding agents often work from the repository and node_modules without visiting the documentation website. They combine potentially stale training knowledge with whatever they can infer from compiled source. A better website alone cannot resolve the information gap in that workflow.
The team’s solution is to ship bundled Markdown documentation inside the installed package, alongside an AGENTS.md file that points to it. This gives the agent a local route from a question to explanatory material. Instead of having to reconstruct intended usage from compiled code or locate the right documentation online, it can read the documents already present in its working environment.
Burns reports almost 50% token savings across multiple models from this approach, compared with spending effort searching the web and finding the right resources. He sees particular value for libraries that change frequently. The result is promising, but he supplies no task set, model list, or measurement protocol that would make the percentage reproducible or establish it as a general expectation.
He says the bundled documents already help without additional skills. Skills can nevertheless direct an agent to inspect node_modules, and project guidance can ask it to read the relevant bundles and verify that they match the library it is working with. This adds explicit direction to the local documentation path without making a skill a prerequisite for using it.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Use readiness tests as changing feedback
Burns broadens the application beyond developer documentation. He also uses the package on the company’s marketing website, where every part has a Markdown file, and suggests that blogs or other Markdown-based sites can use the same approach. The pipeline generates the extra outputs from the material those sites already maintain.
Evaluation tools were still emerging as he prepared the talk. Burns mentions a Cloudflare readiness test and favors a tool called Aura AI that examines a website and produces recommendations. He shows a score of 59 and says it had been much higher three weeks earlier. Without a stable scoring basis or a breakdown of the changes, that number is best understood as feedback from a changing test rather than a fixed measure of agent effectiveness.
His closing advice is to keep improving as agents, models, and expectations change. He returns to his opening stance: these are lessons from working on the problem, not definitive answers. Small improvements remain useful even when a perfect or permanent implementation is unavailable.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Where to start on an ordinary website
An audience member from a website agency asks which techniques matter when building a startup’s ordinary website rather than a developer tool. Burns first emphasizes providing a .md file for every page. His rationale is token efficiency as more agents access websites. He also identifies the implementation obstacle: many content management systems are not built to produce Markdown versions of their pages.
Burns says he built his own CMS, ChrisCMS, to support his needs, while joking about his team’s reaction. His practical starting order is less demanding: create llms.txt first, then the fuller companion index, maintaining them manually if possible. He still recommends those files when the underlying system does not use Markdown and suggests creating the additional files as needed. A site can therefore begin with a useful description and page map while working toward Markdown delivery across its pages.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Read the complete timestamped transcript
- 0:01
[music]
- 0:12
>> The talk title, we'll see if it lines up
- 0:15
by the end of it, but when we put this
- 0:17
talk title in
- 0:19
just to be honest with you, so much
- 0:21
changes in like 3 days at this point.
- 0:24
We'll see how it goes. So, yeah, the
- 0:27
whole point of it was that
- 0:30
how I got LLMs to understand my open
- 0:32
source library and what I did to do it
- 0:36
well. Is it some kind of scientific
- 0:38
background? Am I from a lab? No.
- 0:43
That's
- 0:44
My slidey clicky thing's not working.
- 0:46
So, I just like to say again, I'm just
- 0:48
like you. I'm just this side of the
- 0:51
stage. I've just hacking hacking it
- 0:54
together, figuring out what is useful,
- 0:57
what is token efficient, these kind of
- 0:59
things. And again, I am British. Please
- 1:02
don't think my accent makes me an
- 1:04
expert.
- 1:07
So, for quick contacts, I'm Christopher
- 1:09
Burns. I'm the founder of Inth. I
- 1:12
created a open source cookie banner
- 1:14
library called C15T. That really
- 1:17
annoying thing on the internet. That is
- 1:19
me.
- 1:20
Uh I spoke at Next Conf uh after it
- 1:23
started taking off and it had 1.2
- 1:26
thousand downloads at the time. Now it's
- 1:27
closer to 2 million.
- 1:29
In terms of like statistics, so we just
- 1:32
checked that, you know, this is not
- 1:33
theoretical. This is actual
- 1:37
uh something that is succeeding.
- 1:39
We have 3 million NPM downloads.
- 1:41
4.5 uh 4.5 45% month-on-month growth.
- 1:46
2.8 thousand websites using it in
- 1:49
production from Minify to Z to
- 1:52
Inphysical.
- 1:54
And
- 1:55
the whole concept of this talk was
- 1:58
uh it goes back to we were doing all
- 2:00
these things to make our library more
- 2:03
efficient. You know, we were batting
- 2:05
upwards
- 2:07
compared to every other tool. Every
- 2:09
other tool was built for marketers and
- 2:11
lawyers. We were built for the
- 2:12
developer. So, we had to make sure we
- 2:15
had a very good developer experience.
- 2:17
And we had an onboarding format said,
- 2:20
"How did you hear about this?" And we
- 2:22
started to get spikes that from April
- 2:25
13th, you know, now it is our number one
- 2:30
source of inbound is
- 2:33
Claude, ChatGPT, Codex, that is ChatGPT,
- 2:37
Gemini recommending us.
- 2:39
And I like to think of this as, you
- 2:42
know, the iceberg. You know, we start
- 2:44
with the top of C15T
- 2:46
and
- 2:48
there's many many tools that go into it
- 2:51
from, you know, LLMs.txt to site maps to
- 2:54
RSS feeds to robot.txts.
- 2:56
So many micro optimizations that you can
- 2:58
do from old methods of running the
- 3:01
internet to new methods.
- 3:03
And uh
- 3:05
how many of you have, you know,
- 3:09
made these kind of tools? How many of
- 3:11
you have, really put simply, said, "Hey,
- 3:16
agents, we need to this to be done." And
- 3:21
yeah, it said, "We should install this
- 3:23
library." And you've gone, "Okay." Raise
- 3:26
your hands. How many people have done
- 3:27
this?
- 3:29
Pretty much most people.
- 3:32
That's a lot of hands.
- 3:34
So, what's really funny is that we went
- 3:37
from wizards installing our software to
- 3:39
agents installing them. And I just went
- 3:43
through Y Combinator.
- 3:45
And what's really interesting is it if
- 3:48
you know who these two people are. These
- 3:50
are the co-founders of Stripe, the
- 3:52
Collison brothers, and they had a really
- 3:54
classic saying of like a Collison
- 3:57
brothers install.
- 3:59
And they would hand you their laptop,
- 4:01
and they would install Stripe. These
- 4:03
days, it's kind of like just a prompt.
- 4:06
Being in Y Combinator, we just give
- 4:09
people a prompt. And really what that
- 4:11
means is that our very good developer
- 4:14
experience primitives are now hitting
- 4:17
agent primitives.
- 4:20
So,
- 4:21
as we was pulling all these things
- 4:23
together, there is no one tool that
- 4:26
fixes everything. I like to think about
- 4:29
these problems like, you know, Batman's
- 4:31
utility belt. Loads of really small
- 4:33
things targeted in different areas to
- 4:36
get it done.
- 4:38
And we built all of these things into
- 4:41
C15T because we wanted C15T to be the
- 4:44
best developer framework in this tool.
- 4:47
Think of it like Stripe Docs. And as we
- 4:50
was building more and more tools, more
- 4:52
and more documentation websites, we
- 4:54
actually started abstracting these tools
- 4:57
into a side quest
- 4:59
that we call Lead Type. So, all of the
- 5:03
things that we're going to talk about
- 5:04
now are things that we have already
- 5:07
solved with this open source framework.
- 5:10
We have our friends at other developer
- 5:12
companies implementing it and seeing
- 5:14
similar results about how to like
- 5:16
optimize for the agent experience.
- 5:19
So, again, this isn't a magic SEO tool.
- 5:23
It's actually
- 5:25
a very non-sexy title, but a
- 5:27
framework-neutral docs pipeline.
- 5:30
Complex.
- 5:32
But really, all it basically does is
- 5:33
take your .mdx files, you run Lead Type
- 5:37
generate, and it will spit out
- 5:38
everything for
- 5:41
um optimized agent experience for your
- 5:43
websites.
- 5:45
And the rest of this talk is going to
- 5:47
look a bit like a BuzzFeed list, to put
- 5:50
simply,
- 5:51
of these problems, because again, not
- 5:53
everybody knows even how to put an
- 5:56
LLM.txt on their website. So, you know,
- 5:59
that comes to the first problem of if
- 6:02
your docs have hundreds of pages,
- 6:05
and how can it navigate them to find the
- 6:07
right questions?
- 6:10
The first solution is obviously an
- 6:12
LLM.txt.
- 6:14
What we found in our research is that
- 6:17
it's much better not to just generate
- 6:19
this. It is much better to write your
- 6:22
LLM.txt from hand. Obviously,
- 6:25
AutoRaptor, but write it as you are
- 6:28
trying to get the answers across to the
- 6:31
LLMs.
- 6:33
For about 40 good lines beats 1,000
- 6:36
lines of noise from our testing.
- 6:39
And that comes to the second issue of
- 6:42
agents don't know how to browse. They
- 6:44
know how to fetch.
- 6:46
So, you then need the second part of the
- 6:49
solution of the LLMs full.
- 6:51
Again, think of this as a sitemap, where
- 6:54
it takes the actual page and the links
- 6:58
and a short description of what each
- 7:01
page is for the LLMs to reference.
- 7:03
Again, most people have heard these two
- 7:05
solutions.
- 7:07
But, where things are starting to get
- 7:09
very complicated and we're seeing a lot
- 7:11
of optimizations right now, is that HTML
- 7:14
is expensive, and why can't we just ship
- 7:18
markdown to the agents?
- 7:20
And we can. And you've seen that
- 7:24
everybody has started creating twin MDs.
- 7:28
So, that's taking the normal website,
- 7:30
such as Next.js quick start, and then
- 7:33
having a dot MD on the end of it.
- 7:37
And when you load that,
- 7:40
it goes to the markdown
- 7:43
But, what's really important here, and
- 7:45
it's really worth noting, is this line
- 7:47
at the bottom. If you look at all the
- 7:49
best documentation websites, Minify,
- 7:53
Vercel, C15T, pat myself on the back. Um
- 7:56
they all have this in the header. This
- 7:59
is saying to the agents whenever they
- 8:01
visit the website that there is an
- 8:04
alternative
- 8:05
version of this in mark markdown. Again,
- 8:09
who actually supports it? Don't ask me.
- 8:12
Perplexity, some of the agents, it's all
- 8:15
up in the air.
- 8:17
And then, the second thing as well
- 8:20
is that taking the .mds,
- 8:24
you need to make sure that they're
- 8:25
available through multiple methods. So,
- 8:28
one of them is like the .md, so as you
- 8:31
like copy it to an agent, you say .md.
- 8:34
Another one is just taking the normal
- 8:38
um link and then adding a uh redirect
- 8:42
into your like your Next.js config, so
- 8:44
that if it detects an agent has the
- 8:47
header of accepting markdown, instead of
- 8:50
returning the HTML, it will return the
- 8:53
markdown. And then, the third one is
- 8:56
that not all agents can append header
- 8:59
tags. So, there's also a URL query of
- 9:03
mode equals agent.
- 9:06
So, they're the ones that pretty much
- 9:08
everybody knows. Um and it's pretty
- 9:12
basic internet knowledge at this point.
- 9:14
Um
- 9:15
but one of the really interesting ones
- 9:18
is where we're going next. And our
- 9:20
tooling is also helping this is that an
- 9:23
agent can't ask your website anything.
- 9:28
So, we need to think about the web MCP.
- 9:31
And this is still very early, but our
- 9:34
tool is already uh
- 9:36
um exposing three different tools to
- 9:40
WebMCP. Search docs, get pages, and ask
- 9:44
docs. Again, um our library lead type is
- 9:48
pulling all of that context together so
- 9:51
an agent can easily ask it the right
- 9:52
questions. I think we'll even see a
- 9:55
future where communication happens over
- 9:58
email and there's companies in San
- 10:00
Francisco building that today.
- 10:04
But this is actually the most
- 10:06
interesting one and I think the most
- 10:09
important one that anybody who has any
- 10:12
type of developer module surface, NPM
- 10:15
modules, cargo, Python, whatever.
- 10:19
Is that the uncomfortable truth is that
- 10:22
coding agents are actually never
- 10:24
visiting the website if you have a
- 10:26
library.
- 10:27
They're actually visiting the node
- 10:30
modules. They read the repo and they
- 10:33
read the node modules. They They have
- 10:36
previous stale training data
- 10:39
and they're trying to work it out on
- 10:41
what it can do from the the compiled
- 10:44
source.
- 10:46
So, again, following what people like
- 10:49
Vercel are doing and people who are
- 10:51
thought leaders in this industry is that
- 10:54
we take the bundled markdown documents
- 10:59
and then we also put them in the node
- 11:02
modules
- 11:03
with an agents.md
- 11:06
file.
- 11:07
And the agents.md file basically says,
- 11:09
"If you've got a problem, if you've got
- 11:11
a question,
- 11:12
all the documents are here. Grab them."
- 11:16
And we actually see that this has
- 11:19
surprisingly real effects. We can see
- 11:22
that between many different models
- 11:24
almost 50% token saving on instead of
- 11:28
trying to search the web, find the right
- 11:31
tools, pulling the markdown files from
- 11:34
your code base. So, if you have a
- 11:36
library that's forever changing,
- 11:40
then having the node modules built in is
- 11:43
a very effective solution. This is also
- 11:45
working without any skills, but if you
- 11:48
want as well, you can add skills to it
- 11:50
to say, "Look at the node modules and go
- 11:52
from that."
- 11:54
And again, just uh doubling down into
- 11:57
this point, looking at like the
- 11:59
agents.ai and DFile, you can say like
- 12:01
when working with Z15 T Next.js library,
- 12:04
read the bundles and
- 12:07
verify that they match and go from
- 12:09
there.
- 12:11
So,
- 12:12
that's really like how we've done it. I
- 12:16
don't want to say this is like
- 12:17
prescriptive, that I know the answers.
- 12:21
If you have documentation websites, or
- 12:23
if you have any type of markdown, if
- 12:25
you're running your own blog, you know,
- 12:27
I've been using our package as well on
- 12:29
our marketing website. Every part of our
- 12:31
marketing website also has a markdown
- 12:34
file. It can be something that's used
- 12:36
for many things. We're currently just um
- 12:40
most people are just using it for
- 12:41
documentation.
- 12:43
But, you can literally run it and it
- 12:44
will pull out all of these extra files.
- 12:48
And
- 12:49
one of the big things was when I put
- 12:51
this talk together,
- 12:52
you know, we were seeing the results
- 12:54
that Claude was recommending, but there
- 12:57
was not really any like test suites yet,
- 13:00
or test harnesses, on like is your site
- 13:03
agent ready? And Cloudflare brought one
- 13:05
of them out.
- 13:07
But, my favorite
- 13:10
is actually one called Aura AI. Um this
- 13:13
is brand new and it tests a lot.
- 13:17
I'm happy to show off score of 59
- 13:20
because it's constantly changing. 3
- 13:22
weeks ago, it was a lot higher. And
- 13:24
again, this is a forever changing area.
- 13:27
So, aura.ai, put in your website, and it
- 13:30
will start giving you recommendations.
- 13:33
It's forever changing. Again, we can
- 13:35
just stay on top of it. And yeah, this
- 13:39
is like one of my final slides is that
- 13:41
the slide the
- 13:42
the market agents, LLMs, everything is
- 13:46
forever changing. There is no such thing
- 13:48
as perfection. When I started making
- 13:51
these slides, I got so caught up of
- 13:53
like, everyone expects me to be the
- 13:55
expert here, but I've just been hacking
- 13:57
on this problem a little more than you
- 13:58
guys have so far. So, never get caught
- 14:01
with being perfect. Every small little
- 14:04
increase really does matter. Every small
- 14:07
little thing you add really does matter.
- 14:11
Thank you so much. You can find me on X,
- 14:14
Burn Chris, and LinkedIn, and
- 14:15
everywhere.
- 14:16
>> [applause]
- 14:17
>> WOO!
- 14:19
I THINK
- 14:21
I THINK WE HAVE TIME for one or two
- 14:23
questions. Yeah, of course.
- 14:32
>> So, if you were building um
- 14:35
uh we're a website agency. We work with
- 14:37
a lot of startups building like their
- 14:38
own websites.
- 14:39
>> Mhm.
- 14:40
>> If you were just building a website, not
- 14:41
necessarily like developer tool, but
- 14:43
just a website to be found, which of
- 14:45
these methods like would you concentrate
- 14:47
on if you're starting from scratch?
- 14:49
>> Yeah, I think the most important ones,
- 14:53
and we're starting to see this more and
- 14:55
more, is
- 14:57
trying to provide a dot md file for
- 14:59
every single page. A lot of CMSs are not
- 15:02
built in this way. Um and we see this
- 15:05
optimization happening more and more
- 15:07
where I didn't put in the slide, but
- 15:10
we're seeing more and more websites
- 15:13
being visited by agents instead of real
- 15:15
humans. So, in terms of even like trying
- 15:18
to be proactive and token efficient, you
- 15:21
should provide a markdown file if you
- 15:24
can. Again, a lot of CMS's are not built
- 15:27
this way. I actually built my own CMS.
- 15:31
My name is Chris and I built ChrisCMS,
- 15:33
short for Christmas. It's a whole It's a
- 15:35
whole thing my team wishes I never
- 15:37
built.
- 15:38
But, it does work and it does bring this
- 15:41
like token efficiency up. So, yeah, I
- 15:44
would say llms.txt
- 15:46
is your first shout.
- 15:49
llms.txt full form
- 15:51
.txt. Second, if you if you can, just do
- 15:55
them manually. Say you're not even
- 15:57
working on systems that have markdown, I
- 16:01
still recommend them.
- 16:03
But, you can always get creative with
- 16:05
creating these
- 16:08
files on the on on the go.