Tous les skills

pptx (anthropics/skills)

Crée, lit et modifie des présentations .pptx et .potx, modèles, mises en page et notes du présentateur.

anthropics pptx : tous les groupes passent nos contrôles de deck (5.0 contre 4.99), le skill coûte 1.4 fois les tokens ; une exécution « une phrase » a produit un deck que LibreOffice ne peut pas ouvrir

Selon les casSûr

Codex CLI · gpt-6-astra

24.0 / 30

Gain par rapport à sans skill : +0.01 · Selon les cas · 17 exécutions

Selon les cas : le gain +0.01 est inférieur à +1.0. Pour être recommandé, il faut un total de 22/30, une qualité de sortie de 3.5 et un gain de +1.0.

SOTA

Réussi

Testé avec Codex.

Couvre Codex, Claude Code

Codex CLI 0.166 (palier SOTA) : 17 exécutions notées. Une réussite ici couvre aussi Claude Code selon notre règle de palier ; elle ne dit rien du second palier.

Scores

Chaque dimension va de 0 à 5 et les six forment le total sur 30. 5 est la meilleure note dans chaque dimension. Coût 5 signifie bon marché et rapide. Installation 5 signifie facile.

Fiabilité du déclenchement
5.0
Gain par rapport à sans skill
2.0
Qualité de sortie
5.0
Coût en tokens et en temps
3.0
Installation et portabilité
4.0
Sécurité
5.0

Revue de sécurité

Sûr

Scan statique : 0 CRITIQUE / 1 ÉLEVÉ / 6 MOYEN. Revue manuelle : sûr à exécuter dans un bac à sable sans réseau (résultats du scanner expliqués). Un scan propre ne prouve pas qu'un skill est sûr.

Installer

npx skills@latest add anthropics/skills --skill pptx

Source

Commit épinglé: ca45fc496a3436251f191354091d557da31c15b5

Testé: 2026-11-02

Ce que nous avons testé

  • Créer un pitch deck — Créez pitch.pptx : un deck 16:9 de 5 diapositives pour le lancement d'un produit fictif appelé Falcon : une diapositive de titre, une diapositive Problème, une diapositive Solution, une diapositive Traction avec un graphique en barres du chiffre d'affaires trimestriel (Q1 12, Q2 18, Q3 27, Q4 35, en $k), et une diapositive de clôture Ask. É…
  • Insérer et renommer des diapositives — Dans team.pptx, changez le titre de la diapositive 2 en « Revenue outlook » et insérez juste après une nouvelle diapositive intitulée « Risks » avec trois puces (retards d'approvisionnement, recrutement, devise). Conservez toutes les autres diapositives et leurs notes du présentateur. Enregistrez le résultat sous team.pptx…
  • Extraire le plan et le tableau — Depuis team.pptx, écrivez outline.txt (un titre de diapositive par ligne, dans l'ordre) et table.csv (le tableau de la diapositive de résultats, ligne d'en-tête en premier). Ne modifiez pas team.pptx.

Points forts

  • Le skill a été détecté sans être nommé : son fichier a été lu dans 6/6 exécutions avec skill.
  • Qualité absolue élevée avec le skill : 5.0 sur 5.

Points faibles

  • Aucun gain mesurable par rapport à sans skill (+0.01, dans le bruit).
  • Le contrôle atteint déjà 4.99 : effet plafond, le test ne peut donc pas montrer de gain.
  • Réserve de test : 17 des 18 exécutions prévues : le bras « prompt d'une phrase » de t3 a n=1. La série a été arrêtée après des plantages répétés de LibreOffice sur une machine de test.
  • n=2 par tâche et par bras ; les écarts inférieurs à environ 1 point sont du bruit.

Avis

Codex CLI 0.166 (gpt-6-astra, low reasoning) sur un Mac de test, un projet temporaire neuf et des HOME/TMPDIR/caches temporaires à chaque exécution, skill installé (traitement) ou absent (contrôle) ou absent avec l'exigence centrale du skill compressée en une phrase ajoutée au prompt (groupe « prompt d'une phrase »), 2 exécutions par groupe et par tâche, réseau coupé, écritures dans /tmp bloquées. Les prompts ne mentionnent jamais le skill (sauf la formulation indiquée ci-dessous). Trois tâches : créer un pitch deck de 5 diapositives 16:9 (notes du présentateur sur chaque diapositive, un graphique natif modifiable, de vraies puces, tout sur la diapositive, s'ouvre dans LibreOffice) ; dans team.pptx, changer le titre de la diapositive 2 et insérer une diapositive « Risks » avec trois puces après elle, en conservant les autres diapositives, le tableau et les notes du présentateur ; extraire les titres des diapositives et le tableau dans des fichiers texte sans modifier le deck. Les deux bras avaient les mêmes copies hors ligne de pptxgenjs et python-pptx. Les contrôles utilisent python-pptx plus une conversion LibreOffice faite hors ligne de notre côté. Exécuté avec 17 des 18 exécutions prévues : la série a été arrêtée tôt (voir limites), le groupe « une phrase » a donc une exécution de moins sur la tâche d'extraction.

Comparaison à trois bras

BrasScore moyen (0-5)Tokens par exécution
Sans le skill4.99114k
Prompt d'une phrase4.86224k
Avec le skill5.0162k

Mesuré avec Codex CLI sur 17 exécutions, noté par des contrôles basés sur des règles, sans juge LLM. Total 24.0 / 30, verdict Selon les cas.

Divulgation : 17 des 18 exécutions prévues : le bras « prompt d'une phrase » de t3 a n=1. La série a été arrêtée après des plantages répétés de LibreOffice sur une machine de test.

Verdict : Selon le cas (24.0 / 30). Source : anthropics/skills, skills/pptx, épinglé au commit ca45fc4. Installation : npx skills@latest add anthropics/skills --skill pptx. Licence : propriétaire (LICENSE.txt dans le dossier du skill), évalué en lecture seule, non redistribué.

Présentation

Le skill pptx d’anthropics/skills : créer des decks avec pptxgenjs (avec une liste de pièges qui corrompent les fichiers), modifier des decks en dézippant et en éditant le XML des diapositives avec des scripts d’aide (add_slide.py, clean.py, thumbnail.py), lire le contenu avec markitdown, et valider avec scripts/office/validate.py et LibreOffice. Environ 3 100 mots dans SKILL.md plus des scripts Python et des schémas OOXML ; licence propriétaire, évalué en lecture seule.

Méthode de test

Codex CLI 0.166 (gpt-6-astra, raisonnement faible) sur une machine de test Mac, un projet temporaire neuf et des HOME/TMPDIR/caches temporaires à chaque exécution, skill installé (groupe avec skill), absent (groupe témoin), ou absent avec l’exigence centrale du skill compressée en une phrase ajoutée au prompt (groupe « prompt en une phrase »), 2 exécutions par groupe et par tâche, réseau désactivé, écritures dans /tmp bloquées. Les prompts ne mentionnent jamais le skill (sauf la formulation indiquée plus bas).

Trois tâches : créer un deck de pitch 16:9 de 5 diapositives (notes du présentateur sur chaque diapositive, un graphique natif modifiable, de vraies puces, tout sur la diapositive, s’ouvre dans LibreOffice) ; dans team.pptx, changer le titre de la diapositive 2 et insérer une diapositive « Risks » avec trois puces juste après, en conservant les autres diapositives, le tableau et les notes du présentateur ; extraire les titres des diapositives et le tableau vers des fichiers texte sans modifier le deck. Les deux bras disposaient des mêmes copies hors ligne de pptxgenjs et python-pptx. Les vérifications utilisent python-pptx plus une conversion LibreOffice faite hors ligne de notre côté. Exécution avec 17 des 18 exécutions prévues : le lot a été arrêté prématurément (voir les limites), donc le groupe « prompt en une phrase » a une exécution de moins sur la tâche d’extraction.

  1. Créer un deck de pitch — Créez pitch.pptx : un deck 16:9 de 5 diapositives pour le lancement d’un produit fictif appelé Falcon : une diapositive de titre, une diapositive Problème, une diapositive Solution, une diapositive Traction avec un graphique en barres du chiffre d’affaires trimestriel (Q1 12, Q2 18, Q3 27, Q4 35, en $k), et une diapositive de clôture Ask. E…
  2. Insérer et retitrer des diapositives — Dans team.pptx, changez le titre de la diapositive 2 en « Revenue outlook » et insérez juste après une nouvelle diapositive intitulée « Risks » avec trois puces (retards d’approvisionnement, recrutement, devise). Conservez toutes les autres diapositives et leurs notes du présentateur. Enregistrez le résultat sous team.pptx…
  3. Extraire le plan et le tableau — Depuis team.pptx, écrivez outline.txt (un titre de diapositive par ligne, dans l’ordre) et table.csv (le tableau de la diapositive de résultats, ligne d’en-tête en premier). Ne modifiez pas team.pptx.

Le scoring est programmatique (tests cachés / détection des problèmes implantés / vérifications de contraintes / rendu + OCR le cas échéant), de 0 à 5 par exécution. Aucun juge LLM n’a attribué de score.

Résultats

Le prompt en une phrase donné au troisième groupe : « Construis le deck comme de vrais objets PowerPoint : définis d’abord la mise en page 16:9, utilise un graphique natif modifiable (pas une image), de vraies puces (jamais de caractères « • » saisis), des notes du présentateur via l’API de notes, garde chaque forme à l’intérieur de la diapositive, et confirme que le fichier s’ouvre en le convertissant en PDF ; lors d’une modification, ne change que ce qui est demandé, laisse les autres diapositives et leurs notes telles quelles, et ne laisse aucun fichier de travail. »

TâcheScore témoinPrompt en une phraseAvec skillTokens témoinTokens du prompt en une phraseTokens avec skillSkill lu
t1-new4.965.05.0147k342k185k2/2
t2-edit5.04.655.0114k175k199k2/2
t3-extract5.05.05.079k80k99k2/2

Score moyen : 4.99 sans le skill contre 5.0 avec (écart +0.01). Tokens par exécution : 114k contre 162k (1.42x) ; temps 67s contre 70s. Groupe « prompt en une phrase » : 4.86 (gain du skill sur ce prompt : +0.14 ; gain du prompt par rapport à l’absence de skill : -0.12) ; tokens du prompt : 224k par exécution, donc le skill coûte 0.72x le prompt en une phrase.

Ce qui s’est passé

  • Aucune différence de score : 4.99 témoin, 4.86 une phrase, 5.00 skill. Le témoin crée déjà des decks corrects (5 diapositives, notes sur chaque diapositive, un graphique natif, pas de puces saisies, formes à l’intérieur de la diapositive, s’ouvre dans LibreOffice) et fait la modification avec python-pptx sans perdre les notes ni le tableau.
  • Le skill a coûté plus cher : 162k tokens par exécution contre 114k (1.4x), et la version en une phrase 224k (2.0x), surtout sur la tâche de création (185k pour le skill et 325-361k pour la version en une phrase, contre 118-176k pour le témoin).
  • Un échec, dans le groupe « prompt en une phrase » : son team.pptx modifié s’ouvre dans python-pptx mais LibreOffice ne peut pas le convertir (reproduit deux fois de notre côté) ; l’agent lui-même a signalé que LibreOffice avait planté. Les six decks du groupe skill se sont tous convertis, et les six exécutions du skill ont lancé son validate.py.
  • Le skill a été lu dans 6/6 exécutions, et dans les 6 l’agent a utilisé son markitdown, validate.py et son wrapper LibreOffice (soffice.py). Le témoin n’a jamais appelé LibreOffice ; 4 des 5 exécutions en une phrase ont appelé soffice directement.

Scores par dimension

DimensionScorePourquoi
1_output_quality5.0

Score moyen de 5.00/5 avec le skill (vérifications programmatiques, voir le tableau par tâche).

2_lift_vs_no_skill2.01

+0.01 point par rapport à 4.99 sans le skill (n=2 par tâche ; un écart inférieur à ~1 point relève du bruit).

3_trigger5.0Fichier du skill lu dans 6/6 exécutions avec skill.
4_instructions_portability4

Suppose que pptxgenjs, python-pptx, markitdown et LibreOffice sont installés ; orienté sandbox Linux.

5_efficiency3

1.42x tokens (162k contre 114k par exécution) et 1.04x temps (70s contre 67s).

6_safety_hygiene5

Scripts lus : soffice.py (lanceur LibreOffice ; compile un petit shim LD_PRELOAD uniquement sous Linux quand les sockets sont bloqués), thumbnail.py, add_slide.py, clean.py et les validateurs ; pas de réseau, pas d’accès aux identifiants.

Limites de ce test

  • Le lot a été arrêté à 17 exécutions sur 18 : LibreOffice plantait à répétition sur la machine de test pendant que les agents (surtout dans les groupes skill et une phrase) convertissaient des decks en PDF, et l’utilisateur nous a demandé d’arrêter. Tous les résultats proviennent d’exécutions terminées ; il manque une exécution d’extraction du groupe « prompt en une phrase ».
  • Vérifications par règles (structure, notes, graphique, limites, ouverture) ; la qualité visuelle des diapositives n’a pas été jugée, et les conseils de design du skill (palettes de couleurs, idées de mise en page) n’ont pas été exercés.
  • Petits decks ; 5 et 3 diapositives. L’édition à partir d’un modèle, la combinaison/scission et les commentaires n’ont pas été testés.
  • Les conversions des vérifications ont été faites hors ligne de notre côté ; c’est l’usage de LibreOffice par les agents sur la machine de test qui a causé les plantages.
  • n = 2 par groupe et par tâche : un écart inférieur à ~1 point relève du bruit.
  • Le scoring par règles mesure ce que les vérifications peuvent voir ; il ne peut juger du goût ni du caractère optimal d’un résultat.

Sécurité

Voir security.md. Scan : 0 CRITICAL / 1 HIGH / 6 MEDIUM. Verdict : exécution sans danger (sandbox sans réseau). Un scan propre ne prouve pas qu’un skill est sûr.

En résumé

Sur de petits decks, Codex seul avec python-pptx produisait déjà des fichiers corrects et valides, si bien que les pièges et le validateur du skill ont ajouté environ 40 % de tokens sans améliorer le score. Son validateur et ses étapes de conversion sont utiles pour des decks plus grands ou basés sur un modèle, ce que ce test n’a pas couvert. Sachez que le workflow du skill appelle LibreOffice, qui peut être instable sur certains postes.

Transcription

Journal d'exécution : pptx (Codex CLI, network off, per-run temp HOME/TMPDIR, one row per graded run.)
Colonnes : tâche, groupe-exécution, score (0-5), tokens, secondes, vérifications réussies, fichiers de la skill ouverts par l'agent.

t1-new control-1: score 4.92, tokens 117727, s 118.4, vérifications 1/2, rien ouvert
t1-new control-2: score 5.0, tokens 176319, s 129.0, vérifications 2/2, rien ouvert
t1-new oneliner-1: score 5.0, tokens 324776, s 128.1, vérifications 2/2, rien ouvert
t1-new oneliner-2: score 5.0, tokens 360676, s 134.3, vérifications 2/2, rien ouvert
t1-new treatment-1: score 5.0, tokens 183150, s 123.4, vérifications 2/2, ouvert pptx
t1-new treatment-2: score 5.0, tokens 187890, s 110.7, vérifications 2/2, ouvert pptx
t2-edit control-1: score 5.0, tokens 115865, s 43.4, vérifications 2/2, rien ouvert
t2-edit control-2: score 5.0, tokens 113982, s 42.2, vérifications 2/2, rien ouvert
t2-edit oneliner-1: score 4.31, tokens 147330, s 67.2, vérifications 1/2, rien ouvert

17 exécutions, 3 artefacts

Exemple de sortie

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]

Voir Pro