Communitygithub.com

xyz-rainbow/xyz-windows-notify

🦄 通用AI代理技能,支持Windows(10和11)原生通知,具备智能图标解析、实时进度显示和声音提醒功能。

xyz-windows-notify 是什么?

XYZ Windows Notify 是一款通用AI代理技能,可在Windows 10和11上触发原生Toast通知。它基于BurntToast PowerShell模块,支持自定义品牌图标、百分比里程碑和动态图标管理。该技能内置智能图标解析层级,可优先使用显式参数、技能捆绑图标或用户自定义目录中的图标,若无有效图片则优雅降级为无图标通知。除了默认图标,AI代理还能根据上下文(数据库、部署、错误等)选择或建议生成主题图标(推荐256x256 PNG/JPG)。该技能提供PowerShell和Python集成模式,支持多代理全局配置,可符号链接或复制至Antigravity、Claude、Cursor等代理的配置目录,实现跨代理统一使用。

兼容平台✓Claude Code~Codex CLI✓Cursor✓Antigravity✓Gemini CLI
npx skills add xyz-rainbow/xyz-windows-notify

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

XYZ Windows Notify — 通用AI代理技能

该技能使任何AI代理(Antigravity、Claude、GPT、Cursor、Trae、Pi、Grok 等)能够触发原生的 Windows Toast 通知(兼容 Windows 10 和 Windows 11),通过 PowerShell BurntToast 实现自定义品牌、百分比里程碑和动态图标管理。


🚀 通过 Skills CLI 安装

npx skills add xyz-rainbow/xyz-windows-notify

🦄 捆绑资产与智能图标解析

该技能在 assets/icons/ 目录中捆绑了默认品牌图标(assets/icons/unicorn.jpg 和 assets/icons/icon.jpg)。

发送通知时,遵循以下 智能解析层级:

  1. 显式参数:通过 -AppLogo "path/to/custom_icon.png" 提供的路径。
  2. 技能捆绑图标:技能目录内的本地路径(例如 <skill_dir>/assets/icons/unicorn.jpg)。
  3. 旧版捆绑图标:<skill_dir>/assets/unicorn.jpg(用于向后兼容)。
  4. 用户自定义图标目录:环境用户路径(例如 $env:USERPROFILE\Pictures\Icons\custom.png,如果存在)。
  5. 优雅降级:如果不存在任何图片文件,则不使用 -AppLogo 发送原生Windows通知。

🤖 AI代理自定义图标与生成指南

使用该技能的AI代理应主动管理视觉反馈:

1. 上下文图标选择

  • 通用/默认:使用 assets/icons/unicorn.jpg 或 assets/icons/icon.jpg。
  • 数据库/备份:如果存在专用图标(例如 assets/icons/backup.png 或 assets/icons/database.png),优先使用。
  • 部署/服务器:使用火箭/服务器图标。
  • 错误/严重警报:使用警告/盾牌图标。

2. 建议与生成新图标

  • 图标存储位置:将新图标保存在 assets/icons/<name>.png(技能或仓库文件夹内)或用户的图标目录($env:USERPROFILE\Pictures\Icons\)中。
  • 图标规格:
    • 格式:PNG 或 JPG(正方形1:1宽高比)。
    • 推荐尺寸:256x256 或 512x512 像素。
    • 透明或干净的纯色背景。
  • 主动式AI协议:
    • 当开始新的重复性工作流程(例如新的游戏服务器监控、视频渲染管道或数据同步)时,检查 assets/icons/ 中是否存在匹配的图标。
    • 如果不存在主题图标,建议:

      “我注意到我们还没有 [任务名称] 的专用Toast图标。您是否希望我生成一个自定义256x256图标,并保存到 assets/icons/[name].png?”

    • 使用图像生成工具(例如 generate_image)或在用户批准后获取合适的资产。

💻 PowerShell 集成

Import-Module BurntToast

# 解析默认/捆绑图标(含向后兼容)
$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

# 发送带降级处理的通知
if ($AppLogo) {
    New-BurntToastNotification `
        -Text "🦄 任务里程碑:50%", "已处理 1,024 MB / 2,048 MB" `
        -AppLogo $AppLogo `
        -Sound 'Default'
} else {
    New-BurntToastNotification `
        -Text "📊 任务里程碑:50%", "已处理 1,024 MB / 2,048 MB" `
        -Sound 'Default'
}

🐍 Python 集成模式

import subprocess
import os

def send_toast(title: str, message: str, icon_path: str = None):
    # 候选图标路径(含向后兼容)
    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)

# 生命周期中的示例用法
send_toast("🚀 任务开始", "正在扫描工作区文件并计算校验和...")
send_toast("📊 进度:50%", "已处理 1,024 MB / 2,048 MB")
send_toast("✅ 任务完成(100%)", "成功处理了 2,100 个文件!")

🌐 多代理全局配置

要使该技能在机器上的所有代理中可用,请确保将此文件夹符号链接或复制到以下位置:

  • Antigravity / Gemini:~/.gemini/config/skills/windows-notify/
  • Claude Desktop / Code:~/.claude/skills/windows-notify/
  • Cursor / Trae / 全局代理:~/.agents/skills/windows-notify/

相关技能