diff --git a/apps/cli/src/ui/components/tools/types.ts b/apps/cli/src/ui/components/tools/types.ts index 28a1b5faa02..a16fbd60ea3 100644 --- a/apps/cli/src/ui/components/tools/types.ts +++ b/apps/cli/src/ui/components/tools/types.ts @@ -16,15 +16,7 @@ export type ToolCategory = | "other" export function getToolCategory(toolName: string): ToolCategory { - const fileReadTools = [ - "readFile", - "read_file", - "fetchInstructions", - "fetch_instructions", - "listFilesTopLevel", - "listFilesRecursive", - "list_files", - ] + const fileReadTools = ["readFile", "read_file", "skill", "listFilesTopLevel", "listFilesRecursive", "list_files"] const fileWriteTools = [ "editedExistingFile", diff --git a/apps/cli/src/ui/components/tools/utils.ts b/apps/cli/src/ui/components/tools/utils.ts index 5eaee33b127..31acf2cccbc 100644 --- a/apps/cli/src/ui/components/tools/utils.ts +++ b/apps/cli/src/ui/components/tools/utils.ts @@ -50,8 +50,7 @@ export function getToolDisplayName(toolName: string): string { // File read operations readFile: "Read", read_file: "Read", - fetchInstructions: "Fetch Instructions", - fetch_instructions: "Fetch Instructions", + skill: "Load Skill", listFilesTopLevel: "List Files", listFilesRecursive: "List Files (Recursive)", list_files: "List Files", @@ -107,8 +106,7 @@ export function getToolIconName(toolName: string): IconName { // File read operations readFile: "file", read_file: "file", - fetchInstructions: "file", - fetch_instructions: "file", + skill: "file", listFilesTopLevel: "folder", listFilesRecursive: "folder", list_files: "folder", diff --git a/apps/web-roo-code/src/app/linear/page.tsx b/apps/web-roo-code/src/app/linear/page.tsx deleted file mode 100644 index 40334e2698a..00000000000 --- a/apps/web-roo-code/src/app/linear/page.tsx +++ /dev/null @@ -1,413 +0,0 @@ -import { - ArrowRight, - CheckCircle, - CreditCard, - Eye, - GitBranch, - GitPullRequest, - Link2, - MessageSquare, - Settings, - Shield, -} from "lucide-react" -import type { LucideIcon } from "lucide-react" -import type { Metadata } from "next" - -import { AnimatedBackground } from "@/components/homepage" -import { LinearIssueDemo } from "@/components/linear/linear-issue-demo" -import { Button } from "@/components/ui" -import { EXTERNAL_LINKS } from "@/lib/constants" -import { SEO } from "@/lib/seo" -import { ogImageUrl } from "@/lib/og" - -const TITLE = "Roo Code for Linear" -const DESCRIPTION = "Assign development work to @Roo Code directly from Linear. Get PRs back without switching tools." -const OG_DESCRIPTION = "Turn Linear Issues into Pull Requests" -const PATH = "/linear" - -// Featured Workflow section is temporarily commented out until video is ready -// const LINEAR_DEMO_YOUTUBE_ID = "" - -export const metadata: Metadata = { - title: TITLE, - description: DESCRIPTION, - alternates: { - canonical: `${SEO.url}${PATH}`, - }, - openGraph: { - title: TITLE, - description: DESCRIPTION, - url: `${SEO.url}${PATH}`, - siteName: SEO.name, - images: [ - { - url: ogImageUrl(TITLE, OG_DESCRIPTION), - width: 1200, - height: 630, - alt: TITLE, - }, - ], - locale: SEO.locale, - type: "website", - }, - twitter: { - card: SEO.twitterCard, - title: TITLE, - description: DESCRIPTION, - images: [ogImageUrl(TITLE, OG_DESCRIPTION)], - }, - keywords: [ - ...SEO.keywords, - "linear integration", - "issue to PR", - "AI in Linear", - "engineering workflow automation", - "Roo Code Cloud", - ], -} - -// Invalidate cache when a request comes in, at most once every hour. -export const revalidate = 3600 - -type ValueProp = { - icon: LucideIcon - title: string - description: string -} - -const VALUE_PROPS: ValueProp[] = [ - { - icon: GitBranch, - title: "Work where you already work.", - description: - "Assign development work to @Roo Code directly from Linear. No new tools to learn, no context switching required.", - }, - { - icon: Eye, - title: "Progress is visible.", - description: - "Watch progress unfold in real-time. Roo Code posts updates as comments, so your whole team stays in the loop.", - }, - { - icon: MessageSquare, - title: "Mention for refinement.", - description: - 'Need changes? Just comment "@Roo Code also add dark mode support" and the agent picks up where it left off.', - }, - { - icon: Link2, - title: "Full traceability.", - description: - "Every PR links back to the originating issue. Every issue shows its linked PR. Your audit trail stays clean.", - }, - { - icon: Settings, - title: "Organization-level setup.", - description: - "Connect once, use everywhere. Your team members can assign issues to @Roo Code without individual configuration.", - }, - { - icon: Shield, - title: "Safe by design.", - description: - "Agents never touch main/master directly. They produce branches and PRs. You review and approve before merge.", - }, -] - -// type WorkflowStep = { -// step: number -// title: string -// description: string -// } - -// const WORKFLOW_STEPS: WorkflowStep[] = [ -// { -// step: 1, -// title: "Create an issue", -// description: "Write your issue with acceptance criteria. Be as detailed as you like.", -// }, -// { -// step: 2, -// title: "Call @Roo Code", -// description: "Mention @Roo Code in a comment to start. The agent begins working immediately.", -// }, -// { -// step: 3, -// title: "Watch progress", -// description: "Roo Code posts status updates as comments. Refine with @-mentions if needed.", -// }, -// { -// step: 4, -// title: "Review the PR", -// description: "When ready, the PR link appears in the issue. Review, iterate, and ship.", -// }, -// ] - -type OnboardingStep = { - icon: LucideIcon - title: string - description: string - link?: { - href: string - text: string - } -} - -const ONBOARDING_STEPS: OnboardingStep[] = [ - { - icon: CreditCard, - title: "1. Team Plan", - description: "Linear integration requires a Team plan.", - link: { - href: EXTERNAL_LINKS.CLOUD_APP_TEAM_TRIAL, - text: "Start a free trial", - }, - }, - { - icon: GitPullRequest, - title: "2. Connect GitHub", - description: "Link your repositories so Roo Code can open PRs on your behalf.", - }, - { - icon: Settings, - title: "3. Connect Linear", - description: "Authorize via OAuth. No API keys to manage or rotate.", - }, - { - icon: CheckCircle, - title: "4. Link & Start", - description: "Map your Linear project to a repo, then assign or mention @Roo Code.", - }, -] - -function LinearIcon({ className }: { className?: string }) { - return ( - - - - ) -} - -export default function LinearPage(): JSX.Element { - return ( - <> - {/* Hero Section */} -
- -
-
-
-
- - Powered by Roo Code Cloud -
-

- Turn Linear Issues into Pull Requests -

-

- Assign development work to @Roo Code directly from Linear. Get PRs back without - switching tools. -

- -
- -
- -
-
-
-
- - {/* Value Props Section */} -
-
-
-
-
-
-

- Why your team will love using Roo Code in Linear -

-

- AI agents that understand context, keep your team in the loop, and deliver PRs you can - review. -

-
-
- {VALUE_PROPS.map((prop, index) => { - const Icon = prop.icon - return ( -
-
- -
-

{prop.title}

-

{prop.description}

-
- ) - })} -
-
-
- - {/* Featured Workflow Section - temporarily commented out until video is ready -
-
-
-
-
- -
-
- - Featured Workflow -
-

Issue to Shipped Feature

-

- Stay in Linear from assignment to review. Roo Code keeps the issue updated and links the PR - when it's ready. -

-
- -
-
- {/* YouTube Video Embed or Placeholder */} - {/*
- {LINEAR_DEMO_YOUTUBE_ID ? ( -