feat: initial public release (MAESTRO)
This commit is contained in:
@@ -0,0 +1,192 @@
|
||||
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
|
||||
Reference in New Issue
Block a user