
Winmd Api Search
Discover the right Windows WinRT or WinAppSDK types and members before your agent writes desktop UI or system-integration code.
Overview
winmd-api-search is an agent skill for the Build phase that searches local WinMD metadata to find Windows APIs and return full type details for desktop features.
Install
npx skills add https://github.com/github/awesome-copilot --skill winmd-api-searchWhat is this skill?
- Searches a local WinMD cache covering Windows Platform SDK `Windows.*` APIs without restore or build
- Includes WinAppSDK / WinUI baseline metadata from the cache generator
- Indexes restored NuGet packages and project-output WinMD from C++/WinRT or C# class libraries
- Returns full type details: methods, properties, events, and enumeration values
- Answers “how do I do X on Windows?” by capability (camera, files, notifications, sensors, AI/ML, UI controls)
- Four WinMD sources: Windows Platform SDK, WinAppSDK/WinUI baseline, NuGet package WinMD, and project-output WinMD
- Baseline cache usable on a fresh clone without restore or build for Platform SDK and WinAppSDK coverage
Adoption & trust: 5.5k installs on skills.sh; 34.6k GitHub stars; 2/3 security scanners passed (skills.sh audits).
What problem does it solve?
You need a Windows capability such as camera, notifications, or a WinUI control but do not know which WinRT type or members to call.
Who is it for?
Solo builders shipping WinUI or other Windows desktop apps with Claude Code, Cursor, or Codex who want agent-generated code grounded in real WinMD.
Skip if: Web-only, iOS/Android, or Linux/macOS projects with no Windows target; skip when you already have the official type reference open and confirmed.
When should I use this skill?
Building features that need Windows platform capabilities—camera, file access, notifications, UI controls, AI/ML, sensors, networking—or when you need full type details before writing code.
What do I get? / Deliverables
You get the exact WinMD type with methods, properties, events, and enum values so implementation can proceed with correct signatures.
- Matched Windows API type names and namespaces
- Method, property, event, and enumeration member lists for chosen types
Recommended Skills
Journey fit
API discovery happens while implementing Windows features, not during early idea or launch work. The skill maps platform capabilities to WinMD types—classic integration work against the Windows runtime and NuGet WinMD surfaces.
How it compares
Use instead of guessing WinRT names from memory or pasting unverified snippets from old documentation.
Common Questions / FAQ
Who is winmd-api-search for?
Solo and indie builders (and small Windows teams) using AI coding agents to ship WinUI or WinRT desktop apps who need accurate API discovery before writing integration code.
When should I use winmd-api-search?
Use it during Build when implementing platform features—finding which API provides camera, file access, notifications, sensors, AI/ML, networking, or UI controls, or when you need exact methods, properties, events, and enum values for a type.
Is winmd-api-search safe to install?
Treat it like any third-party agent skill: review the Security Audits panel on this Prism catalog page and only enable it in repos you trust; it is designed to read local WinMD cache data, not to invent install stats or audit results.
SKILL.md
READMESKILL.md - Winmd Api Search
# WinMD API Search This skill helps you find the right Windows API for any capability and get its full details. It searches a local cache of all WinMD metadata from: - **Windows Platform SDK** — all `Windows.*` WinRT APIs (always available, no restore needed) - **WinAppSDK / WinUI** — bundled as a baseline in the cache generator (always available, no restore needed) - **NuGet packages** — any additional packages in restored projects that contain `.winmd` files - **Project-output WinMD** — class libraries (C++/WinRT, C#) that produce `.winmd` as build output Even on a fresh clone with no restore or build, you still get full Platform SDK + WinAppSDK coverage. ## When to Use This Skill - User wants to build a feature and you need to find which API provides that capability - User asks "how do I do X?" where X involves a platform feature (camera, files, notifications, sensors, AI, etc.) - You need the exact methods, properties, events, or enumeration values of a type before writing code - You're unsure which control, class, or interface to use for a UI or system task ## Prerequisites - **.NET SDK 8.0 or later** — required to build the cache generator. Install from [dotnet.microsoft.com](https://dotnet.microsoft.com/download) if not available. ## Cache Setup (Required Before First Use) All query and search commands read from a local JSON cache. **You must generate the cache before running any queries.** ```powershell # All projects in the repo (recommended for first run) .\.github\skills\winmd-api-search\scripts\Update-WinMdCache.ps1 # Single project .\.github\skills\winmd-api-search\scripts\Update-WinMdCache.ps1 -ProjectDir <project-folder> ``` No project restore or build is needed for baseline coverage (Platform SDK + WinAppSDK). For additional NuGet packages, the project needs `dotnet restore` (which generates `project.assets.json`) or a `packages.config` file. Cache is stored at `Generated Files\winmd-cache\`, deduplicated per-package+version. ### What gets indexed | Source | When available | |--------|----------------| | Windows Platform SDK | Always (reads from local SDK install) | | WinAppSDK (latest) | Always (bundled as baseline in cache generator) | | WinAppSDK Runtime | When installed on the system (detected via `Get-AppxPackage`) | | Project NuGet packages | After `dotnet restore` or with `packages.config` | | Project-output `.winmd` | After project build (class libraries that produce WinMD) | > **Note:** This cache directory should be in `.gitignore` — it's generated, not source. ## How to Use Pick the path that matches the situation: --- ### Discover — "I don't know which API to use" The user describes a capability in their own words. You need to find the right API. **0. Ensure the cache exists** If the cache hasn't been generated yet, run `Update-WinMdCache.ps1` first — see [Cache Setup](#cache-setup-required-before-first-use) above. **1. Translate user language → search keywords** Map the user's daily language to programming terms. Try multiple variations: | User says | Search keywords to try (in order) | |-----------|-----------------------------------| | "take a picture" | `camera`, `capture`, `photo`, `MediaCapture` | | "load from disk" | `file open`, `picker`, `FileOpen`, `StorageFile` | | "describe what's in it" | `image description`, `Vision`, `Recognition` | | "show a popup" | `dialog`, `flyout`, `popup`, `ContentDialog` | | "drag and drop" | `drag`, `drop`, `DragDrop` | | "save settings" | `settings`, `ApplicationData`, `LocalSettings` | Start with simple everyday words. If results are weak or irrelevant