import type { ReactNode } from "react"; import clsx from "clsx"; import Heading from "@theme/Heading"; import styles from "./styles.module.css"; type FeatureItem = { title: string; Svg: React.ComponentType>; description: ReactNode; }; type FeatureQuote = { name: string; github: string; role: string; testimonial: string; }; const FeatureList: FeatureItem[] = [ { title: "Open Source", Svg: require("@site/static/img/lock-unlocked-fill.svg").default, description: ( <> Built with transparency and collaboration in mind, goose empowers developers to contribute, customize, and innovate freely. ), }, { title: "Runs Locally", Svg: require("@site/static/img/category-moving.svg").default, description: ( <> Goose runs locally to execute tasks efficiently, keeping control in your hands. ), }, { title: "Extensible", Svg: require("@site/static/img/category-ETF.svg").default, description: ( <> Customize goose with your preferred LLM and enhance its capabilities by connecting it to any external MCP server or API. ), }, { title: "Autonomous", Svg: require("@site/static/img/pay-in-four.svg").default, description: ( <> Goose independently handles complex tasks, from debugging to deployment, freeing you to focus on what matters most. ), }, ]; const FeatureQuotes: FeatureQuote[] = [ { name: "Prem Prem Pillai", github: "https://github.com/cloud-on-prem", role: "Software Engineer", testimonial: "With Goose, I feel like I am Maverick. Thanks a ton for creating this. 🙏 I have been having way too much fun with it today.", }, { name: "Jarrod Sibbison", github: "https://github.com/jsibbison-square", role: "Software Engineer", testimonial: "I wanted to construct some fake data for an API with a large request body and business rules I haven't memorized. So I told Goose which object to update and a test to run that calls the vendor. Got it to use the errors descriptions from the vendor response to keep correcting the request until it was successful. So good!", }, { name: "Manik Surtani", github: "https://github.com/maniksurtani", role: "Head of Open Source", testimonial: "I asked Goose to write up a few Google Scripts that mimic Clockwise's functionality (particularly, creating blocks on my work calendar based on events in my personal calendar, as well as color-coding calendar entries based on type and importance). Took me under an hour. If you haven't tried Goose yet, I highly encourage you to do so!", }, { name: "Andrey Bolduzev", github: "https://github.com/andrey-bolduzev", role: "Android Engineer", testimonial: "If anyone was looking for another reason to check it out: I just asked Goose to break a string-array into individual string resources across eleven localizations, and it performed amazingly well and saved me a bunch of time doing it manually or figuring out some way to semi-automate it.", }, { name: "Kang Huang", github: "https://github.com/kang-square", role: "Software Engineer", testimonial: "Hi team, thank you for much for making Goose, it's so amazing. Our team is working on migrating Dashboard components to React components. I am working with Goose to help the migration.", }, { name: "Jarrod Sibbison", github: "https://github.com/jsibbison-square", role: "Software Engineer", testimonial: "Got Goose to update a dependency, run tests, make a branch and a commit... it was 🤌. Not that complicated but I was impressed it figured out how to run tests from the README.", }, { name: "Lily Delalande", github: "https://github.com/lily-de", role: "Software Engineer", testimonial: "Wanted to document what I had Goose do -- took about 30 minutes end to end! I created a custom CLI command in the gh CLI library to download in-line comments on PRs about code changes (currently they aren't directly viewable). I don't know Go that well and I definitely didn't know where to start looking in the code base or how to even test the new command was working and Goose did it all for me 😁", }, ]; function Feature({ title, Svg, description }: FeatureItem) { return (
{title}

{description}

); } function Quote({ name, github, role, testimonial }: FeatureQuote) { return (
{/* inline styles in the interest of time */}

{testimonial}

{`${name}'s
{name}
{role}
); } export default function HomepageFeatures(): ReactNode { return (
{FeatureList.map((props, idx) => ( ))}
{/* inline styles in the interest of time */}

Loved by engineers

{FeatureQuotes.map((props, idx) => ( ))}
); }