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 でのみ利用可能) **Outlook メール (.msg)**: - ReadMsg で件名・差出人・宛先・本文を取得。添付は input/ に保存される - 保存された添付は ReadPdf / ReadExcel / ReadImage など種別ごとのツールで開く ## 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, ReadMsg, 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, ReadMsg, ReadToolDoc] default_next: COMPLETE rules: - condition: 成果物がない、または内容に不足・誤りがある next: process