winmd-api-search
Helps your agent find and understand Windows APIs. It's useful for building features that need to access system resources like the camera or files.
What it does
This tool helps you find the correct Windows functions (APIs) to add features to your program, like using the camera or saving files. It retrieves the full details of these functions.
When to use it
- ✓When you want to build a new feature and don't know which function to use.
- ✓When you ask 'how do I do X?' and X involves something from the system (camera, files, etc.).
- ✓When you need the exact details of a function before writing code.
Example of what to ask your AI
“How do I take a picture using the app?”
Want more? Open the sections below.
How to use
The easiest way: copy the message below and paste it into Claude, ChatGPT, Cursor or any AI. It reads the skill and follows the instructions.
Skill link
Ready-to-paste message
How it works
The tool searches a local database with information about Windows functions. It translates your request into technical terms and finds the most suitable function, showing its details.
Installation
Easiest way: copy the skill link and paste it into Claude, ChatGPT or Cursor asking it to follow the instructions.
In the terminal (Claude Code, Codex, Cursor), in your project folder:
npx skills add github/awesome-copilot --skill winmd-api-searchOr download just the file:
curl -L https://raw.githubusercontent.com/github/awesome-copilot/main/skills/winmd-api-search/SKILL.md -o SKILL.mdTechnical content (original SKILL.md)
Original text by the author, straight from GitHub.
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
.winmdfiles - Project-output WinMD — class libraries (C++/WinRT, C#) that produce
.winmdas 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 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.
# 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 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, try the more technical variation.
2. Run searches
.\.github\skills\winmd-api-search\scripts\Invoke-WinMdQuery.ps1 -Action search -Query "<keyword>"
This returns ranked namespaces with top matching types and the JSON file path.
If results have low scores (below 60) or are irrelevant, fall back to searching online documentation:
- Use web search to find the right API on Microsoft Learn, for example:
site:learn.microsoft.com/uwp/api <capability keywords>forWindows.*APIssite:learn.microsoft.com/windows/windows-app-sdk/api/winrt <capability keywords>forMicrosoft.*WinAppSDK APIs
- Read the documentation pages to identify which type matches the user's requirement.
- Once you know the type name, come back and use
-Action membersor-Action enumsto get the exact local signatures.
…
FAQ
Do I need to install anything before using it?
Yes, you need to generate a 'cache' (an information file) by running a specific script before using the tool for the first time.
What are APIs?
APIs (Application Programming Interfaces) are like commands or tools that programmers use to make the operating system (like Windows) perform specific tasks, such as accessing the camera or showing notifications.
What happens if the tool doesn't find the API?
If the tool doesn't find a good match in its local data, it suggests searching the official Microsoft online documentation.
Details
Original description by the author
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).
repo: github/awesome-copilot
Popularity
- GitHub stars
- 40k
- Ranking position
- #5421
- License
- MIT
- Updated
- 10/15/2026
Comments
- …
More skills from this repository
acquire-codebase-knowledge
Helps your agent understand and document an existing code project. It's useful for onboarding new people or getting an overview of the architecture.
github/awesome-copilot
acreadiness-assess
Enables your agent to assess a project's readiness for AI and generate a report. It's useful for understanding how well a project is prepared to use AI tools.
github/awesome-copilot
acreadiness-generate-instructions
Helps your agent create instructions for AI tools based on an assessment. It's useful for improving how AI interacts with code and closing identified gaps.
github/awesome-copilot
acreadiness-policy
Enables your agent to help define or apply policies for AI project assessment. It's useful for standardizing how projects are evaluated and ensuring compliance.
github/awesome-copilot
Similar skills
benchmark-optimization-loop
Has your agent improve something's speed in a measured way. It tests multiple versions and chooses the fastest one that still works correctly.
affaan-m/ECC
change-impact
Helps your agent analyze the impact of code changes before making them. It compares the planned vs. actual results afterward, covering paths, data, tests, and documentation. Useful for risky or system-wide changes.
affaan-m/ECC
click-path-audit
Lets your agent trace all user buttons and interactions to find bugs. It finds issues where functions seem to work alone but fail together. Useful when bugs persist even after debugging.
affaan-m/ECC