pr (mattpocock/skills)
Escreve o corpo de um pull request descrevendo a mudança para quem revisa.
pr: uma skill puramente de formato: o grupo de controle nunca produz o corpo de PR em três seções (1.7/5), enquanto a skill e um prompt de uma frase produzem (5.0 e 4.95), sem tokens extras
Codex CLI · gpt-6-astra
29.0 / 30
Ganho sobre sem skill: +3.33 · Recomendado · 18 execuções
Recomendado: o total 29.0/30 é pelo menos 22, a qualidade da saída 5.0 é pelo menos 3.5 e o ganho +3.33 é pelo menos +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
- 5.0
- Qualidade da saída
- 5.0
- Custo de tokens e tempo
- 5.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). Uma varredura limpa não prova que a skill é segura.
Instalar
npx skills@latest add mattpocock/skills --skill pr
Commit fixado: 4ae2317ddb22b046e26455e4f9c9b3aaaf62212d
Testado: 2026-11-02
O que testamos
- Corpo de PR para um cache — Estou abrindo um pull request. Escreva em PR.md o corpo do PR para a mudança em change.diff. A saída dos testes antes/depois está em tests_before.txt e tests_after.txt.
- Corpo de PR para remoção de coluna — Por favor, escreva o texto do meu pull request. Escreva em PR.md o corpo do PR para a mudança em change.diff. A saída dos testes antes/depois está em tests_before.txt e tests_after.txt.
- Corpo de PR para mudança de texto — Escreva uma descrição de PR. Escreva em PR.md o corpo do PR para a mudança em change.diff. A saída dos testes antes/depois está em tests_before.txt e tests_after.txt.
Prós
- Eleva a nota média de 1.67 para 5.0 em relação ao grupo sem skill (+3.33).
- A skill foi acionada sem ser nomeada: o arquivo da skill foi lido em 6/6 execuções de tratamento.
- Sem custo extra de tokens: 1.0x os tokens em relação ao grupo sem skill.
- Qualidade absoluta alta com a skill: 5.0 de 5.
Contras
- Um prompt de uma frase marcou 4.95, contra 5.0 com a skill (+0.05).
- 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 um PC de teste Windows dedicado, 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 com 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). Três tarefas, cada uma com o pedido 'escreva o corpo do PR para a mudança em change.diff, em PR.md' e tests_before.txt / tests_after.txt ao lado: uma mudança de cache (porta de mão dupla), uma migração que remove uma coluna (porta de mão única) e uma mudança de texto. O grupo de controle recebe apenas essa frase. O grupo com prompt de uma frase recebe uma frase extra que detalha o template inteiro. O grupo com a skill também não é informado do formato.
Comparação entre os braços
| Braço | Nota média (0-5) | Tokens por execução |
|---|---|---|
| Sem a skill | 1.67 | 82k |
| Prompt de uma frase | 4.95 | 89k |
| Com a skill | 5.0 | 82k |
Medido com Codex CLI em 18 execuções, com pontuação por verificações baseadas em regras e sem juiz LLM. Total 29.0 / 30, veredito Recomendado.
Veredito: Recomendado (29.0 / 30). Fonte: mattpocock/skills, skills/engineering/pr, fixada no commit 4ae2317. Instalação: npx skills@latest add mattpocock/skills --skill pr. Licença: MIT (LICENSE do repositório).
O que é
A skill pr (mattpocock/skills) transforma um diff em um corpo de pull request com um formato fixo de três partes: Resumo (o menor diagrama útil, pseudocódigo ou árvore de chamadas), Evidências (Antes: / Depois: com a saída dos testes) e Perigo na Mesclagem (Porta: de mão única ou de mão dupla, mais um Raio de Impacto: de uma palavra), escritos com as palavras do glossário do projeto. Um único SKILL.md curto.
Como testamos
Codex CLI 0.166 (gpt-6-astra, raciocínio baixo) em um PC Windows dedicado a testes, um projeto temporário novo e HOME/TMPDIR/caches temporários a cada execução, skill instalada (tratamento) ou 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 desligada, gravações em /tmp bloqueadas. Os prompts nunca mencionam a skill (exceto pelo texto indicado abaixo).
Três tarefas, cada uma 'escreva o corpo do PR para change.diff em PR.md' com tests_before.txt / tests_after.txt ao lado: uma mudança de cache (porta de mão dupla), uma migração que remove uma coluna (porta de mão única) e uma mudança de copy. O controle recebe apenas essa frase. O grupo de uma frase recebe uma frase adicional que detalha o template inteiro. O grupo com a skill também não é informado do formato.
- Corpo de PR para um cache — Vou abrir um pull request. Escreva o corpo do PR para a mudança em change.diff em PR.md. A saída dos testes antes/depois está em tests_before.txt e tests_after.txt.
- Corpo de PR para remoção de coluna — Por favor, escreva meu pull request. Escreva o corpo do PR para a mudança em change.diff em PR.md. A saída dos testes antes/depois está em tests_before.txt e tests_after.txt.
- Corpo de PR para uma mudança de copy — Escreva uma descrição de PR. Escreva o corpo do PR para a mudança em change.diff em PR.md. A saída dos testes antes/depois está em tests_before.txt e tests_after.txt.
A pontuação é programática (testes ocultos / detecção de problemas plantados / verificações de restrições / renderização+OCR quando aplicável), 0–5 por execução. Nenhum juiz LLM decidiu qualquer pontuação.
Resultados
O prompt de uma frase dado ao terceiro grupo: "Escreva o corpo do PR em três seções curtas: Resumo (o menor diagrama útil, pseudocódigo ou árvore de chamadas, sem preâmbulo), Evidências (Antes: e Depois: com a saída dos testes) e Perigo na Mesclagem (Porta: de mão única ou de mão dupla, e um Raio de Impacto: de uma palavra); use as palavras do glossário."
| Tarefa | Pontuação do controle | Uma frase | Com a skill | Tokens do controle | Tokens de uma frase | Tokens com a skill | Skill lida |
|---|---|---|---|---|---|---|---|
| t1-cache | 1.67 | 5.0 | 5.0 | 82k | 83k | 79k | 2/2 |
| t2-migration | 1.67 | 4.83 | 5.0 | 82k | 91k | 79k | 2/2 |
| t3-copy | 1.67 | 5.0 | 5.0 | 81k | 91k | 87k | 2/2 |
Pontuação média: 1.67 sem a skill vs 5.0 com ela (delta +3.33). Tokens por execução: 82k vs 82k (1.00x); tempo 37s vs 34s. Grupo de uma frase: 4.95 (ganho da skill sobre o prompt de uma frase: +0.05; ganho do próprio prompt de uma frase sobre nenhuma skill: +3.28); tokens do prompt de uma frase: 89k por execução, então a skill custa 0.92x o prompt de uma frase.
O que aconteceu
- Controle 1.67, uma frase 4.95, skill 5.00 (n=6 cada). O controle escreveu PRs em prosa claros e precisos, mas em nenhuma das 6 execuções usou as três seções, um diagrama ou bloco de pseudocódigo, os rótulos Antes/Depois, uma Porta ou um Raio de Impacto. É um formato que o modelo não consegue adivinhar, então qualquer grupo informado do formato pontua alto; o conjunto de verificações mede conformidade de formato, não qualidade de escrita.
- A skill foi acionada sem ser nomeada (6/6 leituras) e o prompt de uma frase carrega a mesma informação: a diferença entre eles é de 0.05 pontos (uma execução perdeu uma regex de seção do template: a execução da migração no grupo de uma frase teve 2 de 3 seções encontradas). Tokens por execução: 82k controle, 89k uma frase, 82k skill: sem overhead.
- O conteúdo de julgamento parece certo onde importa: na migração, a execução com a skill classificou a porta como de mão única e disse que reverter o código não traz de volta a coluna removida, e nomeou o raio de impacto; as tarefas de cache e de copy eram de mão dupla. O PR de migração do controle também avisava para aplicar 0041 primeiro, mas não dava porta nem raio, então um revisor não encontraria isso passando os olhos.
- A skill é minúscula (algumas linhas), então carregá-la não custa nada; o valor dela é que ninguém precisa colar o template toda vez.
Pontuações por dimensão
| Dimensão | Pontuação | Por quê |
|---|---|---|
| 1_output_quality | 5.0 | Pontuação média 5.00/5 com a skill (verificações programáticas, veja a tabela por tarefa). |
| 2_lift_vs_no_skill | 5 | +3.33 pontos vs 1.67 sem a skill (n=2 por tarefa; menos 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 | Um SKILL.md curto com um template, sem scripts. |
| 5_efficiency | 5 | 1.00x tokens (82k vs 82k por execução) e 0.93x tempo (34s vs 37s). |
| 6_safety_hygiene | 5 | Somente prosa; nenhum achado. |
Limites deste teste
- Apenas verificações de formato baseadas em regras (seções presentes, Antes/Depois, valor da Porta correto, Raio de Impacto, bloco de diagrama/pseudocódigo); não julgam se o diagrama é o 'menor útil' nem se a escrita é boa.
- O grupo de controle está fadado a falhar nas verificações de formato por construção: o resultado mostra que a skill elimina a necessidade de repetir um formato interno, não que ela faz o modelo escrever PRs melhores.
- Três fixtures pequenos; nenhum repositório real nem histórico do git.
- 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 julga bom gosto nem se o resultado é o melhor possível.
Segurança
Veja security.md. Scan: 0 CRITICAL / 0 HIGH / 0 MEDIUM. Veredito: seguro para executar (sandbox sem rede). Um scan limpo não prova que uma skill é segura.
Conclusão
Se você quer este formato de PR, a skill o entrega de primeira e de graça (82k tokens, o mesmo que sem skill), e equivale a colar o template como prompt de uma frase. Instale para consistência no time; não espere uma prosa melhor.
Transcrição
Log de execuções: pr (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-cache control-1: nota 1.67, tokens 82698, s 35.7, verificações 4/9, nada aberto t1-cache control-2: nota 1.67, tokens 82765, s 30.9, verificações 4/9, nada aberto t1-cache oneliner-1: nota 5.0, tokens 83654, s 32.5, verificações 9/9, nada aberto t1-cache oneliner-2: nota 5.0, tokens 84007, s 38.4, verificações 9/9, nada aberto t1-cache treatment-1: nota 5.0, tokens 70378, s 33.8, verificações 9/9, abriu pr t1-cache treatment-2: nota 5.0, tokens 88915, s 35.0, verificações 9/9, abriu pr t2-migration control-1: nota 1.67, tokens 81748, s 33.8, verificações 4/9, nada aberto t2-migration control-2: nota 1.67, tokens 82290, s 36.5, verificações 4/9, nada aberto t2-migration oneliner-1: nota 5.0, tokens 100647, s 37.7, verificações 9/9, nada aberto
18 execuções, 3 artefatos
Resultado de exemplo
SOTA · With the skill: PR.md (t1-cache, run 1, Codex)
## Summary Cache free slots by Room and day to avoid repeated database queries. Creating a Reservation invalidates the matching cache entry. ```text free_slots(Room, day) cache hit → return cached free slots cache miss → query Reservations → compute and cache free slots create Reservation insert Reservation → invalidate cache for Room and day ``` ## Evidence - **Before:** `tests/test_availability.py::test_free_slots_not_queried_twice` failed: `db.query called 2 times, expected 1`. Suite: 1 failed, 14 passed in 0.9s. **After:** Supplied test output reports 15 passed in 0.8s. ## Merge Danger **Door:** two-way Reverting restores a database query on each availability request; no schema or stored-data changes. **Blast Radius:** availability Cached free slots affect Members checking Room availability. Invalidation covers Reservation creation in the current process; other mutation paths or processes can leave cached results stale. The cache has no size limit or expiry.