Skip to content

llms.txt: regenerate and add a CI drift check - #259

Draft
stevep0z wants to merge 1 commit into
mainfrom
stellar-llms-txt
Draft

stevep0z wants to merge 1 commit into
mainfrom
stellar-llms-txt

Conversation

@stevep0z

Copy link
Copy Markdown
Collaborator

Documentation Pull Request

Summary

public/llms.txt is the index coding agents read to find our docs. It had drifted: 17 pages that merged after it was last generated were missing from it, so an agent pointed at https://docs.openzeppelin.com/llms.txt could not discover them.

This PR does two things:

  1. Regenerates public/llms.txt. The committed file is pnpm run generate:llms-txt output with no hand edits (579 pages with frontmatter, 0 without).
  2. Adds .github/workflows/llms-txt.yml, which regenerates llms.txt on every push to main and on PRs touching content/**, src/navigation/**, scripts/generate-llms-txt.ts or public/llms.txt, and fails if the result differs from what is committed.

The 17 pages that were missing:

  • 14 Confidential Token pages — Confidential Token, Privacy Model, Proof System, Operations, Spenders, Auditing, Selective Disclosure, Compliance, Clawback, Wallet Integration, Indexing and Recovery, and the three Best Practices pages (Account Holders, Administrators, Auditors)
  • Utilities — Math — Fixed-Point
  • the two testnet walkthroughs — Accounts — Agent Wallet, and Tokens — Confidential — Build with the SDK

The regeneration is purely additive: 17 insertions, 0 deletions.

Why the CI check

The drift was not a one-off. llms.txt is generated, but nothing enforced that it was regenerated when pages were added, so it fell behind silently and only surfaced when someone went looking. The new workflow means the next page added without regenerating llms.txt fails in review instead of quietly going missing from the agent-facing index for weeks.

Type of Change

  • Documentation update/revision
  • Other: generated-artifact refresh + CI drift check

Related Issues

Relates to the stellar-contracts v0.8.0 release and the agent-facing tooling refresh that accompanies it.

Checklist

Local verification

Run with the repo's own pinned package manager (packageManager: pnpm@11.1.0):

Check Result
pnpm install --frozen-lockfile clean, 15.7s
pnpm run generate:llms-txt 579 pages with frontmatter, 0 without
pnpm run check (biome check src/ + lint:links) pass — 113 files checked, no fixes applied; link validation 0 errored file, 0 errors
pnpm run build pass

Proof that the new workflow actually catches drift, both directions, run locally:

  • With the old llms.txt in the tree, pnpm run generate:llms-txt followed by git diff --exit-code -- public/llms.txt exits non-zero → the "Fail on drift" step fails, as intended.
  • With the regenerated llms.txt committed, the same sequence exits 0 → the step passes.

Additional Notes

I drafted this content with AI assistance and tested it before opening the PR. A full re-verification of every command, plus a blind evaluation of the related Stellar agent skills, will follow as a comment on this PR.

This is one of three related PRs refreshing the agent-facing tooling for stellar-contracts v0.8.0; the others are in OpenZeppelin/openzeppelin-skills and OpenZeppelin/stellar-contracts.

🤖 Generated with Claude Code

public/llms.txt was missing 17 Stellar pages that merged after it was last
generated: the 14 Confidential Token pages, Utilities - Math - Fixed-Point,
and the two testnet walkthroughs (Agent Wallet, Build with the SDK). The
file here is `pnpm run generate:llms-txt` output with no hand edits.

Add .github/workflows/llms-txt.yml, which regenerates llms.txt and fails on
any diff, so a page added without regenerating it is caught in review rather
than silently missing from the index coding agents read.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@netlify

netlify Bot commented Oct 27, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for openzeppelin-docs-v2 ready!

Name Link
🔨 Latest commit ba301ae
🔍 Latest deploy log https://app.netlify.com/projects/openzeppelin-docs-v2/deploys/6ae012955bbfd4aec86f3c9f
😎 Deploy Preview https://deploy-preview-259--openzeppelin-docs-v2.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Comment on lines +16 to +43
name: llms.txt is up to date
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v6

- name: Setup pnpm
uses: pnpm/action-setup@v6

- name: Use Node.js 22
uses: actions/setup-node@v6
with:
node-version: 22
cache: "pnpm"

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Regenerate llms.txt
run: pnpm run generate:llms-txt

- name: Fail on drift
run: |
if ! git diff --exit-code -- public/llms.txt; then
echo "::error file=public/llms.txt::public/llms.txt is out of date. Run 'pnpm run generate:llms-txt' and commit the result."
exit 1
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants