You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Is your feature request related to a specific problem?
The Google Cloud Console (Agent Registry > Skill Registry > skill detail page) shows a Python code snippet for using a published skill with ADK. The same snippet is also shipped inside every published skill archive as COPYTOREPOTOUSE.txt. It looks like this (project/skill from our catalog):
fromgoogle.adk.agents.llm_agentimportLlmAgentfromgoogle.adk.integrations.agent_registryimportAgentRegistryfromgoogle.adk.toolsimportskill_toolsetPROJECT_ID="my-project"LOCATION="global"SKILL_NAME="projects/my-project/locations/global/skills/cloud.google.com-google-cloud-networking-observability"agent_registry=AgentRegistry(project=PROJECT_ID, location=LOCATION)
skill=agent_registry.published_skills.get(name=SKILL_NAME)
skill_tools=skill_toolset.SkillToolset(skills=[skill])
root_agent=LlmAgent(
model="gemini-3.6-flash",
name="sample_agent",
instruction="Use the tools you have access to help answer user questions",
tools=[skill_tools],
)
This snippet cannot run on any released google-adk (checked 2.9.1 and main @ 3a06a86):
AgentRegistry has no published_skills attribute. Nothing named published_skills exists in the package, the tests, the samples, or the git history of any branch. AgentRegistry only covers MCP servers, A2A agents and model endpoints; the adk.dev Agent Registry page documents the same surface and does not mention skills.
So a developer who copies the snippet from the Console gets a TypeError on the first line, and the nearest working alternative does not work for Google-published skills either. We hit this the day Skill Registry launched and it is still the case today.
Describe the Solution You'd Like
Make the Console snippet true, i.e. add a synchronous, resource-name based skill accessor on AgentRegistry that returns a google.adk.skills.models.Skill ready to be passed to SkillToolset(skills=[...]):
published_skills.get(name=<full resource name>) fetches the skill metadata, follows the ?alt=media redirect for the default revision, and returns a Skill (same loader as GCPSkillRegistry). A list(...) / search(query=...) pair on the same namespace would mirror the existing list_mcp_servers / search_mcp_servers / list_agents / search_agents methods.
Synchronous, like the rest of AgentRegistry, so it can be used at module import time in agent.py (the snippet's use case). GCPSkillRegistry stays the async registry for SkillToolset(registry=...).
Either accept project= as an alias of project_id, or fix the snippet; whichever is easier, but today the two disagree.
Impact on your work
We build agents on Agent Engine that consume Google-published skills from Agent Registry. The Console tells users to write code that does not exist, and the alternative path is blocked by two other bugs, so there is currently no way to use a Google-published skill from ADK at all. Not blocking a launch, but it has been confusing since the Skill Registry launch and it is the first thing a new user of the feature runs into.
Willingness to contribute
Yes, I can send a PR for the AgentRegistry side once the maintainers confirm the intended shape (the Console/template side is presumably owned by another team; happy to have this routed there as well).
google-cloud-agentregistry 0.1.0 on PyPI (2026-07-08) is an empty placeholder package (no services), so there is no other public SDK that provides published_skills either.
馃敶 Required Information
Is your feature request related to a specific problem?
The Google Cloud Console (Agent Registry > Skill Registry > skill detail page) shows a Python code snippet for using a published skill with ADK. The same snippet is also shipped inside every published skill archive as
COPYTOREPOTOUSE.txt. It looks like this (project/skill from our catalog):This snippet cannot run on any released
google-adk(checked 2.9.1 andmain@ 3a06a86):AgentRegistry.__init__takesproject_id,location,header_provider;project=raisesTypeError.AgentRegistryhas nopublished_skillsattribute. Nothing namedpublished_skillsexists in the package, the tests, the samples, or the git history of any branch.AgentRegistryonly covers MCP servers, A2A agents and model endpoints; the adk.dev Agent Registry page documents the same surface and does not mention skills.google.adk.integrations.skill_registry.GCPSkillRegistry, whoseget_skill()isasync, takes a bare skill id rather than a full resource name, and currently rejects every Google-published skill id (GCPSkillRegistry rejects every Google-published skill: dotted ids (cloud.google.com-*) fail name validation in get_skill and search_skills聽#7136) and fails on the media-download redirect (GcpSkillRegistry.get_skill() always fails with 302: Agent Registry media download redirect to GCS signed URL is not followed聽#6908 / fix: follow redirects when downloading skills in GcpSkillRegistry聽#6824).So a developer who copies the snippet from the Console gets a
TypeErroron the first line, and the nearest working alternative does not work for Google-published skills either. We hit this the day Skill Registry launched and it is still the case today.Describe the Solution You'd Like
Make the Console snippet true, i.e. add a synchronous, resource-name based skill accessor on
AgentRegistrythat returns agoogle.adk.skills.models.Skillready to be passed toSkillToolset(skills=[...]):Suggested semantics:
published_skills.get(name=<full resource name>)fetches the skill metadata, follows the?alt=mediaredirect for the default revision, and returns aSkill(same loader asGCPSkillRegistry). Alist(...)/search(query=...)pair on the same namespace would mirror the existinglist_mcp_servers/search_mcp_servers/list_agents/search_agentsmethods.projects/*/locations/*/skills/*name" needs checking.AgentRegistry, so it can be used at module import time inagent.py(the snippet's use case).GCPSkillRegistrystays the async registry forSkillToolset(registry=...).project=as an alias ofproject_id, or fix the snippet; whichever is easier, but today the two disagree.Impact on your work
We build agents on Agent Engine that consume Google-published skills from Agent Registry. The Console tells users to write code that does not exist, and the alternative path is blocked by two other bugs, so there is currently no way to use a Google-published skill from ADK at all. Not blocking a launch, but it has been confusing since the Skill Registry launch and it is the first thing a new user of the feature runs into.
Willingness to contribute
Yes, I can send a PR for the
AgentRegistryside once the maintainers confirm the intended shape (the Console/template side is presumably owned by another team; happy to have this routed there as well).馃煛 Recommended Information
Describe Alternatives You've Considered
GCPSkillRegistry.get_skill(name=<bare id>)+SkillToolset(skills=[skill]): async, so it needsasyncio.runat import (which fails underadk run/adk webbecause the module is imported inside a running loop), and it is blocked by GCPSkillRegistry rejects every Google-published skill: dotted ids (cloud.google.com-*) fail name validation in get_skill and search_skills聽#7136 and fix: follow redirects when downloading skills in GcpSkillRegistry聽#6824 for Google-published skills.SkillToolset(registry=GCPSkillRegistry(...))withsearch_skillsat runtime: Google-published skills are filtered out of the results (GCPSkillRegistry rejects every Google-published skill: dotted ids (cloud.google.com-*) fail name validation in get_skill and search_skills聽#7136), and it costs an extra model turn per conversation (feat(skills): let SkillToolset pin registry skills so they appear in list_skills / the catalog without a search_skills turn聽#7130 / feat(skills): let SkillToolset pin registry skills to appear in the catalog聽#7135).Additional Context
google-cloud-agentregistry0.1.0 on PyPI (2026-07-08) is an empty placeholder package (no services), so there is no other public SDK that providespublished_skillseither.