К основному содержанию
скилл GitHub Copilot официальный · GitHub

winmd-api-search — скилл для GitHub Copilot: поиск Windows API

Скилл ищет нужный Windows API по описанию задачи и выдаёт полные сигнатуры типов. Пригодится, когда пишешь фичу и не знаешь, какой класс или интерфейс брать.

Установить в GitHub Copilot · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add github/awesome-copilot --skill winmd-api-search
Открыть на GitHub

Что делает winmd-api-search

Скилл работает с локальным кэшем WinMD-метаданных. В кэш попадают Windows Platform SDK (все Windows.* WinRT API), WinAppSDK и WinUI как базовая линия, NuGet-пакеты из восстановленных проектов и .winmd из сборки библиотек. Даже на свежем клоне без restore и build доступны Platform SDK и WinAppSDK.

Два сценария. Первый — discovery: описываешь возможность своими словами («сделать снимок», «загрузить с диска»), скилл переводит это в ключевые слова и запускает Invoke-WinMdQuery.ps1 -Action search. Второй — lookup: если имя типа известно, -Action members, -Action enums, -Action types и -Action namespaces выдают методы, свойства, события и значения перечислений напрямую.

Перед первым запуском нужен кэш: Update-WinMdCache.ps1 строит его в Generated Files\winmd-cache\. Для сборки генератора требуется .NET SDK 8.0 или новее. Кэш хранит только сигнатуры, без описаний и примеров, поэтому пояснения ищи на Microsoft Learn. Если результаты поиска слабые (ниже 60), скилл предлагает уйти в веб-поиск по документации. Ставить стоит тем, кто пишет под Windows на C# или C++/WinRT и постоянно сверяется с сигнатурами. Для кроссплатформенных проектов смысла мало.

Какие задачи решает

  • найти API под задачу, описанную обычными словами
  • получить точные сигнатуры методов и свойства типа перед написанием кода
  • посмотреть значения перечисления без похода в документацию
  • перечислить все типы в пространстве имён
  • собрать кэш WinMD по всем проектам репозитория

Примеры запросов агенту

  • Найди API для захвата фото с камеры в Windows
  • Покажи все члены Microsoft.UI.Xaml.Controls.NavigationView
  • Какие значения у Microsoft.UI.Xaml.Visibility?

Как установить winmd-api-search

1Через Skills CLI (Vercel)

npx skills add github/awesome-copilot --skill winmd-api-search

2GitHub CLI

gh skill install github/awesome-copilot winmd-api-search

3Вручную: положить файлы

.github/skills/winmd-api-search/SKILL.md

Из того же набора554

Весь набор →
git-commit официальный github Скилл разбирает изменения Git, выбирает связанные файлы и создаёт коммит в формате Conventional Commits. Пригодится, когда нужно закоммитить одну или несколько логических частей изменений. GitHub Copilot 47 165установок excalidraw-diagram-generator официальный github Скилл превращает описание на обычном языке в диаграмму Excalidraw. Подойдёт, когда нужно показать процесс, связи между объектами или устройство системы. GitHub Copilot 31 639установок multi-stage-dockerfile официальный github Скилл помогает создавать многоэтапные Dockerfile для разных языков и фреймворков. Пригодится, когда важны размер и состав runtime-образа. GitHub Copilot 29 688установок documentation-writer официальный github Скилл для создания технической документации по фреймворку Diátaxis: туториалы, гайды, справки и объяснения. Предлагает структуру перед написанием. GitHub Copilot 27 757установок prd официальный github Собирает из идеи структурированный PRD с пользовательскими историями, техническими требованиями и рисками. Подходит для планирования новых функций, в том числе с AI. GitHub Copilot 24 035установок refactor официальный github Скилл помогает менять структуру кода без изменения внешнего поведения. Подойдёт для постепенной уборки сложных функций, дублирования и кодовых запахов. GitHub Copilot 22 321установок java-springboot официальный github Задаёт практики разработки Spring Boot-приложений: от структуры проекта до тестов и безопасности. Пригодится, когда Copilot пишет или проверяет Java-код. GitHub Copilot 21 272установок create-readme официальный github Скилл изучает проект и создаёт структурированный README.md. Подойдёт, когда документацию нужно собрать по коду и файлам проекта. GitHub Copilot 19 081установок

Похожие

golang-security samber Находит уязвимости в коде на Go, выстраивает аудит по STRIDE и DREAD и помогает закрывать инъекции, утечки секретов и ошибки в криптографии. Claude Code CX Codex Cursor +1 42 100установок golang-design-patterns samber Скилл подсказывает идиоматичные Go-паттерны для API, жизненного цикла ресурсов, graceful shutdown и архитектуры. Пригодится при проектировании и ревью кода. Claude Code CX Codex Cursor +1 41 900установок golang-performance samber Помогает находить и устранять узкие места в Go-коде: сокращает аллокации памяти, оптимизирует горячие циклы и проверяет результаты замеров. Claude Code CX Codex Cursor +1 41 800установок golang-database samber Набор правил для работы с реляционными базами данных в Go через database/sql, sqlx и pgx. Помогает писать запросы без ORM и проверять утечки соединений. Claude Code CX Codex Cursor +1 40 700установок golang-project-layout samber Скилл помогает организовать Go-проект по соглашениям: директории cmd/, internal/, pkg/, именование модулей, go.work для монорепозиториев. Спросит архитектуру и способ внедрения зависимостей, потом создаст файлы и конфиг. Claude Code CX Codex Cursor +1 40 300установок golang-troubleshooting samber Систематический поиск причин падений, гонок данных и утечек памяти в коде на Go. Помогает пошагово воспроизвести баг тестом и разобрать трейс вместо правок наугад. Claude Code CX Codex Cursor +1 39 800установок mcp-builder официальный anthropics Скилл проводит через создание MCP-сервера на TypeScript или Python: от изучения протокола до тестов и оценки качества. Claude Code Claude.ai 130 949установок google-agents-cli-adk-code официальный Google Скилл даёт примеры и справку по Agent Development Kit: агентам, инструментам, колбэкам, состоянию и графовым workflow. Нужен при написании кода. Claude Code CX Codex Cursor +1 511 400установок

Вопросы о winmd-api-search

Как установить winmd-api-search в GitHub Copilot?

Через npx skills add github/awesome-copilot --skill winmd-api-search или gh skill install github/awesome-copilot winmd-api-search. Файл скилла окажется в .github/skills/winmd-api-search/SKILL.md.

Что делает winmd-api-search?

Ищет подходящий Windows API по описанию возможности и возвращает полные детали типа: методы, свойства, события, значения перечислений. Работает по локальному кэшу WinMD.

Что нужно для работы скилла?

.NET SDK 8.0 или новее для сборки генератора кэша и сам кэш, построенный через Update-WinMdCache.ps1. Без кэша запросы не выполняются.

Исходный текст

SKILL.md · MIT
---
name: winmd-api-search
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).'
license: Complete terms in LICENSE.txt
---

# 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, try the more technical variation.

**2. Run searches**

```powershell
.\.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.

**3. Read the JSON to choose the right API**

Read the file at the path(s) from the top results. The JSON has all types in that namespace — full members, signatures, parameters, return types, enumeration values.

Read and decide which types and members fit the user's requirement.

**4. Look up official documentation for context**

The cache contains only signatures — no descriptions or usage guidance. For explanations, examples, and remarks, look up the type on Microsoft Learn:

| Namespace prefix | Documentation base 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}` |

For example, `Microsoft.UI.Xaml.Controls.NavigationView` maps to:
`https://learn.microsoft.com/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.navigationview`

**5. Use the API knowledge to answer or write code**

---

### Lookup — "I know the API, show me the details"

You already know (or suspect) the type or namespace name. Go direct:

```powershell
# Get all members of a known type
.\.github\skills\winmd-api-search\scripts\Invoke-WinMdQuery.ps1 -Action members -TypeName "Microsoft.UI.Xaml.Controls.NavigationView"

# Get enum values
.\.github\skills\winmd-api-search\scripts\Invoke-WinMdQuery.ps1 -Action enums -TypeName "Microsoft.UI.Xaml.Visibility"

# List all types in a namespace
.\.github\skills\winmd-api-search\scripts\Invoke-WinMdQuery.ps1 -Action types -Namespace "Microsoft.UI.Xaml.Controls"

# Browse namespaces
.\.github\skills\winmd-api-search\scripts\Invoke-WinMdQuery.ps1 -Action namespaces -Filter "Microsoft.UI"
```

If you need full detail beyond what `-Action members` shows, use `-Action search` to get the JSON file path, then read the JSON file directly.

---

### Other Commands

```powershell
# List cached projects
.\.github\skills\winmd-api-search\scripts\Invoke-WinMdQuery.ps1 -Action projects

# List packages for a project
.\.github\skills\winmd-api-search\scripts\Invoke-WinMdQuery.ps1 -Action packages

# Show stats
.\.github\skills\winmd-api-search\scripts\Invoke-WinMdQuery.ps1 -Action stats
```

> If only one project is cached, `-Project` is auto-selected.
> If multiple projects exist, add `-Project <name>` (use `-Action projects` to see available names).
> In scan mode, manifest names include a short hash suffix to avoid collisions; you can pass the base project name without the suffix if it's unambiguous.

## Search Scoring

The search ranks type names and member names against your query:

| Score | Match type | Example |
|-------|-----------|---------|
| 100 | Exact name | `Button` → `Button` |
| 80 | Starts with | `Navigation` → `NavigationView` |
| 60 | Contains | `Dialog` → `ContentDialog` |
| 50 | PascalCase initials | `ASB` → `AutoSuggestBox` |
| 40 | Multi-keyword AND | `navigation item` → `NavigationViewItem` |
| 20 | Fuzzy character match | `NavVw` → `NavigationView` |

Results are grouped by namespace. Higher-scored namespaces appear first.

## Troubleshooting

| Issue | Fix |
|-------|-----|
| "Cache not found" | Run `Update-WinMdCache.ps1` |
| "Multiple projects cached" | Add `-Project <name>` |
| "Namespace not found" | Use `-Action namespaces` to list available ones |
| "Type not found" | Use fully qualified name (e.g., `Microsoft.UI.Xaml.Controls.Button`) |
| Stale after NuGet update | Re-run `Update-WinMdCache.ps1` |
| Cache in git history | Add `Generated Files/` to `.gitignore` |

## References

- [Windows Platform SDK API reference](https://learn.microsoft.com/uwp/api/) — documentation for `Windows.*` namespaces
- [Windows App SDK API reference](https://learn.microsoft.com/windows/windows-app-sdk/api/winrt/) — documentation for `Microsoft.*` WinAppSDK namespaces

© github · MIT · github/awesome-copilot

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой