/agent skills.
Conceitos
| Conceito | Descrição |
|---|---|
| Registry | Um servidor remoto que hospeda skills pesquisáveis e instaláveis |
| Skill | Um arquivo SKILL.md com frontmatter YAML que define comportamento especializado para agentes |
| Snapshot | Pacote completo de uma skill (SKILL.md + scripts/ + references/ + assets/) baixado atomicamente |
| Fan-out Search | Busca paralela em todos os registries habilitados, com resultados mesclados |
| Qualified Name | Nome de diretório com prefixo de source (ex: anthropics-skills--frontend-design) para evitar colisões |
| Moderation | Flags de segurança (malware, conteúdo suspeito) fornecidas pelos registries |
| Security Audits | Avaliações de segurança de parceiros (Gen Agent Trust Hub, Socket, Snyk) via skills.sh |
| Trigram Cache | Cache fuzzy local que evita requisições de rede para buscas similares |
Registries Padrão
O ChatCLI vem configurado com três registries:| Registry | URL | Tipo | Descrição |
|---|---|---|---|
| chatcli | https://registry.chatcli.dev/api/v1 | REST API | Registry oficial do ChatCLI |
| clawhub | https://clawhub.ai/api/v1 | REST API | Marketplace público de skills (ClawHub) |
| skills.sh | https://skills.sh | Snapshot API | Diretório aberto de agent skills (Vercel/Anthropic) |
skills.sh
O skills.sh é o diretório aberto de agent skills, compatível com 30+ agentes (Claude Code, Cursor, Codex, Gemini CLI, etc.). Skills hospedadas no GitHub são indexadas com métricas de instalação e auditorias de segurança. O ChatCLI consome 3 APIs do skills.sh:- Search API — busca fuzzy com contagem de instalações
- Download API — snapshots pré-empacotados com todos os arquivos da skill
- Audit API — avaliações de segurança de parceiros (ATH, Socket, Snyk)
Comandos /skill
Buscar Skills
(214K installs)— contagem de instalações (skills.sh)[installed](verde) — skill instalada daquele registry[installed from other source](amarelo) — existe uma com mesmo nome de outro lugar[SUSPICIOUS]/[BLOCKED]— flags de moderação
Instalar Skill
--from resolve a ambiguidade:
- Skills com malware detectado são bloqueadas automaticamente
- Skills suspeitas exibem aviso e pedem confirmação
- Skills já instaladas da mesma source são atualizadas (substituídas)
- Skills de sources diferentes coexistem (nomes qualificados no disco)
Desinstalar Skill
Listar Skills Instaladas
Informações de uma Skill
--from, prioriza o registry com dados mais ricos (skills.sh com installs e security). Com --from, consulta exclusivamente aquele registry.
Gerenciar Registries
Preferências de Source
| Prioridade | Condição |
|---|---|
| 1 (maior) | Preferência do usuário via /skill prefer |
| 2 | Skill local no projeto (.agent/skills/) |
| 3 | Skill local global (~/.chatcli/skills/nome-exato/) |
| 4 | Skill de registry global (~/.chatcli/skills/source--nome/) |
Fixar Skills na Sessão (/skill pin)
Quando você quer que uma skill seja considerada em todo turno da conversa — independente de a mensagem casar com seus triggers: ou paths: — fixe ela com /skill pin. A skill fica injetada no system prompt até você dar /skill unpin ou encerrar a sessão.
- Injeta a skill num bloco dedicado
# Pinned Skillsno system prompt, antes do bloco# Auto-loaded Skills. Em conflito de hintsmodel:/effort:, pinned vence sobre auto-activation (mas perde para/<skill-name>manual). - Bloco pinned carrega
cache_control: ephemeral— provider mantém cache quente entre turns enquanto o conjunto fixado não muda. - Auto-activation continua rodando: se uma skill é fixada e casa por
triggers:/paths:, é injetada uma única vez (dedup por nome). - Skills desinstaladas/renomeadas durante a sessão saem do conjunto silenciosamente no próximo turno (re-resolvidas via persona manager).
/skill listmostra[fixada]ao lado das skills fixadas.
- Skills com
disable-model-invocation: truenão podem ser fixadas — o flag existe justamente pra proibir injeção automática. Use/<skill-name>manual nesses casos. - O conjunto fixado é por sessão; não persiste entre execuções do chatcli (por design — fixar é uma intenção de uso atual).
Como Ativar uma Skill: Três Modos
| Modo | Como dispara | Escopo | Frontmatter necessário |
|---|---|---|---|
| Auto-activation | triggers: (substring keyword) ou paths: (glob contra paths do input) batem | per-turn (re-avalia toda mensagem) | triggers: ou paths: (sem disable-model-invocation: true) |
Manual /<skill-name> | Usuário digita /<nome> | single-turn | user-invocable: true |
Pin /skill pin <name> | Usuário fixou explicitamente | sessão inteira | qualquer (exceto disable-model-invocation: true) |
model:/effort: quando múltiplos modos disparam no mesmo turno:
Ajuda
Namespace e Colisões
Como Skills São Armazenadas no Disco
Skills de registries usam nomes qualificados para evitar colisões:-- é seguro porque a spec do agentskills.io proíbe hífens consecutivos em nomes de skills.
O Usuário Nunca Precisa Digitar Nomes Qualificados
O uso diário é transparente:Snapshots do skills.sh
Skills instaladas do skills.sh preservam a estrutura original completa:SKILL.md recebe campos adicionais de proveniência:
Configuração
Arquivo de Registries
O arquivo~/.chatcli/registries.yaml controla os registries:
Arquivo de Preferências
O arquivo~/.chatcli/skill-preferences.yaml armazena preferências de source:
/skill prefer — não precisa editar manualmente.
Variáveis de Ambiente
| Variável | Descrição |
|---|---|
CHATCLI_REGISTRY_URLS | URLs adicionais de registries (separadas por vírgula) |
CHATCLI_REGISTRY_DISABLE | Nomes de registries a desabilitar (separados por vírgula) |
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)
Segurança e Moderação
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 |
Security Audits (skills.sh)
Para skills do skills.sh, o/skill info exibe avaliações de segurança de três provedores parceiros:
| Provedor | O que avalia |
|---|---|
| Gen Agent Trust Hub (ATH) | Análise de risco geral (safe/low/medium/high/critical) |
| Socket | Contagem de alertas de segurança |
| Snyk | Análise de risco de dependências |
https://add-skill.vercel.sh/audit com timeout de 3 segundos — falhas são silenciosas (dados advisory, nunca bloqueiam).
Instalação Atômica
Skills são instaladas usando escrita atômica:- Conteúdo baixado para diretório temporário (
.tmp-*) - Frontmatter YAML validado
- Flags de moderação verificadas
- Scripts recebem permissão executável
- Campo
sourceesnapshot_hashinjetados no frontmatter - Diretório renomeado atomicamente para o destino final
- Em caso de falha, diretório temporário removido automaticamente
Proteção contra Path Traversal
- Nomes sanitizados (lowercase, sem
.., sem/) - Paths em snapshots validados (rejeita
..e paths absolutos) - Separador
--impede confusão entre nomes qualificados e paths
Cache de Busca (Trigram)
O ChatCLI implementa um cache fuzzy baseado em trigramas para reduzir chamadas de rede:| Parâmetro | Valor Padrão |
|---|---|
| Tamanho máximo | 50 entradas |
| TTL por entrada | 5 minutos |
| Threshold de similaridade | 0.7 (Jaccard) |
| Evicção | LRU (Least Recently Used) |
Integração com Agentes
Skills instaladas ficam automaticamente disponíveis para o sistema de agentes:- Skills são instaladas em
~/.chatcli/skills/<qualified-name>/SKILL.md - O
Loaderdo sistema de personas escaneia o diretório e resolve por nome do frontmatter (base name) /agent skillslista skills disponíveis- Auto-ativação por triggers e paths funciona transparentemente
- Invocação manual via
/<skill-name>resolve pelo base name - Preferências (
/skill prefer) controlam qual versão ganha em caso de conflito
Autocomplete
O tab-complete oferece sugestões contextuais:Arquitetura
Pacotes
| Pacote | Arquivo | Responsabilidade |
|---|---|---|
pkg/registry/ | interface.go | Tipos: SkillMeta, SnapshotFile, InstalledSkillInfo |
manager.go | Fan-out search, Install, InstallFrom, GetAllSkillMeta | |
installer.go | Install, InstallFromSnapshot, qualified names, FindInstalled | |
skillssh_registry.go | Adapter skills.sh (Search, Download, Audit, enrichMeta) | |
clawhub_registry.go | Adapter ClawHub | |
chatcli_registry.go | Adapter ChatCLI.dev | |
custom_registry.go | Adapter genérico REST | |
skill_preferences.go | Preferências de source por skill | |
config.go | Configuração, mergeDefaultRegistries | |
moderation.go | Flags de segurança | |
trigram.go | Cache fuzzy de busca | |
cli/ | skill_handler.go | Comandos /skill (search, install, info, prefer, registry) |
skill_activation.go | Auto-ativação por triggers e paths | |
skill_invoke.go | Invocação manual via /<skill-name> | |
cli_completer.go | Autocomplete contextual | |
pkg/persona/ | loader.go | GetSkill (resolução por preferência + qualified), ListSkills (dedup) |
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