skills.create_dir: faça novas skills aterrissarem onde sua config manda — não onde o prompt é ignorado


Você mantém um vault de equipe em /opt/brain/skills, então disse ao seu agente no system prompt: “crie novas skills em /opt/brain/skills.” Ele concordou — e então skill_manage gravou cada nova skill em ~/.hermes/skills/ mesmo assim, porque o código da tool não lê a sua prosa. Um operador da comunidade ficou tão cansado disso que aplicou chmod no diretório local de skills para deixá-lo somente leitura, só para forçar o agente a obedecer; o erro do SO venceu o system prompt. Um fix mesclado em 1º de setembro (PR #100377) põe fim a esse cabo de guerra de vez: a nova chave de config skills.create_dir roteia skills criadas pelo agente para qualquer diretório que você escolher — e toda instrução que menciona o caminho de criação, do schema da tool skill_manage ao próprio texto do prompt, agora renderiza o diretório que você configurou. A tool, o prompt e a config finalmente concordam.

Por que uma instrução de prompt não resolve isso

O caminho de criação do skill_manage era fixo no diretório de skills local do profile (~/.hermes/skills/). Você pode escrever o que quiser num system prompt, mas a implementação da tool lê configuração e caminhos, não intenção. Quando o humano disse “coloque as skills em /opt/brain/skills” e a tool gravou em ~/.hermes/skills/, a skill ainda assim foi criada, encontrada e usada — então nada falhou de forma ruidosa; o descasamento apenas acumulou skills silenciosamente no lugar errado, que depois tiveram de ser movidas à mão. O hack do diretório somente leitura “funcionava” apenas fazendo o caminho padrão falhar, o que é uma forma terrível de impor política.

O fix: uma chave de config, e as instruções acompanham

Adicione isto a ~/.hermes/config.yaml:

skills:
  create_dir: /opt/brain/skills

É só isso. Agora:

  • skill_manage cria novas skills lá — o _resolve_skill_dir() da tool aponta para o diretório configurado (ele faz mkdir no caminho na primeira gravação, então o diretório não precisa existir ainda).
  • Toda instrução que menciona o caminho acompanha. A descrição do schema da tool skill_manage, o texto do prompt e os docs renderizam o diretório configurado via display_skill_create_dir() — então o agente vê “novas skills caem em /opt/brain/skills/” na própria documentação da tool, não um caminho fixo e desatualizado.
  • ~ e ${VAR} são expandidos, e caminhos relativos resolvem contra o HERMES_HOME — então create_dir: team-skills significa $HERMES_HOME/team-skills.
  • Um valor que resolva para o diretório local padrão é tratado como não definido (já é o comportamento atual), então você não pode configurar por acidente o mesmo caminho.

Descoberta, confiança e o cenário somente leitura

Uma skill só é útil se o agente conseguir encontrá-la de novo. Quando skills.create_dir está definido, o diretório entra na ordem de busca de skills logo após o diretório local (com deduplicação contra external_dirs) — skills criadas lá são descobertas, confiáveis e patcheáveis no lugar. O hack somente leitura que deu origem a toda esta história também deixa de ser necessário: com create_dir apontando para outro lugar, um diretório local de skills somente leitura não bloqueia mais a criação, porque a tool nunca o toca.

Uma nota de precedência: skills locais do projeto confiáveis (o .hermes/skills/ de um repo — veja nosso guia de skills locais do projeto) mantêm precedência maior que o diretório local, e isso não muda.

Para onde apontar

  • Um vault de equipe versionado no git (/opt/brain/skills ou um subdiretório do repo): todo agente da máquina — e entre máquinas via sync — cria no vault compartilhado, e as skills são versionadas e revisadas como código.
  • Um diretório de rascunho ou workspace: mantenha ~/.hermes/skills/ limpo para skills ajustadas à mão e deixe as skills criadas em experimentos caírem num lugar descartável.
  • Uma casa multi-profile: aponte create_dir para um local compartilhado, para que skills criadas sob qualquer profile sejam visíveis para todos.

Status do release

skills.create_dir foi mesclado em 1º de setembro (PR #100377, resgatando trabalho da comunidade de @giwaov, com nomeação de @Frosti7) e está na main — ele chegou depois da tag v0.21.0 (lançada em 31 de agosto), então não está na v0.21.0; virá com o próximo release. Para o ecossistema mais amplo de skills, veja nosso guia das 8 melhores skills e o post sobre o Skills Hub do desktop.