Skip to content

Commit 39448f4

Browse files
web: Agent Landing Page A/B testing toolkit (#9018)
Co-authored-by: Roo Code <[email protected]>
1 parent 413ab1a commit 39448f4

File tree

10 files changed

+599
-441
lines changed

10 files changed

+599
-441
lines changed
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
import { type AgentPageContent } from "@/app/shared/agent-page-content"
2+
import Link from "next/link"
3+
4+
// Workaround for next/image choking on these for some reason
5+
import hero from "/public/heroes/agent-pr-fixer.png"
6+
7+
// Re-export for convenience
8+
export type { AgentPageContent }
9+
10+
export const content: AgentPageContent = {
11+
agentName: "PR Fixer",
12+
hero: {
13+
icon: "Wrench",
14+
heading: "State-of-the-art fixes for the comments on your PRs.",
15+
paragraphs: [
16+
"Roo Code's PR Fixer applies high-quality changes to your PRs, right from GitHub. Invoke via a PR comment and it will read the entire comment history to understand context, agreements, and tradeoffs — then implement the right fix.",
17+
"As always, you bring the model key; we orchestrate smart, efficient workflows.",
18+
],
19+
image: {
20+
url: hero.src,
21+
width: 800,
22+
height: 711,
23+
alt: "Example of a PR Fixer applying changes from review comments",
24+
},
25+
crossAgentLink: {
26+
text: "Works great with",
27+
links: [
28+
{
29+
text: "PR Reviewer Agent",
30+
href: "/reviewer",
31+
icon: "GitPullRequest",
32+
},
33+
],
34+
},
35+
cta: {
36+
buttonText: "Start 14-day Free Trial",
37+
disclaimer: "(cancel anytime)",
38+
},
39+
},
40+
howItWorks: {
41+
heading: "How It Works",
42+
steps: [
43+
{
44+
title: "1. Connect your GitHub repositories",
45+
description: "Pick which repos the PR Fixer can work on by pushing to ongoing branches.",
46+
icon: "GitPullRequest",
47+
},
48+
{
49+
title: "2. Invoke from a comment",
50+
description:
51+
'Ask the agent to fix issues directly from GitHub PR comments (e.g. "@roomote: fix these review comments"). It\'s fully aware of the entire comment history and latest diffs and focuses on fixing them – not random changes to your code.',
52+
icon: "MessageSquareCode",
53+
},
54+
{
55+
title: "3. Get clean scoped commits",
56+
description: (
57+
<>
58+
The agent proposes targeted changes and pushes concise commits or patch suggestions you (or{" "}
59+
<Link href="/reviewer">PR Reviewer</Link>) can review and merge quickly.
60+
</>
61+
),
62+
icon: "Wrench",
63+
},
64+
],
65+
},
66+
whyBetter: {
67+
heading: "Why Roo Code's PR Fixer is different",
68+
features: [
69+
{
70+
title: "Comment-history aware",
71+
description:
72+
"Understands the entire conversation on the PR – previous reviews, your replies, follow-ups – and uses that context to produce accurate fixes.",
73+
icon: "History",
74+
},
75+
{
76+
title: "Bring your own key",
77+
description:
78+
"Use your preferred models at full strength. We optimize prompts and execution without capping your model to protect our margins.",
79+
icon: "Key",
80+
},
81+
{
82+
title: "Repository- and diff-aware",
83+
description:
84+
"Analyzes the full repo context and the latest diff to ensure fixes align with project conventions and pass checks.",
85+
icon: "GitPullRequest",
86+
},
87+
],
88+
},
89+
cta: {
90+
heading: "Ship fixes, not follow-ups.",
91+
description: "Let Roo Code's PR Fixer turn your review feedback into clean, ready-to-merge commits.",
92+
buttonText: "Start 14-day Free Trial",
93+
},
94+
}

apps/web-roo-code/src/app/pr-fixer/page.tsx

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ import type { Metadata } from "next"
22

33
import { SEO } from "@/lib/seo"
44
import { ogImageUrl } from "@/lib/og"
5-
import { PrFixerContent } from "./PrFixerContent"
5+
import { AgentLandingContent } from "@/app/shared/AgentLandingContent"
6+
import { getContentVariant } from "@/app/shared/getContentVariant"
7+
import { content as contentA } from "./content-a"
68

79
const TITLE = "PR Fixer"
810
const DESCRIPTION =
@@ -55,6 +57,11 @@ export const metadata: Metadata = {
5557
],
5658
}
5759

58-
export default function AgentPrFixerPage() {
59-
return <PrFixerContent />
60+
export default async function AgentPrFixerPage({ searchParams }: { searchParams: Promise<{ v?: string }> }) {
61+
const params = await searchParams
62+
const content = getContentVariant(params, {
63+
A: contentA,
64+
})
65+
66+
return <AgentLandingContent content={content} />
6067
}

0 commit comments

Comments
 (0)