Por qué una skill recién publicada devuelve cero resultados en una búsqueda

Acabas de ver una skill pequeña y curiosa en un hilo de la comunidad — por ejemplo, «convertir los action items de un informe semanal en una checklist» — y el autor dice que está publicada en skills.sh. Abres una terminal, sintiéndote bien con la idea:
hermes skills search weekly-report
Cero resultados. Pruebas con otra keyword. Sigue siendo cero. Ahora dudas de tu ortografía, o de la existencia de la skill. Media hora después la instalas desde el enlace del hilo y funciona a la perfección.
No hay nada mal contigo ni con la skill. El camino que sigue una búsqueda y la pregunta «¿existe esta skill?» simplemente no son la misma pregunta.
La búsqueda funciona en dos pasadas
Una búsqueda sin filtros — CLI, TUI y dashboard por igual — se responde desde un índice central que cubre los registries externos. Ese índice se reconstruye periódicamente, lo que significa que responde «qué existía en la última build», no «qué existe ahora mismo».
Eso deja una ventana. Una skill publicada hace unos minutos probablemente todavía no esté en el índice.
Un cambio mergeado el 16 de septiembre cubre esa ventana: cuando el índice devuelve cero coincidencias para tu consulta, Hermes también pregunta directamente a skills.sh, ClawHub, LobeHub y endpoints conocidos. En palabras de la documentación, una skill publicada hace minutos sigue apareciendo.
Merece la pena recordar algunos límites de ese fallback:
- Como máximo 8 segundos. Recibe una porción del presupuesto de búsqueda, así que un registry lento no puede convertir un fallo en una espera eterna;
- Solo se dispara cuando el índice terminó de verdad con cero resultados. Un índice que ha dado timeout no lo activa — una distinción que el mismo cambio arregló, porque si no el dashboard acusaba falsamente a skills.sh y ClawHub de haber dado timeout;
- Los filtros de provider no lo disparan. Un filtro como
--source nvidiabusca coincidencias entre fuentes proporcionadas, y estos registries no llevan datos de provider, así que serían cuatro llamadas de red garantizadamente vacías; - GitHub no está en el fallback. El motivo es práctico: una sola errata gastaría todo el presupuesto horario de GitHub de un usuario sin autenticar. Para buscar en taps de GitHub personalizados, pídelos explícitamente.
¿Quieres una respuesta precisa? Nombra la fuente
hermes skills search acepta --source, y la lista es más larga de lo que la mayoría supone:
hermes skills search kubernetes # todas las fuentes
hermes skills search react --source skills-sh # solo el directorio skills.sh
hermes skills search report --source clawhub # solo ClawHub
hermes skills search --source official # solo skills opcionales oficiales
Las fuentes disponibles incluyen official, skills-sh, well-known, github, clawhub, lobehub, browse-sh, además de las agrupadas por provider como nvidia, openai, anthropic, huggingface, voltagent, gstack y minimax; el conjunto completo está en --help.
Dos comandos hermanos se ganan su sitio: hermes skills browse pagina por todo (las skills oficiales primero), y hermes skills inspect <name> te muestra qué hace una skill antes de instalarla. Añade --json a una búsqueda cuando quieras una salida estructurada para un script.
El índice también quedó arreglado: un shard agotado ya no se come skills
El fallback es un parche; el arreglo de verdad es hacer fiable el índice. El trabajo del 17 y el 18 de septiembre atacó un tipo de bug: tratar un fetch fallido como «ya no hay más datos».
- El catálogo de ClawHub avanza por cursor. Cuando una página daba timeout o devolvía un código distinto de 200, el código antiguo lo interpretaba como el final del catálogo, así que desaparecían todas las skills restantes. Ahora reintenta.
- El sitemap de skills.sh se descarga por shards. Un shard fallido se leía como un shard vacío, y el catálogo parcial resultante se escribía en la caché compartida, eliminando skills de la búsqueda para todos hasta que expiraba la caché. Ahora un shard fallido se reintenta y, si sigue caído, la porción parcial se devuelve sin guardarse en caché.
- El timeout de la CI pasó de 50 a 120 minutos. El commit explica por qué con una precisión inusual: desde el 17 de septiembre ClawHub sirve más o menos una página de 200 elementos cada 10 segundos (frente a unos 2,5), así que el recorrido de unas 400 páginas por sí solo tarda entre 60 y 70 minutos. Las ejecuciones programadas del 17 y el 18 de septiembre se cancelaron a los 50 minutos con el crawl todavía en marcha, y otra ejecución se detuvo en 12.145 skills —por debajo del suelo de 20.000— tras fallar una sola página. Había que arreglar las dos mitades para que el índice volviera a publicarse.
Así que la próxima vez que una búsqueda salga vacía, ve en este orden
Uno: busca otra vez, sin cambiar nada. Si la skill se acaba de publicar, el fallback ya habría preguntado, pero un presupuesto de 8 segundos significa que un único registry lento todavía puede hacer que se le escape.
Dos: nombra la fuente. --source clawhub o --source skills-sh envía la consulta directamente a ese directorio y se salta por completo la frescura del índice.
Tres: busca en GitHub explícitamente. Los taps personalizados no están en el fallback; usa --source github.
Cuatro: comprueba si lo que buscas es siquiera una skill. Si lo que quieres es un plugin — de esos que añaden herramientas, hooks o adaptadores de plataforma — es otro pipeline distinto: fijado por SHA, revisado por personas, y tratado en el artículo sobre el catálogo de plugins.
Para el panorama más amplio — cómo está organizado el directorio de skills, external_dirs y dónde acaban las skills creadas por el agente vía skills.create_dir — consulta el artículo sobre el directorio de creación de skills. La superficie completa de comandos está en la referencia del comando skills.
La versión corta: no ver algo no es lo mismo que no exista. La búsqueda siempre ha sido índice más fallback, y ambas mitades recibieron una buena ronda de arreglos a mediados de septiembre; así que la próxima vez que obtengas cero resultados, pregúntate si lo que quieres está dentro del conjunto al que realmente puede llegar.