Skip to main content

JetBrains Extension

🎥Plug & Play
Watch the demo

The JetBrains extension is designed to work within your IDE. Goose can accomplish a lot of the developer-centric tasks with the Developer extension that is enabled on install, however, the JetBrains extension provides a more integrated and project-aware way to work with code.

This tutorial covers how to enable and use the JetBrains MCP Server as a built-in Goose extension to integrate with any JetBrains IDE.

Known Limitation

The JetBrains extension does not work with OpenAI models (e.g. gpt-4o).

Configuration

  1. Add the MCP Server plugin to your IDE.

  2. Enable built-in Goose extension:

  1. Run the configure command:
goose configure
  1. Choose to add a Built-in Extension
┌   goose-configure 

◇ What would you like to configure?
│ Add Extension

◆ What type of extension would you like to add?
│ ● Built-in Extension (Use an extension that comes with Goose)
│ ○ Command-line Extension
│ ○ Remote Extension

  1. Arrow down to the JetBrains extension and press Enter
┌   goose-configure 

◇ What would you like to configure?
│ Add Extension

◇ What type of extension would you like to add?
│ Built-in Extension

◆ Which built-in extension would you like to enable?
│ ○ Developer Tools
│ ○ Computer Controller
│ ○ Google Drive
│ ○ Memory
│ ● JetBrains (Connect to jetbrains IDEs)
└ Enabled jetbrains extension

Example Usage

In this example, I'm going to upgrade a Java project to the latest LTS version.

LLM

Anthropic's Claude 3.5 Sonnet was used for this task.

  1. Open IntelliJ (JetBrains' Java and Kotlin IDE)
  2. Open a terminal within your IDE and start a new Goose session:
goose session
tip

When using Goose to refactor code, it's recommended to commit your code to version control before making changes. This way, you have a clean snapshot to compare against, making it easy to review Goose’s modifications, revert if needed, and track improvements.

Goose Prompt

using the JetBrains IDE tools, upgrade this project to use the latest Java LTS version and refactor the codebase to use newer Java features where beneficial.

After 2 minutes, Goose was done with the upgrade! 🎉

Goose Output

I'll make several improvements to modernize this codebase to use Java 21 (latest LTS) features. Here are the changes I'll implement:

1. Update the `pom.xml` to use Java 21
2. Use newer Java features

[... code changes ...]

Here's a summary of the modernization changes made:

1. `pom.xml`:
- Set Java version to 21
- Enabled preview features
- Updated all dependencies to their latest stable versions

2. `AccountsOverviewPage.java`:
- Made the class `final` since it extends the sealed `Page` class
- Updated stream collection to use `.toList()` instead of `collect(Collectors.toList())`
- Made fields final for better immutability

3. `Page.java`:
- Converted to a sealed class
- Restricted which classes can extend it using `permits`
- Made fields protected and final where appropriate
- Added pattern matching for exception handling
- Implemented Optional for null safety
- Used String Templates for error messages
- Added functional programming concepts with Supplier
- Enhanced error handling with specific exception types

4. `LoginComponent.java`:
- Added a private record for credentials
- Implemented pattern matching with record patterns
- Made fields final for better immutability

5. `AccountTests.java`:
- Implemented structured concurrency using `StructuredTaskScope`
- Used parallel execution for UI and API tasks
- Improved error handling with structured task management
- Used pattern matching and type inference with `var`

6. `BaseTests.java`:
- Implemented structured concurrency for setup tasks
- Improved resource management
- Better exception handling
- Used modern Duration API

7. `APIUtil.java`:
- Implemented String Templates (Java 21 preview feature)
- Used modern text blocks

8. `Customers.java`:
- Added sealed interface for customer types
- Implemented pattern matching for switch expressions
- Added pattern matching for instanceof
- Enhanced type safety with records

Key modern Java features used:
- String Templates (Java 21 Preview)
- Pattern Matching for switch (Java 21)
- Sealed Classes and Interfaces (Java 17)
- Records (Java 16)
- Pattern Matching for instanceof (Java 16)
- Text Blocks (Java 15)
- Switch Expressions (Java 14)

The codebase is now using the latest Java LTS version (21) and incorporates many modern Java features that improve:
- Type safety
- Null safety
- Code readability
- Error handling
- Performance

Using the JetBrains extension provided several advantages and made it easier for Goose to:

  • navigate through the codebase
  • track changes
  • make consistent modifications across files
  • verify the content of files before and after changes