[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-google-cloud-liveapi-service":3,"mdc-w49dd9-key":53,"related-repo-google-cloud-liveapi-service":550,"related-org-google-cloud-liveapi-service":599},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":24,"repoUrl":25,"updatedAt":26,"license":27,"forks":28,"topics":29,"repo":48,"sourceUrl":51,"mdContent":52},"liveapi-service","generate Gemini LiveAPI client services","Generates a LiveAPI client service class in the user's chosen programming language. Use when the user wants to build, scaffold, or integrate a client that connects to the Gemini LiveAPI websocket endpoint (Gemini Enterprise or non-Gemini Enterprise), handles session setup\u002Fresumption, bearer token refresh, and sending\u002Freceiving `ClientMessage`\u002F`ServerMessage` protos.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"google-cloud","Google Cloud","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fgoogle-cloud.png","GoogleCloudPlatform",[13,17,20,23],{"name":14,"slug":15,"type":16},"WebSockets","websockets","tag",{"name":18,"slug":19,"type":16},"API Development","api-development",{"name":21,"slug":22,"type":16},"Gemini","gemini",{"name":9,"slug":8,"type":16},762,"https:\u002F\u002Fgithub.com\u002FGoogleCloudPlatform\u002Fvertex-ai-samples","2026-07-12T07:38:55.792572",null,296,[30,31,32,22,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47],"automl","colab","colab-enterprise","gemini-api","genai","generative-ai","google-cloud-platform","ml","mlops","model","model-garden","notebook","pipeline","predictions","samples","vertex-ai","vertexai","workbench",{"repoUrl":25,"stars":24,"forks":28,"topics":49,"description":50},[30,31,32,22,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47],"Notebooks, code samples, sample apps, and other resources that demonstrate how to use, develop and manage machine learning and generative AI workflows using Google Cloud Vertex AI.","https:\u002F\u002Fgithub.com\u002FGoogleCloudPlatform\u002Fvertex-ai-samples\u002Ftree\u002FHEAD\u002Fskills\u002Fgenai-sdk\u002Freferences\u002Flive_api","---\nname: liveapi-service\ndescription: Generates a LiveAPI client service class in the user's chosen programming language. Use when the user wants to build, scaffold, or integrate a client that connects to the Gemini LiveAPI websocket endpoint (Gemini Enterprise or non-Gemini Enterprise), handles session setup\u002Fresumption, bearer token refresh, and sending\u002Freceiving `ClientMessage`\u002F`ServerMessage` protos.\n---\n\n# LiveAPI Service Skill\n\nProvided files in `references`:\n\n-   `client_server_messages.md`: The public document of protos used for LiveAPI.\n-   `client_server_messages.proto`: The proto generated based on the\n    `client_server_messages.md`.\n-   `session_manager.md`: Describes how to correctly handle the sessions.\n\nWhat you should do:\n\nStep 1:\n\nCopy existing reference files to user provided destination folder\n\nStep 2:\n\nExamine the public documents mentioned in `client_server_messages.md`. Checking if\nthere are any discrepancies between the public documents and the created\nmarkdown \u002F proto as `client_server_messages`. If yes, update these file in the\ndestination folder\n\nStep 3:\n\nImplement a class in the user wanted coding language that work as a LiveAPI\nservice, it should import the existing proto file, build the connection to the\nLiveAPI endpoint, expose functions to user and let user able to send and receive\ndata to \u002F from the model.\n\nIf a language need a specific environment, such as python, you should create the\nenvironment in the output folder and provide a bash file, by executing which,\nthe user can recreate the correct environment, do not use or modify the existing\nsystem environment.\n\nWanted behavior:\n\nThe user will provide the following information to the class for initialization:\n\n-   project_id\n-   location\n-   model_id\n-   config, should be a `ClientMessage` with `setup` field.\n-   use_gemini_enterprise, should be a boolean telling if using Gemini Enterprise or not\n-   api_key, if not using Gemini Enterprise, an api_key should be provided.\n\n\nIf using Gemini Enterprise, you should get a bearer token, refresh it when needed, and send it with\neach websocket connection (including session resumption).\n\nThe class should expose the following functions to the user:\n\n-   [async] send_realtime_data(data): allow the user to send realtime_data to\n    the model. The `data` should be a `ClientMessage` in the proto file.\n-   [async] send_client_content(data): allow the user to send non_realtime data\n    to the model, allow the user to add context. The `data` should be a\n    `ClientMessage` in the proto file.\n-   [async] receive(): Allow the user to receive data from the model. The data\n    received should be a `ServerMessage` in the proto file.\n\nStep 4:\n\nOnce the code implemented, you should implement a test file, initialize the\nconnection and try to send `text`, `audio`, `video` data and receive the\nresponse.\n\nAsk the user for necessary information.\n\nStep 5:\n\nYou should finally provide a markdown file with name `how_to_run.md`, describe\nhow to correctly use the class you just created. You should provide full example\nabout how to correctly build clientmessage for all kinds of support modalities\nand how to send them. Also you should describe how to correctly fetch data from\nthe model.\n\nStep 6:\n\nYou should create scripts to deploy your implementation as a service, it should\ncontains both frontend UI and backend service [You can use whatever coding\nlanguage you want]. In these service, the user can use the frontend UI to test\nyour implementation, it should allow the user to:\n\n-   Start new connection \u002F close current connection.\n-   Select models to use.\n-   Select input sources (audio or \u002F and video [camera or screenshot]) and\n    streaming data to model.\n-   Send text message to model.\n-   Heard the audio sound from model and see the model and user transcription\n    and conversation history.\n\n**Attention**\n\nThe service should reuse the `ServerMessage` and `ClientMessage` defined in the\nproto for sending and receiving messages.\n\nWhile implementing the audio \u002F transcription playback logic, please follow the\ninstruction in\nhttps:\u002F\u002Fdocs.cloud.google.com\u002Fgemini-enterprise-agent-platform\u002Fmodels\u002Flive-api\u002Fbest-practices.\n\nMake sure you correctly handle the `interrupt` signal from `ServerMessage`,\nwhich should:\n\n-   You'll receive audio and transcription interleaved. The played audio and\n    corresponding transcription should be time aligned.\n-   Immediately stop the playing for audio and transcription.\n-   Clear the playback buffer to dump unsent audio \u002F transcription.\n-   Start new chat bubbles for model \u002F user.\n\nMake sure you correctly handle the `finished` signal from `input_transcription`\nor `output_transcription`, which should start a new bubble after concatenating the\ndata.\n\nStep 7: Implement a description file `how_to_test_with_ui.md` and tell how to\nstart the services, which URL should the user use and how to interactive with\nthe model.\n",{"data":54,"body":55},{"name":4,"description":6},{"type":56,"children":57},"root",[58,67,82,127,132,137,142,147,167,172,177,182,187,192,241,246,251,318,323,350,355,360,373,378,390,425,434,453,467,487,510,537],{"type":59,"tag":60,"props":61,"children":63},"element","h1",{"id":62},"liveapi-service-skill",[64],{"type":65,"value":66},"text","LiveAPI Service Skill",{"type":59,"tag":68,"props":69,"children":70},"p",{},[71,73,80],{"type":65,"value":72},"Provided files in ",{"type":59,"tag":74,"props":75,"children":77},"code",{"className":76},[],[78],{"type":65,"value":79},"references",{"type":65,"value":81},":",{"type":59,"tag":83,"props":84,"children":85},"ul",{},[86,98,116],{"type":59,"tag":87,"props":88,"children":89},"li",{},[90,96],{"type":59,"tag":74,"props":91,"children":93},{"className":92},[],[94],{"type":65,"value":95},"client_server_messages.md",{"type":65,"value":97},": The public document of protos used for LiveAPI.",{"type":59,"tag":87,"props":99,"children":100},{},[101,107,109,114],{"type":59,"tag":74,"props":102,"children":104},{"className":103},[],[105],{"type":65,"value":106},"client_server_messages.proto",{"type":65,"value":108},": The proto generated based on the\n",{"type":59,"tag":74,"props":110,"children":112},{"className":111},[],[113],{"type":65,"value":95},{"type":65,"value":115},".",{"type":59,"tag":87,"props":117,"children":118},{},[119,125],{"type":59,"tag":74,"props":120,"children":122},{"className":121},[],[123],{"type":65,"value":124},"session_manager.md",{"type":65,"value":126},": Describes how to correctly handle the sessions.",{"type":59,"tag":68,"props":128,"children":129},{},[130],{"type":65,"value":131},"What you should do:",{"type":59,"tag":68,"props":133,"children":134},{},[135],{"type":65,"value":136},"Step 1:",{"type":59,"tag":68,"props":138,"children":139},{},[140],{"type":65,"value":141},"Copy existing reference files to user provided destination folder",{"type":59,"tag":68,"props":143,"children":144},{},[145],{"type":65,"value":146},"Step 2:",{"type":59,"tag":68,"props":148,"children":149},{},[150,152,157,159,165],{"type":65,"value":151},"Examine the public documents mentioned in ",{"type":59,"tag":74,"props":153,"children":155},{"className":154},[],[156],{"type":65,"value":95},{"type":65,"value":158},". Checking if\nthere are any discrepancies between the public documents and the created\nmarkdown \u002F proto as ",{"type":59,"tag":74,"props":160,"children":162},{"className":161},[],[163],{"type":65,"value":164},"client_server_messages",{"type":65,"value":166},". If yes, update these file in the\ndestination folder",{"type":59,"tag":68,"props":168,"children":169},{},[170],{"type":65,"value":171},"Step 3:",{"type":59,"tag":68,"props":173,"children":174},{},[175],{"type":65,"value":176},"Implement a class in the user wanted coding language that work as a LiveAPI\nservice, it should import the existing proto file, build the connection to the\nLiveAPI endpoint, expose functions to user and let user able to send and receive\ndata to \u002F from the model.",{"type":59,"tag":68,"props":178,"children":179},{},[180],{"type":65,"value":181},"If a language need a specific environment, such as python, you should create the\nenvironment in the output folder and provide a bash file, by executing which,\nthe user can recreate the correct environment, do not use or modify the existing\nsystem environment.",{"type":59,"tag":68,"props":183,"children":184},{},[185],{"type":65,"value":186},"Wanted behavior:",{"type":59,"tag":68,"props":188,"children":189},{},[190],{"type":65,"value":191},"The user will provide the following information to the class for initialization:",{"type":59,"tag":83,"props":193,"children":194},{},[195,200,205,210,231,236],{"type":59,"tag":87,"props":196,"children":197},{},[198],{"type":65,"value":199},"project_id",{"type":59,"tag":87,"props":201,"children":202},{},[203],{"type":65,"value":204},"location",{"type":59,"tag":87,"props":206,"children":207},{},[208],{"type":65,"value":209},"model_id",{"type":59,"tag":87,"props":211,"children":212},{},[213,215,221,223,229],{"type":65,"value":214},"config, should be a ",{"type":59,"tag":74,"props":216,"children":218},{"className":217},[],[219],{"type":65,"value":220},"ClientMessage",{"type":65,"value":222}," with ",{"type":59,"tag":74,"props":224,"children":226},{"className":225},[],[227],{"type":65,"value":228},"setup",{"type":65,"value":230}," field.",{"type":59,"tag":87,"props":232,"children":233},{},[234],{"type":65,"value":235},"use_gemini_enterprise, should be a boolean telling if using Gemini Enterprise or not",{"type":59,"tag":87,"props":237,"children":238},{},[239],{"type":65,"value":240},"api_key, if not using Gemini Enterprise, an api_key should be provided.",{"type":59,"tag":68,"props":242,"children":243},{},[244],{"type":65,"value":245},"If using Gemini Enterprise, you should get a bearer token, refresh it when needed, and send it with\neach websocket connection (including session resumption).",{"type":59,"tag":68,"props":247,"children":248},{},[249],{"type":65,"value":250},"The class should expose the following functions to the user:",{"type":59,"tag":83,"props":252,"children":253},{},[254,280,302],{"type":59,"tag":87,"props":255,"children":256},{},[257,263,265,271,273,278],{"type":59,"tag":258,"props":259,"children":260},"span",{},[261],{"type":65,"value":262},"async",{"type":65,"value":264}," send_realtime_data(data): allow the user to send realtime_data to\nthe model. The ",{"type":59,"tag":74,"props":266,"children":268},{"className":267},[],[269],{"type":65,"value":270},"data",{"type":65,"value":272}," should be a ",{"type":59,"tag":74,"props":274,"children":276},{"className":275},[],[277],{"type":65,"value":220},{"type":65,"value":279}," in the proto file.",{"type":59,"tag":87,"props":281,"children":282},{},[283,287,289,294,296,301],{"type":59,"tag":258,"props":284,"children":285},{},[286],{"type":65,"value":262},{"type":65,"value":288}," send_client_content(data): allow the user to send non_realtime data\nto the model, allow the user to add context. The ",{"type":59,"tag":74,"props":290,"children":292},{"className":291},[],[293],{"type":65,"value":270},{"type":65,"value":295}," should be a\n",{"type":59,"tag":74,"props":297,"children":299},{"className":298},[],[300],{"type":65,"value":220},{"type":65,"value":279},{"type":59,"tag":87,"props":303,"children":304},{},[305,309,311,317],{"type":59,"tag":258,"props":306,"children":307},{},[308],{"type":65,"value":262},{"type":65,"value":310}," receive(): Allow the user to receive data from the model. The data\nreceived should be a ",{"type":59,"tag":74,"props":312,"children":314},{"className":313},[],[315],{"type":65,"value":316},"ServerMessage",{"type":65,"value":279},{"type":59,"tag":68,"props":319,"children":320},{},[321],{"type":65,"value":322},"Step 4:",{"type":59,"tag":68,"props":324,"children":325},{},[326,328,333,335,341,342,348],{"type":65,"value":327},"Once the code implemented, you should implement a test file, initialize the\nconnection and try to send ",{"type":59,"tag":74,"props":329,"children":331},{"className":330},[],[332],{"type":65,"value":65},{"type":65,"value":334},", ",{"type":59,"tag":74,"props":336,"children":338},{"className":337},[],[339],{"type":65,"value":340},"audio",{"type":65,"value":334},{"type":59,"tag":74,"props":343,"children":345},{"className":344},[],[346],{"type":65,"value":347},"video",{"type":65,"value":349}," data and receive the\nresponse.",{"type":59,"tag":68,"props":351,"children":352},{},[353],{"type":65,"value":354},"Ask the user for necessary information.",{"type":59,"tag":68,"props":356,"children":357},{},[358],{"type":65,"value":359},"Step 5:",{"type":59,"tag":68,"props":361,"children":362},{},[363,365,371],{"type":65,"value":364},"You should finally provide a markdown file with name ",{"type":59,"tag":74,"props":366,"children":368},{"className":367},[],[369],{"type":65,"value":370},"how_to_run.md",{"type":65,"value":372},", describe\nhow to correctly use the class you just created. You should provide full example\nabout how to correctly build clientmessage for all kinds of support modalities\nand how to send them. Also you should describe how to correctly fetch data from\nthe model.",{"type":59,"tag":68,"props":374,"children":375},{},[376],{"type":65,"value":377},"Step 6:",{"type":59,"tag":68,"props":379,"children":380},{},[381,383,388],{"type":65,"value":382},"You should create scripts to deploy your implementation as a service, it should\ncontains both frontend UI and backend service ",{"type":59,"tag":258,"props":384,"children":385},{},[386],{"type":65,"value":387},"You can use whatever coding\nlanguage you want",{"type":65,"value":389},". In these service, the user can use the frontend UI to test\nyour implementation, it should allow the user to:",{"type":59,"tag":83,"props":391,"children":392},{},[393,398,403,415,420],{"type":59,"tag":87,"props":394,"children":395},{},[396],{"type":65,"value":397},"Start new connection \u002F close current connection.",{"type":59,"tag":87,"props":399,"children":400},{},[401],{"type":65,"value":402},"Select models to use.",{"type":59,"tag":87,"props":404,"children":405},{},[406,408,413],{"type":65,"value":407},"Select input sources (audio or \u002F and video ",{"type":59,"tag":258,"props":409,"children":410},{},[411],{"type":65,"value":412},"camera or screenshot",{"type":65,"value":414},") and\nstreaming data to model.",{"type":59,"tag":87,"props":416,"children":417},{},[418],{"type":65,"value":419},"Send text message to model.",{"type":59,"tag":87,"props":421,"children":422},{},[423],{"type":65,"value":424},"Heard the audio sound from model and see the model and user transcription\nand conversation history.",{"type":59,"tag":68,"props":426,"children":427},{},[428],{"type":59,"tag":429,"props":430,"children":431},"strong",{},[432],{"type":65,"value":433},"Attention",{"type":59,"tag":68,"props":435,"children":436},{},[437,439,444,446,451],{"type":65,"value":438},"The service should reuse the ",{"type":59,"tag":74,"props":440,"children":442},{"className":441},[],[443],{"type":65,"value":316},{"type":65,"value":445}," and ",{"type":59,"tag":74,"props":447,"children":449},{"className":448},[],[450],{"type":65,"value":220},{"type":65,"value":452}," defined in the\nproto for sending and receiving messages.",{"type":59,"tag":68,"props":454,"children":455},{},[456,458,466],{"type":65,"value":457},"While implementing the audio \u002F transcription playback logic, please follow the\ninstruction in\n",{"type":59,"tag":459,"props":460,"children":464},"a",{"href":461,"rel":462},"https:\u002F\u002Fdocs.cloud.google.com\u002Fgemini-enterprise-agent-platform\u002Fmodels\u002Flive-api\u002Fbest-practices",[463],"nofollow",[465],{"type":65,"value":461},{"type":65,"value":115},{"type":59,"tag":68,"props":468,"children":469},{},[470,472,478,480,485],{"type":65,"value":471},"Make sure you correctly handle the ",{"type":59,"tag":74,"props":473,"children":475},{"className":474},[],[476],{"type":65,"value":477},"interrupt",{"type":65,"value":479}," signal from ",{"type":59,"tag":74,"props":481,"children":483},{"className":482},[],[484],{"type":65,"value":316},{"type":65,"value":486},",\nwhich should:",{"type":59,"tag":83,"props":488,"children":489},{},[490,495,500,505],{"type":59,"tag":87,"props":491,"children":492},{},[493],{"type":65,"value":494},"You'll receive audio and transcription interleaved. The played audio and\ncorresponding transcription should be time aligned.",{"type":59,"tag":87,"props":496,"children":497},{},[498],{"type":65,"value":499},"Immediately stop the playing for audio and transcription.",{"type":59,"tag":87,"props":501,"children":502},{},[503],{"type":65,"value":504},"Clear the playback buffer to dump unsent audio \u002F transcription.",{"type":59,"tag":87,"props":506,"children":507},{},[508],{"type":65,"value":509},"Start new chat bubbles for model \u002F user.",{"type":59,"tag":68,"props":511,"children":512},{},[513,514,520,521,527,529,535],{"type":65,"value":471},{"type":59,"tag":74,"props":515,"children":517},{"className":516},[],[518],{"type":65,"value":519},"finished",{"type":65,"value":479},{"type":59,"tag":74,"props":522,"children":524},{"className":523},[],[525],{"type":65,"value":526},"input_transcription",{"type":65,"value":528},"\nor ",{"type":59,"tag":74,"props":530,"children":532},{"className":531},[],[533],{"type":65,"value":534},"output_transcription",{"type":65,"value":536},", which should start a new bubble after concatenating the\ndata.",{"type":59,"tag":68,"props":538,"children":539},{},[540,542,548],{"type":65,"value":541},"Step 7: Implement a description file ",{"type":59,"tag":74,"props":543,"children":545},{"className":544},[],[546],{"type":65,"value":547},"how_to_test_with_ui.md",{"type":65,"value":549}," and tell how to\nstart the services, which URL should the user use and how to interactive with\nthe model.",{"items":551,"total":598},[552,565,572,587],{"slug":553,"name":553,"fn":554,"description":555,"org":556,"tags":557,"stars":24,"repoUrl":25,"updatedAt":564},"genai-sdk","build enterprise applications with Gemini API","Guides the usage of Gemini API on Google Cloud Vertex AI with the Gen AI SDK. Use when the user asks about using Gemini in an enterprise environment or explicitly mentions Vertex AI. Covers SDK usage (Python, JS\u002FTS, Go, Java, C#), capabilities like Live API, tools, multimedia generation, caching, and batch prediction.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[558,559,560,561],{"name":18,"slug":19,"type":16},{"name":21,"slug":22,"type":16},{"name":9,"slug":8,"type":16},{"name":562,"slug":563,"type":16},"LLM","llm","2026-07-12T07:38:31.989308",{"slug":4,"name":4,"fn":5,"description":6,"org":566,"tags":567,"stars":24,"repoUrl":25,"updatedAt":26},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[568,569,570,571],{"name":18,"slug":19,"type":16},{"name":21,"slug":22,"type":16},{"name":9,"slug":8,"type":16},{"name":14,"slug":15,"type":16},{"slug":573,"name":573,"fn":574,"description":575,"org":576,"tags":577,"stars":24,"repoUrl":25,"updatedAt":586},"quality-flywheel","evaluate and improve GenAI models","Evaluate and improve GenAI models and agents using the Google GenAI Evaluation SDK. Creates eval datasets (from session traces or synthetic generation), selects and configures metrics (RubricMetric, LLMMetric, CodeExecutionMetric), executes evals via client.evals.evaluate(), and analyzes results to suggest concrete fixes. Supports both single-turn model evaluation and multi-turn agent trajectory evaluation. Use when asked to \"evaluate my agent\", \"evaluate my model\", \"create eval dataset\", \"run evals\", \"analyze eval results\", \"which metrics should I use\", \"generate test data\", or \"improve quality\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[578,581,582,583],{"name":579,"slug":580,"type":16},"Evals","evals",{"name":9,"slug":8,"type":16},{"name":562,"slug":563,"type":16},{"name":584,"slug":585,"type":16},"Machine Learning","machine-learning","2026-07-12T07:38:35.588796",{"slug":45,"name":45,"fn":588,"description":589,"org":590,"tags":591,"stars":24,"repoUrl":25,"updatedAt":597},"deploy and tune Vertex AI models","Primary Router for Vertex AI skills. Use this skill when the user wants to work with Google Cloud Vertex AI (e.g., deploying models, running inference, or tuning models). This skill routes to vertex-deploy, vertex-inference, or vertex-tuning.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[592,593,594,595],{"name":9,"slug":8,"type":16},{"name":562,"slug":563,"type":16},{"name":584,"slug":585,"type":16},{"name":596,"slug":45,"type":16},"Vertex AI","2026-07-12T07:38:30.746937",4,{"items":600,"total":777},[601,619,635,657,671,682,696,709,723,736,751,761],{"slug":602,"name":602,"fn":603,"description":604,"org":605,"tags":606,"stars":616,"repoUrl":617,"updatedAt":618},"kb-search","search and extract local knowledge base documents","Allows listing, searching and extracting information from local knowledge base documents for information about tables\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[607,610,613],{"name":608,"slug":609,"type":16},"Documentation","documentation",{"name":611,"slug":612,"type":16},"Knowledge Base","knowledge-base",{"name":614,"slug":615,"type":16},"Search","search",6749,"https:\u002F\u002Fgithub.com\u002FGoogleCloudPlatform\u002Fknowledge-catalog","2026-07-12T07:38:52.157375",{"slug":620,"name":621,"fn":622,"description":623,"org":624,"tags":625,"stars":616,"repoUrl":617,"updatedAt":634},"knowledgecatalogdiscoveryagent","knowledge_catalog_discovery_agent","search and rank Knowledge Catalog data entries","Analyzes user queries, extracts relevant predicates, and utilizes Knowledge Catalog Search to find and rank the most relevant data entries. Engages with the user throughout the process.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[626,629,630,633],{"name":627,"slug":628,"type":16},"Data Analysis","data-analysis",{"name":9,"slug":8,"type":16},{"name":631,"slug":632,"type":16},"Knowledge Management","knowledge-management",{"name":614,"slug":615,"type":16},"2026-07-12T07:38:22.196851",{"slug":636,"name":636,"fn":637,"description":638,"org":639,"tags":640,"stars":654,"repoUrl":655,"updatedAt":656},"contributing","contribute to Cloud Foundation Fabric","End-to-end workflow for contributing to Cloud Foundation Fabric: triaging GitHub issues, proactive feature development, validating with tests and Policy Troubleshooter, and submitting sanitized Pull Requests. Use when addressing a Fabric GitHub issue, developing a module or FAST stage change, or preparing a branch for a pull request.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[641,644,647,650,651],{"name":642,"slug":643,"type":16},"Automation","automation",{"name":645,"slug":646,"type":16},"Engineering","engineering",{"name":648,"slug":649,"type":16},"GitHub","github",{"name":9,"slug":8,"type":16},{"name":652,"slug":653,"type":16},"Pull Requests","pull-requests",2062,"https:\u002F\u002Fgithub.com\u002FGoogleCloudPlatform\u002Fcloud-foundation-fabric","2026-07-31T06:23:36.935005",{"slug":658,"name":658,"fn":659,"description":660,"org":661,"tags":662,"stars":654,"repoUrl":655,"updatedAt":670},"fabric-builder","generate Terraform code for Google Cloud","Generates idiomatic Cloud Foundation Fabric (CFF) Terraform code using CFF modules. Use when users ask to create GCP resources, use Fabric modules, or generate Terraform code for Google Cloud.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[663,664,667],{"name":9,"slug":8,"type":16},{"name":665,"slug":666,"type":16},"Infrastructure as Code","infrastructure-as-code",{"name":668,"slug":669,"type":16},"Terraform","terraform","2026-07-12T07:38:23.514555",{"slug":672,"name":672,"fn":673,"description":674,"org":675,"tags":676,"stars":654,"repoUrl":655,"updatedAt":681},"fast-0-org-setup-prereqs","prepare prerequisites for FAST 0-org-setup","Guides the user step-by-step through the prerequisites for the FAST 0-org-setup stage, supporting both Standard GCP and Google Cloud Dedicated (GCD) environments. Use when a user asks to prepare or run prerequisites for 0-org-setup or bootstrap the FAST landing zone.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[677,678],{"name":9,"slug":8,"type":16},{"name":679,"slug":680,"type":16},"Operations","operations","2026-07-12T07:38:28.127148",{"slug":683,"name":683,"fn":684,"description":685,"org":686,"tags":687,"stars":693,"repoUrl":694,"updatedAt":695},"agent-aware-cli","design agent-aware command-line interfaces","Guide for designing and implementing command-line interfaces (CLIs) that are equally usable by human developers and automated coding agents. Use when the user wants to build a CLI, apply CLI best practices, or use Go with Cobra and Viper.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[688,691,692],{"name":689,"slug":690,"type":16},"CLI","cli",{"name":645,"slug":646,"type":16},{"name":9,"slug":8,"type":16},1150,"https:\u002F\u002Fgithub.com\u002FGoogleCloudPlatform\u002Fvertex-ai-creative-studio","2026-07-12T07:39:08.41406",{"slug":697,"name":697,"fn":698,"description":699,"org":700,"tags":701,"stars":693,"repoUrl":694,"updatedAt":708},"build-mcp-genmedia","build and configure GenAI MCP servers","Builds the mcp-genmedia Go MCP servers (nanobanana, veo, lyria, gemini-multimodal, chirp3-hd, avtool) from source and wires them into settings.json. Use this skill whenever the MCP tools are missing or broken — typically at the start of a new session, after a container restart, or when \u002Ftmp has been wiped. The prebuilt binaries in \u002Fworkspace\u002F.local\u002Fbin\u002F have no exec bit and live on a noexec mount; this skill compiles fresh executables into \u002Ftmp\u002Fbin\u002F where execution is allowed.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[702,703,704,705],{"name":18,"slug":19,"type":16},{"name":9,"slug":8,"type":16},{"name":562,"slug":563,"type":16},{"name":706,"slug":707,"type":16},"MCP","mcp","2026-07-12T07:39:10.911302",{"slug":710,"name":710,"fn":711,"description":712,"org":713,"tags":714,"stars":693,"repoUrl":694,"updatedAt":722},"genmedia-audio-engineer","synthesize and mix audio content","Expert in audio synthesis, music generation, and mixing. Use when creating podcasts, background scores, or multi-track audio layering using mcp-chirp3-go, mcp-lyria-go, mcp-gemini-go, mcp-nanobanana-go, and mcp-avtool-go.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[715,717,720,721],{"name":716,"slug":340,"type":16},"Audio",{"name":718,"slug":719,"type":16},"Creative","creative",{"name":9,"slug":8,"type":16},{"name":596,"slug":45,"type":16},"2026-07-12T07:39:16.623879",{"slug":724,"name":724,"fn":725,"description":726,"org":727,"tags":728,"stars":693,"repoUrl":694,"updatedAt":735},"genmedia-image-artist","generate and edit AI images","Expert in AI image generation and editing. Use when the user needs high-quality textures, character-consistent visuals, or image-to-image editing using mcp-nanobanana-go.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[729,730,731,734],{"name":718,"slug":719,"type":16},{"name":9,"slug":8,"type":16},{"name":732,"slug":733,"type":16},"Image Generation","image-generation",{"name":596,"slug":45,"type":16},"2026-07-12T07:39:15.372822",{"slug":737,"name":737,"fn":738,"description":739,"org":740,"tags":741,"stars":693,"repoUrl":694,"updatedAt":750},"genmedia-producer","produce multi-step media content","Expert media production assistant. Use when requested to help with storyboarding, podcast creation, audio assembly, or complex multi-step media workflows using the GenMedia MCP servers (Veo, Lyria, Gemini TTS, NanoBanana).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[742,743,744,745,748],{"name":716,"slug":340,"type":16},{"name":718,"slug":719,"type":16},{"name":9,"slug":8,"type":16},{"name":746,"slug":747,"type":16},"Media","media",{"name":749,"slug":347,"type":16},"Video","2026-07-12T07:39:09.672849",{"slug":752,"name":752,"fn":753,"description":754,"org":755,"tags":756,"stars":693,"repoUrl":694,"updatedAt":760},"genmedia-video-editor","edit and compose video content","Expert in video composition, editing, and format conversion. Use when the user wants to generate high-quality video, overlay images on video, concatenate clips, create GIFs, or sync audio to video using mcp-avtool-go and mcp-veo-go.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[757,758,759],{"name":718,"slug":719,"type":16},{"name":9,"slug":8,"type":16},{"name":749,"slug":347,"type":16},"2026-07-12T07:39:13.749081",{"slug":762,"name":762,"fn":763,"description":764,"org":765,"tags":766,"stars":693,"repoUrl":694,"updatedAt":776},"genmedia-voice-director","generate expressive text-to-speech with Gemini","Expert in casting, directing, and generating expressive text-to-speech using Gemini TTS. Use this when the user needs virtual voice actor personas, expressive speech generation, or multiple variations of a voiceover (like \"take 3 on the bounce\").",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[767,768,769,770,773],{"name":716,"slug":340,"type":16},{"name":718,"slug":719,"type":16},{"name":21,"slug":22,"type":16},{"name":771,"slug":772,"type":16},"Speech","speech",{"name":774,"slug":775,"type":16},"Text-to-Speech","text-to-speech","2026-07-12T07:39:17.86673",80]