skills.create_dir: haz que las skills nuevas aterricen donde dice tu configuración — no donde el prompt se ignora


Tienes un vault de equipo en /opt/brain/skills, así que le dijiste a tu agente en el system prompt: «crea las skills nuevas en /opt/brain/skills». Asintió, y aun así skill_manage escribió cada skill nueva en ~/.hermes/skills/ — porque el código de la herramienta no lee tu prosa. Un operador de la comunidad se cansó tanto de esto que marcó con chmod el directorio local de skills como solo lectura solo para forzar al agente a obedecer; el error del sistema operativo le ganó la discusión al system prompt. Una corrección fusionada el 1 de septiembre (PR #100377) pone fin a este tira y afloja para siempre: la nueva clave de configuración skills.create_dir dirige las skills creadas por el agente a cualquier directorio que elijas — y cada instrucción que nombra la ruta de creación, desde el schema de la herramienta skill_manage hasta el propio texto del prompt, ahora renderiza tu directorio configurado. La herramienta, el prompt y la configuración por fin coinciden.

Por qué una instrucción en un prompt no puede hacer esto

La ruta de creación de skill_manage estaba codificada al directorio de skills local del perfil (~/.hermes/skills/). Puedes escribir lo que quieras en un system prompt, pero la implementación de la herramienta lee configuración y rutas, no intenciones. Cuando el humano decía «pon las skills en /opt/brain/skills» y la herramienta escribía en ~/.hermes/skills/, la skill se creaba, se encontraba y se usaba igualmente — así que nada fallaba de forma ruidosa; el desajuste simplemente acumulaba skills en silencio en el lugar equivocado, que luego había que mover a mano. El truco del directorio de solo lectura «funcionaba» solo haciendo fallar la ruta por defecto, que es una manera terrible de hacer cumplir una política.

La solución: una clave de configuración, y las instrucciones la siguen

Añade esto a ~/.hermes/config.yaml:

skills:
  create_dir: /opt/brain/skills

Esa es toda la configuración. Ahora:

  • skill_manage crea las skills nuevas allí — el _resolve_skill_dir() de la herramienta apunta al directorio configurado (hace mkdir de la ruta en la primera escritura, así que el directorio no necesita existir todavía).
  • Cada instrucción que nombra la ruta se adapta. La descripción del schema de la herramienta skill_manage, el texto del prompt y los documentos renderizan todos el directorio configurado mediante display_skill_create_dir() — así el agente ve «las skills nuevas aterrizan en /opt/brain/skills/» en su propia documentación de herramientas, no una ruta obsoleta codificada.
  • ~ y ${VAR} se expanden, y las rutas relativas se resuelven contra HERMES_HOME — así que create_dir: team-skills significa $HERMES_HOME/team-skills.
  • Un valor que se resuelve al directorio local por defecto se trata como no configurado (ese ya es el comportamiento), así que no puedes configurarte accidentalmente hacia la misma ruta.

Descubrimiento, confianza y el escenario de solo lectura

Una skill solo es útil si el agente puede volver a encontrarla. Cuando skills.create_dir está configurado, el directorio se pliega en el orden de búsqueda de skills justo después del directorio local (con deduplicación contra external_dirs) — las skills creadas allí se descubren, se confían y se pueden parchear en el sitio. El truco de solo lectura que empezó toda esta historia también deja de ser necesario: con create_dir apuntando a otro sitio, un directorio local de solo lectura ya no bloquea la creación, porque la herramienta ni lo toca.

Una nota de precedencia: las skills locales de proyecto de confianza (el .hermes/skills/ propio de un repo — consulta nuestra guía de skills locales de proyecto) mantienen mayor precedencia que el directorio local, y eso no cambia.

Dónde apuntarlo

  • Un vault de equipo versionado en git (/opt/brain/skills o un subdirectorio del repo): cada agente de la máquina — y entre máquinas vía sincronización — crea en el vault compartido, y las skills se versionan y revisan como código.
  • Un directorio de scratch o de trabajo: mantén ~/.hermes/skills/ limpio para las skills ajustadas a mano y deja que las skills creadas en experimentos aterricen en algún lugar desechable.
  • Un hogar multiperfil: apunta create_dir a una ubicación compartida para que las skills creadas bajo cualquier perfil sean visibles para todos.

Estado de la versión

skills.create_dir se fusionó el 1 de septiembre (PR #100377, rescatando trabajo de la comunidad de @giwaov con el nombre de @Frosti7) y está en main — se publicó después del tag v0.21.0 (lanzado el 31 de agosto), así que no está en v0.21.0; llegará con la próxima versión. Para el ecosistema de skills en general, consulta nuestra guía de las 8 mejores skills y el post del Skills Hub del escritorio.