Skip to content

flutter/gemini-cli-extension

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

62 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Flutter extension for Gemini CLI

Help Gemini CLI create, build, test, and run Flutter apps.

  • Status: Experimental - This is an experimental project. Features and commands may change drastically. We welcome your feedback!

✨ Features

  • πŸš€ Project Bootstrapping: Create new Flutter projects from scratch with built-in best practices, including linters, documentation, and design planning.
  • πŸ”§ Guided Modifications: Execute complex modification tasks with automated planning, git branch management, and step-by-step implementation guides for your approval.
  • βœ… Automated Pre-Commit Checks: Automatically format, analyze, and test your code before committing to maintain codebase quality.
  • ✍️ Smart Commit Messaging: Generate descriptive, conventional commit messages based on your staged changes.
  • 🧠 Context Priming: Initializes Gemini with specific rules and context for Dart and Flutter, ensuring high-quality, idiomatic code generation.

πŸ“‹ Prerequisites

  1. Gemini CLI 0.4.0+ installed and configured.
  2. Flutter & Dart SDK installed on your system.
  3. Git installed and available in your PATH.

πŸš€ Installation

1. Install from GitHub

Use the gemini extensions install command to install directly from the source repository:

gemini extensions install https://github.com/gemini-cli-extensions/flutter.git --auto-update

The --auto-update is optional: if specified, it will update to new versions as they are released.

You can manage the extension with the following commands:

# Update to the latest version
gemini extensions update flutter

# Uninstall the extension
gemini extensions uninstall flutter

Note for Windows users: There is currently a known issue with installing extensions on Gemini CLI for Windows. The workaround is as follows:

  1. Follow instructions above to attempt to install the plugin (this will fail).

        gemini extensions install https://github.com/gemini-cli-extensions/flutter.git
  2. In the command line, navigate to the folder in the home user's path where the code was downloaded (USER is the user's username)

        cd %TEMP%
  3. Locate the folder for the downloaded extension. It will be the latest titled gemini-extension<hash> where <hash> is a 6 character string. Change into this directory.

        cd gemini-extension123456
  4. There should be a zip file in this folder called "win32.flutter.zip". Unpack this file using tar (available in modern Windows versions) or by right-clicking it in File Explorer and selecting "Extract All...".

        tar xvf win32.flutter.zip
  5. Use the path flag to gemini installation

        gemini extensions install --path %TEMP%\gemini-extension123456

2. Available Commands

The new commands will be available in new Gemini CLI sessions. The following commands will be available (with or without the flutter: prefix):

  • /create-app - Guides you through bootstrapping a new Flutter project with best practices.
  • /create-package - Guides you through bootstrapping a new Dart package with best practices.
  • /modify - Manages a structured modification session with automated planning.
  • /commit - Automates pre-commit checks and generates a descriptive commit message.

πŸ’‘ Usage

This extension provides powerful commands to automate key phases of the development lifecycle.

/create-app

Initiates a guided process to bootstrap a new Flutter application, ensuring your project starts with a solid foundation.

Process:

  1. Asks for the package's purpose, details, and desired location on your filesystem.
  2. Creates a new Flutter project with recommended settings and linter rules.
  3. Generates starter pubspec.yaml, README.md, and CHANGELOG.md files.
  4. Produces a DESIGN.md and IMPLEMENTATION.md for your review and approval before any code is written.
/create-app I want to create a trip planning app

/modify

Starts a structured session to modify existing code. It helps you plan and execute changes safely and efficiently.

Process:

  1. Asks for your high-level modification goals and what you want to accomplish.
  2. Offers to create a new git branch for the modification work, isolating changes.
  3. Generates a MODIFICATION_DESIGN.md design document detailing the proposed changes.
  4. Creates a phased MODIFICATION_IMPLEMENTATION.md plan for your review and approval.
/modify

/commit

Prepares your staged git changes for a clean, high-quality commit. It acts as an automated pre-commit hook and message generator.

Process:

  1. Runs dart fix and dart format to clean and format your code.
  2. Executes the Dart analyzer to check for static analysis issues.
  3. Runs your project's test suite to ensure all tests are passing.
  4. Generates a descriptive commit message based on the staged changes for you to review, edit, and approve.
/commit

βš™οΈ Coding Guidelines

This extension enforces a specific set of coding standards to ensure consistency and quality. These rules are defined in the extension's repository:

  • flutter.md: Contains rules and best practices for writing Dart and Flutter code. These rules are opinionated, and we encourage you to review them to ensure they align with your style.

Connecting to a running app

You can connect to an app by providing the Flutter extension with the URL for the Dart Tooling Daemon:

  1. Run the app: in VSCode on a target device (iOS, Android, macOS, or web)
  2. Execute the Copy DTD Uri action: Open the VSCode Command Runner (Cmd+Shift+P, or Ctrl+Shift+P) and type "Copy DTD Uri to Clipboard" to copy the DTD URL to your clipboard
  3. Paste the URL into Gemini CLI: Enter a prompt like "Connect to the Flutter app with this DTD URL: " and paste the URL from your clipboard. You should see a "Connection succeeded" message from the connect_dart_tooling_daemon MCP tool.

Alternatively, you can run from the command line with the --print-dtd flag:

$ flutter run --print-dtd
...
The Dart Tooling Daemon is available at: ws://127.0.0.1:52636/M3G9d1Q3hFk=

To learn more about the Dart and Flutter MCP server, see the Dart and Flutter MCP server page on dart.dev or the dart_mcp_server README.

Known issues

  • Running a Flutter app from within Gemini CLI and then triggering a Hot Reload does not work in Flutter stable <= 3.37.0. Tracking issue: flutter/gemini-cli-extension#82

πŸ› Troubleshooting

Common Issues

  1. "Command not recognized": Ensure the extension is installed correctly and you have restarted the Gemini CLI. Verify the installation with gemini extensions list.

  2. "Gemini CLI version error": This extension requires Gemini CLI version 0.4.0 or greater. Check your version with gemini --version and update if necessary.

Filing Issues

If you have feedback, suggestions, or run into issues, please file an issue on GitHub.

🀝 Contributing

Contributions are welcome! Please see our CONTRIBUTING.md guide for more details on how to get started.

About

An extension for Gemini CLI that assists with creating and maintaining Flutter code.

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

No packages published