feat(agent_registry): the Console code snippet uses AgentRegistry(project=...).published_skills.get(name=...), which does not exist in ADK
メンテナーはふだん 1 日以内に返信
@sanketpatil06 がすでに取り組んでいます。
2026年9月17日 から。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 48/100
調査の方向性
google.adk.integrations.agent_registry.AgentRegistry と google.adk.integrations.skill_registry.GCPSkillRegistry を読み、その後、issue で言及されている関連テストとサンプルを調べてください。それらの読み込み動作と async 動作を比較し、意図された API を maintainer と確認してください。完了の条件は、メタデータとメディアの読み込みを含め、完全な skill リソース名で Console のスニペットが動作し、サポート対象の動作をテストでカバーできていることです。
索引モデルが issue の本文から書いたものです。
説明
🔴 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).
- 主要言語
- Python
- スター
- 21.6k
- フォーク
- 4k
- 平均マージ
- 12時間 6分
- マージ済み PR(30日)
- 4
環境構築
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
google/adk-python のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
google/adk-python#7298 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
google/adk-python#7292 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
google/adk-python#7289 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
google/adk-python#7282 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
-
CredentialsManager should also extract scopes when populating auth schemes対応中かも @sanketpatil06 が 2 日前に担当しました。 オープンcore needs review
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
google/adk-python#7266 · コメント 2 件 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
google/adk-python の issue をすべて見る
似ている issue
-
docs pydanty:is-working
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
pydantic/pydantic-ai#8863 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
run-llama/llama_index#23278 ·
メンテナーはふだん 2 日以内に返信
-
documentation from-review-extraction github-actions priority: low severity:nit
難易度 1/5 1時間未満 初心者へのやさしさ 92/100
LearningCircuit/local-deep-research#6946 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
oracle/langchain-oracle#323 ·
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1時間未満 初心者へのやさしさ 88/100
tenstorrent/tt-metal#58057 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信