Communitygithub.com

xyz-rainbow/xyz-windows-notify

🦄 Habilidade universal para agentes de IA que permite enviar notificações nativas do Windows (10 e 11) com suporte a ícones inteligentes, progresso em tempo real e alertas sonoros.

O que é xyz-windows-notify?

Esta habilidade capacita qualquer agente de IA (como Antigravity, Claude, GPT, Cursor, Trae, Pi ou Grok) a disparar notificações nativas do Windows usando PowerShell BurntToast, com ícones personalizados, progresso percentual e sons de alerta. Ela resolve automaticamente o caminho do ícone seguindo uma hierarquia inteligente: primeiro o parâmetro explícito do usuário, depois ícones empacotados na habilidade, ícones legados, um diretório personalizado do usuário e, por fim, uma notificação sem ícone. Compatível com Windows 10 e 11, é ideal para workflows como backups, monitoramento, deploy, processamento de vídeo ou qualquer tarefa que precise de feedback visual ao usuário. A habilidade também orienta o agente de IA a sugerir e gerar novos ícones contextuais (256x256 em PNG ou JPG) quando apropriado, armazenando-os em `assets/icons/` ou no diretório de ícones do usuário.

Funciona com✓Claude Code~Codex CLI✓Cursor✓Antigravity✓Gemini CLI
npx skills add xyz-rainbow/xyz-windows-notify

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

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:

  1. Parâmetro Explícito: Caminho fornecido via -AppLogo "caminho/para/icone_personalizado.png".
  2. Ícone Empacotado da Habilidade: Caminho local dentro do diretório da habilidade (ex.: <diretorio_habilidade>/assets/icons/unicorn.jpg).
  3. Ícone Empacotado Legado: <diretorio_habilidade>/assets/unicorn.jpg (para compatibilidade retroativa).
  4. Diretório de Ícone Personalizado do Usuário: Caminho de usuário do ambiente (ex.: $env:USERPROFILE\Pictures\Icons\custom.png se presente).
  5. Fallback Elegante: Notificação nativa do Windows sem -AppLogo se 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.jpg ou assets/icons/icon.jpg.
  • Banco de Dados / Backups: Se existirem ícones especializados (ex.: assets/icons/backup.png ou assets/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: PNG ou JPG (proporção quadrada 1:1).
    • Dimensões recomendadas: 256x256 ou 512x512 pixels.
    • Fundo transparente ou sólido limpo.
  • 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.

💻 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/

Habilidades Relacionadas