feat(agent_registry): the Console code snippet uses AgentRegistry(project=...).published_skills.get(name=...), which does not exist in ADK

Aperta
#7,137 2 commenti 0 reazioni 1 assegnatario Vedi su GitHub

@sanketpatil06 ci sta già lavorando.

Dal 17/9/2026.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
48/100
Tipo di issue
Funzionalità
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
gcp, python
Ambito
ai, api

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

agent config needs review

🔴 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__ takes project_id, location, header_provider; project= raises TypeError.
  • 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.
  • Skills are handled by a separate class, google.adk.integrations.skill_registry.GCPSkillRegistry, whose get_skill() is async, 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=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.
  • 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 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).


🟡 Recommended Information

Describe Alternatives You've Considered
  • GCPSkillRegistry.get_skill(name=<bare id>) + SkillToolset(skills=[skill]): async, so it needs asyncio.run at import (which fails under adk run / adk web because the module is imported inside a running loop), and it is blocked by #7136 and #6824 for Google-published skills.
  • SkillToolset(registry=GCPSkillRegistry(...)) with search_skills at 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-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.
  • 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

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di google/adk-python

Tutte le issue di google/adk-python

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.