Task Description
The docs site exposes AI-agent-friendly content via the llms-full.txt route at the URL prefix served by apps/web/src/app/llms-full.txt/. The current apps/web/src/app/robots.ts disallows /llms.txt and /llms.mdx/ but does not disallow /llms-full.txt (or its trailing-slash variant). Crawlers can index this route as duplicate content, diluting canonical signals on the human-facing docs.
Update apps/web/src/app/robots.ts so the disallow array covers every LLM surface the app ships:
disallow: ['/api/', '/llms.txt', '/llms.mdx/', '/llms-full.txt', '/llms-full.txt/'],
Motivation / Why
- AI/LLM content routes should never be indexed; they exist to serve agents and Markdown-preferred clients only.
- A single undislallowed route can be indexed, returned for "$$term$$" queries, and produce a duplicate-content canonicalization mess against the human-readable
/docs/* pages.
- Two-line fix; aligns
robots.ts with the routing table established in apps/web/src/app/proxy.ts.
In Scope
apps/web/src/app/robots.ts — extend disallow to cover /llms-full.txt and /llms-full.txt/.
Out of Scope
- Changing the proxy / Markdown rewrite behaviour in
apps/web/src/app/proxy.ts.
- Adding
X-Robots-Tag HTTP headers (would be a separate consistency pass).
- Touching the human-facing
/docs/* or (home)/, (home)/blog/ routes.
User-Facing Impact
Component(s) Affected
- Multiple Components (specifically
apps/web/src/app/robots.ts; verification also touches apps/web/src/lib/shared.ts constants if docsContentRoute is referenced)
Priority
- p3: Low - Nice to have, can wait
Estimated Effort
Related Issues / Pull Requests
- Related audit: see the in-repo audit summary at
docs/internal/tasks/v1.4.x-seo-cleanup.md (this issue is part of that cleanup batch).
Relevant Documentation
apps/web/src/app/proxy.ts — current rewrite table for /llms.mdx/* content routes.
Technical Approach
Implementation approach:
- Edit the
disallow array literal in apps/web/src/app/robots.ts. No new imports or helpers needed.
- Verify locally with
pnpm --filter web dev and curl http://localhost:3000/robots.txt to confirm both paths are listed under Disallow:.
Files that may need changes:
apps/web/src/app/robots.ts
Constraints / considerations:
- None of the entries here affect production crawling today (Vercel doesn't serve
/llms-full.txt as a dynamic route — it's a static asset under src/app/). The audit is preventative rather than fixing a live crawl issue.
Risk Assessment
Risk: accidentally disallowing a route that does need indexing.
Mitigation: compare each disallow entry against the actual file tree under apps/web/src/app/ before merging.
Rollback plan: revert the disallow array to its previous contents.
Pre-Submission Checklist
Task Description
The docs site exposes AI-agent-friendly content via the llms-full.txt route at the URL prefix served by
apps/web/src/app/llms-full.txt/. The currentapps/web/src/app/robots.tsdisallows/llms.txtand/llms.mdx/but does not disallow/llms-full.txt(or its trailing-slash variant). Crawlers can index this route as duplicate content, diluting canonical signals on the human-facing docs.Update
apps/web/src/app/robots.tsso thedisallowarray covers every LLM surface the app ships:Motivation / Why
/docs/*pages.robots.tswith the routing table established inapps/web/src/app/proxy.ts.In Scope
apps/web/src/app/robots.ts— extenddisallowto cover/llms-full.txtand/llms-full.txt/.Out of Scope
apps/web/src/app/proxy.ts.X-Robots-TagHTTP headers (would be a separate consistency pass)./docs/*or(home)/,(home)/blog/routes.User-Facing Impact
Component(s) Affected
apps/web/src/app/robots.ts; verification also touchesapps/web/src/lib/shared.tsconstants ifdocsContentRouteis referenced)Priority
Estimated Effort
Related Issues / Pull Requests
docs/internal/tasks/v1.4.x-seo-cleanup.md(this issue is part of that cleanup batch).Relevant Documentation
apps/web/src/app/proxy.ts— current rewrite table for/llms.mdx/*content routes.Technical Approach
Implementation approach:
disallowarray literal inapps/web/src/app/robots.ts. No new imports or helpers needed.pnpm --filter web devandcurl http://localhost:3000/robots.txtto confirm both paths are listed underDisallow:.Files that may need changes:
apps/web/src/app/robots.tsConstraints / considerations:
/llms-full.txtas a dynamic route — it's a static asset undersrc/app/). The audit is preventative rather than fixing a live crawl issue.Risk Assessment
Risk: accidentally disallowing a route that does need indexing.
Mitigation: compare each disallow entry against the actual file tree under
apps/web/src/app/before merging.Rollback plan: revert the
disallowarray to its previous contents.Pre-Submission Checklist