g-resentation は何をしますか?
「PPTを作る」を、質問から納品までの完全な生産フローに変えます。名前の由来は grill me in presentation:まずあなたが曖昧なことを言えなくなるまで問い詰めてから、着手します。
本スキルはオーケストレーションのみを行います:要件を明確にし、構造を決定し、ルートを選択し、適切な制作スキルに作業を委譲し、最後に検収します。自身ではページを描画しません。
初回使用時は python3 "<SKILL_DIR>/scripts/doctor.py" を実行してください。不足しているものと次に何をすべきかを表示します。完全なセットアップ手順は QUICKSTART.md を参照してください。
境界
- 使用する場合:内容がまだ確定しておらず、ゼロからプレゼン資料を作成する必要がある場合。
- 使用しない場合:既にページごとのアウトラインがあり、それを単にレイアウトしたいだけ、または美化、単一ページの修正、フォーマット変換のみが必要な場合——直接制作スキルを呼び出してください。
- トリガーの優先順位:本スキルが先にルートを選択し、その後制作スキルを呼び出します。制作スキル自身も「プレゼンテーションを生成できます」と主張する可能性がありますが、ステップ0をスキップさせないでください。
プロジェクト構造
1つの作業につき1つのフォルダ decks/<slug>/、ファイル名は固定で、後続の各ステップはファイル名のみを認識します:
decks/<slug>/
├── brief.md 要件定義(ステップ0の成果物)
├── outline.md ページ原稿(P01、P02…)
├── assets/
│ ├── sources/ 事実確認用の一次資料
│ └── media/ 実際にページに使用する画像、ロゴ、スクリーンショット
├── out/ 成果物
└── versions/ 版管理
小規模な作業では assets/ と versions/ は作成しなくても構いません。
スクリプト
3つのスクリプトは確定的な処理のみを行い、判断を代替しません。標準ライブラリのみを使用し、Python 3.10+ であれば追加パッケージは不要です。
<SKILL_DIR> は本スキルが配置されているディレクトリの絶対パスです。実行前に自身で置き換えてください。以下のコマンドは macOS / Linux / Git Bash で共通ですが、PowerShell の場合は "$S/xxx.py" を "$S\xxx.py" に書き換えてください。
S="<SKILL_DIR>/scripts"
python3 "$S/new_deck.py" q4-review --title "Q4 振り返り" # プロジェクトフォルダと2つの空テーブルを作成
python3 "$S/new_deck.py" weekly-sync --small # 小規模作業用
python3 "$S/check_outline.py" decks/q4-review # ページ番号の連続性、6フィールド、凍結ベースラインとの比較
python3 "$S/snapshot.py" decks/q4-review outline # 版を残す、自動で v01、v02… とインクリメント
Windows では python3 がストアアプリのプレースホルダになっている可能性があります。最初に python3 -V で確認し、ダメなら python または py -3 を試してください。すべてのスクリプトは利用可能な任意のインタプリタを受け入れます。
check_outline.py の終了コードが0以外の場合は、先に修正してから次に進んでください。凍結後にもう一度実行すると、versions/v01-outline/ とのページ番号の差分がリストアップされます。これは「P07を変更する」という要求を番号のみで処理するためのセーフティネットです。
外部依存(オプション、必要に応じて手動インストール)
本スキルはオーケストレーション層であり、制作ツールをバンドルしません。以下の4つは選択したルートに応じて必要になり、不足している場合はダウングレードされます:
| 依存 | どのルートで使用 | インストールされていない場合の対処 |
|---|---|---|
frontend-slides | HTML プレゼンテーション | 自身で単一ファイルのHTMLを作成するか、以下の2つのルートに切り替える |
guizang-ppt-skill | HTML プレゼンテーションの別スタイル | frontend-slides で代用する |
ppt-master | 編集可能なPPTX | HTML または画像出力にフォールバックし、ページ上に「PPTX未生成」と明記する |
imagegen | 全ページ画像出力 | HTML をスクリーンショットしてPNGをエクスポートする |
インストール方法はいずれも npx skills add <owner/repo> です。詳細は各リポジトリを参照してください。依存関係が不足している場合は、ユーザーにどのルートが不足し、何に影響するかを正直に伝え、成果物が出せると偽らないでください。
ppt-master には非標準ライブラリの依存関係(python-pptx、PyYAML、skia-pathops、uharfbuzz 等)があります。他人のインタプリタパスをハードコードせず、まず検出してください:
PY=$(command -v python3 || command -v python)
"$PY" -c "import pptx, yaml, pathops, uharfbuzz" 2>/dev/null \
|| echo "依存関係が不足しています:ユーザーにそのPython環境で pip install -r <PPT_MASTER_DIR>/requirements.txt を実行するよう依頼してください"
通過後、その完全性チェック "$PY" "<PPT_MASTER_DIR>/scripts/attribution_guard.py" を実行します。非ゼロの場合は停止し、修正せずにスキップしないでください。
素材と事実
「現在の」内容については、記憶に頼らずに記述してください。aihot スキルがインストールされている場合は、それを使用して最新の動向を取得します。これは読み取り専用の公開APIであり、Keyは不要です:
curl -sL "https://aihot.virxact.com/api/v1/items?mode=selected&window=7d&q=<キーワード>&limit=10"
curl -sL "https://aihot.virxact.com/api/v1/hot-topics"
mode=selectedは厳選プールです。qクエリで空が返ってきた場合はmode=allで再試行し、「厳選されていません」と明記してください。- 取得した生のレスポンスは
assets/sources/に保存し、後で事実確認に使用します。納品ファイルには含めないでください。 - フッターには第三者の一次出典のみを記載してください(発表元、レポート名、日付)。ニュースサイトの要約をそのまま転記したり、そのリンクを引用として使用したりしないでください。
- 個人および非商用利用は許可されています。顧客向けの商用納品、外部への課金、またはバルク再配布の場合は、まずその利用規約に従って許可を取得してください。デフォルトで使用可能と見なさないでください。
- スキルがインストールされていないかデータ取得に失敗した場合は、公開検索にフォールバックするか、ユーザーに資料を提供してもらい、データの時点を明記してください。
フロー
1. 作業規模の判定
判定基準は1つだけです:この作業を間違えた場合、やり直せるかどうか。
対外向け顧客、正式なレビュー、アーカイブや配布が必要なもの、部門間の納品 → 大規模;内部の週次ミーティング、知っている人だけの小規模な場、いつでもやり直せるもの → 小規模。
判定後、1文でユーザーに伝えます:「この作業は大規模として処理します」または「小規模です。フォームに記入してください」。ユーザーは判定を変更できます。その後、次に進みます。
2. 要件のヒアリング(ゲート)
- 小規模:
assets/brief-template.mdをユーザーに記入してもらいます。不足項目があれば、その不足分だけ質問し、代わりに推測しないでください。 - 大規模:1度に1つの質問をします。最初に内容、次に対象読者の4次元、最後に形態について質問します。質問方法とトークスクリプトは
references/step0.mdを参照してください。
規模に関わらず、質問後まず3文で要約します:「これは誰に向けて、何をしてもらうため、見た後に何を覚えていてほしいのか。」ユーザーが確認してから brief.md を書き込みます。
3. ページ原稿(ゲート)
references/step0.md の7フィールドに従って outline.md を記述します。各ページに番号を付け、P01から順に並べます。タイトルは番号の行に記述し、残りの6項目はその下に配置します。記述時には references/prompts.md の P1 ページ原稿 を使用し、[ ] をすべて brief.md の実際の内容に置き換えます。記述後、check_outline.py を実行します。ページ番号が連続していない、タイトルやフィールドが欠落している場合は、完了とは見なされません。
確認後凍結します:直ちに snapshot.py <deck> outline を実行してベースラインを保存します。ページ数と番号はその後変更してはいけません。ページの追加・削除にはユーザーの承認が必要であり、並べ替えが発生した場合は常に「旧P07 → 新P05」のように報告してください。以降の「○ページ目を変更」は番号のみで認識します。
4. ルート選択 + 3ページのサンプル(ゲート)
まず推測してから確認します:briefに基づいて1つのルートを推測し、その理由を説明してユーザーに却下させる機会を与えます。直接「どのタイプがいいですか」と尋ねないでください。判断基準と呼び出し方法は references/paths.md を参照してください。
サンプルは最も難しい3ページを選ばなければなりません:表紙、最も情報量の多いページ、チャートやフローが最も複雑なページ。実際の成果物(操作可能なHTML、閲覧可能なPNG、開けるPPTX)を提供し、スクリーンショットは提供しないでください。方向性が確認できてから本格的に出力します。3つのルートのプロンプト(P3 / P4 / P6)にはこのサンプル作成の要件が含まれているため、別途記述する必要はありません。
5. 制作
ルートに応じて対応するスキルを呼び出し、対応するプロンプトを起動します:
| ルート | 使用するプロンプト | スキル |
|---|---|---|
| ウェブプレゼンテーション | P3 | frontend-slides または guizang-ppt-skill |
| 画像出力 | P4、必要に応じてP5 | imagegen;P5は ppt-master |
| 編集可能なPPTX | P6 | ppt-master |
参考画像がある場合やビジュアルへの要求が高い場合は、プロンプトの前に P2 スタイル分解 を追加します。参考画像がない場合はスキップし、スタイルは制作スキルのデフォルトに従います。
すべてのプロンプト内の [ ] は brief.md の実際の内容で置き換えます。1つでも残ったまま送信しないでください。
10ページごとにバッチ出力し、出力が完了するたびに「P11–P20 完了」と報告します。リズムを崩さず、特定のページがどうしても作成できない場合にのみ停止して質問します。
ppt-master を使用する前に、インタプリタが必要なパッケージをインポートできるか確認します。インポートできない場合は、ユーザーに自身で requirements.txt をインストールするよう依頼し、他人の仮想環境パスをハードコードしないでください:
PY=$(command -v python3 || command -v python)
"$PY" -c "import pptx, yaml, pathops, uharfbuzz" || echo "依存関係が不足しています。上記「外部依存」のセクションを参照してください"
6. 検収 + 版管理
references/checklist.md の4つのカテゴリに従って、項目ごとに確認します。ウェブ版は必ず内蔵ブラウザで実際に開き、ページめくり、ズーム、オフライン状態をテストします。いずれかの項目が不合格の場合は、P7 単ページ修正 を使用し、ページ番号とスクリーンショットを添えて、一度に1ページのみ修正します。複数ページで同じ問題がある場合は、範囲を統一して説明した後、全体を再チェックします。
納品前に snapshot.py <deck> final を実行して版を保存します。
7. 納品説明
1文で明確に説明します:どのファイルから開くか、必要な実行条件、既知の制限事項。
ハードルール
- 各チェックポイントでは具体的な質問のみ行います(「この3ページの方向性は合っていますか。どこが違いますか」)、「いかがでしょうか」のような漠然とした質問はしません。
- 事実、数字、ケーススタディを補って作成しません。資料に矛盾や欠落がある場合は停止して質問し、推測しません。
- 要求を満たせない場合は、制限事項と代替案を明確に伝え、黙ってダウングレードしません。
- 同じ問題が2ラウンド続けて改善されない場合は、まず原因を調査し、生成を繰り返し続けません。
- 全フローを通じて、サンプルと最終チェックの2回のみ停止します。途中でページごとに確認することはありません。