feat: initial public release (MAESTRO)

This commit is contained in:
oss-sync
2026-06-03 05:08:00 +00:00
commit f5c7666f6b
823 changed files with 184150 additions and 0 deletions
+206
View File
@@ -0,0 +1,206 @@
name: research
description: |
Web検索やファイル読み込みによる情報収集と、収集情報の分析・レポート作成。
複数ソースからの調査、比較分析、トレンド調査、文献サーベイに適する。
選ぶべき場合: タスクの主目的が「調べること」「情報を集めて整理すること」
選ぶべきでない場合: 既にデータがあり加工するだけ、Officeファイルの操作が主目的
triggers:
keywords: ["調べて", "調査", "リサーチ", "分析して", "比較して", "まとめて", "レポート"]
max_movements: 999
initial_movement: dig
movements:
- name: decompose
edit: false
persona: orchestrator
instruction: |
入力把握で決めた並列調査計画に従い、各テーマをサブタスクとして登録する。
手順:
1. 入力把握で立てた調査テーマを思い出す(ファイル読み込みは不要)
2. 各テーマに対して SpawnSubTask を呼び出す(2〜5 個程度、piece は "research-sub"
3. 全サブタスクの登録が完了したら WAIT_SUBTASKS に遷移する
instruction には「何を調べて output/result.md にどう書くか」を具体的に記述する
(概要・主要な特徴・数値や事例・まとめと考察 など、構成を明示)。
allowed_tools: [SpawnSubTask]
default_next: aggregate
rules:
- condition: 全サブタスクを SpawnSubTask で登録し終えた
next: WAIT_SUBTASKS
- condition: 全てのサブタスクを登録し終えた(SpawnSubTask不可の場合は自分で調査を完了した)
next: aggregate
- name: aggregate
edit: true
persona: analyst
instruction: |
各サブタスクの調査結果が subtasks/ ディレクトリに格納されている。
手順:
1. Glob で subtasks/*/result.md と subtasks/*/output/ を確認する
2. 各 result.md と追加成果物を Read で読み込む
3. 全結果を統合して output/report.md に最終レポートを作成する
- 各テーマの主要な知見を統合(矛盾・重複は整理)
- 比較・対照が必要なら表形式で整理
- 全体のまとめと考察を付ける
4. output/report.md を書き終えたら verify へ遷移する
allowed_tools: [Read, Glob, Grep, Write, Edit, SearchNotes, ReadNote, WriteNote, 'mcp__*']
default_next: verify
rules:
- condition: output/report.md に統合レポートを作成した
next: verify
- name: dig
edit: true
persona: researcher
instruction: |
## 最初のステップ: 入力把握と調査計画
情報収集に着手する前に、調査対象と目的を整理する:
1. Glob でワークスペース全体のファイル一覧を確認する(input/ だけでなくルート直下も含む)
2. 指示で言及されているファイルがあれば適切なツールで内容を把握する(カタログ参照、詳細は ReadToolDoc
3. 調査対象と目的を整理し、どこから情報を集めるか、何を分析するかを明確にする
4. 「今日のニュース」「最新動向」「直近」など時刻依存の調査依頼では、必ず最初のアクションを WebSearch にする
## 並列分解の判断
decompose を積極的に検討するケース:
- 複数の独立した調査対象がある(例: 3社の比較、複数技術の比較)
- 各調査が互いに依存せず、結果を最後に統合すればよい
- 全体を 1 回の dig → analyze で処理すると context が溢れるリスクがある
decompose を使わないケース:
- 単一テーマの調査
- 各ステップが前のステップの結果に依存する逐次的な調査
## 計画に従って情報を収集する
WebSearch、WebFetch、ファイル読み込み等で情報を集め、必ず Write で output/ にファイルとして書き出すこと。
テキストで回答するだけでは不十分。
## 検索の原則(必須)
- モデルの内部知識だけで情報を書かないこと。主張・事実・数値は必ず WebSearch/WebFetch で裏付けを取る
- output/ に既存ファイルがある場合でもその内容を鵜呑みにせず、検索で正確性を確認する
- ユーザーの追加質問への回答には必ず WebSearch で最新情報を改めて確認する。前回の調査結果に依存して検索を省略しない
## 一次情報へのアクセスと捏造禁止(厳守)
- YouTube 動画の内容を調査する場合は、必ず GetYouTubeTranscript で字幕を取得してから作業する
- 一次情報(動画字幕、論文本文、ページ本文等)に直接アクセスできなかった場合:
- Web 検索の断片的な情報から内容を推測・捏造してはならない
- アクセスできなかった旨を明記し、取得できた範囲の情報のみで成果物を作成する
- 推測部分は「推測」と明示する
- 二次情報(ブログ記事、要約サイト等)から得た情報は、一次情報ではないことを明記する
## 画像・ビジュアル素材の収集(必須)
調査中は画像・グラフ・図表を積極的に収集し、output/images/ に保存すること。
テキストだけの調査で終わらせない。ビジュアル素材がレポートの品質を大きく左右する。
収集すべきもの:
- 記事・ページ内のグラフ・チャート・比較表の画像
- 製品・サービスのスクリーンショットや公式画像
- データの可視化(統計グラフ、トレンド図等)
- 関連する図解・インフォグラフィック
収集した画像はレポートの Markdown から相対パスで参照する: `![説明](./images/ファイル名.png)`
## 終了 / 遷移方法
- **次の analyze へ**: `transition({next_step: "analyze"})`
- **並列分解 → decompose へ**: `transition({next_step: "decompose"})`
- **追加調査のため同じ dig を続行**: `transition({next_step: "dig"})`
- **対象が曖昧で確認が必要**: `complete({status: "needs_user_input", missing_info: "...", why_no_default: "..."})`
- **技術的失敗で打ち切り**: `complete({status: "aborted", abort_reason: "..."})`
allowed_tools: [Read, Write, Bash, Glob, Grep, WebSearch, WebFetch, BrowseWeb, DownloadFile, ReadImage, AnnotateImage, ReadPdf, PdfToImages, BatchReviewTextWithLLM, MergeReviewedResults, SearchPlaces, GetDirections, ReverseGeocode, GetYouTubeTranscript, SearchYouTube, SearchAmazon, TranscribeAudio, SearchKnowledge, ListNamespaces, ListDocuments, XSearch, XUserPosts, XPostDetail, XFetchCardMedia, SearchNotes, ReadNote, WriteNote, SearchMicrosoftLearn, FetchMicrosoftLearn, SearchMicrosoftLearnCache, RefreshMicrosoftLearnCache, 'mcp__*']
default_next: analyze
rules:
- condition: 2つ以上の独立した調査テーマがあり、並列分解が効率的と判断した
next: decompose
- condition: output/ に情報を書き出した
next: analyze
- condition: 追加調査が必要
next: dig
- name: analyze
edit: true
persona: analyst
instruction: |
収集した情報を分析し、調査レポートを output/ に作成する。
重要なポイント、トレンド、結論をまとめる。
必ず Write ツールで output/ にレポートファイルを書き出すこと。
前のステップから指摘事項がある場合は、それに対応すること。
## 検索の原則(必須)
- レポートに記載する事実・数値・主張は、dig で収集した検索結果に基づくこと
- 情報が不足している場合は、ここでも追加の WebSearch/WebFetch を行い裏付けを取る。モデルの内部知識だけで補完しない
- ユーザーの追加質問への回答には必ず WebSearch で最新情報を改めて確認する。前回の調査結果に依存して検索を省略しない
- 「これまでのレビュー指摘」「現在の変更状況」「変更差分」の付録がある場合は、そこに書かれた不足点から優先的に解消する。指摘事項は「問題点」「期待する修正」「合格基準」まで含めて渡されるので、各項目を漏れなく解消すること
## 画像の活用(必須)
output/images/ に画像が保存されている場合は、必ずレポートの該当箇所に埋め込む:
`![説明](./images/ファイル名.png)`
画像があるのにテキストだけのレポートにしないこと。
レポート作成中に追加で必要な図・グラフを見つけた場合も DownloadFile で収集して埋め込む。
allowed_tools: [Read, Write, Bash, Glob, Grep, WebSearch, WebFetch, BrowseWeb, DownloadFile, ReadImage, AnnotateImage, ReadPdf, PdfToImages, BatchReviewTextWithLLM, MergeReviewedResults, SearchPlaces, GetDirections, ReverseGeocode, GetYouTubeTranscript, SearchYouTube, SearchAmazon, TranscribeAudio, SearchKnowledge, ListNamespaces, ListDocuments, XSearch, XUserPosts, XPostDetail, XFetchCardMedia, SearchNotes, ReadNote, WriteNote, SearchMicrosoftLearn, FetchMicrosoftLearn, SearchMicrosoftLearnCache, RefreshMicrosoftLearnCache, 'mcp__*']
default_next: verify
rules:
- condition: output/ にレポートを書き出した
next: verify
- condition: 追加調査が必要
next: dig
- name: verify
edit: false
persona: reviewer
instruction: |
output/ のレポートを確認する。
確認手順:
1. まず Glob で output/ 内のファイル一覧を確認する
2. output/ にファイルが1つもなければ「不足がある」と判断し analyze に差し戻す
3. ファイルがあれば Read で内容を確認し、網羅性・正確性・分かりやすさをチェックする
4. 不足があれば、`transition({next_step: "analyze", summary: ...})` で差し戻す。summary は次の形式で書く:
[判定] needs_fix
## 問題点
- [ファイル名:行番号または項目名] 何が問題か
## 期待する修正
- 何をどう直すべきか
## 合格基準
- 再レビューで何を確認するか
## 次にやること
- 差し戻し先で最初に着手すべき具体的な作業
5. summary は抽象論で終えず、変更ファイル・不足点・期待する修正内容を必ず含める
6. 技術的正確性の再確認が必要な場合は、まず自分で WebSearch / WebFetch で簡易チェックする。深い追加調査が必要な場合は、確認すべき URL・検索語・論点を summary に具体的に書いて analyze に差し戻す
追加チェック(追加質問への回答):
- ユーザーの追加質問(前回タスクへの補足・深掘り)への回答が含まれる場合、その内容に WebSearch/WebFetch による検索の裏付けがあるか確認する。内部知識だけで回答している形跡がある場合は「追加質問への回答に検索根拠が不足」として analyze に差し戻す
追加チェック(画像):
- output/images/ に画像があるのにレポートに `![` が一つもない場合、
画像埋め込み漏れとして analyze に差し戻す
## 合格時のユーザーへの返答(complete ツール)
合格と判断したら、`complete({status: "success", result: ...})` を呼ぶ。
result はそのままユーザーに表示される最終回答。output/ のレポートを Read で読み、その内容をベースに整形する。
- 「output/xxx.md を確認してください」のようなファイル参照ではなく、内容そのものを回答として返すこと
- 【厳守】「✅ 完了」「レポートを作成しました」「確認しました」等のステータス表示・メタ説明・内部作業の報告は一切書かない。1行目からいきなり本題の内容を書き始めること
- 調査結果・発見・結論を会話調で分かりやすく伝える
- 表・リスト・見出しなど Markdown 書式を活用して読みやすくする
- 長大なレポートの場合は要点を構造化して提示し、詳細は省略してよい
- 補足や今後の検討事項があれば末尾に添える
## 終了方法のまとめ
- 合格: `complete({status: "success", result: "ユーザー向け最終回答"})`
- 修正必要: `transition({next_step: "analyze", summary: "差し戻し指摘"})` (上記形式で)
- 技術的失敗: `complete({status: "aborted", abort_reason: "..."})`
allowed_tools: [Read, Glob, Grep, WebSearch, WebFetch, ReadImage, AnnotateImage, ReadPdf, ReadExcel, ReadDocx, ReadPPTX, SearchNotes, ReadNote, SearchMicrosoftLearn, FetchMicrosoftLearn, SearchMicrosoftLearnCache, RefreshMicrosoftLearnCache]
default_next: COMPLETE
rules:
- condition: output/ にファイルがない、または内容に不足がある(追加質問への回答に検索根拠が不足している場合も含む)
next: analyze