SHIP auto llms-txt-build
Your llms.txt matches what your site actually ships
The file
take it and run it.
One markdown file: the goal prompt, the verifier prompt, and the stopping condition. Read it before you run it. MIT licensed, no account, nothing to sign up for.
curl -fsSL https://vibemarketers.ai/loops/llms-txt-build.md -o .claude/loops/llms-txt-build.md The loop
copy it.
llms.txt tells AI systems what your site contains. It gets written once, and then the site grows past it. Every page you add after that is invisible to anything reading the file.
Use it when you have an llms.txt and no process keeping it current, which is almost everyone who has one.
You need your published llms.txt and your page list. Nothing else.
You get a dated report: what ships but is not listed, what is listed but does not exist, and whether the file points at your machine-readable surfaces at all.
The gate is you approving any rewrite. It reports by default.
Goal prompt
Read the published llms.txt for <site> and the list of pages the site
actually ships. Report every published page that llms.txt does not list, and
every URL llms.txt lists that does not exist. Check whether it points at the
machine-readable surfaces: raw files, feeds, and any API. Write the report
with a date. Verifier prompt
Open the report. FAIL if a page that ships is reported as listed, if a listed
URL that 404s is reported as fine, if the report omits any published page, or
if it has no date. Otherwise PASS. Stopping condition
Every published page has a listed or missing verdict in the report, and the verifier marks PASS.
MCPs it needs
- none required
Want everything at once
The installer writes the three starter skills and every
published loop into .claude/. Read the
script first.
curl -fsSL https://vibemarketers.ai/install.sh | bash The receipt
- Baseline
- An llms.txt written by hand at launch, listing 31 URLs, with no check that it matched what the site had since shipped.
- Hypothesis
- Comparing the listed URLs against the real page list will find pages added after llms.txt was last edited.
- Intervention
- Parsed every vibemarketers.ai URL out of the published llms.txt and compared it against the built page list, the published loops API and the term pages.
- Result
- 31 URLs listed against 32 pages. Every published loop and every term page was listed. 3 key pages were missing: the catalog itself, the runs page and the questions page. All 3 were added and a rerun found 0 missing.
- Commercial signal
- none
- Attribution limits
- Being listed in llms.txt is not evidence that any agent reads it or acts on it. This checks coverage, not effect.
- Learning
- The missing pages were the newest ones. llms.txt drifts in exactly one direction: pages get added to the site and not to the file, so the file is always describing an older version of the site.
- Next intervention
- Generate llms.txt from the sitemap at build time so drift is impossible, then keep this loop as the check on the generator.
Sources: run log, lab/runs/2026-09-25-llms-txt-build.json, collected , window: 31 listed URLs against 32 pages, single run before and after the fix .
One entry per run, append-only, newest first. Corrections append a dated line.
Inside a company
where the lane changes.
VibeMarketers tests the loop. SuperMarketers runs it on a real team.
- Problem
- llms.txt is written once and then drifts, so agents get an out of date map of the site.
- Source of truth
- The published llms.txt and the real page list from the build.
- Permitted actions
- Read llms.txt and the page list, compare, write a report. Never publish a rewritten file without approval.
- Required approvals
- The owner approves any change to llms.txt before it ships.
- Owner
- Technical SEO owner
- Metric
- Share of published pages discoverable from llms.txt.
On a real team this regenerates llms.txt from the sitemap on every build, so drift cannot happen.
Running this on your own site is one person reading a diff. Running it inside a company changes four things, and the guide covers them. When it stops being a file you copy and becomes a build, SuperMarketers does the same loop model inside your stack, on your keys.