At this Google I/O, Google introduced a new development tool: https://jules.google.com
What are the advantages? It’s currently free, runs on Gemini, and it’s an AI Agent.
What does this mean (example)? Often, there’s a problem where the number of modules or libraries you’d like to create or maintain in the project exceeds what can be maintained (if you are solo or small team), especially if you’re managing an open-source library in spare time.
Background agents help take on some of the work. I’ve found them useful for documentation, light refactoring, and implementing small features.
To get started, you can usually use a short prompt to pre-create a plan that Jules will partially follow (in reality, it will recreate the plan, but having references will make it easier):
Please write a condensed plan for an AI Agent so it can execute it step by step. Make sure that the plan has only one final goal; otherwise, ask the user what to do.
Make sure that the plan contains original links to sources, a chosen configuration script, and is written in a way that allows for one-click copy & paste.
This plan can be created in any AI chat, but when working with the plan, it’s advisable to specify the project/documentation the agent will be working with.
An important part of the prompt that needs to be included in the prompt-plan is the Flutter installation in Ubuntu:
Always add as first steps:
- Branch & Environment Setup
1.1 Create a new branch from the default branch (e.g., {name}).
1.2 Run the provided environment setup scripts to ensure Dart, FVM, and Flutter are correctly installed and configured.- For flutter fvm (should be dependent from what user asks):
# Install Dart SDK (using apt, official Google repo) sudo apt-get update sudo apt-get install -y apt-transport-https wget wget -qO- https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - sudo sh -c 'wget -qO- https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list > /etc/apt/sources.list.d/dart_stable.list’ sudo apt-get update sudo apt-get install -y dart # Add Dart to PATH export PATH="$PATH:/usr/lib/dart/bin” # Install FVM globally dart pub global activate fvm # Add FVM to PATH export PATH="$PATH:$HOME/.pub-cache/bin” # Install Flutter version from .fvmrc fvm install # Get Flutter dependencies fvm flutter pub get
- For flutter without fvm:
# Install Dart SDK (using apt, official Google repo) sudo apt-get update sudo apt-get install -y apt-transport-https wget wget -qO- https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - sudo sh -c 'wget -qO- https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list > /etc/apt/sources.list.d/dart_stable.list’ sudo apt-get update sudo apt-get install -y dart # Add Dart to PATH export PATH="$PATH:/usr/lib/dart/bin” flutter pub get
Why is this important?
Initially, Jules (like Cursor background agents and Codex) runs in an isolated environment. Since Dart & Flutter are typically not present in the container, they need to be forcibly installed before starting work on a project. By declaring this in the initial prompt, we provide clearer instructions on how the agent should act, which enables it to complete the task with higher quality.
I hope this concept proves useful 🙂
Please share your thoughts in the comments 🙂 This will help make this article visible to others and will be great support and motivation 🙂
Thank you for your time and have a good day!
Anton