Summary
The registry's llms.txt and llms-full.txt routes hand-roll their text output with bespoke string builders. Adopt the first-party @vllnt/next-llms package (dogfood) so both manifests are generated through the shared, spec-compliant generators.
Scope
- Add
@vllnt/next-llms (canary channel) to apps/registry.
app/llms.txt/route.ts → generateLlmsText({ title, summary, details, sections }).
app/llms-full.txt/route.ts → generateLlmsFullText({ title, summary, details, sections }), restructured to the package's H1→H2→H3 hierarchy.
Notes
- Output stays equivalent and spec-compliant; empty-
notes links render without a trailing : (minor cleanup).
- llms-full's three redundant section-intro lines (releases/templates/components) drop out — the package's section model has no section-prose slot; feeds remain discoverable via the layout
<head>, the releases page, and llms.txt.
- Pinned to the floating
canary tag (matches existing shadcn: "canary"); lockfile pins the resolved canary build for reproducible CI.
Acceptance
Summary
The registry's
llms.txtandllms-full.txtroutes hand-roll their text output with bespoke string builders. Adopt the first-party @vllnt/next-llms package (dogfood) so both manifests are generated through the shared, spec-compliant generators.Scope
@vllnt/next-llms(canary channel) toapps/registry.app/llms.txt/route.ts→generateLlmsText({ title, summary, details, sections }).app/llms-full.txt/route.ts→generateLlmsFullText({ title, summary, details, sections }), restructured to the package's H1→H2→H3 hierarchy.Notes
noteslinks render without a trailing:(minor cleanup).<head>, the releases page, and llms.txt.canarytag (matches existingshadcn: "canary"); lockfile pins the resolved canary build for reproducible CI.Acceptance