winmd-api-search
Windowsデスクトップ APIを検索・調査するスキルです。カメラ、ファイルアクセス、通知、UIコントロール、AI/ML、センサー、ネットワークなどのプラットフォーム機能を必要とする実装時に活用します。目的に合った APIを自動で発見し、メソッド・プロパティ・イベント・列挙値などの完全な型情報を取得します。
description の原文を見る
Find and explore Windows desktop APIs. Use when building features that need platform capabilities — camera, file access, notifications, UI controls, AI/ML, sensors, networking, etc. Discovers the right API for a task and retrieves full type details (methods, properties, events, enumeration values).
SKILL.md 本文
WinMD API Search
このスキルは、任意の機能に対して適切な Windows API を見つけ、その完全な詳細を取得するのに役立ちます。以下のすべての WinMD メタデータのローカルキャッシュを検索します:
- Windows Platform SDK — すべての
Windows.*WinRT API (常に利用可能、復元不要) - WinAppSDK / WinUI — キャッシュジェネレータのベースラインとしてバンドル (常に利用可能、復元不要)
- NuGet パッケージ —
.winmdファイルを含む復元されたプロジェクト内の任意の追加パッケージ - プロジェクト出力 WinMD — ビルド出力として
.winmdを生成するクラスライブラリ (C++/WinRT、C#)
復元やビルドなしのクリーンクローン時でも、Platform SDK + WinAppSDK の完全なカバレッジが得られます。
このスキルを使用する場合
- ユーザーが機能を構築したいとき、その機能を提供する API を見つける必要がある
- ユーザーが「X をどうやるのか?」と尋ねる場合 (X がカメラ、ファイル、通知、センサー、AI など のプラットフォーム機能を含む)
- コードを書く前に、型の正確なメソッド、プロパティ、イベント、または列挙値が必要
- UI またはシステムタスク用にどのコントロール、クラス、またはインターフェースを使用するかが不明確
前提条件
- .NET SDK 8.0 以降 — キャッシュジェネレータのビルドに必要。dotnet.microsoft.com からインストールしてください (利用できない場合)。
キャッシュセットアップ (初回使用前に必須)
すべてのクエリおよび検索コマンドは、ローカル JSON キャッシュから読み込みます。任意のクエリを実行する前に、キャッシュを生成する必要があります。
# リポジトリ内のすべてのプロジェクト (初回実行時に推奨)
.\.github\skills\winmd-api-search\scripts\Update-WinMdCache.ps1
# 単一プロジェクト
.\.github\skills\winmd-api-search\scripts\Update-WinMdCache.ps1 -ProjectDir <project-folder>
ベースラインカバレッジ (Platform SDK + WinAppSDK) にはプロジェクトの復元やビルドは不要です。追加の NuGet パッケージの場合、プロジェクトは dotnet restore (生成される project.assets.json) または packages.config ファイルが必要です。
キャッシュは Generated Files\winmd-cache\ に格納され、パッケージ+バージョンごとに重複排除されます。
インデックスされるもの
| ソース | 利用可能な時期 |
|---|---|
| Windows Platform SDK | 常に (ローカル SDK インストールから読み込む) |
| WinAppSDK (最新) | 常に (キャッシュジェネレータにベースラインとしてバンドル) |
| WinAppSDK Runtime | システムにインストールされている場合 (Get-AppxPackage で検出) |
| プロジェクト NuGet パッケージ | dotnet restore 後または packages.config で |
プロジェクト出力 .winmd | プロジェクトビルド後 (WinMD を生成するクラスライブラリ) |
注: このキャッシュディレクトリは
.gitignoreに含まれるべき — 生成ファイルであり、ソースではありません。
使い方
状況に合わせたパスを選択:
発見 — 「どの API を使うべきかわからない」
ユーザーが独自の言葉で機能を説明します。適切な API を見つける必要があります。
0. キャッシュが存在することを確認
キャッシュがまだ生成されていない場合、先に Update-WinMdCache.ps1 を実行してください — 上の キャッシュセットアップ を参照。
1. ユーザー言語 → 検索キーワードに翻訳
ユーザーの日常言語をプログラミング用語にマッピング。複数のバリエーションを試す:
| ユーザーが言う | 試すべき検索キーワード (順序) |
|---|---|
| 「写真を撮る」 | camera, capture, photo, MediaCapture |
| 「ディスクから読み込む」 | file open, picker, FileOpen, StorageFile |
| 「何が入っているか説明する」 | image description, Vision, Recognition |
| 「ポップアップを表示する」 | dialog, flyout, popup, ContentDialog |
| 「ドラッグアンドドロップ」 | drag, drop, DragDrop |
| 「設定を保存する」 | settings, ApplicationData, LocalSettings |
簡単な日常用語から始めてください。結果が弱い、または無関係な場合は、より技術的なバリエーションを試してください。
2. 検索を実行
.\.github\skills\winmd-api-search\scripts\Invoke-WinMdQuery.ps1 -Action search -Query "<keyword>"
これは上位マッチングタイプを持つランク付きネームスペースと JSON ファイルパス を返します。
結果が 低いスコア (60 未満) または無関係 の場合、オンラインドキュメント検索にフォールバック:
- Web 検索を使用して Microsoft Learn で適切な API を見つけます。例:
site:learn.microsoft.com/uwp/api <capability keywords>(Windows.*API の場合)site:learn.microsoft.com/windows/windows-app-sdk/api/winrt <capability keywords>(Microsoft.*WinAppSDK API の場合)
- ドキュメントページを読んで、ユーザーの要件に合う型を特定します。
- 型名がわかったら、戻ってきて
-Action membersまたは-Action enumsを使用して正確なローカル署名を取得します。
3. JSON を読んで適切な API を選択
上位結果のパスにあるファイルを読みます。JSON にはそのネームスペース内のすべての型が含まれます — 完全なメンバー、署名、パラメータ、戻り型、列挙値。
読んでユーザーの要件に合う型とメンバーを決定します。
4. 公式ドキュメントで背景を調べる
キャッシュには署名のみが含まれます — 説明や使用法ガイダンスはありません。説明、例、備考については、Microsoft Learn で型を検索:
| ネームスペース プレフィックス | ドキュメント ベース URL |
|---|---|
Windows.* | https://learn.microsoft.com/uwp/api/{fully.qualified.typename} |
Microsoft.* (WinAppSDK) | https://learn.microsoft.com/windows/windows-app-sdk/api/winrt/{fully.qualified.typename} |
例: Microsoft.UI.Xaml.Controls.NavigationView は以下にマップ:
https://learn.microsoft.com/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.navigationview
5. API 知識を使用して回答またはコードを記述
ルックアップ — 「API を知っています、詳細を表示してください」
型またはネームスペース名を既に知っている (または疑っている)。直接実行:
# 既知の型のすべてのメンバーを取得
.\.github\skills\winmd-api-search\scripts\Invoke-WinMdQuery.ps1 -Action members -TypeName "Microsoft.UI.Xaml.Controls.NavigationView"
# 列挙値を取得
.\.github\skills\winmd-api-search\scripts\Invoke-WinMdQuery.ps1 -Action enums -TypeName "Microsoft.UI.Xaml.Visibility"
# ネームスペース内のすべての型をリスト
.\.github\skills\winmd-api-search\scripts\Invoke-WinMdQuery.ps1 -Action types -Namespace "Microsoft.UI.Xaml.Controls"
# ネームスペースを参照
.\.github\skills\winmd-api-search\scripts\Invoke-WinMdQuery.ps1 -Action namespaces -Filter "Microsoft.UI"
-Action members が表示する以上の完全な詳細が必要な場合は、-Action search を使用して JSON ファイルパスを取得してから、JSON ファイルを直接読みます。
その他のコマンド
# キャッシュされたプロジェクトをリスト
.\.github\skills\winmd-api-search\scripts\Invoke-WinMdQuery.ps1 -Action projects
# プロジェクトのパッケージをリスト
.\.github\skills\winmd-api-search\scripts\Invoke-WinMdQuery.ps1 -Action packages
# 統計を表示
.\.github\skills\winmd-api-search\scripts\Invoke-WinMdQuery.ps1 -Action stats
プロジェクトが 1 つだけキャッシュされている場合、
-Projectは自動選択されます。 複数のプロジェクトが存在する場合、-Project <name>を追加してください (-Action projectsで利用可能な名前を確認)。 スキャンモードでは、マニフェスト名に短いハッシュサフィックスが含まれて衝突を避けます。曖昧性がない場合は、サフィックスなしのベースプロジェクト名を渡せます。
検索スコアリング
検索はクエリに対して型名とメンバー名をランク付けします:
| スコア | マッチタイプ | 例 |
|---|---|---|
| 100 | 完全一致 | Button → Button |
| 80 | 開始位置が一致 | Navigation → NavigationView |
| 60 | 含む | Dialog → ContentDialog |
| 50 | PascalCase イニシャル | ASB → AutoSuggestBox |
| 40 | 複数キーワード AND | navigation item → NavigationViewItem |
| 20 | 曖昧な文字マッチ | NavVw → NavigationView |
結果はネームスペースでグループ化されます。スコアが高いネームスペースが最初に表示されます。
トラブルシューティング
| 問題 | 修正 |
|---|---|
| 「キャッシュが見つかりません」 | Update-WinMdCache.ps1 を実行 |
| 「複数のプロジェクトがキャッシュされています」 | -Project <name> を追加 |
| 「ネームスペースが見つかりません」 | -Action namespaces を使用して利用可能なものをリスト |
| 「型が見つかりません」 | 完全修飾名を使用 (例: Microsoft.UI.Xaml.Controls.Button) |
| NuGet 更新後に古い | Update-WinMdCache.ps1 を再実行 |
| キャッシュが git 履歴に | Generated Files/ を .gitignore に追加 |
リファレンス
- Windows Platform SDK API リファレンス —
Windows.*ネームスペースのドキュメント - Windows App SDK API リファレンス —
Microsoft.*WinAppSDK ネームスペースのドキュメント
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- github
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/github/awesome-copilot / ライセンス: MIT
関連スキル
agent-browser
AI エージェント向けのブラウザ自動化 CLI です。ウェブサイトとの対話が必要な場合に使用します。ページ遷移、フォーム入力、ボタンクリック、スクリーンショット取得、データ抽出、ウェブアプリのテスト、ブラウザ操作の自動化など、あらゆるブラウザタスクに対応できます。「ウェブサイトを開く」「フォームに記入する」「ボタンをクリックする」「スクリーンショットを取得する」「ページからデータを抽出する」「このウェブアプリをテストする」「サイトにログインする」「ブラウザ操作を自動化する」といった要求や、プログラマティックなウェブ操作が必要なタスクで起動します。
anyskill
AnySkill — あなたのプライベート・スキルクラウド。GitHubを基盤としたリポジトリからエージェントスキルを管理、同期、動的にロードできます。自然言語でクラウドスキルを検索し、オンデマンドでプロンプトを自動ロード、カスタムスキルのアップロードと共有、スキルバンドルの一括インストールが可能です。OpenClaw、Antigravity、Claude Code、Cursorに対応しています。
engram
AIエージェント向けの永続的なメモリシステムです。バグ修正、意思決定、発見、設定変更の後はmem_saveを使用してください。ユーザーが「覚えている」「記憶している」と言及した場合、または以前のセッションと重複する作業を開始する際はmem_searchを使用します。セッション終了前にmem_session_summaryを使用して、コンテキストを保持してください。
skyvern
AI駆動のブラウザ自動化により、任意のウェブサイトを自動化できます。フォーム入力、データ抽出、ファイルダウンロード、ログイン、複数ステップのワークフロー実行など、ユーザーがウェブサイトと連携する必要があるときに使用します。Skyvernは、LLMとコンピュータビジョンを活用して、未知のサイトも自動操作可能です。Python SDK、TypeScript SDK、REST API、MCPサーバー、またはCLIを通じて統合できます。
pinchbench
PinchBenchベンチマークを実行して、OpenClawエージェントの実世界タスクにおけるパフォーマンスを評価できます。モデルの機能テスト、モデル間の比較、ベンチマーク結果のリーダーボード提出、またはOpenClawのセットアップがカレンダー、メール、リサーチ、コーディング、複数ステップのワークフローにどの程度対応しているかを確認する際に使用します。
openui
OpenUIとOpenUI Langを使用してジェネレーティブUIアプリを構築できます。これらはLLM生成インターフェースのためのトークン効率的なオープン標準です。OpenUI、@openuidev、ジェネレーティブUI、LLMからのストリーミングUI、AI向けコンポーネントライブラリ、またはjson-render/A2UIの置き換えについて述べる際に使用します。スキャフォルディング、defineComponent、システムプロンプト、Renderer、およびOpenUI Lang出力のデバッグに対応しています。