🧰 Seis skills: três constroem, três usam
Toda skill do kit tem o mesmo formato: passos numerados, os comandos exatos e um "pronto quando" que é sempre um script com exit 0. Exit code é o número que um programa devolve ao terminar: 0 significa sucesso, qualquer outro valor significa falha. É assim que a skill sabe se terminou sem confiar na própria palavra.
| Skill | Fase | Pronto quando | No piloto |
|---|---|---|---|
| /nei-coletar | 1 Coleta | stats.py → exit 0 | 13 lives por legenda em 1,6 min |
| /nei-compilar | 2 Wiki | validar_links.py → exit 0 | 5 subagentes, 3,3 min, 73 páginas |
| /nei-regras | 3 Regras | validar_citacoes.py → exit 0 | 1,1 min, 8 regras, 31 citações |
| /nei-ensina | 4 Uso | validar_resposta.py → exit 0 | teste 1: 0,9 min + subagente |
| /nei-revisa | 4 Uso | validar_resposta.py --perfil revisao | teste 2: 1,8 min, 1 subagente |
| /nei-ingere | 5 Evolução | os três validadores → exit 0 | teste 3: 2,4 min |
As três linhas destacadas são o assunto deste módulo. As três de cima você já usou nas trilhas 2, 3 e 4; o tópico 5 volta a elas.
Mesmo formato
Passos + comandos
Pronto = exit 0
Nunca "acho que foi"
Só stdlib
Python sem instalar nada
Minutos
Não horas, no piloto
🧑🏫 /ensina: checklist por regra e validação de fora
A skill ensina não ensina nada sozinha. Ela é a coordenadora: passa sua dúvida ao mentor sem reescrever, salva o que ele devolve, roda o validador e monta um checklist de uma linha por regra ativa. Se algo falhar, devolve ao mentor uma vez para corrigir.
Como ler: repare que o validador (ciano) fica depois da resposta salva e fora do mentor. O checklist não é a opinião do mentor sobre si mesmo: cada ✓ aponta o trecho da resposta que o comprova. A volta tracejada tem limite de uma vez, para a correção não virar um laço.
Formato do checklist que a skill mostra (do SKILL.md):
R1 ✓ — construiu a menor versão (seção Menor versão) R3 ✗ — não previu antes de rodar
✓ O que a skill faz
- ✓Repassa a dúvida como veio; se estiver vaga, quem pergunta é o mentor
- ✓Salva a resposta antes de julgar
- ✓Cada ✓ aponta um trecho; cada ✗ diz o que faltou
✗ O que ela não aceita
- ✗Autoavaliação: "segui todas as regras"
- ✗Reescrever sua dúvida para ficar "mais fácil"
- ✗Insistir em correções sem limite
🔍 /revisa em 5 seções: Previsão → Reprodução → Correção → Lado a lado → Relatório
Revisar é outro perfil de resposta. Em vez de construir, o mentor recebe um arquivo "que funciona" e precisa responder: quem recebe isto aceitaria? A revisão tem cinco seções fixas, e a primeira é escrita lendo o código, sem rodar nada.
Como ler: as seções andam em pares. A Reprodução existe para confirmar ou desmentir a Previsão; o Lado a lado existe para provar que a Correção não mudou o que importa. A Previsão está em ciano pelo mesmo motivo do módulo 5.2: é a única com condição de tempo.
| Seção | O que aconteceu no teste 2 do piloto (script_emoji.py) |
|---|---|
| Previsão | Num terminal cp1252, o print com emoji quebra antes de gravar o relatório |
| Reprodução | PYTHONIOENCODING=cp1252 → UnicodeEncodeError, exit 1, sem relatorio.txt. Achou um 2º ponto que o Nei não tinha previsto: o 🤔 vem dentro dos dados, então tirar emoji do código não basta |
| Correção | sys.stdout.reconfigure(errors="replace"); na 1ª rodada enxugou de 38 para 25 linhas |
| Lado a lado | Mesma entrada nos dois; o relatório saiu igual (hash idêntico). Original intacto |
| Relatório | Passo → o que rodou → o que saiu → regra (R1, R3, R7, R8) |
🆕 Novo aqui? cp1252 e PYTHONIOENCODING
cp1252 é a codificação de texto antiga do Windows, que não tem emoji. PYTHONIOENCODING=cp1252 na frente do comando força o Python a escrever na tela como se estivesse num terminal desses. É o jeito de reproduzir, no seu Linux ou Mac, o erro que o usuário do Windows teria.
📏 Enxugar não é obrigatório: medir é
Numa rodada seguinte do mesmo teste, a correção acrescentou validação da entrada (arquivo vazio, objeto em vez de lista, item sem texto) e o arquivo foi de 38 para 41 linhas. A resposta disse isso com o número e explicou: a validação custa mais linhas do que o corte economiza. O que não pode é afirmar "ficou menor" sem contar.
📥 /ingere: o mentor aprende uma fonte nova
O especialista continua publicando. A skill ingere leva uma fonte nova pelo mesmo caminho das trilhas 2 a 4, mas só para ela: coleta, página de fonte, propagação na wiki e, se for o caso, promoção de regra. Não chama o subagente mentor.
Coletar com o coletor do tipo certo. Já está no manifesto? Para e avisa.
Página de fonte em wiki/fontes/<id>.md.
Propagar para todo tema, princípio ou método que o conteúdo toca, com links nos dois sentidos. Página nova só para conceito realmente novo.
Regras: 2ª fonte para uma banco → acrescenta citação e promove para ativa; reforço de ativa → acrescenta citação; comportamento novo → cria como banco.
Controle: atualiza index.md, hot.md e acrescenta uma linha no log.md.
Provar com os três validadores em cadeia, todos com exit 0, e dizer em 3–5 linhas o que o mentor aprendeu.
✓ Ingestão bem feita
- ✓Fonte já no manifesto → para e avisa
- ✓Página nova só para conceito realmente novo; o resto é atualização
- ✓Promove banco → ativa só com citação de um 2º arquivo diferente
✗ Ingestão que estraga a wiki
- ✗Coletar a mesma fonte duas vezes
- ✗Criar uma página por parágrafo, sem ligar às existentes
- ✗Promover regra para ativa com uma fonte só
📎 Teste 3 do piloto: um guia novo entrou
R9 e R10 nasceram como ativa porque a 2ª fonte já existia no raw. R1, R2 e R6 ganharam citação. O mentor passou de 8 regras e 31 citações para 10 regras e 40 citações.
🏗️ coletar, compilar, regras: as skills de construção, revisitadas
As três skills de construção já apareceram nas trilhas 2, 3 e 4, como fases. Aqui vale olhá-las como skills: arquivos que você pode ajustar. E vale saber o que o piloto mudou nelas para o kit 1.2, porque é o que você recebe ao gerar um mentor hoje.
coletar
Um subagente por fonte, em paralelo, cada um com o coletor do seu tipo. Nenhuma API paga sem autorização explícita.
Mudou no 1.2: manifesto com trava e escrita atômica; vídeo salvo com título + ID.
compilar
Raw só leitura; lotes por subagente; fontes, temas, princípios, métodos, index, hot e log.
Mudou no 1.2: legenda agrupada em parágrafos de cerca de 30 s, sem frase picada.
regras
De 5 a 9 regras, trecho copiado do raw, status ativa/banco/inferência.
Mudou no 1.2: acrescenta as seções das linhas "no mentor" a secoes_resposta.
💡 Dica prática: ajuste o SKILL.md, não o prompt da hora
Se toda vez você repete "e mostra a saída do stats.py", isso pertence ao SKILL.md. A skill é o lugar da instrução que se repete; o pedido do dia fica só com o que muda. Depois de editar, rode a skill uma vez e confira o "pronto quando".
⚠️ Não relaxe o validador para passar
A skill de regras diz com todas as letras: uma citação não encontrada se corrige copiando do raw de novo, nunca relaxando o validador. Vale para os três scripts. Se o "pronto quando" reprova, o trabalho está incompleto.
▶️ Rode as três e saiba onde cada resposta fica
Abra o Claude Code dentro da pasta do seu mentor (é lá que estão as skills e o portão) e rode as três, uma por sessão. Troque <slug> pelo slug que você usou no novo-mentor.py.
🧪 1. Ensinar
Objetivo: aprender algo pequeno e real do domínio que você ainda não domina, construindo.
/<slug>-ensina me ensina a fazer um hook Stop que não deixa o turno terminar enquanto o TODO.md tiver itens "- [ ]" abertos
Como verificar: a resposta fica em testes/respostas/<data>-<slug-da-dúvida>.md e o comando python3 tools/validar_resposta.py testes/respostas/<arquivo>.md --transcript <.jsonl> termina com exit 0. Critério humano: você entendeu algo que não sabia.
🧪 2. Revisar
Objetivo: revisar o script de aceitação que já vem no kit, que roda no seu terminal e quebra num terminal sem UTF-8.
/<slug>-revisa testes/aceitacao/script_emoji.py
Como verificar: existe testes/aceitacao/script_emoji.revisado.py, o original não mudou (git diff testes/aceitacao/script_emoji.py vazio), e python3 tools/validar_resposta.py testes/respostas/<data>-revisao-script_emoji.md --perfil revisao dá exit 0.
🧪 3. Ingerir
Objetivo: ensinar ao mentor uma fonte nova do especialista.
/<slug>-ingere <link novo do especialista> # depois, conferir por fora: python3 tools/stats.py && python3 tools/validar_links.py && python3 tools/validar_citacoes.py tail -1 wiki/log.md
Como verificar: os três validadores com exit 0, uma linha nova no fim do wiki/log.md e uma página nova em wiki/fontes/.
| O quê | Onde fica |
|---|---|
| Resposta de ensino | testes/respostas/<data>-<slug-da-dúvida>.md |
| Resposta de revisão | testes/respostas/<data>-revisao-<nome>.md |
| Arquivo corrigido | <nome>.revisado.<ext> (ao lado do original) |
| Temporários | .mentor/tmp/ (fora do git) |
| Fonte ingerida | raw/… + wiki/fontes/<id>.md + linha em wiki/log.md |
Checagem rápida: qual das três skills de uso não passa pelo subagente mentor?
📌 Resumo do Módulo
Próximo Módulo:
5.4 - Portão de execução: o hook que não deixa o turno terminar com código que ninguém rodou.