XYZ Windows Notify — 汎用AIエージェントスキル
このスキルは、あらゆるAIエージェント(Antigravity、Claude、GPT、Cursor、Trae、Pi、Grokなど)が、Windows 10およびWindows 11と互換性のあるネイティブのWindows トースト通知を、PowerShellのBurntToastを使用して、カスタムブランディング、パーセンテージマイルストーン、動的なアイコン管理とともにトリガーできるようにします。
🚀 Skills CLIを使用したインストール
npx skills add xyz-rainbow/xyz-windows-notify
🦄 バンドルアセットとスマートアイコン解決
このスキルは、デフォルトのブランディングをassets/icons/ディレクトリ(assets/icons/unicorn.jpgおよびassets/icons/icon.jpg)にバンドルしています。
通知を送信する際は、次のスマート解決階層に従います:
- 明示的パラメータ:
-AppLogo "path/to/custom_icon.png"で指定されたパス。 - スキルバンドルアイコン: スキルディレクトリ内のローカルパス(例:
<skill_dir>/assets/icons/unicorn.jpg)。 - レガシーバンドルアイコン:
<skill_dir>/assets/unicorn.jpg(下位互換性のため)。 - ユーザーカスタムアイコンディレクトリ: 環境のユーザーパス(存在する場合、例:
$env:USERPROFILE\Pictures\Icons\custom.png)。 - グレースフルフォールバック: 画像ファイルが存在しない場合は、
-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/に一致するアイコンが存在するか確認します。 - テーマに合ったアイコンが存在しない場合は、以下を提案します:
"[タスク名]に固有のトーストアイコンが見つかりませんでした。カスタム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%", "2,048 MB中1,024 MBを処理しました" `
-AppLogo $AppLogo `
-Sound 'Default'
} else {
New-BurntToastNotification `
-Text "📊 タスクマイルストーン: 50%", "2,048 MB中1,024 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%", "2,048 MB中1,024 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/