vertex-ai-creative-studio
AGENTS.md1.2k starsChanged 9 days agoApache-2.0View on GitHub
This document provides guidelines for AI agents working on the GenMedia Creative Studio codebase (GoogleCloudPlatform/genmedia-creative-studio, formerly vertex-ai-creative-studio).
- Reads credentials
- Commits and pushes
1 other project uses a version of this.
Adopted by
Steady: 0 new projects took it in the last 4 weeks, none the 4 weeks before.thin data
Most recently taken up by
- GoogleCloudPlatform/genmedia-creative-studioword for word, first seen Nov 5, 2026
Who's talking about GoogleCloudPlatform/vertex-ai-creative-studio
- palladius/media-arneis“Agentic CLI Dseign Best Practices”GitHub · Apr 20, 2026 · 1 reactions
- @github-trending.bsky.social“📦 GoogleCloudPlatform / vertex-ai-creative-studio ⭐ 520 (+7) 🗒 Jupyter Notebook GenMedia Creative Studio …”Bluesky · Nov 5, 2025 · 1 likes
- ghchinoy/genmedia-creative-studio“chore(main): release mcp 3.25.0”GitHub · Nov 6, 2026
- GoogleCloudPlatform/genmedia-creative-studio“fix(deps): update …”GitHub · Sep 20, 2026
- GoogleCloudPlatform/genmedia-creative-studio“fix(deps): update …”GitHub · Sep 19, 2026
The biggest 5 of 51 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 51
Talked about on GitHub and Bluesky (51 times).
On GitHub · 50
- Apr 20, 2026Agentic CLI Dseign Best Practices — palladius/media-arneis1 reaction
- Nov 6, 2026chore(main): release mcp 3.25.0 — ghchinoy/genmedia-creative-studio0 reactions
- Sep 20, 2026fix(deps): update github.com/googlecloudplatform/vertex-ai-creative-studio/experiments/mcp-genmedia/mcp-genmedia-go/mcp-common digest to 5b45f52 — GoogleCloudPlatform/genmedia-creative-studio0 reactions
- Sep 19, 2026fix(deps): update github.com/googlecloudplatform/vertex-ai-creative-studio/experiments/mcp-genmedia/mcp-genmedia-go/mcp-common digest to 3087a62 — GoogleCloudPlatform/genmedia-creative-studio0 reactions
- Sep 18, 2026fix(deps): update github.com/googlecloudplatform/vertex-ai-creative-studio/experiments/mcp-genmedia/mcp-genmedia-go/mcp-common digest to 88c354f — GoogleCloudPlatform/genmedia-creative-studio0 reactions
45 more on GitHub
- Sep 17, 2026fix(deps): update github.com/googlecloudplatform/vertex-ai-creative-studio/experiments/mcp-genmedia/mcp-genmedia-go/mcp-common digest to b0287be — GoogleCloudPlatform/genmedia-creative-studio0 reactions
- Sep 16, 2026fix(deps): update github.com/googlecloudplatform/vertex-ai-creative-studio/experiments/mcp-genmedia/mcp-genmedia-go/mcp-common digest to 40e142b — GoogleCloudPlatform/genmedia-creative-studio0 reactions
- Sep 15, 2026fix(deps): update github.com/googlecloudplatform/vertex-ai-creative-studio/experiments/mcp-genmedia/mcp-genmedia-go/mcp-common digest to 8e0620e — GoogleCloudPlatform/genmedia-creative-studio0 reactions
- Sep 14, 2026fix(deps): update github.com/googlecloudplatform/vertex-ai-creative-studio/experiments/mcp-genmedia/mcp-genmedia-go/mcp-common digest to ae4be8c — GoogleCloudPlatform/genmedia-creative-studio0 reactions · 1 comment
- Sep 14, 2026Upstream v3.20.0 conflicts with our changes — GoogleCloudPlatform/genmedia-creative-studio0 reactions · 2 comments
- Sep 13, 2026fix(deps): update github.com/googlecloudplatform/vertex-ai-creative-studio/experiments/mcp-genmedia/mcp-genmedia-go/mcp-common digest to 763e337 — GoogleCloudPlatform/genmedia-creative-studio0 reactions
- Sep 12, 2026fix(deps): update github.com/googlecloudplatform/vertex-ai-creative-studio/experiments/mcp-genmedia/mcp-genmedia-go/mcp-common digest to 4fdae31 — GoogleCloudPlatform/genmedia-creative-studio0 reactions
- Sep 12, 2026chore(main): release mcp 3.20.1 — GoogleCloudPlatform/genmedia-creative-studio0 reactions · 2 comments
- Sep 11, 2026fix(deps): update github.com/googlecloudplatform/vertex-ai-creative-studio/experiments/mcp-genmedia/mcp-genmedia-go/mcp-common digest to 7589d38 — GoogleCloudPlatform/genmedia-creative-studio0 reactions
- Sep 11, 2026chore(main): release mcp 3.20.0 — GoogleCloudPlatform/genmedia-creative-studio0 reactions · 2 comments
- Sep 10, 2026fix(deps): update github.com/googlecloudplatform/vertex-ai-creative-studio/experiments/mcp-genmedia/mcp-genmedia-go/mcp-common digest to d5cee2d — GoogleCloudPlatform/genmedia-creative-studio0 reactions
- Sep 10, 2026chore(main): release mcp 3.19.0 — GoogleCloudPlatform/genmedia-creative-studio0 reactions · 2 comments
- Sep 10, 2026fix(deps): update github.com/googlecloudplatform/vertex-ai-creative-studio/experiments/mcp-genmedia/mcp-genmedia-go/mcp-common digest to 39d70e0 — GoogleCloudPlatform/genmedia-creative-studio0 reactions
- Sep 8, 2026fix(deps): update github.com/googlecloudplatform/vertex-ai-creative-studio/experiments/mcp-genmedia/mcp-genmedia-go/mcp-common digest to ccc0fab — GoogleCloudPlatform/genmedia-creative-studio0 reactions
- Sep 7, 2026fix(deps): update github.com/googlecloudplatform/vertex-ai-creative-studio/experiments/mcp-genmedia/mcp-genmedia-go/mcp-common digest to 4e71935 — GoogleCloudPlatform/genmedia-creative-studio0 reactions
- Sep 6, 2026fix(deps): update github.com/googlecloudplatform/vertex-ai-creative-studio/experiments/mcp-genmedia/mcp-genmedia-go/mcp-common digest to 31f00b0 — GoogleCloudPlatform/genmedia-creative-studio0 reactions · 1 comment
- Sep 5, 2026fix(deps): update github.com/googlecloudplatform/vertex-ai-creative-studio/experiments/mcp-genmedia/mcp-genmedia-go/mcp-common digest to 05a061f — GoogleCloudPlatform/genmedia-creative-studio0 reactions
- Sep 4, 2026fix(deps): update github.com/googlecloudplatform/vertex-ai-creative-studio/experiments/mcp-genmedia/mcp-genmedia-go/mcp-common digest to 8eb22ce — GoogleCloudPlatform/genmedia-creative-studio0 reactions
- Sep 3, 2026fix(deps): update github.com/googlecloudplatform/vertex-ai-creative-studio/experiments/mcp-genmedia/mcp-genmedia-go/mcp-common digest to eb4acba — GoogleCloudPlatform/genmedia-creative-studio0 reactions · 1 comment
- Sep 2, 2026fix(deps): update github.com/googlecloudplatform/vertex-ai-creative-studio/experiments/mcp-genmedia/mcp-genmedia-go/mcp-common digest to 4cf3347 — GoogleCloudPlatform/genmedia-creative-studio0 reactions
- Sep 1, 2026fix(deps): update github.com/googlecloudplatform/vertex-ai-creative-studio/experiments/mcp-genmedia/mcp-genmedia-go/mcp-common digest to b0791b1 — GoogleCloudPlatform/genmedia-creative-studio0 reactions
- Aug 31, 2026fix(deps): update github.com/googlecloudplatform/vertex-ai-creative-studio/experiments/mcp-genmedia/mcp-genmedia-go/mcp-common digest to bee1309 — GoogleCloudPlatform/genmedia-creative-studio0 reactions
- Aug 30, 2026fix(deps): update github.com/googlecloudplatform/vertex-ai-creative-studio/experiments/mcp-genmedia/mcp-genmedia-go/mcp-common digest to 13e7157 — GoogleCloudPlatform/genmedia-creative-studio0 reactions
- Aug 30, 2026fix(deps): update github.com/googlecloudplatform/vertex-ai-creative-studio/experiments/mcp-genmedia/mcp-genmedia-go/mcp-common digest to 13e7157 - autoclosed — GoogleCloudPlatform/genmedia-creative-studio0 reactions
- Aug 30, 2026chore(main): release mcp 3.18.2 — GoogleCloudPlatform/genmedia-creative-studio0 reactions · 3 comments
- Aug 29, 2026fix(deps): update github.com/googlecloudplatform/vertex-ai-creative-studio/experiments/mcp-genmedia/mcp-genmedia-go/mcp-common digest to 2d2693a — GoogleCloudPlatform/genmedia-creative-studio0 reactions
- Aug 29, 2026fix(deps): update github.com/googlecloudplatform/vertex-ai-creative-studio/experiments/mcp-genmedia/mcp-genmedia-go/mcp-common digest to 1546cf6 - autoclosed — GoogleCloudPlatform/genmedia-creative-studio0 reactions
- Aug 28, 2026fix(deps): update github.com/googlecloudplatform/vertex-ai-creative-studio/experiments/mcp-genmedia/mcp-genmedia-go/mcp-common digest to 9b1fb75 — GoogleCloudPlatform/genmedia-creative-studio0 reactions · 1 comment
- Aug 28, 2026fix(deps): update github.com/googlecloudplatform/vertex-ai-creative-studio/experiments/mcp-genmedia/mcp-genmedia-go/mcp-common digest to df1a7c7 - autoclosed — GoogleCloudPlatform/genmedia-creative-studio0 reactions
- Aug 28, 2026chore(main): release mcp 3.18.0 — GoogleCloudPlatform/genmedia-creative-studio0 reactions · 2 comments
- Aug 27, 2026fix(deps): update github.com/googlecloudplatform/vertex-ai-creative-studio/experiments/mcp-genmedia/mcp-genmedia-go/mcp-common digest to eaa1e8c — GoogleCloudPlatform/genmedia-creative-studio0 reactions
- Aug 27, 2026fix(deps): update github.com/googlecloudplatform/vertex-ai-creative-studio/experiments/mcp-genmedia/mcp-genmedia-go/mcp-common digest to 6f809bc - autoclosed — GoogleCloudPlatform/genmedia-creative-studio0 reactions
- Aug 27, 2026chore(main): release mcp 3.17.0 — GoogleCloudPlatform/genmedia-creative-studio0 reactions · 2 comments
- Aug 26, 2026fix(deps): update github.com/googlecloudplatform/vertex-ai-creative-studio/experiments/mcp-genmedia/mcp-genmedia-go/mcp-common digest to 93a5e6e — GoogleCloudPlatform/genmedia-creative-studio0 reactions · 1 comment
- Aug 25, 2026fix(deps): update github.com/googlecloudplatform/vertex-ai-creative-studio/experiments/mcp-genmedia/mcp-genmedia-go/mcp-common digest to d95296d — GoogleCloudPlatform/genmedia-creative-studio0 reactions
- Aug 24, 2026fix(deps): update github.com/googlecloudplatform/vertex-ai-creative-studio/experiments/mcp-genmedia/mcp-genmedia-go/mcp-common digest to 69e1a53 — GoogleCloudPlatform/genmedia-creative-studio0 reactions · 1 comment
- Aug 17, 2026fix(deps): update github.com/googlecloudplatform/vertex-ai-creative-studio/experiments/mcp-genmedia/mcp-genmedia-go/mcp-common digest to 667d963 — GoogleCloudPlatform/genmedia-creative-studio0 reactions
- Aug 17, 2026chore(main): release mcp 3.16.0 — GoogleCloudPlatform/genmedia-creative-studio0 reactions · 2 comments
- Aug 12, 2026fix(deps): update github.com/googlecloudplatform/vertex-ai-creative-studio/experiments/mcp-genmedia/mcp-genmedia-go/mcp-common digest to c579b71 — GoogleCloudPlatform/genmedia-creative-studio0 reactions · 1 comment
- Aug 10, 2026fix(deps): update github.com/googlecloudplatform/vertex-ai-creative-studio/experiments/mcp-genmedia/mcp-genmedia-go/mcp-common digest to 9f5c076 - autoclosed — GoogleCloudPlatform/genmedia-creative-studio0 reactions · 1 comment
- Aug 10, 2026chore(main): release mcp 3.13.0 — GoogleCloudPlatform/genmedia-creative-studio0 reactions · 2 comments
- Aug 10, 2026chore(main): release mcp 3.12.1 — GoogleCloudPlatform/genmedia-creative-studio0 reactions · 2 comments
- Aug 10, 2026chore(main): release mcp 3.24.0 — ghchinoy/genmedia-creative-studio0 reactions · 1 comment
- Aug 10, 2026chore(main): release mcp 3.25.0 — renovate-bot/GoogleCloudPlatform-_-vertex-ai-creative-studio0 reactions
- Aug 10, 2026chore(main): release mcp 3.11.1 — GoogleCloudPlatform/genmedia-creative-studio0 reactions · 2 comments
On Bluesky · 1
- Nov 5, 2025📦 GoogleCloudPlatform / vertex-ai-creative-studio ⭐ 520 (+7) 🗒 Jupyter Notebook GenMedia Creative Studio is a Vertex AI generative media… — @github-trending.bsky.social1 likes and repost
Other versions1 project uses a version of this.
Word for word · 1
- GoogleCloudPlatform/genmedia-creative-studio★ 1.2k100% same
Edited · 0
None found.
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
Where files are headingNew AGENTS.md files have more rules about keeping secrets out of the code, and fewer about code style.
Of the AGENTS.md files we read, the 31,439 first seen in the last six months, against the older ones: the kind of rule that gained most share, and the kind that lost most. About files like this in general, not this one, and an estimate, since a kind is a pattern in the words.
In this repository13 other files it gives its agents.
- genmedia-imageSkill
- genmedia-producerSkill
- producerSkill
- agent-aware-cliSkill
- build-mcp-genmediaSkill
- genmedia-audio-engineerSkill
- genmedia-image-artistSkill
- genmedia-producerSkill
- genmedia-video-editorSkill
- genmedia-voice-directorSkill
- install-mcp-genmediaSkill
- story-generatorSkill
- mesop-to-litSkill
The file
Show its rules and text
We split this AGENTS.md into the rules it gives an agent
33 rules. About 0 are common, 10 are distinctive, and 23 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈10
Distinctive · estimate
This author's own choices. Worth a look.
23
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- could be automatic: a setting could enforce it
- Very specific: line 12
Prefer using shared styles from components/styles.py for common UI elements and layout structures.
- Very specific: line 17
All interactions with GCS for storing media or other assets should use the store_to_gcs utility function located in common/storage.py.
- Distinctive: line 38
When adding a new generative model capability (e.g., a new type of image model, a different video model):
- Very specific: line 39
Add model interaction logic (API calls, request/response handling) to a new file in the models/ directory (e.g., models/new_model_name.py).
- Very specific: line 40
Create UI components for controlling the new model in a subdirectory under components/ (e.g., …
- Very specific: line 41
Create a new page for the model in pages/ (e.g., pages/new_model_name.py), utilizing the page scaffold and new components.
- Very specific: line 43
Add relevant configurations to config/default.py.
- Very specific: line 44
Update navigation in config/navigation.json.
- Very specific: line 48
When storing metadata for generated media, use the MediaItem dataclass from common/metadata.py and the add_media_item_to_firestore function.
- Very specific: line 49
Ensure all relevant fields in MediaItem are populated.
- Distinctive: line 53
Write unit tests for utility functions and model interaction logic.
- Very specific: line 55
Use pytest as the testing framework.
- Very specific: line 59
Use ruff for code formatting and linting.
- Very specific: line 60
When running py_compile or ad-hoc Python inside the repo, set PYTHONDONTWRITEBYTECODE=1 and check git status before git add -A, so …
- Very specific: line 76
When working with issues using the bd (beads) command-line tool, adhere to the following tactical guidelines:
- Very specific: line 78
Continuous Synchronization: Always run bd dolt push at the beginning of a session to ensure your local issue tracker is aligned with the …
- Very specific: line 79
State Awareness: When analyzing a bug or feature request, first run bd ready to check if there is already an existing, unblocked issue …
- Very specific: line 80
Atomic Updates: When you complete a task or fix a bug, immediately close the corresponding issue (bd close <id>) in the same commit or PR …
- Very specific: line 81
Clear Descriptions: If you discover a new bug during your workflow that is out of scope for your current task, log it immediately using bd …
- Distinctive: line 94
Trigger: When a Pull Request is opened.
- Distinctive: line 102
Trigger: When a new Issue is opened.
- Very specific: line 139
Action SHA Pinning (
check_action_pins.py): Every uses: reference in .github/workflows/*.yml must be pinned to a full 40-character commit … - Very specific: line 140
Explicit Secrets in Reusable Workflows (
zizmor): Never use secrets: inherit in .github/workflows/gemini-dispatch.yml or other reusable … - Very specific: line 149
Editing workflow files: use the file-edit tool for .github/workflows/*.
- Very specific: line 170
Use bd for ALL task tracking — do NOT use TodoWrite, TaskCreate, or markdown TODO lists
- Very specific: line 171
Run bd prime for detailed command reference and session close protocol
- Very specific: line 172
Use bd remember for persistent knowledge — do NOT use MEMORY.md files
- Distinctive: line 180
File issues for remaining work: - Create issues for anything that needs follow-up
- Distinctive: line 194
Verify: - All changes committed AND pushed
- Distinctive: line 199
NEVER stop before pushing - that leaves work stranded locally
- Distinctive: line 200
NEVER say "ready to push when you are" - YOU must push
- Distinctive: line 201
If push fails, resolve and retry until it succeeds
- Distinctive: line 202
SSH PASSPHRASE: If a git push command hangs or fails asking for an SSH passphrase, ABORT the automated push attempt and explicitly instruct …
≈ “Common” is an estimate: at least 1 in 5 of the 40,246 AGENTS.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Agent Guidelines for GenMedia Creative Studio
This document provides guidelines for AI agents working on the GenMedia Creative Studio codebase (GoogleCloudPlatform/genmedia-creative-studio, formerly vertex-ai-creative-studio).
Scope of Work
- When refactoring or updating the Core Mesop application, do not modify unrelated code within the
experiments/directory; if a global change (like a model deprecation) impacts an unmaintained experiment, add an inline# TODO:or// TODO:comment near the affected code. Conversely, when a task, Renovate PR, or CI gate explicitly targetsexperiments/mcp-genmediaor the standalone Go modules (experiments/babel,experiments/run-veo-run/server,experiments/mcp-genmedia/sample-agents/genkit-go), modify and test those directories directly. - Repository & Module Naming: The canonical GitHub repository is
GoogleCloudPlatform/genmedia-creative-studio. All Go module paths and internal imports must usegithub.com/GoogleCloudPlatform/genmedia-creative-studio/...(never the legacyvertex-ai-creative-studioname).
Styling
- Prefer using shared styles from
components/styles.pyfor common UI elements and layout structures. - Page-specific or component-specific styles that are not reusable can be defined locally within those files.
Google Cloud Storage (GCS)
- All interactions with GCS for storing media or other assets should use the
store_to_gcsutility function located incommon/storage.py. - This function is configurable via
config/default.pyfor bucket names.
Configuration
- Application-level configuration values, such as model IDs, API keys (though avoid hardcoding keys directly), GCS bucket names, and feature flags, should be defined in
config/default.py. - Access these configurations by importing
cfg = Default()fromconfig.default.
State Management
- Global application state (e.g., theme, user information) is managed in
state/state.py. - Page-specific UI state should be defined in corresponding files within the
state/directory (e.g.,state/imagen_state.py,state/veo_state.py).
Error Handling
- For errors that occur during media generation processes and need to be communicated to the user, use the
GenerationErrorcustom exception defined incommon/error_handling.py. - Display these errors to the user via dialogs or appropriate UI elements.
- Log detailed errors to the console/server logs for debugging.
Adding New Generative Models
- When adding a new generative model capability (e.g., a new type of image model, a different video model):
- Add model interaction logic (API calls, request/response handling) to a new file in the
models/directory (e.g.,models/new_model_name.py). - Create UI components for controlling the new model in a subdirectory under
components/(e.g.,components/new_model_name/generation_controls.py). - Create a new page for the model in
pages/(e.g.,pages/new_model_name.py), utilizing the page scaffold and new components. - Define any page-specific state in
state/new_model_name_state.py. - Add relevant configurations to
config/default.py. - Update navigation in
config/navigation.json.
- Add model interaction logic (API calls, request/response handling) to a new file in the
Metadata
- When storing metadata for generated media, use the
MediaItemdataclass fromcommon/metadata.pyand theadd_media_item_to_firestorefunction. - Ensure all relevant fields in
MediaItemare populated.
Testing
- Write unit tests for utility functions and model interaction logic.
- Aim to mock external API calls during unit testing.
- Use
pytestas the testing framework.
Code Quality
- Use
rufffor code formatting and linting. Runruff format <path/to/file.py>andruff check --fix <path/to/file.py>only on the files you have modified (never globally on., which can strip load-bearing Mesop@me.pageroute imports). - When running
py_compileor ad-hoc Python inside the repo, setPYTHONDONTWRITEBYTECODE=1and checkgit statusbeforegit add -A, so__pycache__/*.pycfiles are never staged. - Even on a single file,
ruff format/ruff check --fixcan rewrite unrelated lines (e.g.Optional[X]toX | None, Python 3.14except A, B:syntax, removing an import that is only used by a Mesop page route). Runruff format --diff <file>first, apply only hunks for lines you changed, and reviewgit diff --statbefore committing. - Running tests:
uv run --with pytest ...inside the repo can fail buildingwatchdog==6.0.0on macOS (broken SDK linker) and leaves an ignored.venv/in the repo. Workaround: create a venv outside the repo (e.g. under the scratch directory), installrequirements.txtminuswatchdogplus a prebuiltwatchdog7.x wheel,pytestandruff, then runPYTHONDONTWRITEBYTECODE=1 <venv>/bin/python -m pytest test/test_omni.py -q -p no:cacheprovider. Delete any stray.venv/afterwards.
Adding or Changing an Omni Model
Omni model IDs live in several places; when adding a version or changing the default, touch all of them (the Gemini Omni 1.2 change needed every one):
- Core app:
config/omni_models.py(registry, supported modes, resolution/aspect/duration limits),config/default.py(DEFAULT_OMNI_MODEL_NAME,OMNI_MODEL_ID),models/omni.py,pages/omni.py, andtest/test_omni.py. - Docs (update in tandem):
environment_variables.mdanddocs-site/src/content/docs/core/installation/environment_variables.md,docs-site/src/content/docs/core/foundation-models/(gemini-omni.md,index.md),core/usage.md, and thefoundation-gemini-omni.dotdiagram (re-render light and dark.webp). - Experiments (separate follow-up PR, per Scope of Work): Go
mcp-common/models.go(SupportedOmniModels,DefaultOmniModel) withomni_test.go/omni_args_test.go,mcp-omni-goandmcp-gemini-godescriptions and docs, and theexperiments/veo-variationsdefaults (api/main.py,scripts/deploy.sh,ui/src/components/concept-sidebar.ts). - Probe a new model with
scripts/spikes/omni_probe.pyandscripts/spikes/omni_sweep.pybefore registering it; publisher metadata can lag the Interactions API, so a 404 on metadata does not mean the model is unreachable. - Diagrams: render from
docs-site/src/content/docs/core/assets/diagrams/withmake -B THEME=<absolute path>/graphviz-style/theme/luminous.gvpr <name>-light.webp <name>-dark.webp; the Makefile's default relativeTHEMEpath does not resolve from every checkout layout.
Issue Tracking with Beads (bd)
When working with issues using the bd (beads) command-line tool, adhere to the following tactical guidelines:
- Continuous Synchronization: Always run
bd dolt pushat the beginning of a session to ensure your local issue tracker is aligned with the remote git repository. Runbd dolt pushagain at the very end of your session before your finalgit push. - State Awareness: When analyzing a bug or feature request, first run
bd readyto check if there is already an existing, unblocked issue tracking the work. Do not create duplicate issues. - Atomic Updates: When you complete a task or fix a bug, immediately close the corresponding issue (
bd close <id>) in the same commit or PR as the fix. Do not leave issues dangling. - Clear Descriptions: If you discover a new bug during your workflow that is out of scope for your current task, log it immediately using
bd create "Title" --type bug --priority <level>. Ensure the description clearly outlines the reproduction steps and the context in which it was found. - Force-Syncing JSONL to Database: In sandbox or CLI-restricted environments, the Beads auto-import process (which parses
.beads/issues.jsonlon startup) only triggers if it detects the database is completely empty. If the database state falls out of sync with.beads/issues.jsonldue to consecutive automated writes or interrupted sessions, you must explicitly runbd importto sync the disk-based JSONL state back into the Dolt database. If you need to clean up or recover from a bad tracking state, you can surgically edit the.beads/issues.jsonlfile directly on disk, and then executebd importto cleanly refresh the tracking system.
🤖 GitHub Automation Agents
This repository uses Google's Gemini CLI to automate software engineering tasks. Our AI agents assist with code reviews, issue triage, and general maintenance to keep the project moving efficiently.
Automatic Behaviors
These agents run automatically based on events in the repository.
🔎 Code Reviewer
- Trigger: When a Pull Request is opened.
- Action: The agent reviews the code changes (diff), looking for bugs, security issues, and style improvements.
- Output: It posts review comments directly on the PR.
- Note: The agent focuses on the diff only and provides constructive feedback. It does not replace human review.
📋 Issue Triage
- Trigger: When a new Issue is opened.
- Action: The agent analyzes the title and body of the issue.
- Output: It automatically applies relevant Labels (e.g.,
bug,enhancement,question) to help organize the backlog.
Maintainer Commands
Project maintainers (Owners, Members, Collaborators) can manually invoke the agents using comment commands.
| Command | Description |
@gemini-cli /review | Manually triggers a full code review on the current Pull Request. |
@gemini-cli /triage | Manually triggers label analysis on the current Issue or PR. |
@gemini-cli [question] | Ask the agent a question about the codebase or request a specific task. |
Example: @gemini-cli Explain how the authentication flow works. |
Note: These commands are restricted to project maintainers to prevent abuse and manage costs.
Workflow Architecture
The automation is built on GitHub Actions using a "Router-Worker" pattern:
- Dispatch Router (
gemini-dispatch.yml): The entry point. It listens for events, validates permissions, and routes the request to the correct worker. - Worker Workflows:
gemini-review.yml: Handles code analysis.gemini-triage.yml: Handles labeling.gemini-invoke.yml: Handles general Q&A.
This system is powered by the Gemini CLI action.
GitHub Actions Security Gates & PR Workflow
- Action SHA Pinning (
check_action_pins.py): Everyuses:reference in.github/workflows/*.ymlmust be pinned to a full 40-character commit SHA with a trailing version comment (e.g.,google-github-actions/run-gemini-cli@e0f8fb259ec8dfe2daff8e6b4fd9eb9fb8fc7ffe # v0.4.0). Tag references fail theGitHub Actions Scan/check_action_pinsCI check. - Explicit Secrets in Reusable Workflows (
zizmor): Never usesecrets: inheritin.github/workflows/gemini-dispatch.ymlor other reusable workflow callers (zizmorfails withsecrets-inherit). Pass explicit secrets matching the callee'son.workflow_call.secretsblock (GEMINI_API_KEY,GOOGLE_API_KEY,APP_PRIVATE_KEY). - Fork vs. Upstream Topology &
ghFlags: Localoriginisghchinoy/genmedia-creative-studioandupstreamisGoogleCloudPlatform/genmedia-creative-studio. Always pass-R GoogleCloudPlatform/genmedia-creative-studiotoghCLI commands, and syncmainviagit fetch upstream --prune && git merge --ff-only upstream/main && git push origin main(omit--tagswhen fetchingupstreamas legacy alpha tags differ). If a checkout's remotes do not match this topology (checkgit remote -v), branch fromgit fetch https://github.com/GoogleCloudPlatform/genmedia-creative-studio.git main(FETCH_HEAD) and push by URL (git@github.com:ghchinoy/genmedia-creative-studio.git) rather than guessing at remote names. - Sandboxed sessions:
git push,git fetchover the network,gh, and allbdwrites/bd dolt pushneed to run outside the sandbox. Abderror such as "The Dolt server may not be running" inside the sandbox means retry outside it, notbd dolt start. Live Vertex AI checks also need network access outside the sandbox. - Never route untrusted-author text to privileged Gemini workflows:
gemini-dispatch.ymlacceptsissues: opened/reopenedfrom any GitHub user so outside issues get triaged. Issue/PR text from authors who are notOWNER/MEMBER/COLLABORATORmust only ever reachgemini-triage(no GitHub write token, no cloud credentials) and must never selectrevieworinvoke, even via an@gemini-cliprefix. Keep theAUTHOR_ASSOCIATION/trustedcheck inExtract commandand thetrusted == 'true'gate on theinvokejob. (An outside account exploited the old ordering in Sept 2026 via issues #1876/#1879/#1880.) Also remember a maintainer's@gemini-clicomment on an outsider's issue still feeds that outsider's text to the agent, so keepinvokecredentials minimal. - Gemini CLI tool allowlists must use the nested schema: in
run-gemini-clisettings, restrict built-in tools with"tools": {"core": [...]}(and"experimental": {"enableAgents": false}). Never use an empty"core": []: Gemini CLI 0.66.0 then sends an empty tool declaration and Vertex returns HTTP 400 (use a minimal allowlist such asrun_shell_command(echo); scheduled triage skips the Gemini step when there are no issues, which hides this until the next untriaged issue). The legacy flat"coreTools"key is not read by Gemini CLI 0.66.0, so it silently leaves shell tools unrestricted. The CLI is pinned viavars.GEMINI_CLI_VERSION || '0.66.0'in every Gemini workflow; bump it deliberately and re-test. Theinvokejob runs in thegemini-invokeenvironment (configure required reviewers there) with shell limited toecho. tools.corealso gates MCP tools: in CLI 0.66.0 a non-emptytools.coreadds a catch-all deny below the allow entries, so every MCP tool not listed asmcp_<server>_<tool>(e.g.mcp_github_add_issue_comment) is silently denied (the run still "succeeds" but posts nothing). KeepincludeToolsand themcp_github_*entries intools.coreidentical. The GitHub MCP server image is pinned (ghcr.io/github/github-mcp-server:v2.1.0); tool names change between releases (e.g.get_issue→issue_read,get_pull_request*→pull_request_read, review tools →pull_request_review_write), so re-verify names against the new tag's tool list when bumping.- Canary every Gemini workflow on a visible side effect: after any change to
settings,tools.core, or MCP config, run each workflow once and confirm a visible result (a comment, a review, a label). A green run that posts nothing is a failure: a non-emptytools.corethat omitted the MCP tools made twoinvokeruns "succeed" silently. Thetriageand scheduled-triage Gemini steps are skipped when there is no work, so a green run does not exercise them either. - Dispatch routing limits (for testing): comments must start with
@gemini-clito route (Hi @gemini-cli ...is skipped).gemini-dispatch.ymlskips PRs from forks, so testreviewwith an@gemini-cli /reviewcomment on the PR.workflow_dispatchcarries no issue/PR payload: onlytriagehonors theissue_numberinput;invokeandreviewget empty context from a manual dispatch. gemini-invokeapproval belongs to the maintainer: eachinvokerun pauses for the environment's required reviewer. Agents must ask the maintainer to approve it (web UI orgh apion their own session) and must not approve it on their behalf.- Editing workflow files: use the file-edit tool for
.github/workflows/*; scripted writes (Python,sed -i) to that directory can be blocked in sandboxed sessions. - Merging Workflow PRs vs.
release-pleasePRs:- PRs that modify
.github/workflows/*fail viagh pr mergeif the GitHub token lacks theworkflowOAuth scope; instruct the user to merge workflow-touching PRs in the GitHub web UI. release-pleasePRs are authored under the maintainer's account and cannot self-approve (gh pr review --approve); once checks pass, merge them viagh pr merge <id> -R GoogleCloudPlatform/genmedia-creative-studio --admin --squash --delete-branch.
- PRs that modify
<!-- BEGIN BEADS INTEGRATION v:1 profile:minimal hash:ca08a54f -->Beads Issue Tracker
This project uses bd (beads) for issue tracking. Run bd prime to see full workflow context and commands.
Quick Reference
bd ready # Find available work
bd show <id> # View issue details
bd update <id> --claim # Claim work
bd close <id> # Complete workRules
- Use
bdfor ALL task tracking — do NOT use TodoWrite, TaskCreate, or markdown TODO lists - Run
bd primefor detailed command reference and session close protocol - Use
bd rememberfor persistent knowledge — do NOT use MEMORY.md files
Session Completion
When ending a work session, you MUST complete ALL steps below. Work is NOT complete until git push succeeds.
MANDATORY WORKFLOW:
- File issues for remaining work - Create issues for anything that needs follow-up
- Run quality gates (if code changed) - Tests, linters, builds
- Update issue status - Close finished work, update in-progress items
- PUSH TO REMOTE - This is MANDATORY when shipping changes:
# Feature branch PR workflow (main on upstream is branch-protected): git push -u origin <feature-branch> bd dolt push # After PR merges into upstream (GoogleCloudPlatform/genmedia-creative-studio): git checkout main git fetch upstream --prune && git merge --ff-only upstream/main && git push origin main git status -sb # MUST show "## main...upstream/main" with no ahead/behind - Clean up - Clear stashes, prune remote branches
- Verify - All changes committed AND pushed
- Hand off - Provide context for next session
CRITICAL RULES:
- Work is NOT complete until
git pushsucceeds - NEVER stop before pushing - that leaves work stranded locally
- NEVER say "ready to push when you are" - YOU must push
- If push fails, resolve and retry until it succeeds
- SSH PASSPHRASE: If a
git pushcommand hangs or fails asking for an SSH passphrase, ABORT the automated push attempt and explicitly instruct the user to execute the push manually.
<!-- END BEADS INTEGRATION -->Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

