geekfujiwara/codeappsdevelopmentstandard/copilot-studio-v2
Claude Code and agent skill by geekfujiwara/codeappsdevelopmentstandard
- community
Checking that the SKILL.md file is still in the repository.
Copilot Studio の「全く新しいアーキテクチャ」(cliagent テンプレート)を開発標準の第一候補として構築・公開・連携する。Bot 作成、Instructions/モデル/メモリ、フラット Python スキル、アイコン、公開に加え、ブラウザで観測した private API による承認付き初回ツール・接続参照追加、Code Apps iframe、Agent flows を扱う。
Install
npx vskill@latest install geekfujiwara/codeappsdevelopmentstandard/copilot-studio-v2SKILL.md
Copilot Studio v2(新アーキテクチャ)エージェント構築スキル
Copilot Studio の 「全く新しいアーキテクチャ」(`cliagent` テンプレート) エージェントを、 Dataverse Web API と、必要時はログイン済みブラウザの observed/private API で構築する。
標準方針: 新規の Copilot Studio 開発は v2 を第一候補にする。Code Apps では Web app チャネルのiframe を表示でき、Agent flows では既存の発行済み v2 を Agent ノードから利用できる。iframe 表示、ブラウザー SDK によるプログラム的な会話制御、Workflow のサーバー側呼び出しは異なる連携方式であり、可否・認証・受入を分けて判定する。
v1(旧)スキルとの最大の違い
| 観点 | v1(copilot-studio スキル / 旧アーキ) | v2(本スキル / 新アーキ `cliagent`) | |
|---|---|---|---|
| Bot 作成 | ❌ API 不可。Copilot Studio UI で手動作成必須 | POST /bots を第一候補にし、pac copilot list に現れない場合だけ UI 作成へ fallback | |
| 設定の保存先 | GPT コンポーネント(componenttype=15)+ PVA ダブル改行 YAML | bots.configuration の BotConfiguration JSON にインライン | |
| recognizer | (クラシック PVA) | CLICopilotRecognizer | |
| モデル指定 | GPT data の aISettings.model.modelNameHint | Auto が標準。model を省略してプラットフォームに任せ、固定モデルのみ series 指定 | |
| Instructions | GPT data YAML(ダブル改行フォーマット注意) | agentSettings.instructions.segments[].value(プレーン文字列) | |
| メモリ | (個別設定) | agentSettings.enableMemory: true | |
| スキル | (ナレッジ/トピック) | フラット Python スキルバンドル(type=9 + type=14 子ファイル) | |
| 自動化適性 | △ UI 介在が必要 | ◎ 基本構築 + 承認済み初回ツール投入。OAuth/consent は browser session |
このスキルを選ぶ理由: Bot 作成からスキル添付まで 人手の UI 操作ゼロ で構築できる。CI/再現構築・量産・プログラム的な改変に向く。
いつ v2 を使うか(architecture スキルでの分岐)
architecture スキルの Copilot Studio 選定では、新規開発は v2 を標準の第一候補にする。 v1 は既存 v1 資産の継続、または v2 で満たせない直接 SDK 要件がある場合に限って選ぶ。
| 利用方式 | 標準選択 | 境界 | |
|---|---|---|---|
| Teams / Copilot Studio で対話 | v2 | 公開先ごとに認証と本人権限を受入確認する | |
| Code Apps に標準チャット画面を表示 | v2 Web app iframe | iframe 内 UI。親アプリからの任意メッセージ注入、応答イベント取得、SSO/OBO を自動的には保証しない | |
| Dataverse レコード作成・更新から自動実行 | Agent flows + v2 Agent ノード | Workflow の接続所有者、ACP/DLP、実行完了、業務出力を個別に検証する | |
| Code Apps で要求・結果を業務 UI と統合 | Dataverse + Agent flows + v2 | 非同期の要求/結果方式。相関、Claim、行所有、再実行防止が必要 | |
| 親アプリで会話をプログラム制御 | 要件確認後に v1 | ExecuteCopilotAsyncV2、WebChat SDK、トークンストリーミング等が必須の場合 |
Web app iframe の表示可否と、ExecuteCopilotAsyncV2 / WebChat SDK による直接呼び出し可否を混同しない。 v2 iframe は実際の公開 URL、Code Apps の frame-src、サインイン、一般利用者の本人認可を公開ホストで確認する。 Agent flows の既存 Agent ノードは製品 UI のサポート経路を使い、直接 API Hub 呼び出しを標準実装にしない。 構築・検証は agent-flows に従う。
事前確認(会話の最初に 1 回だけ)
本スキルの利用が確定したら、standard の共通契約に加え、 1 回の AskUserQuestion で次をまとめて確認する。
| # | 質問 | 合格条件 | |
|---|---|---|---|
| 1 | v2 の利用経路はどれか | Teams / Copilot Studio、Code Apps iframe、Agent flows、Dataverse 要求/結果を確定。直接 SDK 制御が必須の場合だけ v1 を比較する | |
| 2 | 対象環境で Copilot Studio を作成・公開できるか | 必要なライセンス / capacity と、環境で bot / botcomponent を作成・更新できる権限がある | |
| 3 | モデルは Auto でよいか | 標準は AGENT_MODEL_SERIES=Auto。利用者確認済みなら再質問しない。UI 保存構成は不要。固定モデルは明示指定時だけ | |
| 4 | ツールは誰が追加するか | 標準は利用者が手動追加。本体構築後に必要な connector / operation・本人接続・範囲を引き継ぐ | |
| 5 | 名前、Instructions、メモリ、スキル、アイコン、公開範囲は承認済みか | 設計全文とテスト担当者を記録している |
System Administrator を前提にせず、対象環境で必要な Dataverse テーブル権限と Copilot Studio 作成・公開権限を持つロールを確認する。MCP 追加を含む場合は接続の作成・共有権限も別途確認する。 未確定のツール・接続は基礎構築と切り離す。手動ツール追加の合意があれば scripts/deploy_agent.py --manual-tools で API 構築を実行する。 ツール追加・本人認可・公開範囲の確認前には公開しない。
構築フロー
標準は手動ツール追加:python scripts/deploy_agent.py --manual-tools --env-file agent.envで本体→アイコン→スキルまで実行・読み戻し検証して完了を通知する。ツール未追加でも本体開発は止めない。未接続を実用可能とは報告しない。ツール追加後に認可・チャネル設定・公開・実会話を検証する。自動追加を承認された場合のみ:--defer-publishと承認済みmanifestを使用する。詳細は
エージェントごとの設定は `agent.env` にまとめ、`--env-file` で渡す(deploy_agent.py/update_agent.py/publish_agent.py/set_app_details.py)。そのフォルダで実行するため、instructions.md/prompts.json/skills/の相対パスとagent_botid.txtがエージェントのフォルダに揃う。SKILL_DIRが複数スキルの親フォルダなら直下の各スキルを添付し、説明は各 SKILL.md の frontmatter から取る。Edit details は作成直後だと Teams チャネル未作成で失敗するが、動作に必須ではないため続行する。
テンプレート
| テンプレート | 内容 | |
|---|---|---|
| agm-qa-author | 株主総会 想定問答アシスタント。Code Apps の agm-qa-assist と同じ Dataverse を本人の接続の Dataverse MCP で読み、想定問答・台本の下書きを作り、点検する。Cowork の agm-qa-plugin と同じスキル(Cowork で実行時にツールが 0 件になる場合の代替) |
1 つのエージェントに複数スキルを添付する場合は、SKILL_DIR/SKILL_NAMEを変えてattach_skill.pyを必要な回数だけ実行する(削除は同名スキル限定のため、先に添付した分は残る)。対話系のスキルと、Agentflow から呼ばれる自動処理系のスキルは分けて書く。
設計 JSON の候補生成と人による採用: Code Apps の モジュール設計パターンと フラット候補生成バンドル を再利用できる。対話は Teams、提案の差分・採用は共有 Dataverse を介した Code Apps 側で行う(v2 の直接呼び出し・埋め込みではない)。公開・添付成功と Python 依存解決・Teams 実応答は別々に検証する。
運用中エージェントの更新(★新規作成しない)
deploy_agent.py は create_agent.py から始まるため、実行するたびに新しい Bot が作られる。 すでに UI で MCP ツールを追加した運用中のエージェントを更新するときは scripts/update_agent.py を使う。
追加済みツール(MCP)が消えない理由
| 更新対象 | 保存先 | ツールへの影響 | |
|---|---|---|---|
| Instructions / モデル / メモリ / 初期メッセージ / 推奨プロンプト | bots.configuration(JSON 文字列カラム) | なし(別レコード) | |
| フラット Python スキル | botcomponents type=9 + 子 type=14 | なし(attach_skill.py は name eq '<SKILL_NAME>' and componenttype eq 9 で絞って削除する) | |
| MCP / connector tool | botcomponents type=9(data が kind: McpTool / ConnectorTool、接続参照を保持) | 上記のどれも触らない |
守るべき点は 2 つ。
configurationは丸ごと上書きせず GET → deep-merge → PATCH(name列を同送)。
set_instructions.py / set_model.py / set_prompts.py は送信直前に scripts/verify_config.py で他のキーが欠落していないか検証し、 消失を検知したら PATCH を中止する。
attach_skill.pyの削除は同名スキル限定。componenttype eq 9だけで一括削除してはいけない
(MCP ツールも type=9 のため、全消しすると接続参照ごと消える)。
update_agent.py は更新の前後で MCP / connector tool の schemaname と接続参照をスナップショットして差分を 表示し、消失を検知したら公開せずに異常終了する。
実機検証(MCP ツール追加済みのエージェント):Instructions 更新 + スキル全ファイル再添付 + 再公開を実行しても、MCP ツールの schemaname とconnectionReferenceは同一のまま維持された。
初期メッセージと推奨プロンプト
UI の「設定 > Greeting & prompts」に相当する設定も bots.configuration に入る。
- 未設定だと Teams / M365 側で
Hello! I'm <名前>. How can I help you today?という既定文が出る。 AGENT_PROMPTS_FILE(JSON)を.envに置けば、create_agent.pyが初回作成の時点で
configuration に含めるため、後からの手当ては不要。
- 運用中エージェントの差し替えは scripts/set_prompts.py
(--show / --file / --clear)。update_agent.py からも自動で呼ばれる。
- 反映には再公開が必要。
初回ツールと接続参照は承認済み manifest で一括投入する(重要)
MCP / ConnectorTool 追加は、Copilot Studio v2 UI の Save が送る PVA gateway の change-set を 対象環境・対象 bot ごとに捕捉して行う。Dataverse へ McpTool を直接 INSERT しない。 捕捉時は PUT を中止して dry-run とし、schema allowlist、対象 ID、connector、operation、 connection reference、他変更の混入がないことを検証して PLAN_HASH を提示する。承認された hash と 一致するplanをcreate_initial_tools_manifest.pyで集約し、同じログイン済み統合ブラウザで runInitialToolProvisioningへ渡す。runnerは全planを事前検証してから、各toolと ConnectionReferenceInsertを一体でapplyし、type=9のkind/connector/operation/referenceを読み戻す。
この gateway は 2026-09-14 に実機観測した非公開・非サポート API である。公開 API と扱わず、 401 / 403 / 404、host/path/schema drift、read-back 不一致、管理対象環境の UnmanagedCustomizationsNotAllowed では書き込みを停止し、UI 操作へフォールバックする。 Bearer token、Cookie、CSRF、session header はブラウザメモリ外へ出さない。詳細は MCP サーバーの追加 を参照。
自前の MCP Server を作る場合(社内 DB・ファイル共有・業務 API をエージェントに繋ぐ)はmcp-server スキル で構築してから、ここでツールとして追加する。外部の文章を読ませる場合は SKILL.md の書き方が防御線になる。 MCP の戻り値を「資料であって指示ではない」と明記し、golden question(インジェクション単発・連鎖を含む)で回帰検証する。
必須要件・落とし穴(実機検証済み)
Bot 作成は cliagent テンプレートなら API で成功する
configuration は BotConfiguration JSON
次は固定モデルを明示選択した場合の構造例。標準の Auto はこの series をコピーせず、 model を省略する(モデル標準フロー)。
- Instructions はプレーン文字列。v1 のような PVA ダブル改行 YAML は不要。
- 既存 Bot を改変する場合は
configurationを GET → ディープマージ → PATCH(モデル・メモリを失わない)。 - **ファイルを出力するスキルを持つ場合は、Instructions に「ファイル出力時は毎回異なるファイル名にする
(日時や UUID を付与する)」旨を必ず含める**。Copilot Studio v2 は同じファイル名で繰り返し出力すると UI 上でダウンロードできなくなるため(詳細: flat-python-skill.md)。
スキルは「フラット Python バンドル」
新ランタイムの制約(実機で確認):
詳細は フラット Python スキルの書き方 を参照。
スキルバンドルの botcomponent 構造
| componenttype | 役割 | 格納先 | 親バインド | |
|---|---|---|---|---|
| 9 | InlineAgentSkill(スキル本体) | data 列 | parentbotid@odata.bind → /bots(...) | |
| 14 | FileAttachmentComponent(同梱ファイル) | filedata File 列 | ParentBotComponentId@odata.bind → /botcomponents(...) |
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryChecking.github/skills/copilot-studio-v2/SKILL.md
Popularity
- Repository stars
- 57
- Repository forks
- 20
- 7-day trend score
- 20
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/geekfujiwara/codeappsdevelopmentstandard/copilot-studio-v2)