Power Platform のテナント / 環境ガバナンスを確認・設定する管理スキル。開発着手前の環境チェック(既定環境ではないか・マネージド環境・Dataverse / Code Apps / MCP の有効化・セキュリティ ロール・管理 API アクセス)と DLP 事前チェックを非対話スクリプトで実行し、必要ならマネージド環境設定・カスタムコネクタの DLP 分類・ACP(Advanced connector policies)の許可コネクタを dry-run 付きで変更する。Microsoft 第一者サービスだけを許可する ACP 推奨プロファイルの適用と、クラシック DLP から ACP への移行も支援する。クラシック DLP と ACP は既定の混成モードで併用され、より制限の厳しい方が適用されるため両方を確認する。オプションとして、既定環境 / 個人開発者環境 / 市民開発者環境 / AI CoE セントラル / AI CoE 内製開発の 5 グループからなるテナント全体の環境戦略を、読み取り専用スキャン → 移行プラン(admin-migration-plan.md)→ レビュー → 適用の順で策定・実行する。設定は環境グループのルールで行うのを原則とし、グループ ルールに無い項目(既定環境ルーティング・Dataverse for Teams 禁止・Dataverse 検索・グループへの割り当て・Copilot クレジット配分)だけをテナント設定・環境個別設定・Dataverse の組織設定で補う。IP 制限・テナント分離・監査ログ・ライセンス配分などの管理設定は references にまとめる。
sharepoint
AAD アプリ登録を行わずに、Microsoft Graph API 経由で SharePoint を包括的に操作する。リスト(ドキュメントライブラリ)・列・リスト項目の作成、ファイルアップロード、ページ作成、M365 グループ経由のサイト作成に対応。Microsoft Graph PowerShell の well-known パブリッククライアントで委任認証し、auth_helper.py のキャッシュを再利用する。
インストール方法を見る含まれるファイル(10)
- SKILL.md9.0 KB
- references/.env.example326 B
- references/sample-columns.json870 B
- references/troubleshooting.md10.2 KB
- scripts/_graph_common.py2.1 KB
- scripts/create_list_item.py2.2 KB
- scripts/create_list.py5.1 KB
- scripts/create_page.py3.0 KB
- scripts/create_site.py3.8 KB
- scripts/upload_file.py2.7 KB
SKILL.md(原文)
インストールする前に、エージェントに与えられる指示の中身を確認できます。
SharePoint スキル(Graph API・AAD アプリ登録不要)
Microsoft Graph API で SharePoint を操作する。新規の Entra アプリ登録を行わない。 組織によっては 一般ユーザーにアプリ登録権限が無いことが多く、そのハードルを避けるため、Microsoft 製の well-known パブリッククライアント(Microsoft Graph PowerShell)への委任同意だけで完結させる。
対応する操作
| 操作 | スクリプト | Graph API |
|---|---|---|
| リスト(ドキュメントライブラリ)・列の作成 | scripts/create_list.py | POST /sites/{id}/lists, POST /sites/{id}/lists/{id}/columns |
| リスト項目(行)の登録 | scripts/create_list_item.py | POST /sites/{id}/lists/{id}/items |
| ファイルアップロード(≤250MB) | scripts/upload_file.py | PUT /sites/{id}/drive/root:/{path}:/content |
| サイトページの作成・公開 | scripts/create_page.py | POST /sites/{id}/pages, POST .../pages/{id}/microsoft.graph.sitePage/publish |
| サイト作成(M365 グループ連携チームサイト・間接) | scripts/create_site.py | POST /groups → GET /groups/{id}/sites/root |
サイトの更新・削除、グループ非連携のコミュニケーションサイト作成は Graph v1.0 に汎用 API が無く未対応。 詳細・回避策は references/troubleshooting.md を参照。
前提
- standard スキル の
auth_helper.pyが使えること(.envにTENANT_ID設定済み) - 対象 SharePoint サイトの URL(例:
https://{tenant}.sharepoint.com/sites/{site}) - 書き込み権限を持つアカウントでサインインできること(
Sites.ReadWrite.All等の委任スコープは Admin 同意が必要な場合がある。管理者アカウントでの初回同意を推奨)
なぜ既定の認証クライアントでは失敗するか
auth_helper.py の既定クライアント(Azure CLI 互換)には SharePoint 書き込み系スコープ
(Sites.ReadWrite.All 等)が事前同意されていないため、書き込み系操作(POST/PUT)が
403 Forbidden になる(読み取り専用の GET は通ることが多く紛らわしい)。
新しい Entra アプリを登録すれば権限を自由に設計できるが、組織によってはアプリ登録自体が
一般ユーザーに許可されていないことが多い。そこで、Microsoft が既に multi-tenant で
公開・運用している Microsoft Graph PowerShell のクライアント ID
(14d82eec-204b-4c2f-b7e8-296a70dab67e、全スクリプトの既定値)を使う。これは対象テナントに
新規アプリを登録する必要がなく、初回のみそのクライアントへの委任スコープ同意(管理者同意が
必要な場合あり)を行うだけで済む。
Work IQ のような一部の Microsoft 製 API は、これでも
AADSTS65002(第一者アプリ同士の 事前承認が必要)で拒否される。 これは認証方式の問題ではなく、API 提供元が個別に許可した 第一者クライアントしか受け付けない仕様のため、well-known クライアント ID を変えても解決しない。 SharePoint / Graph の一般的なリソースにはこの制限は無いため本スキルの方式が使える (詳細は references/troubleshooting.md 参照)。
手順
Step 1: リスト(ドキュメントライブラリ)と列を作成する
列を作りたい場合は Microsoft Graph columnDefinition
形式の JSON 配列を用意する(references/sample-columns.json 参照)。
列名を決める際の注意(重要): SharePoint の非表示システム列と displayName が衝突する名前
(Description / Version / Title / Name / Type 等)は使わない。衝突すると Graph が
内部名を Xxx0 のように自動リネームし、冪等性チェックが効かず実行のたびに重複作成される。
SkillDescription のように接頭辞/接尾辞を付けて回避する。URL を保存する列は hyperlinkOrPicture
型ではなく text 型を使う(後述の理由により hyperlinkOrPicture は本スキルの検証環境で
一貫して 400 になった)。
# 確認のみ
python .github/skills/sharepoint/scripts/create_list.py `
--site-url "https://{tenant}.sharepoint.com/sites/{site}" --list-name "SkillCatalog" --columns "path/to/columns.json"
# 実際に作成
python .github/skills/sharepoint/scripts/create_list.py `
--site-url "https://{tenant}.sharepoint.com/sites/{site}" --list-name "SkillCatalog" --columns "path/to/columns.json" --apply
既存のリスト・列はスキップするため再実行しても安全(冪等)。
Step 2: リストに項目を登録する
注意:
create_list_item.pyはドキュメントライブラリ(--template documentLibrary)には使えない (Graph がPOST .../itemsを拒否する。実機で確認済み。references/troubleshooting.md #7 参照)。 表形式データを行として管理したい場合はcreate_list.py --template genericListで汎用リストを作成すること。
python .github/skills/sharepoint/scripts/create_list_item.py `
--site-url "https://{tenant}.sharepoint.com/sites/{site}" --list-name "MyGenericList" `
--fields "path/to/fields.json"
--fields は PowerShell の引用符ネストで壊れやすいため、JSON はファイルに書いて渡すことを推奨する
(例: {"Title": "Widget", "Color": "Purple"})。列名は create_list.py で作成した内部名(name)を使う。
Step 3: ファイルをアップロードする
python .github/skills/sharepoint/scripts/upload_file.py `
--site-url "https://{tenant}.sharepoint.com/sites/{site}" `
--local-path "./skill-image.png" --remote-path "SkillCatalog/skill-image.png"
既定ドキュメントライブラリ(サイトの drive = 通常 "Documents")を起点にした相対パスを指定する。
250MB を超えるファイルは分割アップロードセッションが必要で本スキル未対応。
Step 4: ページを作成する
python .github/skills/sharepoint/scripts/create_page.py `
--site-url "https://{tenant}.sharepoint.com/sites/{site}" `
--page-name "skill-catalog.aspx" --title "スキルカタログ" --html "<p>紹介文</p>" --publish
--publish を付けると作成直後に公開する。
Step 5(間接的・制約あり): サイトを作成する
Graph v1.0 に「新規 SharePoint サイトを直接作成する」汎用 API は無い。M365 グループを作成し、 その副作用としてプロビジョニングされる連携チームサイトを取得する方式を使う。
# 確認のみ
python .github/skills/sharepoint/scripts/create_site.py --display-name "Skill Catalog" --mail-nickname skillcatalogpoc
# 実際に作成(テナントに新しい M365 グループが追加されるため実行前に必ずユーザーに確認する)
python .github/skills/sharepoint/scripts/create_site.py --display-name "Skill Catalog" --mail-nickname skillcatalogpoc --apply
サイト作成はテナントのディレクトリに新しい M365 グループを追加する操作。 他の操作(リスト・ ファイル・ページ)よりも影響範囲が大きいため、
--apply実行前に必ずユーザーに確認すること。
参照
- references/troubleshooting.md — 異常系(403 / 400 / 列名衝突 / AADSTS65002 / サイト更新・削除の未対応)
- references/.env.example
- references/sample-columns.json — 列定義サンプル
- standard スキル —
auth_helper.pyの認証パターン
レビュー
まだレビューはありません。使ってみた感想をお寄せください。
同じリポジトリのスキル
概要と使いどころ
Copilot Studio 新 UI の Agent flows / Workflows を構築・公開・検証する。Dataverse レコード作成/更新トリガーから既存の発行済み Copilot Studio v2 を Agent ノードで呼ぶ標準経路、Code Apps との非同期要求/結果連携、および手動 Start + inline Agent の API ライフサイクル検証を扱う。
株主総会の想定問答を、IR 抜粋(決算短信・説明資料・招集通知など)を根拠に下書きし、利用者の確認後に Dataverse の想定問答テーブルへ「下書き」として登録するスキル。 Use when ユーザーが「配当について想定問答を作って」「この論点の想定問答を 3 件追加して」「招集通知から想定問答を作って」「想定問答を登録して」と依頼したとき。 Dataverse MCP コネクタ(describe / read_query / search_data / create_record / update_record)を使用する。削除・テーブル変更のツールは使わない。
株主総会の想定問答を点検し、根拠の IR 抜粋に無い数値・存在しない根拠 ID・回答者や注意事項の抜け・趣旨の重複・下書きのまま残っているものを一覧にするスキル(書き込みはしない)。 Use when ユーザーが「想定問答を点検して」「根拠の無い数値が無いか確認して」「下書きの想定問答を一覧にして」と依頼したとき。 Dataverse MCP コネクタ(describe / read_query / search_data)を使用する。書き込み・削除のツールは使わない。
株主総会の質疑応答のリハーサル台本(議長・株主・回答役員の読み上げ原稿)を、承認済みの想定問答から作り、Dataverse のリハーサル台本テーブルへ登録するスキル。 Use when ユーザーが「リハーサルの台本を作って」「QA-001〜QA-010 で読み上げ原稿を作って」「番号を言わない株主も入れた台本を作って」と依頼したとき。 Dataverse MCP コネクタ(describe / read_query / search_data / create_record / update_record)を使用する。削除・テーブル変更のツールは使わない。
AI Builder の AI プロンプト(GPT Dynamic Prompt)を Dataverse API で作成し、Copilot Studio エージェントにツール(アクション)として追加する。Power Automate フローとの統合パターンも含む。