maestro/pieces/slide.yaml
2026-06-03 05:08:00 +00:00

193 lines
7.8 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

name: slide
description: |
pptxgenjs を使って、PowerPoint で再編集可能なクオリティの高い .pptx を生成する。
プレゼン資料、LT 資料、講演スライド、提案資料、報告スライドをゼロから組み立てる場合に選ぶ。
選ぶべき場合: ゼロからスライド (.pptx) を作る
選ぶべきでない場合: 既存 .pptx の解析・編集 (→ office-process)、文書作成 (→ general)
triggers:
keywords:
- スライド
- slide
- プレゼン
- presentation
- 講演資料
- LT資料
- ライトニングトーク
- 資料作成
- パワポ
- powerpoint
- pptx
- 提案資料
- 報告書スライド
max_movements: 999
initial_movement: process
movements:
- name: process
edit: true
persona: slide-designer
instruction: |
## 最初のステップ: 入力把握と構成立案
1. Glob でワークスペース全体 (input/ + ルート直下) のファイル一覧を確認する
2. ユーザー指示で言及されている素材 (PDF / Word / 画像 / テキスト) を Read する
3. 外部画像が必要なら DownloadFile で input/ に保存してから使う
4. スライド構成 (タイトル / 目次 / 本編 / まとめ、8〜20 枚目安) を立てる
## テーマ選択 (SetTheme で 1 度だけ呼ぶ)
タスクの雰囲気から preset を選び、必要なら overrides で色やフォントを上書きする。
- `corporate-blue` : 営業・社内提案・株主向け
- `minimal-mono` : 既定。汎用・技術発表
- `vibrant` : LT・勉強会
- `academic` : 学会・論文発表
- `dark` : デモ・製品ローンチ
- `warm-paper` : クリエイティブ系・教育
例:
SetTheme({ preset: "corporate-blue" })
SetTheme({ preset: "minimal-mono", overrides: { primary: "#1A5490", heading_font: "Yu Gothic UI" } })
## スライド組み立て (AddSlide を順に呼ぶ)
使えるレイアウト: title / section / bullets / two-column / image-right /
image-left / image-full / table / chart / quote / closing / custom
推奨パターン:
- 1 枚目: layout="title"
- 2 枚目: layout="bullets" (目次) または section
- 本編: 内容に応じて選択
* 単純な箇条書き → bullets
* 比較 → two-column
* 数値データ → chart (bar/line/pie/doughnut/area/scatter)
* 一覧表 → table
* 画像が主役 → image-full / image-right / image-left
* 章の区切り → section
* 引用 → quote
- 最後: layout="closing"
- notes フィールドにスピーカーノートを入れる (推奨)
- 同じ layout を 5 枚以上連続させない (単調になる)
## 自由配置 (custom layout)
テンプレに収まらないスライドは custom で elements 配列を直接渡す:
AddSlide({
layout: "custom",
content: { elements: [
{ type:"text", text:"...", x:1, y:1, w:8, h:0.8, options:{font_size:28, bold:true} },
{ type:"shape", shape:"roundRect", x:1, y:3, w:4, h:2, options:{fill:"#5EE2FF"} },
{ type:"image", path:"input/foo.png", x:6, y:3, w:6, h:3 }
] }
})
座標は inch 単位、安全領域は x=0.5, y=0.5, w=12.33, h=6.5。
## 完了
最後に必ず BuildPptx を呼ぶ:
BuildPptx({ output: "output/slides.pptx" })
## 注意
- `output/.slides.json` は内部状態ファイル。Write / Edit で直接編集しないこと
- 全枚やり直す場合のみ ResetSlides() を呼ぶ
- PDF が必要な場合: ユーザーに PowerPoint / Keynote / LibreOffice で開いて Export してもらう。
このツールは PDF 出力に非対応
## 終了 / 遷移方法
- **次の verify へ**: `transition({next_step: "verify", summary: "生成したファイル一覧"})`
- **追加情報が必要で同じ process を続行**: `transition({next_step: "process"})`
- **題材・構成が曖昧で確認が必要**: `complete({status: "needs_user_input", missing_info: "...", why_no_default: "..."})`
- **技術的失敗 (pptxgenjs エラー等)**: `complete({status: "aborted", abort_reason: "..."})`
allowed_tools:
- Read
- Write
- Edit
- Glob
- Grep
- SetTheme
- AddSlide
- BuildPptx
- ResetSlides
- WebSearch
- WebFetch
- DownloadFile
- ReadImage
- ReadPdf
- ReadDocx
- ReadExcel
- ReadPPTX
- SearchKnowledge
- ListDocuments
- ListNamespaces
- ReadToolDoc
- 'mcp__*'
default_next: verify
rules:
- condition: SetTheme + AddSlide × N + BuildPptx を実行し output/slides.pptx を生成済み
next: verify
- condition: 追加情報が必要
next: process
- name: verify
edit: false
persona: reviewer
instruction: |
output/ の成果物を確認する。
確認手順:
1. Glob で output/ 内のファイル一覧を取得
2. output/slides.pptx が存在し、ファイルサイズ > 0 か確認
3. output/.slides.json を Read して以下をチェック:
- スライド枚数が指示通り (極端な過不足、空スライドがないか)
- 1 枚目が layout="title"
- 最後が layout="closing" (または妥当な締めスライド)
- 同じ layout の連続が 5 枚以上ないか
- chart レイアウトの data.categories / data.series が空でないか
- 画像参照パス (image-* / custom の image elements) が input/ または output/ に実在するか
- notes (スピーカーノート) が主要スライドに付いているか
4. .pptx 本体はバイナリなので存在確認のみ (内容は .slides.json で検証)
## チェックシート確認
GetChecklist でチェックシートが存在する場合、全アイテムが完了 (done/failed/skipped)
していることを確認する。remaining が 0 でないまま完了してはならない。
## 差し戻し時の transition.summary
不足や誤りがあれば `transition({next_step: "process", summary: ...})` で差し戻す。summary は次の形式:
[判定] needs_fix
## 問題点
- [ファイル名] 何が問題か
## 期待する修正
- 何をどう直すべきか
## 合格基準
- 再レビューで何を確認するか
## 次にやること
- process で最初に着手すべき具体的な修正
## 合格時のユーザーへの返答 (complete ツール)
output/ の内容で合格と判断したら、`complete({status: "success", result: ...})` を呼ぶ。
result はそのままユーザーに表示される最終回答。
- 【厳守】「✅ 完了」「成果物を作成しました」等のメタ説明は書かない。1 行目から本題
- 生成したファイル (output/slides.pptx) を明記
- 使ったテーマ・スライド枚数を明記
- スライド構成 (タイトル + 章立て / 主要な論点) を箇条書きで伝える
## 終了方法のまとめ
- 合格: `complete({status: "success", result: "ユーザー向け最終回答"})`
- 修正必要: `transition({next_step: "process", summary: "差し戻し指摘"})` (上記形式で)
- 技術的失敗: `complete({status: "aborted", abort_reason: "..."})`
allowed_tools:
- Read
- Glob
- Grep
- ReadToolDoc
default_next: COMPLETE
rules:
- condition: 成果物が不足または内容に誤りがある
next: process