XYZ Notificações do Windows — Habilidade Universal para Agentes de IA
Esta habilidade permite que qualquer agente de IA (Antigravity, Claude, GPT, Cursor, Trae, Pi, Grok, etc.) dispare Notificações Toast Nativas do Windows (compatível com Windows 10 e Windows 11) usando PowerShell BurntToast com branding personalizado, marcos percentuais e gerenciamento dinâmico de ícones.
🚀 Instalação via CLI de Skills
npx skills add xyz-rainbow/xyz-windows-notify
🦄 Ativos Empacotados e Resolução Inteligente de Ícones
Esta habilidade empacota branding padrão em seu diretório assets/icons/ (assets/icons/unicorn.jpg e assets/icons/icon.jpg).
Ao enviar uma notificação, siga esta Hierarquia de Resolução Inteligente:
- Parâmetro Explícito: Caminho fornecido via
-AppLogo "caminho/para/icone_personalizado.png". - Ícone Empacotado da Habilidade: Caminho local dentro do diretório da habilidade (ex.:
<diretorio_habilidade>/assets/icons/unicorn.jpg). - Ícone Empacotado Legado:
<diretorio_habilidade>/assets/unicorn.jpg(para compatibilidade retroativa). - Diretório de Ícone Personalizado do Usuário: Caminho de usuário do ambiente (ex.:
$env:USERPROFILE\Pictures\Icons\custom.pngse presente). - Fallback Elegante: Notificação nativa do Windows sem
-AppLogose nenhum arquivo de imagem existir.
🤖 Diretrizes do Agente de IA para Ícones Personalizados e Geração
Agentes de IA operando com esta habilidade devem gerenciar ativamente o feedback visual:
1. Seleção Contextual de Ícones
- Geral / Padrão: Use
assets/icons/unicorn.jpgouassets/icons/icon.jpg. - Banco de Dados / Backups: Se existirem ícones especializados (ex.:
assets/icons/backup.pngouassets/icons/database.png), priorize-os. - Implantações / Servidor: Ícones de Foguete / Servidor.
- Erros / Alertas Críticos: Ícones de Aviso / Escudo.
2. Sugerir e Gerar Novos Ícones
- Onde armazenar ícones: Armazene novos ícones em
assets/icons/<nome>.png(dentro da habilidade ou pasta do repositório) ou no diretório de ícones do usuário ($env:USERPROFILE\Pictures\Icons\). - Especificações do Ícone:
- Formato:
PNGouJPG(proporção quadrada 1:1). - Dimensões recomendadas:
256x256ou512x512pixels. - Fundo transparente ou sólido limpo.
- Formato:
- Protocolo Proativo da IA:
- Ao iniciar um novo workflow recorrente (ex.: um novo monitor de servidor de jogo, pipeline de renderização de vídeo ou sincronização de dados), verifique se um ícone correspondente existe em
assets/icons/. - Se nenhum ícone temático existir, proponha:
"Notei que não temos um ícone personalizado para [Nome da Tarefa]. Gostaria que eu gerasse um ícone 256x256 e o salvasse em
assets/icons/[nome].png?" - Use ferramentas de geração de imagens (ex.:
generate_image) ou busque ativos apropriados mediante aprovação do usuário.
- Ao iniciar um novo workflow recorrente (ex.: um novo monitor de servidor de jogo, pipeline de renderização de vídeo ou sincronização de dados), verifique se um ícone correspondente existe em
💻 Integração com PowerShell
Import-Module BurntToast
# Resolver Ícone Padrão / Empacotado (com compatibilidade retroativa)
$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
# Enviar Notificação com Fallback
if ($AppLogo) {
New-BurntToastNotification `
-Text "🦄 Marco da Tarefa: 50%", "Processados 1.024 MB de 2.048 MB" `
-AppLogo $AppLogo `
-Sound 'Default'
} else {
New-BurntToastNotification `
-Text "📊 Marco da Tarefa: 50%", "Processados 1.024 MB de 2.048 MB" `
-Sound 'Default'
}
🐍 Padrão de Integração Python
import subprocess
import os
def send_toast(title: str, message: str, icon_path: str = None):
# Caminhos candidatos para ícone com compatibilidade retroativa
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)
# Exemplo de uso ao longo do ciclo de vida
send_toast("🚀 Tarefa Iniciada", "Escaneando arquivos do espaço de trabalho e calculando checksums...")
send_toast("📊 Progresso: 50%", "Processados 1.024 MB de 2.048 MB")
send_toast("✅ Tarefa Completa (100%)", "2.100 arquivos processados com sucesso!")
🌐 Configuração Global Multi-Agente
Para tornar esta habilidade acessível em todos os agentes na máquina, certifique-se de que esta pasta seja vinculada simbolicamente ou copiada para:
- Antigravity / Gemini:
~/.gemini/config/skills/windows-notify/ - Claude Desktop / Code:
~/.claude/skills/windows-notify/ - Cursor / Trae / Agentes Globais:
~/.agents/skills/windows-notify/