pr (mattpocock/skills)
Redacta el cuerpo de una pull request que describe el cambio para quien lo revisa.
pr: una skill de formato puro: el control nunca genera el cuerpo de PR de tres secciones (1.7/5), mientras que la skill y un prompt de una frase sí (5.0 y 4.95), sin tokens adicionales
Codex CLI · gpt-6-astra
29.0 / 30
Mejora frente a sin skill: +3.33 · Recomendada · 18 ejecuciones
Recomendada: el total 29.0/30 es al menos 22, la calidad de salida 5.0 es al menos 3.5 y la mejora +3.33 es al menos +1.0.
SOTA
AprobadaProbada con Codex.
Cubre Codex, Claude Code
Codex CLI 0.166 (nivel SOTA): 18 ejecuciones puntuadas. Una pasada aquí también cubre Claude Code según nuestra regla de niveles; no dice nada sobre el segundo nivel.
Puntuaciones
Cada dimensión va de 0 a 5 y las seis suman el total sobre 30. 5 es mejor en todas las dimensiones. Coste 5 significa barato y rápido. Instalación 5 significa fácil.
- Fiabilidad de activación
- 5.0
- Mejora frente a sin skill
- 5.0
- Calidad de salida
- 5.0
- Coste en tokens y tiempo
- 5.0
- Instalación y portabilidad
- 4.0
- Seguridad
- 5.0
Revisión de seguridad
SeguraEscaneo estático: 0 CRITICAL / 0 HIGH / 0 MEDIUM. Revisión manual: Segura de ejecutar en un sandbox sin red (sin hallazgos). Un escaneo limpio no demuestra que una skill sea segura.
Instalar
npx skills@latest add mattpocock/skills --skill pr
Commit fijado: 4ae2317ddb22b046e26455e4f9c9b3aaaf62212d
Probada: 2026-11-02
Qué probamos
- Cuerpo de PR para una caché — Voy a abrir una pull request. Escribe el cuerpo de la PR del cambio de change.diff en PR.md. La salida de los tests de antes y después está en tests_before.txt y tests_after.txt.
- Cuerpo de PR para eliminar una columna — Redacta mi pull request, por favor. Escribe el cuerpo de la PR del cambio de change.diff en PR.md. La salida de los tests de antes y después está en tests_before.txt y tests_after.txt.
- Cuerpo de PR para un cambio de texto — Escribe una descripción de PR. Escribe el cuerpo de la PR del cambio de change.diff en PR.md. La salida de los tests de antes y después está en tests_before.txt y tests_after.txt.
Ventajas
- Eleva la puntuación media de 1.67 a 5.0 frente a sin skill (+3.33).
- La skill se activó sin nombrarla: se leyó el archivo de la skill en 6/6 ejecuciones con skill.
- Sin sobrecoste de tokens: 1.0x los tokens de sin skill.
- Calidad absoluta alta con la skill: 5.0 sobre 5.
Inconvenientes
- Un prompt de una frase obtuvo 4.95, frente a 5.0 con la skill (+0.05).
- n=2 por tarea y rama; las diferencias de menos de aproximadamente 1 punto son ruido.
Reseña
Codex CLI 0.166 (gpt-6-astra, razonamiento bajo) en un PC Windows de prueba dedicado, con un proyecto temporal nuevo y HOME/TMPDIR/cachés temporales en cada ejecución, la skill instalada (grupo con skill), sin ella (control) o sin ella pero con el requisito central de la skill comprimido en una frase añadida al prompt (grupo del prompt de una frase), 2 ejecuciones por grupo y tarea, red desactivada y escrituras en /tmp bloqueadas. Los prompts nunca mencionan la skill (salvo la formulación indicada más abajo). Tres tareas, cada una con la petición «escribe el cuerpo de la PR del cambio de change.diff en PR.md», con tests_before.txt / tests_after.txt junto a él: un cambio de caché (puerta de doble sentido), una migración que elimina una columna (puerta de un solo sentido) y un cambio de texto. El control solo recibe esa frase. El grupo del prompt de una frase recibe una frase adicional que detalla toda la plantilla. Al grupo con skill tampoco se le indica el formato.
Comparación de tres ramas
| Rama | Puntuación media (0-5) | Tokens por ejecución |
|---|---|---|
| Sin la skill | 1.67 | 82k |
| Prompt de una frase | 4.95 | 89k |
| Con la skill | 5.0 | 82k |
Medido con Codex CLI en 18 ejecuciones, puntuado con comprobaciones basadas en reglas y sin juez LLM. Total 29.0 / 30, veredicto Recomendada.
Veredicto: Recomendado (29.0 / 30). Fuente: mattpocock/skills, skills/engineering/pr, fijada en el commit 4ae2317. Instalación: npx skills@latest add mattpocock/skills --skill pr. Licencia: MIT (LICENSE del repositorio).
Qué es
La skill pr (mattpocock/skills): convierte un diff en el cuerpo de una pull request con una forma fija de tres partes: Resumen (el diagrama, pseudocódigo o árbol de llamadas útil más pequeño), Evidencia (Antes: / Después: con la salida de las pruebas) y Peligro de fusión (Puerta: de sentido único o de doble sentido, más un Radio de impacto: de una sola palabra), escrito con las palabras del glosario del proyecto. Un único SKILL.md breve.
Cómo lo probamos
Codex CLI 0.166 (gpt-6-astra, razonamiento bajo) en un PC de pruebas Windows dedicado, un proyecto temporal nuevo y HOME/TMPDIR/cachés temporales por ejecución, skill instalada (tratamiento) o ausente (control) o ausente con el requisito central de la skill comprimido en una frase añadida al final del prompt (grupo de una frase), 2 ejecuciones por grupo y tarea, red desactivada, escrituras en /tmp bloqueadas. Los prompts nunca mencionan la skill (salvo la formulación indicada abajo).
Tres tareas, todas «escribe el cuerpo de la PR para change.diff en PR.md» con tests_before.txt / tests_after.txt al lado: un cambio de caché (puerta de doble sentido), una migración que elimina una columna (puerta de sentido único) y un cambio de texto. El control solo recibe esa frase. El grupo de una frase recibe una frase añadida que detalla toda la plantilla. Al grupo de la skill tampoco se le indica el formato.
- Cuerpo de PR para una caché — Voy a abrir una pull request. Escribe el cuerpo de la PR para el cambio en change.diff en PR.md. La salida de las pruebas de antes y después está en tests_before.txt y tests_after.txt.
- Cuerpo de PR para eliminar una columna — Escribe mi pull request. Redacta el cuerpo de la PR para el cambio en change.diff en PR.md. La salida de las pruebas de antes y después está en tests_before.txt y tests_after.txt.
- Cuerpo de PR para un cambio de texto — Escribe una descripción de PR. Redacta el cuerpo de la PR para el cambio en change.diff en PR.md. La salida de las pruebas de antes y después está en tests_before.txt y tests_after.txt.
La puntuación es programática (pruebas ocultas / detección de problemas sembrados / comprobaciones de restricciones / renderizado+OCR cuando corresponde), 0–5 por ejecución. Ningún juez LLM decidió ninguna puntuación.
Resultados
La frase única que recibió el tercer grupo: "Escribe el cuerpo de la PR en tres secciones breves: Resumen (el diagrama, pseudocódigo o árbol de llamadas útil más pequeño, sin preámbulo), Evidencia (Antes: y Después: con la salida de las pruebas) y Peligro de fusión (Puerta: de sentido único o de doble sentido, y un Radio de impacto: de una sola palabra); usa las palabras del glosario."
| Tarea | Puntuación del control | Frase única | Con la skill | Tokens del control | Tokens de una frase | Tokens con la skill | Skill leída |
|---|---|---|---|---|---|---|---|
| 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 |
Puntuación media: 1.67 sin vs 5.0 con la skill (delta +3.33). Tokens por ejecución: 82k vs 82k (1.00x); tiempo 37s vs 34s. Grupo de una frase: 4.95 (ganancia de la skill sobre la frase única: +0.05; ganancia de la frase única sobre sin skill: +3.28); tokens de la frase única 89k por ejecución, así que la skill cuesta 0.92x la frase única.
Qué ocurrió
- Control 1.67, una frase 4.95, skill 5.00 (n=6 cada uno). El control escribió PR en prosa claras y precisas, pero en ninguna de las 6 ejecuciones usó las tres secciones, un diagrama o bloque de pseudocódigo, las etiquetas Antes/Después, una Puerta o un Radio de impacto. Es un formato que el modelo no puede adivinar, así que cualquier grupo al que se le indique el formato puntúa alto; el conjunto de comprobaciones mide el cumplimiento del formato, no la calidad de la escritura.
- La skill se activó sin ser nombrada (6/6 lecturas) y el prompt de una frase lleva la misma información: la diferencia entre ambos es de 0.05 puntos (una ejecución no acertó la expresión regular de una sección de la plantilla: la ejecución de migración de una frase tuvo 2 de 3 secciones coincidentes). Los tokens por ejecución fueron 82k control, 89k una frase, 82k skill: sin sobrecoste.
- El contenido de juicio parece correcto donde importa: en la migración, la ejecución de la skill calificó la puerta de sentido único y dijo que revertir el código no puede recuperar la columna eliminada, y nombró el radio de impacto; las tareas de caché y texto eran de doble sentido. La PR de migración del control también avisaba de aplicar 0041 primero, pero no daba puerta ni radio, así que un revisor no lo encontraría a simple vista.
- La skill es mínima (unas pocas líneas), así que cargarla no cuesta nada; su valor es que nadie tiene que pegar la plantilla cada vez.
Puntuaciones por dimensión
| Dimensión | Puntuación | Motivo |
|---|---|---|
| 1. Calidad del resultado | 5.0 | Puntuación media 5.00/5 con la skill (comprobaciones programáticas; consulta la tabla por tarea). |
| 2. Mejora frente a no usar skill | 5 | +3.33 puntos frente a 1.67 sin la skill (n=2 por tarea; menos de ~1 punto es ruido). |
| 3. Activación | 5.0 | Archivo de la skill leído en 6/6 ejecuciones de tratamiento. |
| 4. Portabilidad de las instrucciones | 4 | Un SKILL.md breve con una plantilla, sin scripts. |
| 5. Eficiencia | 5 | 1.00x tokens (82k vs 82k por ejecución) y 0.93x tiempo (34s vs 37s). |
| 6. Seguridad e higiene | 5 | Solo prosa; sin hallazgos. |
Límites de esta prueba
- Solo comprobaciones de formato basadas en reglas (secciones presentes, Antes/Después, valor de Puerta correcto, Radio de impacto, bloque de diagrama/pseudocódigo); no juzgan si el diagrama es el «útil más pequeño» ni si la escritura es buena.
- El grupo de control está condenado a fallar las comprobaciones de formato por construcción: el resultado muestra que la skill elimina la necesidad de repetir un formato interno, no que haga escribir mejores PR al modelo.
- Tres fixtures pequeños; ningún repositorio real ni historial de git.
- n = 2 por grupo y tarea: las diferencias de menos de 1 punto son ruido.
- La puntuación basada en reglas mide lo que las comprobaciones pueden ver; no puede juzgar el gusto ni si un resultado es el mejor posible.
Seguridad
Consulta security.md. Escaneo: 0 CRITICAL / 0 HIGH / 0 MEDIUM. Veredicto: seguro para ejecutar (sandbox sin red). Un escaneo limpio no demuestra que una skill sea segura.
En resumen
Si quieres este formato de PR, la skill lo entrega a la primera y gratis (82k tokens, lo mismo que sin skill), y equivale a pegar la plantilla como frase única. Instálala para tener consistencia en todo el equipo; no esperes mejor prosa.
Transcripción
Registro de ejecuciones: pr (Codex CLI, network off, per-run temp HOME/TMPDIR, one row per graded run.) Columnas: tarea, grupo-ejecución, puntuación (0-5), tokens, segundos, comprobaciones superadas, archivos de la skill que abrió el agente. t1-cache control-1: puntuación 1.67, tokens 82698, s 35.7, comprobaciones 4/9, no abrió nada t1-cache control-2: puntuación 1.67, tokens 82765, s 30.9, comprobaciones 4/9, no abrió nada t1-cache oneliner-1: puntuación 5.0, tokens 83654, s 32.5, comprobaciones 9/9, no abrió nada t1-cache oneliner-2: puntuación 5.0, tokens 84007, s 38.4, comprobaciones 9/9, no abrió nada t1-cache treatment-1: puntuación 5.0, tokens 70378, s 33.8, comprobaciones 9/9, abrió pr t1-cache treatment-2: puntuación 5.0, tokens 88915, s 35.0, comprobaciones 9/9, abrió pr t2-migration control-1: puntuación 1.67, tokens 81748, s 33.8, comprobaciones 4/9, no abrió nada t2-migration control-2: puntuación 1.67, tokens 82290, s 36.5, comprobaciones 4/9, no abrió nada t2-migration oneliner-1: puntuación 5.0, tokens 100647, s 37.7, comprobaciones 9/9, no abrió nada
18 ejecuciones, 3 artefactos
Resultado de ejemplo
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.