Claude Codeで開発現場を盛り上げる謎のOS緊急通知演出の作り方

  • URLをコピーしました!
目次

Claude Code ユーザーが日常でぶつかる悩み

Claude Code を使った開発現場では、repo や directory の context 管理、path management、onboarding の煩雑さに加え、作業が単調になりがちな瞬間が意外と多いものです。AI coding workflow に集中しすぎて、ふとしたタイミングで緊張感や空気が重くなることもしばしば。そんなとき、突然の「何これ!?」というカオスな演出が欲しくなる場面も。

  • Claude Code がいつの間にか違う directory を見始めて、想定外のファイルを読みに行く
  • monorepo で package を跨いだ瞬間、Claude Code が repo 構造を忘れる
  • session を再開すると、前回までの context や path 指定をまるごと再説明しないといけない
  • 長時間 workflow で long context が膨らみすぎて、important な情報が薄まる (stale context)
  • チーム全体が真面目な空気になりすぎて、ちょっとした遊び心やリフレッシュが欲しい

特に通知・演出・OS連携まわりは、開発効率とは別の「現場の雰囲気作り」や「気分転換」にも密接に関わります。

この Skill が一言でいうと何を解決するか

一言サマリ: このスキルは、作業中のデスクトップに“謎のOS緊急アラート”を唐突に表示し、開発現場に一瞬だけカオスと笑いをもたらすSkill。

もう少し具体化すると、このSkillを入れることで以下のような状態になる:

  • AI coding workflow の合間に、意味不明なデスクトップ通知で場の空気を一新できる
  • monorepo や複雑な repository 構造で、path management や context 管理に疲れたときのリフレッシュになる
  • onboarding や長時間 session の途中で、誰も予想しないカオスなアラートが会話のきっかけになる
  • 通知内容が完全に業務と無関係なため、ストレスフリーで導入可能
  • いつでも安全にON/OFFできるので、真面目な workflow を邪魔しない
QUICK INSTALL
このSkillをすぐ試す

GitHub から degit でコマンド1行、Claude Code の Skill ディレクトリに展開できます。Node.js があれば即時に動きます。

npx degit aazutaku/ai-note/claude-code/desktop-chaos-alert .claude/skills/desktop-chaos-alert

実行したらこうなる (3つの利用シーン)

Skill の発動で、意味不明なOS風アラートがデスクトップに表示されます。以下に3パターンの利用シーンを示します。

シーン1: session 開始時 (CLAUDE.md と組み合わせて)


# /desktop-chaos-alert
> セッションを始めます。CLAUDE.md で初期化して

[デスクトップ通知]
危険:バグが自我を獲得しました
詳細:/src/core/chaos_engine.py で異常振る舞いを検出。
対処:AIに話しかけても無駄です。コーヒーを飲んで深呼吸しましょう。

(Claude Code)
> 初期化完了。必要な context をロードしました。

シーン2: monorepo / package 跨ぎ作業時


> packages/auth から packages/api に移動して作業します

[デスクトップ通知]
深刻:キーボードが人生に迷っています
詳細:/packages/api/handler.js で入力が哲学的になりました。
対処:パッケージの境界線を見失わないようご注意ください。

(Claude Code)
> context 切り替えを検知しました。必要な repository understanding を再構築中です。

シーン3: お遊び的な使い方


> ちょっと気分転換したい

[デスクトップ通知]
注意:メモリがピクニック中
詳細:/utils/memory_manager.ts で思考が外出しています。
対処:おやつ休憩をおすすめします。

(Claude Code)
> 休憩タイミングを記録しました。再開時は context を自動復元します。

before / after の違い

場面 Skill 無し Skill 有り
session 再開時 repo 構造から毎回説明、path も指定し直し Claude Code が自動で context を復元、最小プロンプトで再開+謎アラートでリフレッシュ
monorepo 移動 違う package のコードを参照しがち directory boundary を意識+カオス通知で場が和む
長時間 workflow long context で重要箇所が薄まる 意味不明なアラートで集中力を一時リセット

発動方式

明示呼び出し (/desktop-chaos-alert) と、説明文や会話内容に応じた暗黙発動の両方に対応しています。

Skill の中身を全部見せる

.claude/skills/desktop-chaos-alert/ に配置するファイル一覧です。GitHub に push 済みなので、上記の degit コマンドで一発取得できます。

.claude/skills/desktop-chaos-alert/
├── SKILL.md
├── scripts/
│   └── desktop_chaos_alert.py
└── references/
    └── design_notes.md

各ファイルの役割

ファイル 役割
SKILL.md Skill本体。frontmatter (name/description) と指示本文。Claude Code がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します
scripts/desktop_chaos_alert.py 謎のカオス通知をデスクトップに表示するスクリプト
references/design_notes.md 概要 をまとめた参考資料

SKILL.md

---
name: desktop-chaos-alert
description: Claude Codeは、作業中の緊張緩和やチームの雰囲気転換、または「カオス」「混沌」「息抜き」「通知」「無意味」などのキーワードを含む会話やリクエスト時に、このSkillの発動を検討してください。明示的な /desktop-chaos-alert 呼び出しにも対応します。
---

# 機能概要
このSkillは、開発現場や作業中のPCに突如として“謎のOS緊急アラート”風のデスクトップ通知を表示します。通知内容は「危険:バグが自我を獲得しました」「注意:メモリがピクニック中」など、業務と全く関係ないカオスなメッセージばかり。真面目な空気を一瞬で和ませたり、チームの息抜きやアイスブレイクに最適です。通知は実害ゼロで、システムやファイルには一切影響しません。

# 使い方
- 明示呼び出し例:
  `/desktop-chaos-alert` または `/skill desktop-chaos-alert`
- 暗黙発動キーワード例:
  「カオスな通知」「意味不明な警告を出して」「息抜きしたい」「変なアラート」「混沌を演出」などを含む会話やリクエスト

# 出力例
```
[通知] 危険:バグが自我を獲得しました
[通知] 注意:メモリがピクニック中
[通知] 深刻:キーボードが人生に迷っています
[通知] 警告:OSが哲学的思索に入りました
[通知] 重大:CPUが詩を書き始めました
```

# 注意点
- 通知はローカルPCのデスクトップ通知機能を利用します。Linux/macOS/Windowsで動作しますが、通知許可が必要です。
- 実際のファイルやシステムには一切影響を与えません。
- 通知頻度や内容はスクリプト内で調整可能です。
- 不要な場合はスクリプトの停止やアンインストールで簡単に無効化できます。

# 参考資料
- references/design_notes.md 参照
- 公式: https://docs.python.org/ja/3/library/subprocess.html, https://plyer.readthedocs.io/en/latest/
- OS通知API: Windows (win10toast), macOS (osascript), Linux (notify-send) など

scripts/desktop_chaos_alert.py

import sys
import os
import argparse
import random
import time
import subprocess
from typing import List

CHAOS_MESSAGES = [
    "危険:バグが自我を獲得しました",
    "注意:メモリがピクニック中",
    "深刻:キーボードが人生に迷っています",
    "警告:OSが哲学的思索に入りました",
    "重大:CPUが詩を書き始めました",
    "警告:ファイルシステムが夢を見ています",
    "注意:ネットワークが宇宙に旅立ちました",
    "深刻:マウスが反乱を企てています",
    "危険:ディスクが瞑想に入りました",
    "警告:プロセスが自己主張を始めました",
    "注意:システムクロックが逆走中",
    "重大:RAMが詩的表現を学習中",
    "警告:USBが異次元に消えました",
    "深刻:GPUが絵画を描いています",
    "注意:BIOSが人生相談を始めました"
]

def detect_os() -> str:
    if sys.platform.startswith('win'):
        return 'windows'
    elif sys.platform.startswith('darwin'):
        return 'macos'
    elif sys.platform.startswith('linux'):
        return 'linux'
    else:
        return 'unknown'

def send_notification(title: str, message: str):
    os_type = detect_os()
    if os_type == 'windows':
        try:
            from win10toast import ToastNotifier
            toaster = ToastNotifier()
            toaster.show_toast(title, message, duration=5, threaded=True)
        except ImportError:
            # Fallback: powershell
            script = f'[Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType = WindowsRuntime] > $null;'
            script += f'$template = [Windows.UI.Notifications.ToastNotificationManager]::GetTemplateContent([Windows.UI.Notifications.ToastTemplateType]::ToastText02);'
            script += f'$toastXml = $template;'
            script += f'$toastXml.GetElementsByTagName(\"text\")[0].AppendChild($toastXml.CreateTextNode(\"{title}\")) > $null;'
            script += f'$toastXml.GetElementsByTagName(\"text\")[1].AppendChild($toastXml.CreateTextNode(\"{message}\")) > $null;'
            script += f'$toast = [Windows.UI.Notifications.ToastNotification]::new($toastXml);'
            script += f'$notifier = [Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier(\"Desktop Chaos Alert\");'
            script += f'$notifier.Show($toast)'
            subprocess.run(["powershell", "-Command", script], shell=True)
    elif os_type == 'macos':
        script = f'display notification "{message}" with title "{title}"'
        subprocess.run(["osascript", "-e", script])
    elif os_type == 'linux':
        try:
            subprocess.run(["notify-send", title, message])
        except Exception:
            print(f"[通知] {title}: {message}")
    else:
        print(f"[通知] {title}: {message}")


def list_messages():
    print("=== カオス通知メッセージ一覧 ===")
    for idx, msg in enumerate(CHAOS_MESSAGES, 1):
        print(f"{idx:2d}: {msg}")


def show_random_alert(count: int = 1, interval: float = 1.5):
    for _ in range(count):
        msg = random.choice(CHAOS_MESSAGES)
        send_notification("謎のOS緊急アラート", msg)
        time.sleep(interval)


def show_all_alerts(interval: float = 1.2):
    for msg in CHAOS_MESSAGES:
        send_notification("謎のOS緊急アラート", msg)
        time.sleep(interval)


def parse_args():
    parser = argparse.ArgumentParser(description="謎のカオス通知をデスクトップに表示するスクリプト")
    subparsers = parser.add_subparsers(dest="command")

    parser_alert = subparsers.add_parser("alert", help="ランダムなカオス通知を表示")
    parser_alert.add_argument("-n", "--number", type=int, default=1, help="通知の回数")
    parser_alert.add_argument("-i", "--interval", type=float, default=1.5, help="通知間隔(秒)")

    parser_all = subparsers.add_parser("all", help="全てのカオス通知を順番に表示")
    parser_all.add_argument("-i", "--interval", type=float, default=1.2, help="通知間隔(秒)")

    parser_list = subparsers.add_parser("list", help="カオス通知メッセージ一覧を表示")

    return parser.parse_args()


def main():
    args = parse_args()
    if args.command == "alert":
        show_random_alert(count=args.number, interval=args.interval)
    elif args.command == "all":
        show_all_alerts(interval=args.interval)
    elif args.command == "list":
        list_messages()
    else:
        print("コマンドを指定してください (alert, all, list)。--help 参照。")

if __name__ == '__main__':
    main()

references/design_notes.md

# 概要
このSkillは、開発現場の空気を一瞬でカオスに染めるための“無意味なデスクトップ通知”を安全に発生させることを目的としています。実用性はゼロですが、息抜きやチームビルディング、アイスブレイク用途で活躍します。

# 公式ドキュメント抜粋
- Python subprocess: https://docs.python.org/ja/3/library/subprocess.html
- plyer通知API: https://plyer.readthedocs.io/en/latest/
- win10toast: https://github.com/jithurjacob/Windows-10-Toast-Notifications

# 利用例
- `/desktop-chaos-alert` で即座に謎の通知を発動
- ミーティング中のアイスブレイクや、開発現場の息抜きタイムに
- 「カオスな通知を出して」などの自然言語でのトリガーにも対応

# 注意点
- 通知はOS標準APIを利用し、ファイルやシステムには一切影響しません
- 通知許可が必要な場合があります
- 不要時はスクリプト停止やSkill無効化で簡単にオフ可能

# 設計方針
- OSごとに最適な通知APIを自動選択
- メッセージは完全に無害で、実害ゼロ
- スクリプト単体で完結し、依存性は最小限

導入手順

このSkillは GitHub で管理されているので、degit を使えば必要なフォルダだけを1コマンドで取得できます。Claude Code はファイル配置後に再起動するだけで自動認識します。

1. 前提

  • Node.js v16 以上 (degit 実行に必要)
  • Claude Code がローカルで動いていること

2. degit でフォルダ取得

プロジェクトのルートで以下のコマンドを実行します。

npx degit aazutaku/ai-note/claude-code/desktop-chaos-alert .claude/skills/desktop-chaos-alert

.claude/skills/desktop-chaos-alert の中に SKILL.md / scripts/ / references/ / README.md が展開されます。

3. ファイル配置確認

ls .claude/skills/desktop-chaos-alert
# SKILL.md, scripts/, references/, README.md があればOK

4. Claude Code を再起動 (or Skill 自動検出を待つ)

新しいSkillが自動で認識されます。リスト確認したい場合は /desktop-chaos-alert と Skill 名で出てきます。

5. 動作確認

/desktop-chaos-alert で呼び出すか、自然言語で発動条件にマッチする指示を出すと Skill が動きます。期待される出力イメージは「実行したらこうなる」セクションを参照してください。

こんな瞬間に便利

  • session 開始時: 前回までの repo 把握を Claude Code に一発で復元させたい
  • monorepo 移動時: packages を跨いだ瞬間に context を切り替えたい
  • onboarding 時: 新しい repo を Claude Code に把握させ、こちらが path を全部指定する手間を省きたい
  • session 再開時: long context が切れた後でも、必要な path と directory 構造だけ素早く戻したい
  • package 跨ぎ作業時: directory boundary を Skill 側で管理して、irrelevant な path 混入を防ぎたい
  • long-running workflow 前: long context で重要箇所が薄まる前に snapshot を取りたい
  • 現場の空気が重いとき: 意図的にカオスな通知でリフレッシュしたい

気になるポイント (壊れそうな箇所)

実運用に乗せる前に頭に入れておきたい懸念。後で検証する観点でもある:

  • stale context 問題: 長時間 workflow で Skill 出力が古くなり、現状と乖離する可能性
  • directory 増えすぎ問題: 大規模 repo で全 directory を網羅すると出力が肥大化して context window を圧迫
  • monorepo 肥大化: packages が多い構成では出力が雑になり、結局 path 指定し直しになる懸念
  • irrelevant path 混入: node_modules / build 成果物 / generated コードを拾ってしまう可能性
  • Claude Code 固有の引っかかり: paths フロントマターでの絞り込みを使わないと意図しないタイミングで発動する
  • 発動しないケース: description が漠然 / 他の Skill が優先 / git管理外 directory
  • 意図しないタイミングで通知が出る: 作業の流れと関係なくアラートが表示される場合がある
  • 通知の無効化: Skill のON/OFF切り替えがわかりやすいか要確認

試す前に確かめたいこと

この Skill を実運用に投入する前に確かめたい問いを並べる:

  • 実 repo での token 消費は許容範囲か?
  • monorepo (packages 多数) で安定して動くか?
  • stale context にならず、長時間 workflow でも有効か?
  • CLAUDE.md との連携設計はどうあるべきか?
  • 意図しないタイミングで通知が出現しないか?
  • 通知内容が本当に業務と無関係なカオスであることを確認できるか?
  • 通知が安全かつ簡単にオフにできるか?

実際に Claude Code で試した検証ログは Claude Codeで謎のOS緊急アラートを爆誕させてみた! にまとめる予定 (公開準備中の場合あり)。
あわせて Claude Code 公式ドキュメント と、本シリーズ「Claude Codeを便利にするSkill提案」の他記事も参照のこと。

関連タグで他のSkill記事を探す

本記事に付いているタグから、気になるテーマの記事を探せます。タグページで関連記事をまとめて読めるので、ぜひチェックしてみてください!

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次