Notification Windows XYZ — Compétence Universelle pour Agent IA
Cette compétence permet à tout agent IA (Antigravity, Claude, GPT, Cursor, Trae, Pi, Grok, etc.) de déclencher des Notifications Toast Windows natives (compatibles Windows 10 & Windows 11) à l'aide de PowerShell BurntToast avec image de marque personnalisée, jalons de pourcentage et gestion dynamique des icônes.
🚀 Installation via l'interface en ligne de commande Skills
npx skills add xyz-rainbow/xyz-windows-notify
🦄 Ressources fournies et résolution intelligente des icônes
Cette compétence fournit des images de marque par défaut dans son répertoire assets/icons/ (assets/icons/unicorn.jpg et assets/icons/icon.jpg).
Lors de l'envoi d'une notification, suivez cette Hiérarchie de Résolution Intelligente :
- Paramètre explicite : Chemin fourni via
-AppLogo "chemin/vers/icone_personnalisee.png". - Icône intégrée à la compétence : Chemin local dans le répertoire de la compétence (p. ex.
<repertoire_competence>/assets/icons/unicorn.jpg). - Icône intégrée héritée :
<repertoire_competence>/assets/unicorn.jpg(pour la rétrocompatibilité). - Répertoire d'icônes personnalisées utilisateur : Chemin d'environnement utilisateur (p. ex.
$env:USERPROFILE\Pictures\Icons\custom.pngs'il existe). - Fallback gracieux : Notification Windows native sans
-AppLogosi aucun fichier image n'existe.
🤖 Recommandations aux agents IA pour les icônes personnalisées et leur génération
Les agents IA utilisant cette compétence doivent gérer activement le retour visuel :
1. Sélection contextuelle d'icône
- Général / Par défaut : Utiliser
assets/icons/unicorn.jpgouassets/icons/icon.jpg. - Base de données / Sauvegardes : Si des icônes spécialisées existent (p. ex.
assets/icons/backup.pngouassets/icons/database.png), les privilégier. - Déploiements / Serveurs : Icônes fusée / serveur.
- Erreurs / Alertes critiques : Icônes avertissement / bouclier.
2. Suggestion et génération de nouvelles icônes
- Où stocker les icônes : Stocker les nouvelles icônes dans
assets/icons/<nom>.png(dans le répertoire de la compétence ou du dépôt) ou dans le répertoire d'icônes utilisateur ($env:USERPROFILE\Pictures\Icons\). - Spécifications de l'icône :
- Format :
PNGouJPG(rapport d'aspect carré 1:1). - Dimensions recommandées :
256x256ou512x512pixels. - Fond transparent ou uni propre.
- Format :
- Protocole IA proactif :
- Lors du démarrage d'un nouveau flux de travail récurrent (p. ex., un nouveau moniteur de serveur de jeu, un pipeline de rendu vidéo ou une synchronisation de données), vérifier si une icône correspondante existe dans
assets/icons/. - Si aucune icône thématique n'existe, proposer :
« J'ai remarqué que nous n'avons pas d'icône de notification spécifique pour [Nom de la tâche]. Souhaitez-vous que je génère une icône personnalisée 256x256 et que je l'enregistre dans
assets/icons/[nom].png? » - Utiliser des outils de génération d'images (p. ex.,
generate_image) ou récupérer les ressources appropriées après approbation de l'utilisateur.
- Lors du démarrage d'un nouveau flux de travail récurrent (p. ex., un nouveau moniteur de serveur de jeu, un pipeline de rendu vidéo ou une synchronisation de données), vérifier si une icône correspondante existe dans
💻 Intégration PowerShell
Import-Module BurntToast
# Résoudre l'icône par défaut/intégrée (avec rétrocompatibilité)
$CandidateIcons = @(
"$PSScriptRoot\assets\icons\unicorn.jpg",
"$PSScriptRoot\assets\unicorn.jpg",
"$env:USERPROFILE\Pictures\Icons\custom.png"
)
$AppLogo = $CandidateIcons | Where-Object { Test-Path $_ } | Select-Object -First 1
# Envoyer la notification avec fallback
if ($AppLogo) {
New-BurntToastNotification `
-Text "🦄 Jalon de tâche : 50%", "Traité 1 024 Mo sur 2 048 Mo" `
-AppLogo $AppLogo `
-Sound 'Default'
} else {
New-BurntToastNotification `
-Text "📊 Jalon de tâche : 50%", "Traité 1 024 Mo sur 2 048 Mo" `
-Sound 'Default'
}
🐍 Modèle d'intégration Python
import subprocess
import os
def send_toast(title: str, message: str, icon_path: str = None):
# Chemins d'icônes candidats avec rétrocompatibilité
base_dir = os.path.dirname(__file__)
user_icon = os.path.expanduser("~/Pictures/Icons/custom.png")
candidates = [
icon_path,
os.path.join(base_dir, "assets", "icons", "unicorn.jpg"),
os.path.join(base_dir, "assets", "unicorn.jpg"),
user_icon
]
selected_icon = next((c for c in candidates if c and os.path.exists(c)), None)
if selected_icon:
ps_cmd = f"Import-Module BurntToast; New-BurntToastNotification -Text '{title}', '{message}' -AppLogo '{selected_icon}' -Sound 'Default'"
else:
ps_cmd = f"Import-Module BurntToast; New-BurntToastNotification -Text '{title}', '{message}' -Sound 'Default'"
subprocess.run(["powershell", "-NoProfile", "-ExecutionPolicy", "Bypass", "-Command", ps_cmd], capture_output=True)
# Exemple d'utilisation sur l'ensemble du cycle de vie
send_toast("🚀 Tâche démarrée", "Analyse des fichiers de l'espace de travail et calcul des sommes de contrôle...")
send_toast("📊 Progression : 50%", "Traité 1 024 Mo sur 2 048 Mo")
send_toast("✅ Tâche terminée (100%)", "2 100 fichiers traités avec succès !")
🌐 Configuration globale multi-agent
Pour rendre cette compétence accessible à tous les agents sur la machine, assurez-vous que ce dossier est lié symboliquement ou copié dans :
- Antigravity / Gemini :
~/.gemini/config/skills/windows-notify/ - Claude Desktop / Code :
~/.claude/skills/windows-notify/ - Cursor / Trae / Agents globaux :
~/.agents/skills/windows-notify/