maestro/pieces/office-process.yaml
clade 7049a874f3 feat: initial public release (MAESTRO v0.1.0)
Open-source release of MAESTRO, an agent orchestration platform that runs
LLM-driven tasks through sandboxed tools, with a web UI. Apache-2.0.
See README.md and docs/ (getting-started, configuration, architecture).
2026-06-03 04:01:14 +00:00

120 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: office-process
description: |
Excel, Word, PowerPoint, PDF ファイルの読み取り・編集・変換・文書生成。
売上集計、議事録作成、スライド内容の抽出、PDF 読み取りなどに適する。
選ぶべき場合: 入力または出力が Office/PDF 形式のファイル
選ぶべきでない場合: CSV/JSONなどのプレーンデータ処理、Web調査が主目的
triggers:
keywords: ["Excel", "エクセル", "スプレッドシート", "PowerPoint", "パワポ", "スライド", "Word", "ワード", "文書作成", "PDF", "pdf", "xlsx", "pptx", "docx", "xls", "集計", "売上", "議事録", "報告書", "表計算"]
max_movements: 999
initial_movement: process
movements:
- name: process
edit: true
persona: document-specialist
instruction: |
## 最初のステップ: ファイルの把握と前処理
加工に着手する前に、まずファイルを確認し前処理を行う:
1. Glob でワークスペース全体のファイル一覧を確認する(`**/*.xlsx`, `**/*.docx`, `**/*.pptx`, `**/*.pdf`。input/ だけでなくルート直下も含む)
2. ファイル種別ごとの読み取り戦略は ReadToolDoc({ name: "ReadPdf" }) などで確認
## ファイルサイズに応じた前処理
**Excel (.xlsx)**:
- 小〜中規模 → ReadExcel で直接読む
- 巨大・複数シート → SplitExcelSheets でシート別ファイル + manifest を生成し、必要なシートだけ Read する
**Word (.docx)**:
- 短〜中規模 → ReadDocx で直接読む
- 長文・章構成あり → SplitDocxSections で見出し単位に分割し、関連セクションだけ Read する
**PowerPoint (.pptx)**:
- ReadPPTX で各スライドのテキスト・表・スピーカーノートを取得
**PDF**:
- まず ReadPdf で読み取りを試みる
- テキストが抽出できた場合 → そのまま加工に進む
- 全ページが空テキスト(スキャン PDFの場合 → PdfToImages でページ画像化し、ReadImage で内容を確認するReadImage は VLM 対応 worker でのみ利用可能)
## Office ファイルの加工方針
Excel (.xlsx) の編集:
- python3 + openpyxl で編集できるBash で `python3 -c "..."` または `python3 << 'EOF'`
- 元ファイルを直接上書き保存してよい。必要なら output/ にコピーも置く
- 「書き込みツールがない」と判断して ASK しないこと
Word / PowerPoint / PDF の生成:
- python3 + python-docx / python-pptx / reportlab 等で生成できる場合は Bash で実行
- 困難な場合は Markdown で代替し、変換は後工程に委ねる旨を明記する
テキスト系の成果物:
- Write で output/ にファイルを書き出す
- 出力形式やファイル名が未指定でも ASK せず、妥当なデフォルトで進める
テキストで回答するだけでは不十分。必ずファイルを生成・編集すること。
前のステップから指摘事項がある場合は、それに対応すること。
「これまでのレビュー指摘」「現在の変更状況」「変更差分」の付録がある場合は、そこに書かれた不足点から優先的に解消すること。
指摘事項は「問題点」「期待する修正」「合格基準」まで含めて渡される。各項目を漏れなく解消すること。
## 終了 / 遷移方法
- **次の verify へ**: `transition({next_step: "verify", summary: "加工内容のサマリ"})`
- **追加情報が必要で同じ process を続行**: `transition({next_step: "process", summary: "..."})`
- **対象が特定できずユーザー確認が必要**: `complete({status: "needs_user_input", missing_info: "...", why_no_default: "..."})`
- **読み取り不能・対応外フォーマット等の技術的失敗**: `complete({status: "aborted", abort_reason: "..."})`
allowed_tools: [Read, Write, Bash, Glob, Grep, ReadExcel, ReadDocx, ReadPdf, ReadPPTX, SplitExcelSheets, SplitDocxSections, PdfToImages, ReadImage, WebSearch, WebFetch, DownloadFile, SQLite, TranscribeAudio, SearchKnowledge, ListNamespaces, ListDocuments, ReadToolDoc, 'mcp__*']
default_next: verify
rules:
- condition: output/ に成果物を書き出した(または既存ファイルを編集した)
next: verify
- condition: 追加情報が必要
next: process
- name: verify
edit: false
persona: reviewer
instruction: |
output/ の成果物を確認する。
確認手順:
1. まず Glob で output/ 内のファイル一覧を確認する(既存 Office ファイルの編集の場合はそのファイルも対象)
2. 成果物が1つもなければ「修正が必要」と判断し process に差し戻す
3. 成果物があれば適切なツールReadPdf / ReadExcel / ReadDocx / ReadPPTX / Read 等)で内容を確認し、指示通りか・品質は十分かをチェックする
4. 不足や誤りがあれば、`transition({next_step: "process", summary: ...})` で差し戻す。summary は次の形式で書く:
[判定] needs_fix
## 問題点
- [ファイル名:行番号またはシート名・スライド番号など] 何が問題か
## 期待する修正
- 何をどう直すべきか
## 合格基準
- 再レビューで何を確認するか
## 次にやること
- process で最初に着手すべき具体的な修正
5. summary は抽象論で終えず、変更ファイル・不足点・期待する修正内容を必ず含める
6. 外部仕様や一次情報の確認が必要でも ASK しないこと。process は WebSearch / WebFetch を使えるので、確認すべき論点と修正方針を summary に具体的に書いて差し戻すこと
## チェックシート確認
GetChecklist でチェックシートが存在する場合、全アイテムが完了done/failed/skippedしていることを確認する。
remaining が 0 でないまま完了してはならない。
## 合格時のユーザーへの返答complete ツール)
output/ の内容で合格と判断したら、`complete({status: "success", result: ...})` を呼ぶ。
result はそのままユーザーに表示される最終回答。output/ のファイルを適切なツールで読み、その内容をベースに整形する。
- 「output/xxx.xlsx を確認してください」のようなファイル参照ではなく、内容そのものを回答として返すこと
- 【厳守】「✅ 完了」「成果物を作成しました」「確認しました」等のステータス表示・メタ説明・内部作業の報告は一切書かない。1行目からいきなり本題の内容を書き始めること
- 成果物の内容を会話調で分かりやすく伝える
- 表・リスト・見出しなど Markdown 書式を活用して読みやすくする
- 長大な成果物の場合は要点を構造化して提示し、詳細は省略してよい
- 補足や注意点があれば末尾に添える
## 終了方法のまとめ
- 合格: `complete({status: "success", result: "ユーザー向け最終回答"})`
- 修正必要: `transition({next_step: "process", summary: "差し戻し指摘"})` (上記形式で)
- 技術的失敗: `complete({status: "aborted", abort_reason: "..."})`
allowed_tools: [Read, Glob, Grep, ReadPdf, ReadImage, ReadExcel, ReadDocx, ReadPPTX, ReadToolDoc]
default_next: COMPLETE
rules:
- condition: 成果物がない、または内容に不足・誤りがある
next: process