| name | igapyon-miku-ai-assistant-builder |
| description | ベータ版。Microsoft 365 Copilot内の軽量なAgent BuilderまたはGoogle GeminiのGemに投入するデータを準備し、雑多な既存フォルダを二段階で配備用フォルダへ変換するスキル。Agent Builderを主対象とし、Gemにも対応する。第1段階でJSON / JSONLを1入力1XLSX候補、それ以外の同梱`miku-text-bundle`対応テキストをバンドル候補として確定し、必要に応じて人間の資料追加を求める。第2段階ではJSON / JSONLの明示mappingをレビューして固定し、確定条件から再実行可能なNode.js変換ジョブを作る。Agent Builder向けMarkdownをDOCX化し、GemではMarkdownのまま使うか同梱`miku-md2docx`でDOCX化するかを利用者が選ぶ。構成固定の内容更新は同じジョブを再実行し、前回条件を再検討する反復実行では新しい作業フォルダを作る。ファイル添付を利用できるライセンス、アカウント、管理者設定が前提。`igapyon-miku-ai-assistant-builder`または`miku-ai-assistant-builder`が明示されたとき、このスキルを使ったフォルダ変換、その再開、確定済み構成の内容更新、または前回条件を参照した再実行が依頼されたときに使用する。Copilot Studio固有のエージェント作成には使用しない。 |
Igapyon Miku AI Assistant Builder
Beta: 本スキル全体はベータ版であり、仕様と出力は今後の検証・調整によって変更される可能性がある。Microsoft 365 Copilot Agent Builderを主対象とし、Google Gemini Gemにも対応する。
実行環境
本スキルの実行にはNode.js 22以降が必須である。これは開発やビルドだけの要件ではなく、日時付き実行ディレクトリの作成と既定の変換バックエンドを含む、利用時の実行要件である。
同梱CLIの変換バックエンドとしてJava版を明示的に選択した場合も、スキル全体の実行にはNode.js 22以降を必要とする。Java版バックエンドには、これに加えてJava 17以降を必要とする。
開始確認ゲート
新規変換を始める前に、利用者の現在までの会話から次の2点を解決する。
- 配備先:
Microsoft 365 Copilot Agent BuilderまたはGoogle Gemini Gem Classic
- 自動処理の入力範囲: 入力元となる正確なフォルダと、その配下で対象にするサブフォルダまたは除外範囲
各値の根拠を次から一つに分類して記録する。
explicit: 利用者が今回または過去の会話で直接指定した値
quoted: 利用者が過去の指定、実行記録、または会話上の値を引用して再利用するよう示した値
inferred: 利用者が示した複数の事実から、競合なく一意に導ける値
delegated: 利用者が特に指定なし、おまかせ、または同等の委任を明示し、目的に合う狭い範囲で補完した値
explicit、quoted、inferred、またはdelegatedとして両方を解決できるなら、採用値と根拠を短く復唱して棚卸しへ進む。確認のためだけに回答待ちへ戻らない。inferredは、利用者が示した事実だけから一意に決まる場合に限る。現在の作業ディレクトリ、リポジトリルート、開いているファイル、添付ファイル、ファイル名、またはモデルの一般知識だけを根拠にしてはならない。
未解決、曖昧、複数候補、会話内の矛盾、または利用者の事実に裏付けられない推測がある項目だけを質問し、その回答を待って停止する。質問前は、未解決の入力フォルダを棚卸し、内容を読み取り、対象ファイルを選定し、出力フォルダや状態ファイルを作成し、同梱CLIを実行してはならない。無回答、曖昧な返答、話題の変更を委任とみなさない。
Gem Classicの場合は、Knowledge用Markdownをmarkdownのまま使うかdocxへ変換するかも同じ方法で解決する。未解決または曖昧なら、その項目だけを質問する。
開始確認が完了してから、同じディレクトリの index.json を読み、必要な参照資料を選ぶ。
Basic principle
基本として、次の流れを実現するAgent BuilderまたはGem向けの入力データを提供する。Agent Builderを主対象としつつ、対象サービスの仕様差に応じて同じ流れを使い分ける。
「利用者の質問」→「情報を探す・整理する」→「自然言語で回答する」
生成物は、利用者が管理するAgent BuilderまたはGemへの人手による配備を前提にする。このスキル自身はファイルのアップロード、エージェントやGemの共有、外部Web、公開リポジトリ、その他の外部サービスへの公開を行わない。
JSON / JSONLを1入力1XLSX候補とし、それ以外のmiku-text-bundle対応テキストを原則すべて自動処理対象にすることは、配備用Knowledgeファイルを準備する際の入力範囲を示す。登録成功やKnowledge一覧への表示は、配備後のAIアシスタントが全情報を常に検索・取得・参照できることや、回答へ必ず利用することを保証しない。利用者へこの違いを説明し、配備後は代表的な質問で確認するよう案内する。
Purpose
Microsoft 365 CopilotのAgent BuilderまたはGoogle GeminiのGem向け入力データを作成する。Agent Builderを主対象とする。
利用者の要望から新規に設計するだけでなく、文書、メモ、ソースコードなどが混在する既存フォルダを棚卸しし、選択したサービスへ設定しやすい配備用フォルダへ変換する。
ここでいう配備用フォルダは、対象サービスへ直接インポートする独自ファイル形式ではない。設定画面へコピーする入力値と、登録候補のKnowledgeファイルを人が確認・配置できる受け渡し形式を指す。
Agent Builder向けは、端末からの埋め込みファイルを利用できるMicrosoft 365 Copilotライセンスまたは従量課金環境を対象とする。Gem向けは、Knowledgeへのファイル追加を利用できるアカウント、プラン、管理者設定を対象とする。対象サービスごとに機能、上限、検証条件が異なるため、Agent BuilderとGemを同一仕様とはみなさない。
作業前に次の資料を読む。
Workflow
新規変換、同一実行の再開、確定済み変換ジョブによる内容更新、過去実行を参考にする反復実行を混同しない。新規変換では開始確認ゲートを最初に通し、対象をagent-builderまたはgemとして解決する。Gemの場合はKnowledge用Markdownをmarkdownのまま使うかdocxへ変換するかも解決し、根拠のない推測で選ばない。選択結果と根拠はwork/preparation-status.mdへ記録する。状態がawaiting-manual-inputなら記録済みの選択で第2段階として同じ実行ディレクトリを再開する。
利用者が前回と同じ条件での再実行を求めた場合は、指定された過去のwork/execution-record.mdを読む。前回値を現在の指定とみなさず、配備先、入力元、自動処理範囲、除外、目的、対象利用者、代表的な質問、出力基準を候補として復唱し、利用者の確認後に現在の入力と製品上限を再検証する。反復実行は必ず新規変換として新しい日時付き実行ディレクトリを作り、過去のmanual-input/、upload/、work/を自動コピーまたは再利用しない。新規変換と反復実行では次の第1段階だけを実行し、同じターンで第2段階へ進まない。
利用者がファイル構成、個数、basename、形式を変えず、確定済み原本と手動資料の内容だけを更新すると明示した場合は、同じ実行ディレクトリのwork/conversion-plan.jsonとwork/run-conversion.mjsを確認する。構成が計画と一致する場合だけランナーを再実行し、新しい実行ディレクトリを作らない。構成差がある場合は計画を手編集して迂回せず、新規変換を案内する。
第1段階: 自動入力の確定と準備待ち
- 開始確認ゲートで解決した対象サービスと自動処理の入力範囲、および各根拠を復唱する。その後、利用者の目的、想定利用者、代表的な質問、出力先を確認する。出力先の明示指定がなければ、確認済みの入力元を扱う作業リポジトリの
workplace/miku-ai-assistant-builder/YYYYMMDD-HHmm/を新規変換の既定出力先にする。スキルのインストール元を、現在位置だけを理由に出力先として使わない。GemではMarkdownとDOCXのどちらを使うかも解決する。必須項目は、利用者の事実から一意に解決できない限り質問前に仮定で記録しない。利用者が明示的に指定を委任した項目だけは、回答後に想定を明示して補完する。
- Agent Builderでは制限・設計上の注意、GemではGoogle Gemini Gemの基本事項を使い、ファイル追加機能を利用できる環境であることと適合性を確認する。
- 原本を変更せずに棚卸しする。入力元にある適格な
.jsonと.jsonlは、同梱miku-json2xlsxで1入力1XLSXにするJSON workbook候補へ分類する。その他の.md、.mjs、.jsなど、同梱miku-text-bundleが扱えるテキスト系ファイルは原則すべて自動バンドル候補とする。同じJSON / JSONLを両方へ重複させない。内容の関連性、旧版、重複の推定だけを理由に自動除外しない。.envと.env.*、秘密情報、出力先、明示的に指定された除外、ランタイムが技術的に扱えないファイルだけを理由付きで除外または確認待ちにする。
- DOCX、PPTX、XLSX、PDF、画像などの非テキスト資料を自動でテキスト化せず、
miku-text-bundleの自動処理対象に含めない。Knowledge sourceとして必要なら、人が準備してmanual-input/へ置く候補として記録する。この時点ではバンドルを生成しない。
- 人間が追加資料の原本を置く空の
manual-input/、JSON mappingを置く空のwork/json2xlsx-mappings/、再開に必要なwork/preparation-status.md、次回の反復実行で参照するwork/execution-record.mdを作る。状態はawaiting-manual-inputとし、入力元、出力先、JSON workbook候補、テキストバンドル候補、理由付き除外、確認待ち、実行条件、警告、再開方法を記録する。反復実行の場合は参照した前回記録のパスも記録する。
- 作成済み
manual-input/の解決済みフルパスと出力先基準の相対パスを利用者へ示し、そこへ手動追加資料を置くよう案内する。~、未展開の環境変数、現在位置に依存する相対パスだけで案内しない。追加可能な形式、原本を変更しない規則、利用者の実画面で確認したファイル上限も説明する。Agent Builderでは人力資料は最大19件とする。追加資料がない場合も明示的な確認を求める。
- 人間による追加資料の準備待ちとして必ず停止する。
miku-json2xlsxのinspection、mapping作成、XLSX変換、miku-text-bundleのdry-runと本実行、番号付きMarkdownのコピーまたはDOCX変換、upload/の構成、agent-builder-input.mdまたはgem-input.mdの生成はまだ行わない。
第2段階: 再開と最終化
- 利用者が指定した出力先の
work/preparation-status.mdを読み、状態がawaiting-manual-inputであること、対象サービス、Gemの出力形式、自動処理対象、実行条件が現在の入力に一致することを確認する。状態ファイルがない、完了済み、または内容が不整合なら新規変換として推測せず停止する。
manual-input/を読み取り専用として棚卸しする。対象サービスでの対応形式、サイズ、読取可否、機密性、パスワード保護、同名衝突を確認し、未確認事項はitems-to-confirm.mdへ記録する。Markdownは選択形式にかかわらず1件として数える。
- 各JSON / JSONLについて同梱
miku-json2xlsx inspect --result-format jsonを実行し、mapping v1案、未採用path、型、sheet、column、rootとchildの関係、出力basename、materialな仮定を人へ示す。人の承認後にmappingをwork/json2xlsx-mappings/へ保存し、validate-mapping --result-format jsonで検証する。承認前にXLSXを生成しない。
- Agent BuilderではAgent Builderのファイル枠配分に従い、手動資料数
M、JSON workbook数J、テキストバンドル枠A = 20 - M - J、適格なテキスト入力数N、目標テキスト出力数T = min(N, A)を求める。N > 0なら合計文字数CとmaxChars = max(120000, ceil(C / T))を求める。GemではAgent Builderの20件を流用せず、実画面で確認した上限から枠を求める。上限を確認できない場合は停止する。
N > 0なら、同梱miku-text-bundleランタイムが--mode knowledge-sourceをサポートすることを確認する。.jsonと.jsonlを除外し、計算した--max-charsでdry-runして推定Knowledgeファイル数がAを超える間は値を増やす。N = 0かつJ > 0ならテキストバンドルを実行しない。条件、テキスト入力パス集合、JSON入力とmapping SHA-256、手動資料、固定出力basenameを確定済み構成の再実行可能な変換ジョブに従ってwork/conversion-plan.jsonへ保存し、同梱ヘルパーでwork/run-conversion.mjsを生成する。
- CLIを個別に本実行せず、生成した
work/run-conversion.mjsを実行する。ランナーはJSON入力集合とmapping SHA-256を検証し、各JSON / JSONLを一時領域で1つのXLSXへ変換する。必要ならmiku-text-bundleのdry-runと本実行も行い、Agent BuilderまたはGemのdocx選択ではwork/knowledge-markdown/とmanual-input/のMarkdownを一対一でmiku-md2docxへ渡す。Gemのmarkdown選択ではmiku-md2docxを実行せずMarkdownをコピーする。さらに準備済み資料のコピー、構成検証、成功後のupload/一括更新を行う。初回と将来の内容更新で同じランナーを使う。
- ランナーが出力した
work/knowledge-markdown/、、、を確認する。JSON workbookのwarning code、XLSXの開封可否、READMEデータ辞書、sheetとcolumn、入力との対応も確認する。未対応または未確認の形式は計画へ含めず、ランナー失敗時は既存の正常なを維持して停止する。
Output
通常は、Agent BuilderまたはGemの各入力欄へコピーできる単一のMarkdownを返す。
既存フォルダを変換する場合は、元フォルダとは別の出力先に次の配備用フォルダを作る。利用者が出力先を明示しなければ、作業リポジトリのworkplace/を基準にする。
workplace/
└── miku-ai-assistant-builder/
└── YYYYMMDD-HHmm/
├── manual-input/
│ ├── additional-guide.md
│ ├── official-document.docx
│ ├── reference.pptx
│ └── data.xlsx
├── upload/
│ ├── events.xlsx
│ ├── knowledge-001.md または knowledge-001.docx
│ ├── knowledge-002.md または knowledge-002.docx
│ ├── additional-guide.md または additional-guide.docx
│ ├── official-document.docx
│ ├── reference.pptx
│ └── data.xlsx
├── work/
│ ├── json2xlsx-mappings/
│ │ └── events.mapping.json
│ ├── knowledge-markdown/
│ │ ├── knowledge-001.md
│ │ └── knowledge-002.md
│ ├── knowledge-index.md
│ ├── conversion-plan.json
│ ├── run-conversion.mjs
│ ├── conversion-history.jsonl
│ ├── preparation-status.md
│ └── execution-record.md
├── agent-builder-input.md または gem-input.md
└── items-to-confirm.md
-
新規変換の実行IDは、ディレクトリ作成直前にnode <skill-directory>/scripts/create-run-directory.mjs --base-directory <基準ディレクトリ>を実行し、そのJSON出力のrunIdとoutputDirectoryをそのまま使う。<skill-directory>は実際に読み込んだこのスキルの絶対パスへ置き換える。スクリプトはOSのローカル時刻からYYYYMMDD-HHmmを作り、同じ分のディレクトリが既に存在する場合は上書きせず、-02、-03の連番を付ける。実行に失敗した場合は時刻を推測せず停止する。
-
第1段階で実行ディレクトリを一度だけ作る。第2段階では新しい日時ディレクトリを作らず、指定された既存のwork/preparation-status.mdと同じ実行ディレクトリを再利用する。
-
前回記録を参照する反復実行では、前回の実行ディレクトリを再利用せず、新しい実行IDのディレクトリを作る。
-
temp1/など別の基準ディレクトリが利用者から指定された場合も、その下をmiku-ai-assistant-builder/YYYYMMDD-HHmm/の形にする。
-
manual-input/: 人間が追加する原本を置く。第2段階でも変更、上書き、削除しない。
-
upload/: JSON / JSONLから生成したXLSX、選択形式の自動生成資料、手動Markdown、検証済みの準備済み資料を、最終登録候補としてフラットに置く。
-
work/json2xlsx-mappings/: 人がレビューしCLIで検証したmapping v1を置く。登録しない。確定済み変換ジョブではSHA-256を固定する。
-
work/knowledge-markdown/knowledge-NNN.md: miku-text-bundle --mode knowledge-sourceが生成した中間成果物。GemのMarkdown選択では最終候補へコピーし、それ以外ではDOCXの変換元にする。
-
work/knowledge-index.md: 実行設定、元ファイル対応、スキップ、警告、marker、旧生成物候補を記録する。DOCX化・登録ともに行わない。
-
work/preparation-status.md: awaiting-manual-inputまたはfinalizedの状態と、別セッションで再開するための情報を記録する。登録しない。
-
work/execution-record.md: 今回の指定内容、実行条件、実績、検証結果を記録し、次回の反復実行で参照する。登録しない。
-
work/conversion-plan.json: 第2段階で確定した入力パス集合、個数、形式、basename、CLI引数を記録する機械可読な変換契約。登録しない。
-
work/run-conversion.mjs: 第2段階の初回変換と、構成固定の内容更新に使うNode.jsランナー。登録しない。
-
work/conversion-history.jsonl: ランナーの成功履歴。登録しない。
-
agent-builder-input.md: Agent BuilderのConfigure画面への転記用。Knowledge sourceへ登録しない。
-
gem-input.md: Gem画面への転記用。Name、Description、Custom instructions、Knowledge、Items to confirmを含める。Knowledgeへ登録しない。
-
items-to-confirm.md: 版の衝突、正確性、機密性、権限、未対応形式など、人の判断が必要な事項を記載する。
Constraints
- Microsoft 365 Copilot内のAgent Builderを主対象にし、Google GeminiのGemにも対応する。本スキル全体をベータ版として扱う。
- Agent Builder向けは端末からの埋め込みファイルを利用できるライセンスまたは従量課金環境だけを対象にする。
- GemはKnowledgeへのファイル追加を利用できるアカウント、プラン、管理者設定だけを対象にする。対象サービスごとに機能、上限、検証条件が異なるため、Agent BuilderとGemを同一仕様とはみなさない。
- Copilot Studio 固有の機能を前提にしない。
- 生成物を利用者が管理するAgent BuilderまたはGemへ人が配備する前提とする。
- ファイルのアップロード、共有設定、外部Webや公開リポジトリへの公開を行わない。
- 利用者がAgent BuilderまたはGemへ設定する前に、対象テナントまたはアカウント、共有範囲、閲覧権限を確認事項として示す。
- 入力元のフォルダやファイルを上書き、移動、削除しない。
- 新規変換では日時付き実行ディレクトリを新規作成し、既存ディレクトリを黙って再利用または上書きしない。
- 実行IDの年月日時分を会話コンテキスト、現在日付だけの情報、UTCへの暗黙変換、またはモデルの推測から生成しない。同梱スクリプトが返した値だけを使う。
- 過去の
execution-record.mdを参照する反復実行でも新しい日時付き実行ディレクトリを作り、前回の成果物や手動原本を自動コピーしない。
- 第2段階の再開時は、状態ファイルが属する既存の日時付き実行ディレクトリを使い、新しい日時付き実行ディレクトリへ分岐しない。
- 開始確認ゲートが完了するまで入力フォルダを棚卸しせず、自動処理対象を選定しない。
manual-input/内の人間管理原本を上書き、移動、削除しない。
- 第1段階と第2段階を同じターンで続けて実行しない。
- 第1段階では
miku-json2xlsxのinspection、mapping作成、XLSX変換とmiku-text-bundleを実行せず、手動資料数が確定した第2段階でmappingレビューと自動生成枠計算を行う。
- Agent Builderでは人力資料を最大19件とし、自動生成Knowledge sourceを最低1件確保する。
- Agent Builderでは最終
upload/の登録候補を20件以内にする。Gemでは実画面で確認した上限を使う。
- Agent BuilderのNameが30文字を超える場合は完成扱いにせず、無断で切り詰めずに利用者へ短縮を求める。Gemにはこの固定上限を流用しない。
preparation-status.mdが再開可能な状態であることを確認せず第2段階を実行しない。
- 第2段階の初回変換では、確定条件から
work/conversion-plan.jsonとwork/run-conversion.mjsを作り、CLIを個別に本実行せず同じランナーを実行する。
- 状態が
finalizedの実行ディレクトリは、構成固定の内容更新としてwork/run-conversion.mjsを再実行できる。ランナーが構成差を報告した場合は計画を手編集して続行しない。
miku-text-bundleのhandoffモード出力をKnowledge sourcesへ登録しない。
- 管理用の
<prefix>-index.mdをKnowledge sourcesへ登録しない。
- Agent BuilderとGemのDOCX選択では中間Markdownを最終登録物として扱わない。GemのMarkdown選択では検証後のコピーだけを最終登録候補にする。
upload/にサブディレクトリ、管理用ファイル、未対応または未確認の形式を置かない。
- 同じ出力basenameを黙って上書きまたは自動改名しない。
- DOCX間の相対リンクや読み込み順に依存しない。
agent-builder-input.mdまたはgem-input.mdのKnowledge一覧にupload/、ローカル絶対パス、その他の配備元ディレクトリを記載しない。
- Instructionsには、登録済みKnowledge sourcesを回答根拠として優先し、根拠が見つからない事項を推測で補わない方針を含める。
- 配備用Knowledgeファイルの準備・登録と、配備後の検索・取得・回答を区別する。登録済みKnowledge内の全情報が常に参照されるとは保証しない。
- マシン固有の絶対パスをKnowledge sourcesへ含めない。元ファイルはリポジトリルート基準の相対パスで識別する。