llms.txt example: docs built for coding agents

A working llms.txt example from Cherry's developer portal: the index file, .md mirrors of every docs page, llms-full.txt, and two ready-made agent skills.

Cherry’s developer portal publishes a live llms.txt example at portal.cherry.fun/llms.txt , and this guide walks through it and the four surfaces around it, so the coding agent in your editor writes a Cherry integration from the real SDK and API details instead of guessing them. Cherry is a wallet-to-wallet messenger and community app for crypto; its developer side is a chat widget you embed, a REST API with bots, and mini apps that run inside Cherry chats, all free and self-serve at portal.cherry.fun. If you maintain your own docs, the setup below is a pattern you can copy in an afternoon.

What llms.txt is

llms.txt is a convention for a single plain-text Markdown file at a site’s root that indexes its documentation for language models. The spec at llmstxt.org asks for a title, a short summary in a blockquote, and linked sections of URLs, each with a one-line description of what the page contains. Nothing enforces it and no crawler owes it a fetch; it is a courtesy to whoever reads it.

Cherry’s file follows that shape. A summary line names the two integration surfaces, then sections cover Getting started, Chat Embed SDK, Cherry API, Guides, For AI agents, and Support. The file closes with a block titled “Key facts (read before generating code)”: the npm package and its current version, the two API base URLs, the two key formats, and the mistakes agents make most often.

Before you start

You need an assistant that can fetch a URL or read a pasted file (Claude Code, Cursor, Codex, and similar all qualify), and a project you want chat inside. Reading the docs needs no account: every file below is public and served without auth. A Solana wallet only matters later, when you sign in to the portal to create keys.

Step 1: Point your agent at the llms.txt example

Start with the index, because it is small. The file was 8,062 bytes as of 11 September 2026, a cheap way to give a model the shape of the docs set before it decides what to read in full. Every link in it points at a Markdown mirror, so fetching any entry returns plain text an agent can read.

> Cherry lets you add real chat to your product and drive it from your backend.
> Two integration surfaces: the Chat Embed SDK (`@cherrydotfun/chat-embed-sdk`,
> a drop-in widget) and the Cherry API (a REST API with two key types ...)

## Chat Embed SDK

- [Installation](https://portal.cherry.fun/docs/embed/installation.md): `npm install @cherrydotfun/chat-embed-sdk`, or a jsDelivr script tag.
- [Authentication](https://portal.cherry.fun/docs/embed/authentication.md): wallet-only, app-trusted+wallet (backend token server), app-trusted.

## Key facts (read before generating code)

- npm package: `@cherrydotfun/chat-embed-sdk` (current 0.1.7); class `CherryEmbed`.

You know it worked when the agent can tell you the package name and the class name without being told, and quotes cherry_sk_ and cherry_bot_ as two separate key types.

Step 2: Append .md to any docs URL

Every docs page has a plain-Markdown twin at the same path plus .md: the quickstart has its Markdown mirror one suffix away, and the docs root has one too. The reason is practical: the docs pages render in the browser, so a fetch of a docs URL with no JavaScript returns an HTML shell without the page’s text. An agent pointed at the human URL reads nothing useful.

Links inside a mirror point at other mirrors, so an agent crawls doc to doc without touching HTML. The mirrors are served as plain text, and a path with no mirror returns a 404.

page=https://portal.cherry.fun/docs/quickstart
curl -sI "${page}.md" | grep -i content-type
#=> content-type: text/plain; charset=utf-8

You know it worked when the response body starts with a Markdown heading rather than <!doctype html>.

Step 3: Load the whole docs set in one fetch

llms-full.txt is every page concatenated into one file. On 11 September 2026 it was 163,097 bytes covering 26 pages, small enough for a modern context window, so an agent can read the whole documentation set in one request. Each section is preceded by an HTML comment holding that page’s canonical URL, so a model quoting a passage can point at where it came from.

Step 4: Copy the AI setup prompt from your embed

Generic docs still leave the agent guessing your configuration. Open a project in the portal, open “Chat embeds”, pick an embed, then open the “Install” tab. Under “Set it up with your AI coding agent” the button “Copy AI setup prompt” puts a ready-to-run prompt on your clipboard carrying that embed’s own appId, auth mode and theme. The same tab offers “Copy the config values” if you want the raw JSON instead.

You know it worked when the toast reads “AI setup prompt copied. Paste it into your coding agent.”

Step 5: Install an integration skill

Cherry ships two agent skills, so “add Cherry chat to my app” becomes a checklist the agent follows step by step.

SkillWhat it coversSource
cherry-embed-integrationEmbedding chat with @cherrydotfun/chat-embed-sdk on web, React Native, or Flutter: host detection, backend token signing, theming, events, verificationcherrydotfun/chat-embed-sdk
cherry-miniapp-integrationRunning an existing Solana dApp inside Cherry with @cherrydotfun/miniapp-sdk: wallet bridge, environment detection, conditional UIcherrydotfun/miniapp-sdk

Both repos document the copy into ~/.claude/skills/ for Claude Code and ~/.agents/skills/ for Codex. The embed skill opens with a step most hand-written prompts skip: detect the host environment first, then follow exactly one path, because the SDK touches document and postMessage and cannot run in a mobile JavaScript runtime.

cp -r node_modules/@cherrydotfun/chat-embed-sdk/skills/cherry-embed-integration ~/.claude/skills/

Nothing, and a page recommending the file should say so. Google’s guidance for AI features in Search states that “You don’t need to create new machine readable files, AI text files, markup, or Markdown to appear in Google Search”, adds that “Structured data isn’t required for generative AI search, and there’s no special schema.org markup you need to add”, and says there is “no requirement to break your content into tiny pieces for AI to better understand it”.

That is a statement about ranking, and ranking is the rendered pages’ job. The files in this guide are read by the agent in a developer’s editor and by the curl in a terminal. Cherry ships them because a developer pastes a URL into Claude Code and expects working code back.

The portal flow behind the docs

Yes, developers can use Cherry, and the flow is free and self-serve from sign-in to first API key. Press “Connect Wallet” at portal.cherry.fun and approve a Sign In With Solana signature: it proves you own the wallet and starts your session, with nothing on-chain, no gas, no password and no email to confirm. A notification email is an optional field on the project, for alerts.

“Create project” asks for a name; the description, that optional email and teammate invites can wait. Inside a project the sidebar lists:

  • “Chat embeds”: one embed per surface, each with its auth mode, layout, theme, allowed origins, secret, and the Install tab from step 4.
  • “Rooms”: the chat rooms the project owns. They appear, in the section’s own words, “once an embed, a bot or your API key creates one”.
  • “Bots”: a bot identity with display name and avatar, a webhook URL (or long-poll if you leave it blank), and per-bot cherry_bot_ keys.
  • “API keys”: project cherry_sk_ keys you create, rotate, revoke, and edit scopes on, revealed once behind the warning “Copy your key now. It won’t be shown again.”
  • “Team access”: members identified by wallet address, roles of Owner, Admin, Member and Viewer, invitations, and ownership transfer.
  • “Developer profile”: the project’s public details, with website and email verification, plus the App identity label that messages sent through the API carry.

Rate limits apply per app, whichever key makes the call: 600 requests per minute and 50,000 per day as of 10 September 2026. For higher limits, ask the Cherry team in its public Telegram group .

Troubleshooting

Your agent invents an API base URL or a key format. Paste the “Key facts (read before generating code)” block from llms.txt. Each Cherry key is one opaque token copied from the portal, never assembled from an app ID plus a secret, and cha_<id>_<secret> is a deprecated legacy format the docs still have to warn about.

A docs fetch comes back empty. The agent fetched the page a browser renders. Append .md and fetch again.

A .md URL returns 404. That path has no mirror. Check the exact path in llms.txt, which lists every docs page.

The chat iframe never loads. If you send a Content-Security-Policy, allow frame-src https://embed.cherry.fun.

A floating widget renders two launchers, or none. There are two supported ways to get one and you pick a single one: your page renders a button that calls chat.toggle(), or the config sets chatBubble: true and the SDK draws it. That key ships in SDK 0.1.7, which the portal’s generated snippets pin.

FAQ

What is llms.txt?

llms.txt is a publishing convention: one plain-text Markdown file at a site’s root that indexes its documentation for language models, with a title, a short summary, and linked sections of URLs. It is proposed at llmstxt.org and honored by whoever chooses to read it. No crawler is required to fetch it.

Does llms.txt help SEO or Google rankings?

No. Google’s guidance on AI features in Search states that you do not need to create new machine readable files, AI text files, markup, or Markdown to appear in Google Search. The file is useful because coding agents in editors read it, not because Googlebot does.

Can developers use Cherry?

Yes, and it is free and self-serve. Sign in at portal.cherry.fun with a Solana wallet, create a project, and you get chat embeds, rooms, bots, and API keys from the same dashboard. There is no sales call and no email or password to create.

How do I give Claude Code or Cursor the Cherry docs?

Paste https://portal.cherry.fun/llms.txt for the index, or https://portal.cherry.fun/llms-full.txt for every page in one file. For a configured starting point, open your embed’s Install tab in the portal and press “Copy AI setup prompt”.

Do I need an API key to read the Cherry docs?

No. The rendered pages, the .md mirrors, llms.txt, llms-full.txt, and the OpenAPI 3.1 spec at portal.cherry.fun/openapi.json are all public and unauthenticated. Keys are only needed to call the Cherry API.

Start at portal.cherry.fun/docs/quickstart and hand your agent the index while you read it.

Sources

Build on Cherry

Add chat to your dApp, ship a mini app, or run bots and rooms through the API. Self-serve at the developer portal.