ravenna/llms-generator
A Laravel/PHP package that generates llms.txt and llms-full.txt files for your project, giving AI assistants and LLM crawlers a clean, structured map of your documentation and routes so they can understand and navigate your app with less guesswork.
Architecture fit. ravenna/llms-generator is a Laravel-native package targeting the emerging llms.txt convention — a markdown file at a site root that gives LLMs a curated map of the site's most useful content. For a Laravel monolith or a modular Laravel app where we own the routing layer and the content model, this is a low-impedance fit: expect a service provider, a config file, an artisan command or route, and a generator that reads from config, sitemap, or Eloquent models. Fit degrades sharply outside Laravel. In a polyglot or non-Laravel PHP estate, a 60-line build script or a plain Composer library would deliver the same artifact with less coupling.
Integration feasibility. The package is MIT-licensed and almost certainly small in surface area, so a time-boxed spike (half a day) should be sufficient to confirm output shape, configuration options, and content sourcing. The real feasibility question is not "does it install" but "what does it read from" — if it requires content to be curated in config, the TPM cost shifts to ongoing editorial ownership rather than engineering.
Technical risk.
llms.txt is a community proposal, not a ratified standard. Crawler support is uneven and may never materialize. That is a product risk, not just a technical one — we could ship a well-built file nobody reads.Key questions for the maintainer / spike.
llms.txt shape (H1, blockquote summary, H2 sections, link lists)?Stack fit. Strong for Laravel applications with server-rendered or server-routed public content. Weak for static-site generators, headless/JAMstack front ends, or SPA-only architectures unless we wire generation into a publish pipeline. If we run multiple properties on one Laravel install, confirm it can emit per-host files — otherwise we are back to a custom command.
Migration path.
composer require on a throwaway branch; confirm auto-discovery registers the provider cleanly.llms.txt.Compatibility. Pin the exact version. Verify the PHP/Laravel matrix against our current runtime and the next upgrade target. Watch for route collisions if the package registers a public /llms.txt route — we may prefer command-generated static output served by the web server.
Sequencing.
/llms.txt? Log user agents for 30 days.The gating decision is step 3. Without evidence of consumption, this is a cheap hedge, not an investment.
Maintenance. Since there are effectively no other users, we own the maintenance burden. The saving grace is a small, well-bounded code surface — a generator plus a command. Budget roughly one day per major Laravel upgrade to verify, and plan to vendor or fork if the upstream goes quiet. Recommend an explicit "we are the maintainer" note in the ADR.
Support. No community, no Stack Overflow corpus, no issue backlog to search. Support is the README plus our own reading of the source. Acceptable for a small package, unacceptable if it ever becomes load-bearing for revenue-critical surfaces.
Scaling. Generation cost is trivial — it is a string/file build. The scaling concern is cadence: if the package exposes a dynamic route that regenerates on each request, that is wasted work and a potential amplification vector under bot traffic. Prefer static generation at deploy time, cached and served by nginx/CDN. Staleness then becomes the tradeoff — regenerate on content publish.
Failure modes.
llms.txt convention never gains crawler adoption; the file is inert but harmless.Mitigations: pin, snapshot-test the generated output in CI, and treat the file as a build artifact with a diff check.
Ramp-up. Low. A Laravel developer can evaluate and integrate in under a day. Ongoing ownership is a few hours per quarter plus upgrade checks. The genuine ramp-up cost is not technical — it is organizational: agreeing who curates the content list and keeping it accurate as the site changes. That editorial ownership, not the package, is where the long-term cost sits.
How can I help you explore Laravel packages today?