pptx (anthropics/skills)
Crea, lee y edita presentaciones .pptx y .potx, plantillas, diseños y notas del orador.
anthropics pptx: todos los grupos superan nuestras comprobaciones de presentación (5.0 vs 4.99), la skill consume 1.4x los tokens; una ejecución del prompt de una frase generó una presentación que LibreOffice no puede abrir
Codex CLI · gpt-6-astra
24.0 / 30
Mejora frente a sin skill: +0.01 · Según el caso · 17 ejecuciones
Según el caso: la mejora +0.01 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): 17 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
- 5.0
- Coste en tokens y tiempo
- 3.0
- Instalación y portabilidad
- 4.0
- Seguridad
- 5.0
Revisión de seguridad
SeguraEscaneo estático: 0 CRITICAL / 1 HIGH / 6 MEDIUM. Revisión manual: Segura para ejecutar en un sandbox sin red (hallazgos del escáner explicados). Un escaneo limpio no demuestra que una skill sea segura.
Instalar
npx skills@latest add anthropics/skills --skill pptx
Commit fijado: ca45fc496a3436251f191354091d557da31c15b5
Probada: 2026-11-02
Qué probamos
- Crear una presentación — Crea pitch.pptx: una presentación de 5 diapositivas en 16:9 para el lanzamiento de un producto ficticio llamado Falcon: una diapositiva de título, una diapositiva Problema, una diapositiva Solución, una diapositiva Tracción con un gráfico de barras de ingresos trimestrales (Q1 12, Q2 18, Q3 27, Q4 35, en $k) y una diapositiva final Petición. …
- Insertar y retitular diapositivas — En team.pptx, cambia el título de la diapositiva 2 a 'Perspectiva de ingresos' e inserta justo después una diapositiva nueva titulada 'Riesgos' con tres viñetas (retrasos de suministro, contratación, divisas). Mantén sin cambios todas las demás diapositivas y sus notas del orador. Guarda el resultado como team.pptx…
- Extraer el esquema y la tabla — A partir de team.pptx, escribe outline.txt (un título de diapositiva por línea, en orden) y table.csv (la tabla de la diapositiva de resultados, con la fila de encabezado primero). No modifiques team.pptx.
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: 5.0 sobre 5.
Inconvenientes
- Sin mejora medible frente a sin skill (+0.01, dentro del ruido).
- El control ya obtiene 4.99: efecto techo, así que la prueba no puede mostrar mejora.
- Salvedad de la prueba: 17 de las 18 ejecuciones previstas; la rama del prompt de una frase de t3 tiene n=1. La tanda se detuvo tras varios cierres inesperados de LibreOffice en una máquina de prueba.
- 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 máquina de prueba Mac, 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: crear una presentación de 5 diapositivas en 16:9 (notas del orador en cada diapositiva, un gráfico nativo editable, viñetas reales, todo en la diapositiva y que abra en LibreOffice); en team.pptx, cambiar el título de la diapositiva 2 e insertar después una diapositiva 'Risks' con tres viñetas, manteniendo las demás diapositivas, la tabla y las notas del orador; extraer los títulos de las diapositivas y la tabla a archivos de texto sin modificar la presentación. Ambas ramas tenían las mismas copias sin conexión de pptxgenjs y python-pptx. Las comprobaciones usan python-pptx y una conversión con LibreOffice hecha sin conexión por nuestra parte. Se ejecutaron 17 de las 18 ejecuciones previstas: la tanda se detuvo antes de tiempo (ver límites), así que el grupo del prompt de una frase tiene una ejecución menos en la tarea de extracción.
Comparación de tres ramas
| Rama | Puntuación media (0-5) | Tokens por ejecución |
|---|---|---|
| Sin la skill | 4.99 | 114k |
| Prompt de una frase | 4.86 | 224k |
| Con la skill | 5.0 | 162k |
Medido con Codex CLI en 17 ejecuciones, puntuado con comprobaciones basadas en reglas y sin juez LLM. Total 24.0 / 30, veredicto Según el caso.
Aviso: 17 de las 18 ejecuciones previstas: la rama de una frase de t3 tiene n=1. El lote se detuvo tras varios cierres inesperados de LibreOffice en una máquina de prueba.
Veredicto: Situacional (24.0 / 30). Fuente: anthropics/skills, skills/pptx, fijado en el commit ca45fc4. Instalación: npx skills@latest add anthropics/skills --skill pptx. Licencia: Propietaria (LICENSE.txt en el directorio del skill): evaluado en solo lectura, no redistribuido.
Qué es
El skill pptx de anthropics/skills: crear presentaciones con pptxgenjs (con una lista de trampas que corrompen archivos), editar presentaciones descomprimiendo y editando el XML de las diapositivas con scripts auxiliares (add_slide.py, clean.py, thumbnail.py), leer contenido con markitdown y validar con scripts/office/validate.py y LibreOffice. Unas 3,100 palabras en SKILL.md más scripts de Python y esquemas OOXML; licencia propietaria, evaluado en solo lectura.
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 en cada ejecución, skill instalado (grupo con skill), ausente (grupo de control) o ausente con el requisito central del skill comprimido en una frase añadida al prompt (grupo de una frase), 2 ejecuciones por grupo y tarea, red desactivada, escrituras en /tmp bloqueadas. Los prompts nunca mencionan el skill (salvo la formulación indicada abajo).
Tres tareas: crear una presentación de pitch de 5 diapositivas en 16:9 (notas del orador en cada diapositiva, un gráfico nativo editable, viñetas reales, todo dentro de la diapositiva, que abra en LibreOffice); en team.pptx cambiar el título de la diapositiva 2 e insertar una diapositiva «Risks» con tres viñetas después, conservando las demás diapositivas, la tabla y las notas del orador; extraer los títulos de las diapositivas y la tabla a archivos de texto sin modificar la presentación. Ambos grupos tenían las mismas copias sin conexión de pptxgenjs y python-pptx. Las comprobaciones usan python-pptx más una conversión de LibreOffice hecha sin conexión por nuestra parte. Se hicieron 17 de las 18 ejecuciones previstas: el lote se detuvo antes de tiempo (véanse los límites), así que el grupo de una frase tiene una ejecución menos en la tarea de extracción.
- Crear una presentación de pitch — Crea pitch.pptx: una presentación de 5 diapositivas en 16:9 para el lanzamiento de un producto ficticio llamado Falcon: una diapositiva de título, una de Problema, una de Solución, una de Tracción con un gráfico de barras de ingresos trimestrales (Q1 12, Q2 18, Q3 27, Q4 35, en $k) y una diapositiva final de Petición. E…
- Insertar y retitular diapositivas — En team.pptx cambia el título de la diapositiva 2 a «Revenue outlook» e inserta justo después una diapositiva nueva titulada «Risks» con tres viñetas (retrasos de suministro, contratación, divisas). Mantén sin cambios todas las demás diapositivas y sus notas del orador. Guarda el resultado como team.pptx…
- Extraer esquema y tabla — De team.pptx escribe outline.txt (un título de diapositiva por línea, en orden) y table.csv (la tabla de la diapositiva de resultados, con la fila de encabezado primero). No modifiques team.pptx.
La puntuación es programática (tests ocultos / detección de problemas sembrados / comprobaciones de restricciones / renderizado+OCR cuando corresponde), de 0 a 5 por ejecución. Ningún juez LLM decidió ninguna puntuación.
Resultados
La frase única que recibió el tercer grupo: "Construye la presentación con objetos reales de PowerPoint: configura primero el diseño 16:9, usa un gráfico nativo editable (no una imagen), viñetas reales (nunca caracteres «•» escritos a mano), notas del orador mediante la API de notas, mantén cada forma dentro de la diapositiva y confirma que el archivo abre convirtiéndolo a PDF; al editar, cambia solo lo que se pidió, deja las demás diapositivas y sus notas como están y no dejes archivos de trabajo."
| Tarea | Puntuación sin skill | Una frase | Con skill | Tokens sin skill | Tokens una frase | Tokens con skill | Skill leído |
|---|---|---|---|---|---|---|---|
| t1-new | 4.96 | 5.0 | 5.0 | 147k | 342k | 185k | 2/2 |
| t2-edit | 5.0 | 4.65 | 5.0 | 114k | 175k | 199k | 2/2 |
| t3-extract | 5.0 | 5.0 | 5.0 | 79k | 80k | 99k | 2/2 |
Puntuación media: 4.99 sin vs 5.0 con el skill (delta +0.01). Tokens por ejecución: 114k vs 162k (1.42x); tiempo 67s vs 70s. Grupo de una frase: 4.86 (la mejora del skill frente a la frase: +0.14; la mejora de la frase frente a no usar skill: -0.12); la frase usa 224k tokens por ejecución, así que el skill consume 0.72 veces sus tokens.
Qué ocurrió
- Sin diferencia en la puntuación: 4.99 control, 4.86 una frase, 5.00 skill. El control ya crea presentaciones correctas (5 diapositivas, notas en cada una, un gráfico nativo, sin viñetas escritas a mano, formas dentro de la diapositiva, abre en LibreOffice) y hace la edición con python-pptx sin perder notas ni la tabla.
- El skill costó más: 162k tokens por ejecución frente a 114k (1.4x), y la versión de una frase 224k (2.0x), sobre todo en la tarea de creación (185k para el skill y 325-361k para la versión de una frase, frente a 118-176k del control).
- Un fallo, en el grupo de una frase: su team.pptx editado abre en python-pptx pero LibreOffice no puede convertirlo (reproducido dos veces por nuestra parte); el propio agente informó de que LibreOffice se había bloqueado. Las seis presentaciones del grupo del skill se convirtieron, y las seis ejecuciones del skill ejecutaron su validate.py.
- El skill se leyó en 6/6 ejecuciones, y en las 6 el agente usó su markitdown, validate.py y el envoltorio de LibreOffice (soffice.py). El control nunca llamó a LibreOffice; 4 de 5 ejecuciones de una frase llamaron a soffice directamente.
Puntuación por dimensiones
| Dimensión | Puntuación | Motivo |
|---|---|---|
| 1_output_quality | 5.0 | Puntuación media de 5.00/5 con el skill (comprobaciones programáticas; véase la tabla por tarea). |
| 2_lift_vs_no_skill | 2.01 | +0.01 puntos frente a 4.99 sin el skill (n=2 por tarea; menos de ~1 punto es ruido). |
| 3_trigger | 5.0 | Skill leído en 6/6 ejecuciones con skill. |
| 4_instructions_portability | 4 | Asume que pptxgenjs, python-pptx, markitdown y LibreOffice están instalados; orientado a sandbox Linux. |
| 5_efficiency | 3 | 1.42x tokens (162k vs 114k por ejecución) y 1.04x tiempo (70s vs 67s). |
| 6_safety_hygiene | 5 | Scripts leídos: soffice.py (lanzador de LibreOffice; compila un pequeño shim LD_PRELOAD solo en Linux cuando los sockets están bloqueados), thumbnail.py, add_slide.py, clean.py y validadores; sin red, sin acceso a credenciales. |
Límites de esta prueba
- El lote se detuvo en 17 de 18 ejecuciones: LibreOffice se bloqueó repetidamente en el ordenador de pruebas mientras los agentes (sobre todo en los grupos del skill y de una frase) convertían presentaciones a PDF, y el usuario nos pidió que paráramos. Todos los resultados provienen de ejecuciones que terminaron; falta una ejecución de extracción del grupo de una frase.
- Comprobaciones por reglas (estructura, notas, gráfico, límites, apertura); no se juzgó la calidad visual de las diapositivas ni se ejercitó la guía de diseño del skill (paletas de color, ideas de diseño).
- Presentaciones pequeñas; 5 y 3 diapositivas. No se probaron la edición basada en plantillas, combinar/dividir ni los comentarios.
- Las conversiones de las comprobaciones se hicieron sin conexión por nuestra parte; el uso propio de LibreOffice por parte de los agentes en el ordenador de pruebas es lo que provocó los bloqueos.
- 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
Véase security.md. Escaneo: 0 CRITICAL / 1 HIGH / 6 MEDIUM. Veredicto: seguro de ejecutar (sandbox sin red). Un escaneo limpio no demuestra que un skill sea seguro.
Conclusión
En presentaciones pequeñas, Codex a secas con python-pptx ya producía archivos correctos y válidos, así que las trampas y el validador del skill añadieron alrededor de un 40% de tokens sin subir la puntuación. Su validador y sus pasos de conversión son útiles para presentaciones más grandes o basadas en plantillas, algo que esta prueba no cubrió. Ten en cuenta que el propio flujo del skill llama a LibreOffice, que puede ser inestable en algunos escritorios.
Transcripción
Registro de ejecuciones: pptx (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-new control-1: puntuación 4.92, tokens 117727, s 118.4, comprobaciones 1/2, no abrió nada t1-new control-2: puntuación 5.0, tokens 176319, s 129.0, comprobaciones 2/2, no abrió nada t1-new oneliner-1: puntuación 5.0, tokens 324776, s 128.1, comprobaciones 2/2, no abrió nada t1-new oneliner-2: puntuación 5.0, tokens 360676, s 134.3, comprobaciones 2/2, no abrió nada t1-new treatment-1: puntuación 5.0, tokens 183150, s 123.4, comprobaciones 2/2, abrió pptx t1-new treatment-2: puntuación 5.0, tokens 187890, s 110.7, comprobaciones 2/2, abrió pptx t2-edit control-1: puntuación 5.0, tokens 115865, s 43.4, comprobaciones 2/2, no abrió nada t2-edit control-2: puntuación 5.0, tokens 113982, s 42.2, comprobaciones 2/2, no abrió nada t2-edit oneliner-1: puntuación 4.31, tokens 147330, s 67.2, comprobaciones 1/2, no abrió nada
17 ejecuciones, 3 artefactos
Resultado de ejemplo
SOTA · With the skill: create_pitch.js (t1-new, run 1, Codex)
const pptxgen=require('pptxgenjs'); const p=new pptxgen();p.layout='LAYOUT_WIDE';p.title='Falcon launch';p.author='Falcon';p.theme={headFontFace:'Arial',bodyFontFace:'Arial',lang:'en-US'}; const dark='192620',green='C2F36B',muted='56665C'; function t(s,text,x,y,w,h,size=20,color=dark,bold=false){s.addText(text,{x,y,w,h,fontSize:size,fontFace:'Arial',color,bold,margin:0});} function base(n,d=false){const s=p.addSlide();s.background={color:d?dark:'FFFFFF'};t(s,'FALCON / LAUNCH',.65,.35,6,.25,10,d?green:muted,true);t(s,String(n).padStart(2,'0'),12,6.9,.6,.25,10,d?'FFFFFF':muted);return s;} function list(s,items,x,y,w,h,color=dark,size=22){s.addText(items.map((text,i)=>({text,options:{bullet:{indent:size},hanging:4,breakLine:i<items.length-1}})),{x,y,w,h,fontFace:'Arial',fontSize:size,color,margin:0,paraSpaceAfter:23,valign:'top'});} function box(s,x,y,w,h,color){s.addShape(p.ShapeType.roundRect,{x,y,w,h,fill:{color},line:{color,transparency:100},radius:.15});} let s=base(1,true);t(s,'Falcon',.75,1.45,8,1.1,66,'FFFFFF',true);t(s,'Turn team plans into\nforward motion.',.75,2.85,8,1.5,34,'FFFFFF');t(s,'One workspace for priorities, owners, and progress.',.75,4.85,8,.7,20,'B9C8BE');s.addShape(p.ShapeType.chevron,{x:10,y:1.8,w:1.2,h:3.3,fill:{color:green},line:{color:green}});s.addShape(p.ShapeType.chevron,{x:11.4,y:2.5,w:.6,h:1.9,fill:{color:'71964A'},line:{color:'71964A'}});t(s,'Fictional product • Illustrative launch pitch',.75,6.5,8,.3,11,'B9C8BE');s.addNotes('Introduce Falcon as a fictional work-management product for growing teams. Its promise is to turn plans into coordinated action through shared priorities, owners, and progress. All business details are illustrative; quarterly revenue was supplied for this pitch.'); s=base(2);t(s,'Problem',.65,1,10,.65,40,dark,true);t(s,'Work moves faster than the tools tracking it.',.65,1.85,12,.6,25,muted);list(s,['Priorities scatter across chats, docs, and spreadsheets.','Unclear ownership delays decisions and handoffs.','Manual updates hide risks until deadlines slip.'],.8,3,7.1,3);box(s,9,2.85,3.55,3.15,'F0F5F1');t(s,'The cost',9.35,3.2,2.8,.4,20,muted,true);t(s,'More chasing.\nLess shipping.',9.35,3.95,2.8,1.3,30,dark,true);s.addNotes('Growing teams often keep priorities in multiple places, leaving owners and dependencies unclear. Explain how this creates time spent chasing updates. These are product assumptions for a fictional launch, not research findings.'); s=base(3);t(s,'Solution',.65,1,10,.65,40,dark,true);t(s,'One shared view. A clear next step.',.65,1.85,12,.6,25,muted);[['01','Align priorities',['Capture goals in one place.','Link tasks to outcomes.']],['02','Assign owners',['Give every task an owner.','Make deadlines visible.']],['03','Advance work',['Track progress together.','Flag blockers early.']]].forEach((a,i)=>{let x=.65+i*4.1;box(s,x,2.9,3.8,3.3,'F0F5F1');t(s,a[0],x+.3,3.2,1,.5,28,'638831',true);t(s,a[1],x+.3,4,3.2,.6,23,dark,true);list(s,a[2],x+.3,4.9,3.1,1.1,dark,16);});s.addNotes('Walk through the proposed workflow: align on priorities, assign owners, and advance work with visible progress and blockers. These are conceptual features of the fictional Falcon product. Emphasize the va [... excerpt: first 3200 of 5381 characters]