caveman (JuliusBrussee/caveman, SKILL.md only)
Responde con estilo de cavernícola, sin relleno pero conservando todos los datos técnicos.
caveman: con «be brief» ya en el prompt, la skill no ahorró palabras y costó 2.2 veces los tokens
Codex CLI · gpt-6-astra
21.7 / 30
Mejora frente a sin skill: +0.00 · Según el caso · 18 ejecuciones
Según el caso: el total 21.7/30 está por debajo de 22 y la mejora +0.00 está por debajo de +1.0. Para ser recomendada hace falta un total de 22/30, una calidad de salida de 3.5 y una mejora de +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
- 2.0
- Calidad de salida
- 4.7
- Coste en tokens y tiempo
- 1.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; solo se instaló SKILL.md). Un escaneo limpio no demuestra que una skill sea segura.
Instalar
npx skills@latest add JuliusBrussee/caveman --skill caveman
Commit fijado: 9b68f7ed12b05e7efaff18e65c5a3fc2849fd0a4
Probada: 2026-11-02
Qué probamos
- Explica un bucle useEffect infinito — En un componente React tengo const fetchData = async () => { const r = await fetch('/api/items'); setItems(await r.json()); } y useEffect(() => { fetchData(); }, [fetchData]);. El componente vuelve a obtener datos en un bucle sin fin. ¿Por qué, y cuál es la solución? Sé breve…
- Corrige una consulta Postgres lenta — Postgres: SELECT id, total FROM orders WHERE customer_id = 42 ORDER BY created_at DESC LIMIT 20; tarda segundos en una tabla orders de 50M filas que solo tiene un índice de clave primaria. ¿Qué debería hacer? Sé breve; pago por token.
- Merge o rebase en una rama compartida — Mi equipo trabaja en una rama de funcionalidad compartida que otras personas ya han descargado. Quiero traer lo último de main. ¿Debo usar git merge o git rebase, y por qué? Sé breve; pago por token.
Ventajas
- La skill se activó sin nombrarla: se leyó el archivo de la skill en 6/6 ejecuciones con skill.
- Calidad absoluta alta con la skill: 4.67 sobre 5.
Inconvenientes
- Sin mejora medible frente a sin skill (+0.00, dentro del ruido).
- Usa 2.2 veces los tokens de sin skill.
- Salvedad de la prueba: solo se instaló SKILL.md; los hooks y el instalador no se instalaron. El prompt de prueba contiene el disparador «be brief».
- 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 una Mac de pruebas, 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 condensado en una frase añadida al prompt (grupo del prompt de una frase), 2 ejecuciones por grupo y tarea, red desactivada, escrituras en /tmp bloqueadas. Los prompts nunca mencionan la skill (salvo el texto indicado abajo). Cada prompt es una pregunta técnica (un bucle useEffect infinito, una consulta Postgres lenta, merge vs rebase en una rama compartida) que termina con la frase «Be brief; I'm paying per token» («sé breve; pago por token»). Esa frase es uno de los propios disparadores de la skill, y el grupo de control recibe la misma frase. Así que la prueba pregunta qué aporta la skill además de una petición simple de ser breve.
Comparación de tres ramas
| Rama | Puntuación media (0-5) | Tokens por ejecución |
|---|---|---|
| Sin la skill | 4.67 | 14k |
| Prompt de una frase | 4.5 | 14k |
| Con la skill | 4.67 | 31k |
Medido con Codex CLI en 18 ejecuciones, puntuado con comprobaciones basadas en reglas y sin juez LLM. Total 21.7 / 30, veredicto Según el caso.
Aviso: Solo se instaló SKILL.md; los hooks y el instalador no. El prompt de prueba contiene el disparador «be brief».
Veredicto: Según el caso (21.7 / 30). Fuente: JuliusBrussee/caveman, skills/caveman, fijada en el commit 9b68f7e. Instalación: npx skills@latest add JuliusBrussee/caveman --skill caveman. Licencia: MIT (LICENSE del repositorio; los hooks y el instalador del repositorio NO se instalaron ni se ejecutaron).
Qué es
La skill caveman (solo skills/caveman/SKILL.md; los hooks y el instalador del repositorio no se instalaron). Un estilo de respuesta telegráfico: responde primero, elimina saludos y resúmenes, palabras cortas, quita artículos pero nunca negaciones, mantén el código, las rutas, los números y los errores tal cual, prosa normal para advertencias y acciones irreversibles. Se activa con 'caveman mode', 'be brief', 'less tokens'. Unas 600 palabras de Markdown, sin scripts.
Cómo lo probamos
Codex CLI 0.166 (gpt-6-astra, razonamiento bajo) en un Mac de pruebas, 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).
Cada prompt es una pregunta técnica (un bucle infinito de useEffect, una consulta Postgres lenta, merge vs rebase en una rama compartida) que termina con 'Sé breve; pago por token'. Esa frase es uno de los propios disparadores de la skill, y el grupo de control recibe la misma frase. Así que la prueba mide qué aporta la skill por encima de una petición simple de brevedad.
- Explicar un bucle infinito de useEffect — En un componente React tengo
const fetchData = async () => { const r = await fetch('/api/items'); setItems(await r.json()); }yuseEffect(() => { fetchData(); }, [fetchData]);. El componente vuelve a hacer fetch en un bucle sin fin. ¿Por qué, y cuál es la solución? Sé bre… - Arreglar una consulta Postgres lenta — Postgres:
SELECT id, total FROM orders WHERE customer_id = 42 ORDER BY created_at DESC LIMIT 20;tarda segundos en una tabla orders de 50M de filas que solo tiene un índice de clave primaria. ¿Qué debería hacer? Sé breve; pago por token. - Merge o rebase en una rama compartida — Mi equipo trabaja en una rama de feature compartida que otras personas ya se han descargado. Quiero traer lo último de main. ¿Debo usar git merge o git rebase, y por qué? Sé breve; pago por token.
La puntuación es programática (tests ocultos / 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: "Responde de forma telegráfica: responde primero, sin saludos, relleno, matices ni resúmenes, elimina los artículos innecesarios y mantén exactos todos los datos técnicos, el código, los números y las negaciones."
| Tarea | Puntuación control | Una frase | Con la skill | Tokens control | Tokens de una frase | Tokens con la skill | Skill leída |
|---|---|---|---|---|---|---|---|
| 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 |
Puntuación media: 4.67 sin vs 4.67 con la skill (delta +0.0). Tokens por ejecución: 14k vs 31k (2.20x); tiempo 12s vs 19s. Grupo de una frase: 4.5 (la ganancia de la skill sobre la frase única: +0.17; la ganancia de la frase única sobre sin skill: -0.17); tokens de la frase única 14k por ejecución, así que la skill cuesta 2.20x la frase única.
Qué ocurrió
- Sin la skill, el agente ya responde en unas 59 palabras (45-70) cuando se le pide brevedad; con la skill, 52 palabras (39-64), y con la versión de una frase, 54. La diferencia de 7 palabras está dentro de la variación entre ejecuciones. Ningún grupo usó aperturas o cierres de relleno; las 18 respuestas conservaron el código, los comandos y los datos clave.
- La retención de datos fue la misma: 3-5 de 5 datos técnicos requeridos por respuesta en todos los grupos (proporción de datos requeridos conservados: 87% control, 80% una frase, 87% skill). El dato que los agentes omitieron con más frecuencia (que una actualización de estado vuelve a renderizar el componente y vuelve a ejecutar el efecto) lo omitieron los tres grupos por igual. El punto 'no hagas rebase de una rama compartida' coincidió con nuestra comprobación en 1 de 2 respuestas de control, 0 de 2 de una frase y 1 de 2 de skill; en las respuestas que leímos, todas recomendaban merge y reservaban rebase para trabajo privado o no publicado, así que esas omisiones son en parte de redacción.
- La skill se leyó en 6/6 ejecuciones porque el prompt contiene su frase disparadora. Cuesta 31k tokens por ejecución frente a 14k (2.2x), porque el agente carga la skill y ejecuta dos comandos para leerla antes de responder a una pregunta que podría responder directamente. La frase única cuesta lo mismo que el control.
- Al leer las respuestas, los estilos son iguales: respuesta primero, fragmentos, un bloque de código corto. No pudimos distinguir las respuestas de la skill de las de control.
Puntuaciones por dimensión
| Dimensión | Puntuación | Motivo |
|---|---|---|
| 1_output_quality | 4.67 | Puntuación media 4.67/5 con la skill (comprobaciones programáticas, véase la tabla por tarea). |
| 2_lift_vs_no_skill | 2.0 | +0.00 puntos frente a 4.67 sin la skill (n=2 por tarea; menos de ~1 punto es ruido). |
| 3_trigger | 5.0 | Archivo de la skill leído en 6/6 ejecuciones de tratamiento. |
| 4_instructions_portability | 4 | Reglas en Markdown simple; algunas se refieren a hooks y a una statusline (
|
| 5_efficiency | 1 | 2.20x tokens (31k vs 14k por ejecución) y 1.53x tiempo (19s vs 12s). |
| 6_safety_hygiene | 5 | Un único SKILL.md de reglas de estilo (leído entero); los hooks y el instalador del repositorio no se instalaron ni se revisaron. |
Límites de esta prueba
- La prueba mide la skill por encima de una petición explícita de brevedad. El uso real de la skill es persistente: permanece activa toda una sesión para que nunca tengas que repetir la petición, algo que esta prueba de tres preguntas no ejercita.
- El coste en tokens contado aquí es una carga única de la skill por conversación; en una sesión larga, ahorrando unas pocas palabras por respuesta, podría amortizarse; no lo medimos.
- Solo se comprobaron respuestas de chat a tres preguntas técnicas; los mensajes de commit, los comentarios de revisión de código y las sesiones largas de agente (donde la skill tiene otras reglas) no se probaron.
- Los hooks, la statusline y las demás skills de caveman del repositorio no se instalaron ni se ejecutaron.
- 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 el resultado es el mejor posible.
Seguridad
Consulta security.md. Escaneo: 0 CRITICAL / 0 HIGH / 0 MEDIUM. Veredicto: segura de ejecutar (sandbox sin red). Un escaneo limpio no demuestra que una skill sea segura.
Conclusión
Por encima de una petición simple de brevedad, caveman no hizo las respuestas más cortas ni menos precisas de forma medible, y cargarla duplicó los tokens de una respuesta breve. Si quieres que tu agente sea telegráfico durante toda una sesión sin pedirlo cada vez, la skill lo hace; si solo necesitas brevedad en una pregunta, dilo en el prompt.
Transcripción
Registro de ejecuciones: caveman (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-react-loop control-1: puntuación 5.0, tokens 14312, s 16.3, comprobaciones 3/3, no abrió nada t1-react-loop control-2: puntuación 4.5, tokens 14318, s 10.7, comprobaciones 3/3, no abrió nada t1-react-loop oneliner-1: puntuación 4.5, tokens 14348, s 16.9, comprobaciones 3/3, no abrió nada t1-react-loop oneliner-2: puntuación 4.5, tokens 14341, s 8.7, comprobaciones 3/3, no abrió nada t1-react-loop treatment-1: puntuación 4.5, tokens 30174, s 21.5, comprobaciones 3/3, abrió caveman t1-react-loop treatment-2: puntuación 4.5, tokens 30067, s 26.2, comprobaciones 3/3, abrió caveman t2-pg-index control-1: puntuación 5.0, tokens 14285, s 10.0, comprobaciones 3/3, no abrió nada t2-pg-index control-2: puntuación 5.0, tokens 14301, s 10.5, comprobaciones 3/3, no abrió nada t2-pg-index oneliner-1: puntuación 5.0, tokens 14362, s 12.3, comprobaciones 3/3, no abrió nada
18 ejecuciones, 3 artefactos
Resultado de ejemplo
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.