/agent skills.
Conceitos
| Conceito | Descrição |
|---|---|
| Registry | Um servidor remoto que hospeda skills pesquisáveis e instaláveis |
| Skill | Um arquivo .md com frontmatter YAML que define comportamento especializado para agentes |
| Fan-out Search | Busca paralela em todos os registries habilitados, com resultados mesclados e deduplicados |
| Moderation | Flags de segurança (malware, conteúdo suspeito) fornecidas pelos registries |
| Trigram Cache | Cache fuzzy local que evita requisições de rede para buscas similares |
Registries Padrão
O ChatCLI vem configurado com dois registries:| Registry | URL | Descrição |
|---|---|---|
| chatcli | https://registry.chatcli.dev/api/v1 | Registry oficial do ChatCLI |
| clawhub | https://clawhub.ai/api/v1 | Marketplace público de skills (ClawHub) |
Comandos /skill
Buscar Skills
- Nome, versão e autor
- Registry de origem (
[chatcli],[clawhub], etc.) - Flags de moderação (
SUSPICIOUS,BLOCKED) - Status de instalação (
[installed])
Instalar Skill
~/.chatcli/skills/<name>/SKILL.md.
- Skills com malware detectado são bloqueadas automaticamente
- Skills suspeitas exibem um aviso e pedem confirmação
- Skills já instaladas são atualizadas (substituídas)
- Após instalação, a skill fica disponível imediatamente em
/agent skills
Desinstalar Skill
Listar Skills Instaladas
Informações de uma Skill
Ver Registries Configurados
Ajuda
Configuração
Arquivo de Configuração
O arquivo~/.chatcli/registries.yaml controla os registries:
Variáveis de Ambiente
| Variável | Descrição |
|---|---|
CHATCLI_REGISTRY_URLS | URLs adicionais de registries (separadas por vírgula). Cada URL é adicionada como registry customizado. |
CHATCLI_REGISTRY_DISABLE | Nomes de registries a desabilitar (separados por vírgula). Ex: clawhub,chatcli |
CHATCLI_SKILL_INSTALL_DIR | Diretório de instalação (padrão: ~/.chatcli/skills) |
Registry Customizado
Qualquer servidor que implemente a API REST padrão pode ser usado como registry customizado:Endpoints Esperados
| Endpoint | Método | Descrição |
|---|---|---|
/skills/search?q=<query> | GET | Busca skills. Retorna {"skills": [...]} ou [...] |
/skills/<slug> | GET | Metadados de uma skill específica |
/skills/<slug>/download | GET | Download do conteúdo da skill |
Formato de Resposta (Search)
Autenticação
Registries customizados podem requerer autenticação via token Bearer. Configure o campotoken no registries.yaml:
Segurança e Moderação
O sistema de skill registry inclui proteções contra conteúdo malicioso:Flags de Moderação
| Flag | Comportamento |
|---|---|
malware_detected | BLOQUEIO TOTAL — instalação recusada automaticamente |
quarantined | BLOQUEIO TOTAL — skill em quarentena pelo registry |
suspicious_content | AVISO — exibe warning e pede confirmação do usuário |
Instalação Atômica
Skills são instaladas usando escrita atômica:- Conteúdo é baixado para um diretório temporário (
.tmp-*) - Frontmatter YAML é validado
- Flags de moderação são verificadas
- Diretório é renomeado atomicamente para o destino final
- Em caso de falha, o diretório temporário é removido automaticamente
Sanitização de Nomes
Nomes de skills são sanitizados para prevenir path traversal:- Convertidos para lowercase
- Espaços substituídos por hífens
- Barras (
/) removidas - Sequências
..removidas
Cache de Busca (Trigram)
O ChatCLI implementa um cache fuzzy baseado em trigramas para reduzir chamadas de rede:Como Funciona
-
Extração de Trigramas: A query é dividida em subsequências de 3 caracteres
"golang"→{"gol", "ola", "lan", "ang"}
-
Similaridade de Jaccard: Para cada query em cache, calcula-se
J(A, B) = |A ∩ B| / |A ∪ B| -
Threshold: Se J ≥ 0.7, os resultados em cache são retornados
"golan"→ match com"golang"(J ≈ 0.75)"python"→ sem match com"golang"(J ≈ 0.0)
Características
| Parâmetro | Valor Padrão |
|---|---|
| Tamanho máximo do cache | 50 entradas |
| TTL por entrada | 5 minutos |
| Threshold de similaridade | 0.7 |
| Evicção | LRU (Least Recently Used) |
Integração com Agentes
Skills instaladas via/skill install ficam automaticamente disponíveis para o sistema de agentes:
- Skills são instaladas em
~/.chatcli/skills/<name>/SKILL.md - O
Loaderdo sistema de personas (pkg/persona) já escaneia esse diretório /agent skillslista tanto skills locais quanto instaladas via registry- Agentes podem referenciar skills instaladas em seu frontmatter:
Precedência de Skills
| Prioridade | Local | Descrição |
|---|---|---|
| 1 (maior) | .agent/skills/ (projeto) | Skills locais do projeto |
| 2 | ~/.chatcli/skills/ (global) | Skills instaladas via registry ou manualmente |
Arquitetura
Pacotes
| Pacote | Responsabilidade |
|---|---|
pkg/registry/ | Interface, adapters, manager, cache, installer, moderação |
cli/skill_handler.go | Handler de comandos /skill |
pkg/persona/ | Loader de skills locais (inalterado) |
Próximos Passos
- Customizable Agents — Como criar e usar agentes com skills
- Referência de Comandos — Lista completa de todos os comandos
- Configuração (.env) — Variáveis de ambiente disponíveis