Skip to content
Skillpedia
General coding40k · #5421

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

https://github.com/github/awesome-copilot/blob/main/skills/winmd-api-search/SKILL.md

Ready-to-paste message

Use this skill to help me: https://github.com/github/awesome-copilot/blob/main/skills/winmd-api-search/SKILL.md Read the SKILL.md file at that link and follow its instructions for my task.
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-search

Or download just the file:

curl -L https://raw.githubusercontent.com/github/awesome-copilot/main/skills/winmd-api-search/SKILL.md -o SKILL.md
Technical 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 .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 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:

  1. Use web search to find the right API on Microsoft Learn, for example:
    • site:learn.microsoft.com/uwp/api <capability keywords> for Windows.* APIs
    • site:learn.microsoft.com/windows/windows-app-sdk/api/winrt <capability keywords> for Microsoft.* WinAppSDK APIs
  2. Read the documentation pages to identify which type matches the user's requirement.
  3. Once you know the type name, come back and use -Action members or -Action enums to 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

Is this skill useful?

0

Sign in to vote.

Comments

  • …

More skills from this repository

Similar skills