GCS skill loaders ignore a skill.md manifest that the local and zip loaders accept
Los mantenedores suelen responder en 4 días
@surajksharma07 ya está trabajando en esto.
Desde el 30/10/2026.
- #7843 de @adityasingh2400 — abierto
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 84/100
Línea de trabajo
Empieza en skills/_utils.py con _list_skills_in_gcs_dir y _load_skill_from_gcs_dir; después compara cómo _parse_skill_md, _list_skills_in_dir y el cargador de ZIP aceptan ambas variantes del nombre del manifiesto. Busca las pruebas existentes de skills de GCS que usan un cliente de almacenamiento simulado y añade cobertura para un manifiesto skill.md al listar y cargar. El objetivo se cumple cuando los cargadores de GCS y sus wrappers asíncronos manejan skill.md igual que los cargadores locales y de ZIP.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
🔴 Required Information
Describe the Bug:
A skill whose manifest is named skill.md loads from a local directory or a zip archive but is invisible when stored in GCS. _parse_skill_md, _list_skills_in_dir and the zip loader in skills/_utils.py all accept SKILL.md or skill.md. _list_skills_in_gcs_dir and _load_skill_from_gcs_dir only look for SKILL.md. Moving a skill that works locally into a bucket therefore makes it disappear from the listing, and loading it raises FileNotFoundError. The async wrappers call the same functions and behave the same way.
Steps to Reproduce:
- Upload a skill directory with
gs://my-bucket/skills/my-skill/skill.md(valid frontmatter,name: my-skill). _list_skills_in_gcs_dir("my-bucket", "skills/")._load_skill_from_gcs_dir("my-bucket", "my-skill", skills_base_path="skills/").
Expected Behavior:
The skill is listed and loads, as it does from a local directory.
Observed Behavior:
The listing is {}, and loading raises FileNotFoundError: SKILL.md not found at gs://my-bucket/skills/my-skill/SKILL.md.
Environment Details:
- ADK Library Version (pip show google-adk): 2.13.0 (also on
mainat 75fb788) - Desktop OS: macOS
- Python Version (python -V): 3.11.16
Model Information:
- Are you using LiteLLM: No
- Which model is being used: N/A (skill loading)
🟡 Optional Information
Additional Context:
I verified this with the mocked google.cloud.storage client the existing GCS skill tests use; I don't have a bucket for a live run.
How often has this issue occurred?:
- Always (100%), for GCS skills whose manifest is
skill.md
- Lenguaje dominante
- Python
- Estrellas
- 22.1k
- Forks
- 4.3k
- Merge medio
- 1 d 10 h
- PR fusionados (30 d)
- 5
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de google/adk-python
-
[LiteLLM] role='tool_responses' for Gemma 4 breaks tool calling on Vertex AI Model Garden MaaS (400 INVALID_ARGUMENT)Posiblemente ocupada @surajksharma07 la tomó hace 1 día. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
google/adk-python#7977 · 1 comentario · 1 asignado ·
Los mantenedores suelen responder en 4 días
-
FileArtifactService changes CRLF and CR line endings in text artifactsPosiblemente ocupada @sanketpatil06 la tomó hace 3 días. Abiertorequest clarification services
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
google/adk-python#7914 · 1 comentario · 1 asignado ·
Los mantenedores suelen responder en 4 días
-
ContainerCodeExecutor drops output files that are hard linksPosiblemente ocupada @llalitkumarrr la tomó hace 3 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
google/adk-python#7906 · 2 comentarios · 1 asignado ·
Los mantenedores suelen responder en 4 días
-
RestApiTool crashes on a request body media type that has no schemaPosiblemente ocupada @llalitkumarrr la tomó hace 6 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
google/adk-python#7838 · 1 comentario · 1 asignado ·
Los mantenedores suelen responder en 4 días
-
LiteLlm with SSE streaming records the answer twice in gen_ai.output.messagesPosiblemente ocupada @surajksharma07 la tomó hace 14 días. Abiertomodels
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
google/adk-python#7630 · 11 comentarios · 1 asignado ·
Los mantenedores suelen responder en 4 días
Todos los issues de google/adk-python
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
huggingface/deep-rl-class#723 ·
-
[tool] bug: Qwen3 XML tool parser raises on `...` argument values (Ellipsis is not JSON serializable)Posiblemente ocupada @super-yuki la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 87/100
verl-project/verl#8559 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
TencentCloud/octop-harness#228 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
google/osv-scalibr#2585 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
NousResearch/hermes-agent#149323 ·
Los mantenedores suelen responder en 1 día