pptx (anthropics/skills)
.pptx と .potx のスライド、テンプレート、レイアウト、発表者ノートを作成・読み取り・編集します。
anthropics pptx:すべての群がデッキチェックに合格します(5.0 対 4.99)。スキルのトークンは 1.4 倍です。一文プロンプトの 1 実行では LibreOffice で開けないデッキが生成されました。
Codex CLI · gpt-6-astra
24.0 / 30
スキルなしに対するリフト:+0.01 · 状況次第 · 17 実行
状況次第:リフト +0.01 が +1.0 未満。推奨には合計 22/30、出力品質 3.5、リフト +1.0 が必要です。
SOTA
合格Codex でテスト済み。
カバー対象 Codex, Claude Code
Codex CLI 0.166(SOTA ティア):採点対象 17 実行。当ティアのルールでは、ここでの合格は Claude Code もカバーします。第2ティアについては何も述べません。
スコア
各ディメンションは 0〜5 点で、6 つの合計が 30 点満点の合計スコアになります。すべてのディメンションで 5 が最良です。コスト 5 は低コストで高速、インストール 5 は簡単であることを意味します。
- トリガーの信頼性
- 5.0
- スキルなしに対するリフト
- 2.0
- 出力品質
- 5.0
- トークンと時間のコスト
- 3.0
- インストールと移植性
- 4.0
- 安全性
- 5.0
セキュリティレビュー
安全静的スキャン:CRITICAL 0 / HIGH 1 / MEDIUM 6。手動レビュー:ネットワーク無効のサンドボックスで実行しても安全(スキャナの指摘は確認済み)。クリーンなスキャン結果はスキルの安全性を証明しません。
インストール
npx skills@latest add anthropics/skills --skill pptx
固定コミット: ca45fc496a3436251f191354091d557da31c15b5
テスト済み: 2026-11-02
テスト内容
- ピッチデッキの作成 — pitch.pptx を作成してください。Falcon という架空の製品のローンチ用 5 スライド 16:9 デッキです。タイトルスライド、Problem スライド、Solution スライド、四半期売上の棒グラフ(Q1 12、Q2 18、Q3 27、Q4 35、単位 $k)付きの Traction スライド、最後に Ask スライド。…
- スライドの挿入とタイトル変更 — team.pptx で、スライド 2 のタイトルを 'Revenue outlook' に変更し、その直後に 3 つの箇条書き(供給遅延、採用、為替)を持つ 'Risks' というタイトルの新しいスライドを挿入してください。他のスライドとそのスピーカーノートは変更しないでください。結果を team.pptx として保存してください。…
- アウトラインと表の抽出 — team.pptx から outline.txt(1 行に 1 つのスライドタイトル、順番どおり)と table.csv(結果スライドの表、ヘッダー行を先頭に)を書いてください。team.pptx は変更しないでください。
長所
- スキルは名前を出さずとも採用されました:スキルあり群 6/6 実行でスキルファイルが読み込まれました。
- スキルありの絶対品質は高水準:5 点中 5.0。
短所
- スキルなしに対する有意なリフトなし(+0.01、ノイズの範囲内)。
- 対照群はすでに 4.99 点:天井効果のため、テストでリフトを示せません。
- テスト上の注意:予定した 18 実行中 17 実行:t3 の一文プロンプト群は n=1 です。テストマシンでの LibreOffice の繰り返しのクラッシュにより、バッチが停止されました。
- タスク・群ごとに n=2。1 ポイント未満の差はノイズです。
レビュー
Mac テストマシン上で Codex CLI 0.166(gpt-6-astra、低推論)、実行ごとに新規の一時プロジェクトと一時 HOME/TMPDIR/キャッシュを使用、スキルをインストール(スキルあり群)、スキルなし(対照群)、またはスキルの中核要件をプロンプト末尾に付けた一文に圧縮(一文プロンプト群)、タスクごとに各群 2 実行、ネットワーク無効、/tmp への書き込みはブロック。プロンプトはスキル名に一切言及しません(以下で注記する表現を除く)。3 つのタスク:5 スライドの 16:9 ピッチデッキを作成する(各スライドにスピーカーノート、ネイティブで編集可能なグラフ、実際の箇条書き、すべての要素をスライド上に配置し、LibreOffice で開けること)。team.pptx のスライド 2 のタイトルを変更し、その直後に 3 つの箇条書きを持つ「Risks」スライドを挿入する(他のスライド、表、スピーカーノートは保持)。デッキを変更せずにスライドタイトルと表をテキストファイルに抽出する。両群には同じオフラインの pptxgenjs と python-pptx のコピーを用意しました。チェックは python-pptx と、当方でオフライン実行する LibreOffice 変換を使用します。予定した 18 実行中 17 実行で実施:バッチが早期に停止されたため(制限参照)、一文プロンプト群は抽出タスクで 1 実行少なくなっています。
3群の比較
| 群 | 平均スコア(0〜5) | 1実行あたりのトークン |
|---|---|---|
| スキルなし | 4.99 | 114k |
| 一文プロンプト | 4.86 | 224k |
| スキルあり | 5.0 | 162k |
Codex CLI で 17 実行を計測し、LLM 判定なしのルールベースのチェックで採点。合計 24.0 / 30、判定は 状況次第。
開示事項 計画した 18 実行のうち 17 実行:t3 の一文プロンプト群は n=1 です。テストマシンで LibreOffice のクラッシュが繰り返されたため、バッチを停止しました。
判定:状況次第(24.0 / 30)。 出典:anthropics/skills、skills/pptx、コミット ca45fc4 に固定。インストール:npx skills@latest add anthropics/skills --skill pptx。ライセンス: プロプライエタリ(スキルディレクトリ内の LICENSE.txt):読み取り専用で評価。再配布はしていません。
概要
anthropics/skills の pptx スキル:pptxgenjs でデッキを作成し(ファイルを壊す落とし穴のリスト付き)、ヘルパースクリプト(add_slide.py、clean.py、thumbnail.py)でスライド XML を展開・編集してデッキを編集し、markitdown で内容を読み取り、scripts/office/validate.py と LibreOffice で検証します。SKILL.md は約 3,100 語で、Python スクリプトと OOXML スキーマ付き。プロプライエタリライセンスで、読み取り専用で評価しました。
テスト方法
Mac テストマシン上で Codex CLI 0.166(gpt-6-astra、低推論)、実行ごとに新規の一時プロジェクトと一時 HOME/TMPDIR/キャッシュを使用、スキルをインストール(スキルあり群)、スキルなし(対照群)、またはスキルの中核要件をプロンプト末尾に付けた一文に圧縮(一文プロンプト群)、タスクごとに各群 2 実行、ネットワーク無効、/tmp への書き込みはブロック。プロンプトはスキル名に一切言及しません(以下で注記する表現を除く)。
3 つのタスク:5 スライドの 16:9 ピッチデッキを作成(全スライドにスピーカーノート、ネイティブで編集可能なチャート、本物の箇条書き、すべての要素がスライド内に収まり、LibreOffice で開ける)。team.pptx のスライド 2 のタイトルを変更し、その直後に 3 つの箇条書きを持つ 'Risks' スライドを挿入(他のスライド、表、スピーカーノートは維持)。デッキを変更せずにスライドタイトルと表をテキストファイルに抽出。両群とも pptxgenjs と python-pptx の同じオフラインコピーを使用。チェックは python-pptx と、私たちの側でオフライン実行する LibreOffice 変換を使用。計画 18 実行のうち 17 実行で実施:バッチが早期停止されたため(限界を参照)、一文プロンプト群は抽出タスクが 1 実行少なくなっています。
- ピッチデッキの作成 — pitch.pptx を作成:Falcon という架空のプロダクトのローンチ用、5 スライドの 16:9 デッキ。タイトルスライド、Problem スライド、Solution スライド、四半期売上の棒グラフ(Q1 12、Q2 18、Q3 27、Q4 35、単位 $k)付き Traction スライド、締めの Ask スライド。E…
- スライドの挿入とタイトル変更 — team.pptx のスライド 2 のタイトルを 'Revenue outlook' に変更し、その直後に 'Risks' というタイトルの新スライドを 3 つの箇条書き(供給遅延、採用、為替)とともに挿入。他のすべてのスライドとスピーカーノートは変更しない。結果を team.pptx…として保存
- アウトラインと表の抽出 — team.pptx から outline.txt(スライドタイトルを 1 行に 1 つ、順番どおり)と table.csv(results スライドの表、先頭はヘッダー行)を書き出す。team.pptx は変更しない。
採点はプログラム的(隠しテスト/仕込み問題の検出/制約チェック/該当する場合はレンダリング+OCR)で、実行ごとに 0〜5 点。スコアはどの LLM 判定者も決めていません。
結果
第 3 群に与えた一文プロンプト:"デッキを本物の PowerPoint オブジェクトとして構築する:最初に 16:9 レイアウトを設定し、ネイティブで編集可能なチャート(画像ではない)を使い、本物の箇条書き('•' 文字を直接入力しない)、notes API によるスピーカーノート、すべてのシェイプをスライド内に収め、PDF に変換して開けることを確認する。編集時は指示された部分だけを変更し、他のスライドとそのノートはそのままにし、作業ファイルを残さない。"
| タスク | 対照群スコア | 一文プロンプト | スキルあり | 対照群トークン | 一文プロンプトトークン | スキルありトークン | スキル読み込み |
|---|---|---|---|---|---|---|---|
| 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 |
平均スコア:スキルなし 4.99 vs スキルあり 5.0(差分 +0.01)。1 実行あたりのトークン:114k vs 162k(1.42 倍)。時間:67s vs 70s。一文プロンプト群:4.86(一文プロンプトに対するスキルの上乗せ:+0.14。一文プロンプト自身のスキルなしに対する上乗せ:-0.12)。一文プロンプトのトークンは 1 実行あたり 224k、つまりスキルのコストは一文プロンプトの 0.72 倍。
何が起きたか
- スコアに差はありません:対照群 4.99、一文 4.86、スキルあり 5.00。対照群はすでに正しいデッキを作成し(5 スライド、全スライドにノート、ネイティブチャート、直接入力の箇条書きなし、シェイプはスライド内、LibreOffice で開ける)、python-pptx でノートや表を失わずに編集できます。
- スキルはより多くのコストがかかりました:1 実行あたり 162k トークン(対照群 114k、1.4 倍)、一文版は 224k(2.0 倍)。主に作成タスクで増加(スキルは 185k、一文版は 325〜361k、対照群は 118〜176k)。
- 失敗は一文群で 1 件:編集後の team.pptx は python-pptx では開けるものの、LibreOffice で変換できません(当方でも 2 回再現)。エージェント自身も LibreOffice がクラッシュしたと報告しました。スキル群の 6 デッキはすべて変換でき、6 実行すべてで validate.py を実行しました。
- スキルは 6/6 実行で読み込まれ、6 回すべてで markitdown、validate.py、LibreOffice ラッパー(soffice.py)を使いました。対照群は LibreOffice を一度も呼びませんでした。一文群は 5 実行中 4 回が soffice を直接呼びました。
評価項目別スコア
| 評価項目 | スコア | 理由 |
|---|---|---|
| 出力品質 | 5.0 | スキルありの平均スコアは 5.00/5(プログラム的チェック。タスク別の表を参照)。 |
| スキルなしに対するリフト | 2.01 | スキルなしの 4.99 に対して +0.01 ポイント(タスクごとに n=2。約 1 ポイント未満の差はノイズ)。 |
| トリガー | 5.0 | スキルあり群 6/6 実行でスキルファイルが読み込まれました。 |
| 手順の移植性 | 4 | pptxgenjs、python-pptx、markitdown、LibreOffice がインストール済みであることを前提。Linux サンドボックス向け。 |
| 効率 | 3 | トークン 1.42 倍(1 実行あたり 162k vs 114k)、時間 1.04 倍(70s vs 67s)。 |
| 安全性と衛生 | 5 | 読んだスクリプト:soffice.py(LibreOffice ランチャー。ソケットがブロックされている場合にのみ Linux で小さな LD_PRELOAD シムをコンパイル)、thumbnail.py、add_slide.py、clean.py、バリデーター。ネットワークなし、認証情報へのアクセスなし。 |
このテストの限界
- バッチは 18 実行中 17 実行で停止:エージェント(主にスキル群と一文群)がデッキを PDF に変換する際、テスト PC で LibreOffice が繰り返しクラッシュし、ユーザーから停止を求められました。すべての結果は完了した実行によるものです。一文群の抽出実行が 1 つ欠けています。
- ルールチェック(構造、ノート、チャート、境界、開けるか)。スライドの見た目の品質は判定せず、スキル内のデザインガイダンス(カラーパレット、レイアウトのアイデア)は試していません。
- 小さなデッキ。5 スライドと 3 スライド。テンプレート駆動の編集、結合/分割、コメントはテストしていません。
- チェック内の変換は当方でオフライン実行。テスト PC 上でのエージェント自身による LibreOffice 使用がクラッシュの原因です。
- タスク・群ごとに n=2。約 1 ポイント未満の差はノイズです。
- ルールベースの採点はチェックが捉えられる範囲を測るもので、センスや、その結果が最善かどうかは判定できません。
セキュリティ
security.md を参照。スキャン:CRITICAL 0 / HIGH 1 / MEDIUM 6。判定:実行しても安全(ネットワーク無効のサンドボックス)。クリーンなスキャン結果はスキルの安全性を証明しません。
結論
小さなデッキでは、python-pptx を使う素の Codex でもすでに正しく有効なファイルを生成していたため、スキルの落とし穴集とバリデーターは約 40% のトークン増をもたらしただけで、スコアは上がりませんでした。そのバリデーターと変換ステップは、より大きなデッキやテンプレートベースのデッキで有用ですが、このテストでは対象外でした。スキル自身のワークフローが LibreOffice を呼び出す点には注意が必要で、一部のデスクトップでは不安定になることがあります。
トランスクリプト
実行ログ:pptx (Codex CLI, network off, per-run temp HOME/TMPDIR, one row per graded run.) 列:タスク、群-回、スコア(0-5)、トークン、秒、合格したチェック、エージェントが開いたスキルファイル。 t1-new control-1: スコア 4.92, トークン 117727, 秒 118.4, チェック 1/2, 開いたファイルなし t1-new control-2: スコア 5.0, トークン 176319, 秒 129.0, チェック 2/2, 開いたファイルなし t1-new oneliner-1: スコア 5.0, トークン 324776, 秒 128.1, チェック 2/2, 開いたファイルなし t1-new oneliner-2: スコア 5.0, トークン 360676, 秒 134.3, チェック 2/2, 開いたファイルなし t1-new treatment-1: スコア 5.0, トークン 183150, 秒 123.4, チェック 2/2, 開いたファイル pptx t1-new treatment-2: スコア 5.0, トークン 187890, 秒 110.7, チェック 2/2, 開いたファイル pptx t2-edit control-1: スコア 5.0, トークン 115865, 秒 43.4, チェック 2/2, 開いたファイルなし t2-edit control-2: スコア 5.0, トークン 113982, 秒 42.2, チェック 2/2, 開いたファイルなし t2-edit oneliner-1: スコア 4.31, トークン 147330, 秒 67.2, チェック 1/2, 開いたファイルなし
17 実行、3 成果物
サンプル出力
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]