Recherche d'API WinMD
Cette skill vous aide à trouver l'API Windows appropriée pour n'importe quelle capacité et à obtenir ses détails complets. Elle recherche dans un cache local de toutes les métadonnées WinMD provenant de :
- Windows Platform SDK — toutes les API WinRT
Windows.*(toujours disponible, aucune restauration requise) - WinAppSDK / WinUI — fourni en tant que base dans le générateur de cache (toujours disponible, aucune restauration requise)
- Packages NuGet — tous les packages supplémentaires dans les projets restaurés contenant des fichiers
.winmd - WinMD de sortie de projet — bibliothèques de classes (C++/WinRT, C#) qui produisent
.winmdcomme sortie de build
Même sur un clone frais sans restauration ni build, vous bénéficiez d'une couverture complète du Platform SDK + WinAppSDK.
Quand utiliser cette skill
- L'utilisateur souhaite construire une fonctionnalité et vous devez trouver quelle API fournit cette capacité
- L'utilisateur demande « comment faire X ? » où X implique une fonctionnalité de plateforme (caméra, fichiers, notifications, capteurs, IA, etc.)
- Vous avez besoin des méthodes, propriétés, événements ou valeurs d'énumération exacts d'un type avant d'écrire du code
- Vous êtes incertain du contrôle, de la classe ou de l'interface à utiliser pour une tâche UI ou système
Prérequis
- .NET SDK 8.0 ou ultérieur — requis pour construire le générateur de cache. Installez depuis dotnet.microsoft.com si non disponible.
Configuration du cache (requise avant première utilisation)
Toutes les commandes de requête et recherche lisent depuis un cache JSON local. Vous devez générer le cache avant d'exécuter des requêtes.
# Tous les projets du référentiel (recommandé pour la première exécution)
.\.github\skills\winmd-api-search\scripts\Update-WinMdCache.ps1
# Projet unique
.\.github\skills\winmd-api-search\scripts\Update-WinMdCache.ps1 -ProjectDir <project-folder>
Aucune restauration de projet ni build n'est requise pour la couverture de base (Platform SDK + WinAppSDK). Pour les packages NuGet supplémentaires, le projet a besoin de dotnet restore (qui génère project.assets.json) ou d'un fichier packages.config.
Le cache est stocké à Generated Files\winmd-cache\, dédupliqué par package+version.
Ce qui est indexé
| Source | Quand disponible |
|---|---|
| Windows Platform SDK | Toujours (lit depuis l'installation SDK locale) |
| WinAppSDK (latest) | Toujours (fourni en tant que base dans le générateur de cache) |
| WinAppSDK Runtime | Quand installé sur le système (détecté via Get-AppxPackage) |
| Packages NuGet du projet | Après dotnet restore ou avec packages.config |
Project-output .winmd |
Après build du projet (bibliothèques de classes qui produisent WinMD) |
Remarque : ce répertoire de cache doit être dans
.gitignore— il est généré, pas source.
Comment utiliser
Choisissez le chemin qui correspond à la situation :
Découverte — « Je ne sais pas quelle API utiliser »
L'utilisateur décrit une capacité dans ses propres termes. Vous devez trouver l'API appropriée.
0. Assurez-vous que le cache existe
Si le cache n'a pas encore été généré, exécutez Update-WinMdCache.ps1 d'abord — voir Configuration du cache ci-dessus.
1. Traduire le langage utilisateur → mots-clés de recherche
Mappez le langage quotidien de l'utilisateur aux termes de programmation. Essayez plusieurs variations :
| L'utilisateur dit | Mots-clés de recherche à essayer (dans l'ordre) |
|---|---|
| « prendre une photo » | camera, capture, photo, MediaCapture |
| « charger depuis le disque » | file open, picker, FileOpen, StorageFile |
| « décrire ce qu'il contient » | image description, Vision, Recognition |
| « afficher une fenêtre contextuelle » | dialog, flyout, popup, ContentDialog |
| « glisser-déposer » | drag, drop, DragDrop |
| « enregistrer les paramètres » | settings, ApplicationData, LocalSettings |
Commencez par des mots simples et courants. Si les résultats sont faibles ou non pertinents, essayez la variation plus technique.
2. Exécuter les recherches
.\.github\skills\winmd-api-search\scripts\Invoke-WinMdQuery.ps1 -Action search -Query "<keyword>"
Cela retourne les espaces de noms classés avec les types correspondants principaux et le chemin du fichier JSON.
Si les résultats ont des scores bas (en dessous de 60) ou sont non pertinents, retournez à la recherche dans la documentation en ligne :
- Utilisez la recherche web pour trouver l'API appropriée sur Microsoft Learn, par exemple :
site:learn.microsoft.com/uwp/api <capability keywords>pour les APIWindows.*site:learn.microsoft.com/windows/windows-app-sdk/api/winrt <capability keywords>pour les API WinAppSDKMicrosoft.*
- Lisez les pages de documentation pour identifier quel type correspond à l'exigence de l'utilisateur.
- Une fois que vous connaissez le nom du type, revenez et utilisez
-Action membersou-Action enumspour obtenir les signatures exactes locales.
3. Lire le JSON pour choisir l'API appropriée
Lisez le fichier au(x) chemin(s) des résultats principaux. Le JSON contient tous les types de cet espace de noms — tous les membres, signatures, paramètres, types de retour, valeurs d'énumération.
Lisez et décidez quels types et membres correspondent à l'exigence de l'utilisateur.
4. Consulter la documentation officielle pour le contexte
Le cache contient uniquement les signatures — pas de descriptions ou conseils d'utilisation. Pour les explications, exemples et remarques, consultez le type sur Microsoft Learn :
| Préfixe d'espace de noms | URL de base de documentation |
|---|---|
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} |
Par exemple, Microsoft.UI.Xaml.Controls.NavigationView correspond à :
https://learn.microsoft.com/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.navigationview
5. Utiliser la connaissance de l'API pour répondre ou écrire du code
Recherche — « Je connais l'API, montrez-moi les détails »
Vous connaissez déjà (ou soupçonnez) le nom du type ou de l'espace de noms. Allez directement :
# Obtenir tous les membres d'un type connu
.\.github\skills\winmd-api-search\scripts\Invoke-WinMdQuery.ps1 -Action members -TypeName "Microsoft.UI.Xaml.Controls.NavigationView"
# Obtenir les valeurs d'énumération
.\.github\skills\winmd-api-search\scripts\Invoke-WinMdQuery.ps1 -Action enums -TypeName "Microsoft.UI.Xaml.Visibility"
# Lister tous les types d'un espace de noms
.\.github\skills\winmd-api-search\scripts\Invoke-WinMdQuery.ps1 -Action types -Namespace "Microsoft.UI.Xaml.Controls"
# Parcourir les espaces de noms
.\.github\skills\winmd-api-search\scripts\Invoke-WinMdQuery.ps1 -Action namespaces -Filter "Microsoft.UI"
Si vous avez besoin de plus de détails au-delà de ce que -Action members montre, utilisez -Action search pour obtenir le chemin du fichier JSON, puis lisez le fichier JSON directement.
Autres commandes
# Lister les projets mis en cache
.\.github\skills\winmd-api-search\scripts\Invoke-WinMdQuery.ps1 -Action projects
# Lister les packages d'un projet
.\.github\skills\winmd-api-search\scripts\Invoke-WinMdQuery.ps1 -Action packages
# Afficher les statistiques
.\.github\skills\winmd-api-search\scripts\Invoke-WinMdQuery.ps1 -Action stats
Si un seul projet est mis en cache,
-Projectest auto-sélectionné. S'il existe plusieurs projets, ajoutez-Project <name>(utilisez-Action projectspour voir les noms disponibles). En mode scan, les noms de manifest incluent un suffixe de hash court pour éviter les collisions ; vous pouvez passer le nom du projet de base sans le suffixe s'il est sans ambiguïté.
Scoring de recherche
La recherche classe les noms de types et les noms de membres par rapport à votre requête :
| Score | Type de correspondance | Exemple |
|---|---|---|
| 100 | Nom exact | Button → Button |
| 80 | Commence par | Navigation → NavigationView |
| 60 | Contient | Dialog → ContentDialog |
| 50 | Initiales PascalCase | ASB → AutoSuggestBox |
| 40 | Multi-mot ET | navigation item → NavigationViewItem |
| 20 | Correspondance de caractères floue | NavVw → NavigationView |
Les résultats sont groupés par espace de noms. Les espaces de noms avec un score plus élevé apparaissent en premier.
Dépannage
| Problème | Solution |
|---|---|
| « Cache non trouvé » | Exécutez Update-WinMdCache.ps1 |
| « Plusieurs projets mis en cache » | Ajoutez -Project <name> |
| « Espace de noms non trouvé » | Utilisez -Action namespaces pour lister les disponibles |
| « Type non trouvé » | Utilisez le nom pleinement qualifié (par ex., Microsoft.UI.Xaml.Controls.Button) |
| Obsolète après mise à jour NuGet | Réexécutez Update-WinMdCache.ps1 |
| Cache dans l'historique git | Ajoutez Generated Files/ à .gitignore |
Références
- Référence API Windows Platform SDK — documentation pour les espaces de noms
Windows.* - Référence API Windows App SDK — documentation pour les espaces de noms WinAppSDK
Microsoft.*