This document provides instructions for developers contributing to the Google Data Cloud Plugins.
- Git: Required for cloning and managing submodules.
- Gemini CLI: Ensure you have version
v0.6.0or above to test extensions locally. - Python 3.9+: (Optional) Required if you are running
evalbenchfrom theagent-evaluationdirectory.
When cloning this repository for the first time, you need to initialize the submodules:
git clone --recurse-submodules https://github.com/googlecloudplatform/data-cloud-plugins.git
cd data-cloud-pluginsIf you have already cloned the repository without submodules, initialize and update them:
git submodule update --init --recursiveTo pull the latest changes for all product submodules (bringing them up to date with their respective remote main branches):
git submodule update --remote --mergeTo pull the latest changes for a specific submodule:
cd <submodule-directory>
git pull origin mainTo check the status of all submodules:
git submodule statusIf you are developing a new skill or modifying a tool within one of the submodules, you can install that specific extension locally into your Gemini CLI for testing:
gemini extensions install ./<submodule-directory>Note: Make sure to follow any specific binary download instructions required by the individual extension's DEVELOPER.md (e.g., downloading the toolbox binary).
- Skill Validation: Ensure any new Skills follow the architectural guidelines outlined in the main design document (prescriptive feature selection, non-overlapping functionality, IP safety). Test your skills locally before submitting PRs.
- Agent Evaluation: We recommend using EvalBench to benchmark and safety-test changes to agent prompts and tools.
- Automated Checks: Individual product repositories enforce their own automated presubmit checks (e.g., license headers, structural validation, GitHub Actions).
Please use Conventional Commits for your pull requests. This ensures that automated changelogs and version bumps (via Release Please) are handled correctly across the ecosystem.
This repository is configured with Renovate to automatically keep submodule references up to date with their latest stable releases and tags:
- Unified PRs: When a new branch version (e.g.,
0.1.0->0.2.0) is found on a remote submodule, Renovate opens a single consolidated Pull Request bundling both the tracking branch update in.gitmodulesand the new commit SHA (digest) together. - Semantic Commits: These automated PRs and commits are prefixed with the
feattype (e.g.,feat(deps): update alloydb submodule). - Digest Filtering: To reduce PR noise, Renovate will ignore pure digest-only updates if no new branch/version has been tagged or updated on the remote submodule.
If you need to manually update the submodule pointers to reflect the latest stable releases of the product extensions:
- Run
git submodule update --remote --merge --recursive. - Commit the updated submodule hashes:
git commit -am "chore: update product submodules to latest". - Open a Pull Request to merge the updated pointers into
main.
Individual product extensions currently manage their own automated releases (typically using Google's release-please-action). Check the DEVELOPER.md of the specific product repository for detailed release workflows and automated changelog enrichment.