feat(agent_registry): the Console code snippet uses AgentRegistry(project=...).published_skills.get(name=...), which does not exist in ADK
@sanketpatil06 ci sta già lavorando.
Dal 17/9/2026.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 48/100
Direzione di ricerca
Leggi google.adk.integrations.agent_registry.AgentRegistry e google.adk.integrations.skill_registry.GCPSkillRegistry, quindi esamina i test e gli esempi correlati menzionati nell’issue. Confronta il loro comportamento di caricamento e async e conferma l’API prevista con i maintainer. Il lavoro è completato quando lo snippet di Console funziona con un nome completo della risorsa skill, incluso il caricamento dei metadati e dei contenuti multimediali, e i test coprono il comportamento supportato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
🔴 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):
from google.adk.agents.llm_agent import LlmAgent
from google.adk.integrations.agent_registry import AgentRegistry
from google.adk.tools import skill_toolset
PROJECT_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 @ 3a06a862):
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.- Skills are handled by a separate class,
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 (#7136) and fails on the media-download redirect (#6908 / #6824).
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=[...]):
registry = AgentRegistry(project_id="my-project", location="global")
skill = registry.published_skills.get(
name="projects/my-project/locations/global/skills/cloud.google.com-google-cloud-networking-observability"
)
SkillToolset(skills=[skill])
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.- Accepting the full resource name sidesteps the id-validation problem in #7136: the id is not interpolated into a URL by the client, so only "is this a well-formed
projects/*/locations/*/skills/*name" needs checking. - Synchronous, like the rest of
AgentRegistry, so it can be used at module import time inagent.py(the snippet's use case).GCPSkillRegistrystays the async registry forSkillToolset(registry=...). - Either accept
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 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).
🟡 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 #7136 and #6824 for Google-published skills.SkillToolset(registry=GCPSkillRegistry(...))withsearch_skillsat runtime: Google-published skills are filtered out of the results (#7136), and it costs an extra model turn per conversation (#7130 / #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.- Related: #7136 (dotted ids rejected), #6908 / #6824 (redirect), #7130 / #7135 (pinning registry skills).
- Lingua principale
- Python
- Stelle
- 21.6k
- Fork
- 4k
- Merge medio
- 13h 49m
- PR unite (30g)
- 10
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di google/adk-python
-
mcp
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
google/adk-python#7217 · 2 commenti · 1 assegnatario ·
-
tools
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
google/adk-python#7206 · 1 commento · 1 assegnatario ·
-
tools
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
google/adk-python#7205 · 1 commento · 1 assegnatario ·
-
mcp
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
google/adk-python#7196 · 1 commento · 1 assegnatario ·
-
eval request clarification
Difficoltà 1/5 1-3 ore Idoneità per principianti 86/100
google/adk-python#7146 · 2 commenti · 1 assegnatario ·
Tutte le issue di google/adk-python
Issue simili
-
货币战争手改优先级配置缺少列表元素类型校验(P3) Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
syfoud/Simulated_Scepter#172 ·
-
A cancelled tests run makes the coverage comment workflow fail and reports it as a red check on main Apertaarea: ci bug perceived difficulty: 3
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
Nitjsefnie-Harness-Commons/daedalus#921 · 1 commento ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
EleutherAI/lm-evaluation-harness#4207 ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
ClickHouse/clickhouse-connect#1057 ·