Skip to content

Conversation

@roomote
Copy link
Contributor

@roomote roomote bot commented Feb 9, 2026

Related GitHub Issue

N/A - Internal initiative for Answer Engine Optimization (AEO)

Description

Adds Answer Engine Optimization (AEO) support to the marketing site at apps/web-roo-code:

1. llms.txt and llms-full.txt (served from public/)

  • llms.txt -- Concise, LLM-readable summary (~40 lines) following the llms.txt spec. Includes product descriptions, key links, and quick facts.
  • llms-full.txt -- Comprehensive markdown (~250 lines) covering the full product surface: Extension capabilities, Cloud agents, integrations (Slack, Linear, GitHub), pricing tiers, security/compliance, getting started, community links, and FAQ.
  • Both files are served automatically at roocode.com/llms.txt and roocode.com/llms-full.txt.

2. /what-is-roo-code page

A content-rich informational page targeting answer-engine queries like "what is roo code", "AI coding agent", etc.:

  • Full SEO metadata (title, description, canonical, OG, Twitter, keywords)
  • AboutPage + Article JSON-LD structured data with speakable specification
  • Product overview, key capabilities (6 cards), role-specific modes, model-agnostic design
  • Cloud Agents vs VS Code Extension comparison (Cloud prioritized first)
  • "Why developers choose Roo Code" differentiators (6 cards)
  • Getting started steps
  • Reuses existing FAQSection and CTASection components

3. Navigation updates

  • Added "What is Roo Code?" link to Resources dropdown (desktop + mobile) in nav-bar.tsx
  • Added "What is Roo Code?" link to Resources column in footer.tsx
  • Updated next-sitemap.config.cjs with priority 0.9 for the new page

Test Procedure

  • Verify llms.txt and llms-full.txt are accessible at their respective URLs after deploy
  • Verify /what-is-roo-code renders correctly with all sections
  • Verify navigation links appear in desktop dropdown, mobile menu, and footer
  • Verify JSON-LD structured data renders in page source
  • Run npx tsc --noEmit in apps/web-roo-code -- passes clean
  • ESLint passes with 0 warnings

Pre-Submission Checklist

  • Issue Linked: Internal initiative (no issue)
  • Scope: Changes are focused on AEO additions to the marketing site
  • Self-Review: Performed thorough self-review
  • Testing: TypeScript and ESLint pass clean
  • Documentation Impact: No docs updates required
  • Contribution Guidelines: Read and agreed

Documentation Updates

  • No documentation updates are required.

Additional Notes

All new content is static -- no API calls or dynamic data fetching. The llms.txt files are plain text served from public/, and the new page is a standard Next.js page component using existing patterns and shared components.


Important

Adds AEO support with llms.txt, llms-full.txt, and /what-is-roo-code page, updating navigation and sitemap.

  • AEO Support:
    • Adds llms.txt and llms-full.txt in public/ for concise and comprehensive product information.
    • Introduces /what-is-roo-code page with detailed product overview, SEO metadata, and JSON-LD structured data.
  • Navigation Updates:
    • Adds "What is Roo Code?" link to Resources dropdown in nav-bar.tsx and footer.tsx.
  • Sitemap Configuration:
    • Updates next-sitemap.config.cjs to set priority 0.9 for /what-is-roo-code page.

This description was created by Ellipsis for 0c4567f. You can customize this summary. It will automatically update as commits are pushed.

@dosubot dosubot bot added size:XL This PR changes 500-999 lines, ignoring generated files. Enhancement New feature or request labels Feb 9, 2026
@roomote
Copy link
Contributor Author

roomote bot commented Feb 9, 2026

Rooviewer Clock   See task

Found 1 issue (2 instances) -- both Button components in the new page are missing the asChild prop, causing invalid HTML nesting.

  • Add asChild to the Cloud CTA Button wrapping <a> (line 396)
  • Add asChild to the Extension CTA Button wrapping <a> (line 448)

Mention @roomote in a comment to request specific changes to this pull request or fix all unresolved issues.

Comment on lines +396 to +405
<Button
size="lg"
className="w-full sm:w-auto bg-violet-600 hover:bg-violet-700 text-white">
<a
href={EXTERNAL_LINKS.CLOUD_APP_SIGNUP_HOME}
className="flex items-center justify-center gap-2">
Try Cloud for Free
<ArrowRight className="size-4" />
</a>
</Button>
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This Button wraps an <a> without the asChild prop, so it renders as <button><a>...</a></button> -- invalid HTML (interactive content nested inside <button>). Clicking the button padding outside the link text won't navigate. The rest of the codebase uses asChild for this pattern (e.g. slack/page.tsx, pricing/page.tsx, cloud/page.tsx).

Suggested change
<Button
size="lg"
className="w-full sm:w-auto bg-violet-600 hover:bg-violet-700 text-white">
<a
href={EXTERNAL_LINKS.CLOUD_APP_SIGNUP_HOME}
className="flex items-center justify-center gap-2">
Try Cloud for Free
<ArrowRight className="size-4" />
</a>
</Button>
<Button
size="lg"
className="w-full sm:w-auto bg-violet-600 hover:bg-violet-700 text-white"
asChild>
<a
href={EXTERNAL_LINKS.CLOUD_APP_SIGNUP_HOME}
className="flex items-center justify-center gap-2">
Try Cloud for Free
<ArrowRight className="size-4" />
</a>
</Button>

Fix it with Roo Code or mention @roomote and request a fix.

Comment on lines +448 to +457
<Button size="lg" className="w-full sm:w-auto">
<a
href={EXTERNAL_LINKS.MARKETPLACE}
target="_blank"
rel="noopener noreferrer"
className="flex items-center justify-center gap-2">
<Download className="size-4" />
Install Free Extension
</a>
</Button>
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same issue here: missing asChild means this renders <button><a>...</a></button>, which is invalid HTML nesting. Clicks on the button area outside the link text won't navigate to the marketplace URL.

Suggested change
<Button size="lg" className="w-full sm:w-auto">
<a
href={EXTERNAL_LINKS.MARKETPLACE}
target="_blank"
rel="noopener noreferrer"
className="flex items-center justify-center gap-2">
<Download className="size-4" />
Install Free Extension
</a>
</Button>
<Button size="lg" className="w-full sm:w-auto" asChild>
<a
href={EXTERNAL_LINKS.MARKETPLACE}
target="_blank"
rel="noopener noreferrer"
className="flex items-center justify-center gap-2">
<Download className="size-4" />
Install Free Extension
</a>
</Button>

Fix it with Roo Code or mention @roomote and request a fix.

@github-actions
Copy link
Contributor

github-actions bot commented Feb 9, 2026

🚀 Preview deployed!

Your changes have been deployed to Vercel:

Preview URL: https://roo-code-website-qrziftise-roo-code.vercel.app

This preview will be updated automatically when you push new commits to this PR.

@mp-roocode mp-roocode marked this pull request as draft February 9, 2026 23:45
@mp-roocode mp-roocode closed this Feb 10, 2026
@github-project-automation github-project-automation bot moved this from New to Done in Roo Code Roadmap Feb 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Enhancement New feature or request size:XL This PR changes 500-999 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants