caveman (JuliusBrussee/caveman, SKILL.md only)
Responde em estilo de homem das cavernas, sem enrolação e mantendo todos os fatos técnicos.
caveman: com 'seja breve' já no prompt, a skill não economizou palavras e custou 2.2x os tokens
Codex CLI · gpt-6-astra
21.7 / 30
Ganho sobre sem skill: +0.00 · Situacional · 18 execuções
Situacional: o total 21.7/30 está abaixo de 22 e o ganho +0.00 está abaixo de +1.0. Para ser recomendado, é preciso total de 22/30, qualidade da saída de 3.5 e ganho de +1.0.
SOTA
AprovadoTestado com Codex.
Cobre Codex, Claude Code
Codex CLI 0.166 (nível SOTA): 18 execuções avaliadas. Uma aprovação aqui também vale para o Claude Code pela nossa regra de níveis; ela não diz nada sobre o segundo nível.
Notas
Cada dimensão vai de 0 a 5, e as seis somam o total de 30. 5 é melhor em todas as dimensões. Custo 5 significa barato e rápido. Instalação 5 significa fácil.
- Confiabilidade do acionamento
- 5.0
- Ganho sobre sem skill
- 2.0
- Qualidade da saída
- 4.7
- Custo de tokens e tempo
- 1.0
- Instalação e portabilidade
- 4.0
- Segurança
- 5.0
Revisão de segurança
SeguroVarredura estática: 0 CRÍTICO / 0 ALTO / 0 MÉDIO. Revisão manual: seguro para executar em sandbox sem rede (nenhum achado; apenas o SKILL.md instalado). Uma varredura limpa não prova que a skill é segura.
Instalar
npx skills@latest add JuliusBrussee/caveman --skill caveman
Commit fixado: 9b68f7ed12b05e7efaff18e65c5a3fc2849fd0a4
Testado: 2026-11-02
O que testamos
- Explique um loop infinito de useEffect — Em um componente React eu tenho const fetchData = async () => { const r = await fetch('/api/items'); setItems(await r.json()); } e useEffect(() => { fetchData(); }, [fetchData]);. O componente busca os dados de novo em um loop sem fim. Por quê, e qual é a correção? Seja breve…
- Corrigir uma consulta Postgres lenta — Postgres: SELECT id, total FROM orders WHERE customer_id = 42 ORDER BY created_at DESC LIMIT 20; leva segundos em uma tabela orders de 50M linhas que só tem um índice de chave primária. O que devo fazer? Seja breve; estou pagando por token.
- Merge ou rebase em um branch compartilhado — Meu time trabalha em um branch de feature compartilhado que outras pessoas já puxaram. Quero trazer o main mais recente. Devo usar git merge ou git rebase, e por quê? Seja breve; estou pagando por token.
Prós
- A skill foi acionada sem ser nomeada: o arquivo da skill foi lido em 6/6 execuções de tratamento.
- Qualidade absoluta alta com a skill: 4.67 de 5.
Contras
- Nenhum ganho mensurável em relação ao grupo sem skill (+0.00, dentro do ruído).
- Usa 2.2x os tokens do grupo sem skill.
- Ressalva do teste: só o SKILL.md foi instalado; os hooks e o instalador não. O prompt de teste contém um gatilho de 'seja breve'.
- n=2 por tarefa por braço; diferenças abaixo de cerca de 1 ponto são ruído.
Avaliação
Codex CLI 0.166 (gpt-6-astra, raciocínio baixo) em uma máquina de teste Mac, com um projeto temporário novo e HOME/TMPDIR/caches temporários a cada execução, skill instalada (tratamento), ausente (grupo de controle) ou ausente com o requisito central da skill comprimido em uma frase anexada ao prompt (grupo do prompt de uma frase), 2 execuções por grupo por tarefa, rede desligada, gravações em /tmp bloqueadas. Os prompts nunca mencionam a skill (exceto pelo texto indicado abaixo). Cada prompt é uma pergunta técnica (um loop infinito de useEffect, uma consulta Postgres lenta, merge vs rebase em um branch compartilhado) terminando com 'Seja breve; estou pagando por token.' Essa frase é um dos gatilhos da própria skill, e o grupo de controle recebe a mesma frase. Ou seja, o teste pergunta o que a skill acrescenta além de um pedido simples para ser breve.
Comparação entre os braços
| Braço | Nota média (0-5) | Tokens por execução |
|---|---|---|
| Sem a skill | 4.67 | 14k |
| Prompt de uma frase | 4.5 | 14k |
| Com a skill | 4.67 | 31k |
Medido com Codex CLI em 18 execuções, com pontuação por verificações baseadas em regras e sem juiz LLM. Total 21.7 / 30, veredito Situacional.
Divulgação: Apenas o SKILL.md foi instalado; os hooks e o instalador não. O prompt de teste contém um gatilho 'seja breve'.
Veredito: Situacional (21.7 / 30). Fonte: JuliusBrussee/caveman, skills/caveman, fixada no commit 9b68f7e. Instalação: npx skills@latest add JuliusBrussee/caveman --skill caveman. Licença: MIT (LICENSE do repositório; os hooks e o instalador do repositório NÃO foram instalados nem executados).
O que é
A skill caveman (apenas skills/caveman/SKILL.md; os hooks e o instalador do repositório não foram instalados). Um estilo de resposta curto e direto: responda primeiro, elimine saudações e recapitulações, use palavras curtas, omita artigos mas nunca negações, mantenha código, caminhos, números e erros exatamente como estão, prosa clara para avisos e ações irreversíveis. Ela é acionada por 'caveman mode', 'be brief', 'less tokens'. Cerca de 600 palavras de Markdown, sem scripts.
Como testamos
Codex CLI 0.166 (gpt-6-astra, raciocínio baixo) em um Mac de teste, um projeto temporário novo e HOME/TMPDIR/caches temporários a cada execução, skill instalada (grupo com skill), ausente (controle) ou ausente com o requisito central da skill comprimido em uma frase anexada ao prompt (grupo de uma frase), 2 execuções por grupo por tarefa, rede desativada, gravações em /tmp bloqueadas. Os prompts nunca mencionam a skill (exceto pela formulação indicada abaixo).
Cada prompt é uma pergunta técnica (um loop infinito de useEffect, uma consulta Postgres lenta, merge vs rebase em um branch compartilhado) terminando em 'Be brief; I'm paying per token.' Essa frase é um dos próprios gatilhos da skill, e o grupo de controle recebe a mesma sentença. Assim, o teste pergunta o que a skill acrescenta a um pedido simples para ser breve.
- Explicar um loop infinito de useEffect — Em um componente React eu tenho
const fetchData = async () => { const r = await fetch('/api/items'); setItems(await r.json()); }euseEffect(() => { fetchData(); }, [fetchData]);. O componente busca novamente em um loop sem fim. Por quê, e qual é a correção? Be brie… - Corrigir uma consulta Postgres lenta — Postgres:
SELECT id, total FROM orders WHERE customer_id = 42 ORDER BY created_at DESC LIMIT 20;leva segundos em uma tabela orders de 50M de linhas que só tem um índice de chave primária. O que devo fazer? Be brief; I'm paying per token. - Merge ou rebase em um branch compartilhado — Meu time trabalha em um branch de feature compartilhado que outras pessoas já puxaram. Quero trazer o main mais recente. Devo usar git merge ou git rebase, e por quê? Be brief; I'm paying per token.
A pontuação é programática (testes ocultos / detecção de problemas plantados / verificações de restrições / renderização+OCR quando aplicável), de 0 a 5 por execução. Nenhum juiz LLM decidiu qualquer nota.
Resultados
A frase única dada ao terceiro grupo: "Responda de forma telegráfica: responda primeiro, sem saudação, enrolação, hesitação ou recapitulação, corte artigos desnecessários, mantenha cada fato técnico, código, número e negação exatos."
| Tarefa | Nota do controle | Uma frase | Com a skill | Tokens do controle | Tokens da frase | Tokens com a skill | Skill lida |
|---|---|---|---|---|---|---|---|
| t1-react-loop | 4.75 | 4.5 | 4.5 | 14k | 14k | 30k | 2/2 |
| t2-pg-index | 5.0 | 5.0 | 5.0 | 14k | 14k | 34k | 2/2 |
| t3-merge-rebase | 4.25 | 4.0 | 4.5 | 14k | 14k | 30k | 2/2 |
Nota média: 4.67 sem vs 4.67 com a skill (delta +0.0). Tokens por execução: 14k vs 31k (2.20x); tempo 12s vs 19s. Grupo de uma frase: 4.5 (ganho da skill sobre a frase: +0.17; ganho da própria frase sobre sem skill: -0.17); tokens da frase: 14k por execução, então a skill custa 2.20x a frase.
O que aconteceu
- Sem a skill, o agente já responde em cerca de 59 palavras (45-70) quando pedimos brevidade; com a skill, 52 palavras (39-64), e com a versão de uma frase, 54. A diferença de 7 palavras está dentro da variação entre execuções. Nenhum grupo usou aberturas ou fechamentos de enrolação; todas as 18 respostas mantiveram o código, os comandos e os fatos principais.
- A retenção de fatos foi a mesma: 3-5 dos 5 fatos técnicos exigidos por resposta em todos os grupos (proporção de fatos exigidos mantidos: 87% controle, 80% frase, 87% skill). O fato que os agentes mais omitiram (que uma atualização de estado re-renderiza o componente e executa o efeito de novo) foi omitido igualmente pelos três grupos. O ponto 'não faça rebase de um branch compartilhado' foi identificado pela nossa verificação em 1 de 2 respostas do controle, 0 de 2 da frase e 1 de 2 da skill; nas respostas que lemos, todas recomendavam merge e reservavam o rebase para trabalho privado ou não publicado, então essas falhas são em parte de redação.
- A skill foi lida em 6/6 execuções porque o prompt contém a frase-gatilho. Custa 31k tokens por execução contra 14k (2.2x), porque o agente carrega a skill e roda dois comandos para lê-la antes de responder a uma pergunta que poderia responder direto. A frase única custa o mesmo que o controle.
- Lendo as respostas, os estilos são iguais: resposta primeiro, fragmentos, um bloco de código curto. Não conseguimos distinguir as respostas com a skill das do controle.
Notas por dimensão
| Dimensão | Nota | Por quê |
|---|---|---|
| 1_output_quality | 4.67 | Nota média 4.67/5 com a skill (verificações programáticas, veja a tabela por tarefa). |
| 2_lift_vs_no_skill | 2.0 | +0.00 pontos vs 4.67 sem a skill (n=2 por tarefa; abaixo de ~1 ponto é ruído). |
| 3_trigger | 5.0 | Arquivo da skill lido em 6/6 execuções com a skill. |
| 4_instructions_portability | 4 | Regras em Markdown simples; algumas se referem a hooks e a uma
statusline ( |
| 5_efficiency | 1 | 2.20x tokens (31k vs 14k por execução) e 1.53x tempo (19s vs 12s). |
| 6_safety_hygiene | 5 | Um único SKILL.md de regras de estilo (lido por completo); os hooks/instalador do repositório não foram instalados nem revisados. |
Limitações deste teste
- O teste mede a skill partindo de um pedido explícito de brevidade. O uso real da skill é persistente: ela fica ativa a sessão inteira, então você nunca precisa repetir o pedido, algo que este teste de três perguntas não exercita.
- O custo em tokens contado aqui é o carregamento único da skill por conversa; ao longo de uma sessão longa, com algumas palavras economizadas por resposta, ela poderia se pagar; não medimos isso.
- Só foram verificadas respostas de chat a três perguntas técnicas; mensagens de commit, comentários de revisão de código e sessões longas de agente (onde a skill tem outras regras) não foram testados.
- Os hooks, a statusline e as outras skills caveman do repositório não foram instalados nem executados.
- n = 2 por grupo por tarefa: diferenças abaixo de cerca de 1 ponto são ruído.
- A pontuação baseada em regras mede o que as verificações conseguem ver; não avalia gosto nem se o resultado é o melhor possível.
Segurança
Veja security.md. Varredura: 0 CRITICAL / 0 HIGH / 0 MEDIUM. Veredito: seguro para executar (sandbox sem rede). Uma varredura limpa não prova que a skill é segura.
Conclusão
Partindo de um pedido simples de brevidade, a caveman não deixou as respostas mais curtas ou menos precisas de forma mensurável, e carregá-la dobrou os tokens de uma resposta curta. Se você quer seu agente curto e direto a sessão inteira sem pedir toda vez, a skill faz isso; se você só precisa de brevidade em uma pergunta, diga isso no prompt.
Transcrição
Log de execuções: caveman (Codex CLI, network off, per-run temp HOME/TMPDIR, one row per graded run.) Colunas: tarefa, grupo-execução, nota (0-5), tokens, segundos, verificações aprovadas, arquivos da skill abertos pelo agente. t1-react-loop control-1: nota 5.0, tokens 14312, s 16.3, verificações 3/3, nada aberto t1-react-loop control-2: nota 4.5, tokens 14318, s 10.7, verificações 3/3, nada aberto t1-react-loop oneliner-1: nota 4.5, tokens 14348, s 16.9, verificações 3/3, nada aberto t1-react-loop oneliner-2: nota 4.5, tokens 14341, s 8.7, verificações 3/3, nada aberto t1-react-loop treatment-1: nota 4.5, tokens 30174, s 21.5, verificações 3/3, abriu caveman t1-react-loop treatment-2: nota 4.5, tokens 30067, s 26.2, verificações 3/3, abriu caveman t2-pg-index control-1: nota 5.0, tokens 14285, s 10.0, verificações 3/3, nada aberto t2-pg-index control-2: nota 5.0, tokens 14301, s 10.5, verificações 3/3, nada aberto t2-pg-index oneliner-1: nota 5.0, tokens 14362, s 12.3, verificações 3/3, nada aberto
18 execuções, 3 artefatos
Resultado de exemplo
SOTA · With the skill: final message (t1-react-loop, run 1, Codex)
`fetchData` is a new function every render. The effect runs, `setItems` triggers another render, and the cycle repeats. Move the function inside the effect: ```jsx useEffect(() => { async function fetchData() { const r = await fetch('/api/items'); setItems(await r.json()); } fetchData(); }, []); ``` If needed elsewhere, stabilize `fetchData` with `useCallback` and its actual dependencies.