Codexで唐突な謎アラートを演出して開発現場を盛り上げる方法

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

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

日々の開発現場で、Codex を利用していると「真面目な空気が張り詰めたまま」「集中しすぎて逆に効率が落ちる」「たまにはチームのテンションを崩したいけど、きっかけがない」と感じる場面が少なくありません。特に、通知や演出系の機能が不足しており、業務に直接関係しない“遊び心”を自然に挟むのが難しいと感じるユーザーも多いはずです。

  • 長時間のAI coding workflowで集中力が持続しすぎ、逆に疲労感が蓄積する
  • Codex の context 管理や repository understanding に没頭しすぎて、チーム内の空気が硬直化する
  • monorepo での directory や path management を繰り返すうち、作業が単調になりがち
  • onboarding や session 再開時、毎回同じ説明を繰り返すことで場の雰囲気が沈みがち
  • 「何か一発、無駄でカオスな演出が欲しい」と思っても、即導入できるSkillが見つからない

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

一言サマリ: このスキルは、開発現場に“謎のOS緊急アラート”をデスクトップ通知として爆誕させ、真面目な空気を一瞬でカオスに変えるSkill。

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

  • 長時間のAI coding workflowやrepo作業の合間に、意味不明なアラートで場の雰囲気をリフレッシュできる
  • Codexのcontextやpath managementに疲れたタイミングで、無害な“混沌”を投入し、気分転換が図れる
  • onboardingやmonorepo移動時の硬直した空気を、遊び心ある通知で和らげる効果
  • 「また同じ説明か…」というsession再開時のマンネリ感を、意表を突く演出で打破できる
  • Skillは実害ゼロ、いつでも安全にON/OFFできるため、業務フローを壊さず導入可能
QUICK INSTALL
このSkillをすぐ試す

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

npx degit aazutaku/ai-note/codex/desktop-chaos-alert .agents/skills/desktop-chaos-alert

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

使う側がイメージしやすいよう、擬似 terminal で出力例を3パターン示す。Skill が返す出力は推測だが、現実的なフォーマット・現実的な長さで書く。

シーン1: session 開始時 (プロジェクト初動で)


# /skills menu から desktop-chaos-alert を選択

[ALERT] 危険:バグが自我を獲得しました
説明: /src/utils/chaos.js で未知の生命体が発生しました。
推奨対応: コーヒーを飲んで深呼吸してください。

[通知] OS緊急アラート: メモリがピクニック中です。
詳細: repository understanding に深刻な混乱が発生中。

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


> monorepo の packages/core/ から packages/ui/ に移動

[ALERT] 注意:ディレクトリが現実逃避を始めました
詳細: packages/ui/components/Button.jsx でpath managementが迷子です。

[通知] 深刻:キーボードが人生に迷っています
補足: context window がカオス化しています。repository understanding にご注意を。

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


> $desktop-chaos-alert

[ALERT] 警告:README.mdが詩的になりすぎています
ヒント: onboarding中に詩を詠むことは推奨されません。

[通知] OS緊急アラート: デプロイが月旅行に出かけました。
詳細: long context の影響で現実世界に戻れません。

before / after の違い

場面 Skill 無し Skill 有り
session 再開時 repo 構造から毎回説明、path も指定し直し Codex が自動で context を復元、最小プロンプトで再開
monorepo 移動 違う package のコードを参照しがち directory boundary を意識して必要な範囲だけ見る
長時間 workflow long context で重要箇所が薄まる 意味不明なアラートで一時的に workflow をリセット、リフレッシュ

発動方式

明示呼び出し (/skills menu or $skill-name mention) と暗黙発動 (description マッチ) の両方に対応。

Skill の中身を全部見せる

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

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

各ファイルの役割

ファイル 役割
SKILL.md Skill本体。frontmatter (name/description) と指示本文。Codex がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します
scripts/desktop_chaos_alert.py desktop-chaos-alert: 謎のOSアラートをデスクトップ通知で爆誕させるスキル
references/reference.md 概要 をまとめた参考資料

SKILL.md

---
name: desktop-chaos-alert
description: 作業中や会話の流れで「緊急」「アラート」「OS警告」「混乱」「カオス」「通知」などのキーワードが現れた際、または /skills menu や desktop-chaos-alert の明示呼び出し時に発動します。突然、意味不明なOS風アラートをデスクトップ通知で表示し、真面目な雰囲気を一瞬で壊します。
---

# 機能概要
このSkillは、開発現場や作業中に突如として“謎のOS緊急アラート”をデスクトップ通知で表示し、場の空気を一瞬でカオスに染め上げる演出ツールです。通知内容は「危険:バグが自我を獲得しました」「注意:メモリがピクニック中」など、業務と無関係な意味不明メッセージのみ。実害ゼロで、真面目な空気や張り詰めた現場に笑いを提供します。

# 使い方
- 明示的な呼び出し: `/skills menu` で一覧から選択、または `desktop-chaos-alert` を直接メンション
- 暗黙的な発動: 「アラート」「緊急」「混乱」「カオス」「通知」などのキーワードが会話や作業ログに登場した際に自動発動

# 出力例
```
通知: 危険:バグが自我を獲得しました
通知: 注意:メモリがピクニック中
通知: 深刻:キーボードが人生に迷っています
通知: 警告:CPUが詩を書き始めました
通知: 注意:OSが昼寝を要求しています
```

# 注意点
- 通知はローカル環境のデスクトップ通知APIを利用し、履歴やファイル保存は行いません
- 業務やシステムに影響を与えることはありませんが、通知が不要な場合は `--disable` オプションで停止可能です
- Linux/macOS/Windowsの主要デスクトップ環境に対応しています

# 参考資料
詳細な設計方針や参考文献は references/ 以下に記載。公式API仕様やクロスプラットフォーム通知技術についても参照ください。

scripts/desktop_chaos_alert.py

import sys
import os
import random
import argparse
import platform
import subprocess
import threading
import time

MESSAGES = [
    "危険:バグが自我を獲得しました",
    "注意:メモリがピクニック中",
    "深刻:キーボードが人生に迷っています",
    "警告:CPUが詩を書き始めました",
    "注意:OSが昼寝を要求しています",
    "警告:ファイルシステムが哲学的疑問を抱えています",
    "注意:GPUが現実逃避しています",
    "深刻:ネットワークが占いを始めました",
    "危険:プロセスが無限ループに恋をしました",
    "警告:システム時刻が未来に行きたがっています",
    "注意:マウスが自分探しの旅に出ました",
    "深刻:ログファイルが詩的表現を始めました"
]

PLATFORM = platform.system()


def send_notification(title: str, message: str):
    if PLATFORM == "Darwin":
        # macOS: 使用osascript
        script = f'display notification "{message}" with title "{title}"'
        subprocess.run(["osascript", "-e", script], check=False)
    elif PLATFORM == "Linux":
        # Linux: notify-send
        subprocess.run(["notify-send", title, message], check=False)
    elif PLATFORM == "Windows":
        try:
            from win10toast import ToastNotifier
            toaster = ToastNotifier()
            toaster.show_toast(title, message, duration=5, threaded=True)
        except ImportError:
            print("win10toastが見つかりません。'pip install win10toast'でインストールしてください。")
    else:
        print(f"通知: {title}: {message}")


def random_alert():
    title = "謎のOS緊急アラート"
    message = random.choice(MESSAGES)
    send_notification(title, message)
    print(f"通知: {message}")


def list_messages():
    print("=== カオスアラート メッセージ一覧 ===")
    for i, msg in enumerate(MESSAGES, 1):
        print(f"{i:2d}: {msg}")


def add_message(msg: str):
    if msg.strip() and msg not in MESSAGES:
        MESSAGES.append(msg)
        print(f"追加: {msg}")
    else:
        print("既に存在するか空のメッセージです。")


def summary():
    print("# desktop-chaos-alert 概要")
    print(f"対応OS: {PLATFORM}")
    print(f"登録メッセージ数: {len(MESSAGES)}")
    print("通知API: macOS=osascript, Linux=notify-send, Windows=win10toast")
    print("通知履歴: 保存なし (一時的)\n")


def disable_alert():
    flag_path = os.path.expanduser("~/.desktop_chaos_alert_disabled")
    with open(flag_path, "w") as f:
        f.write("1")
    print("通知機能を無効化しました。再有効化は --enable で。")


def enable_alert():
    flag_path = os.path.expanduser("~/.desktop_chaos_alert_disabled")
    if os.path.exists(flag_path):
        os.remove(flag_path)
        print("通知機能を再有効化しました。")
    else:
        print("既に有効です。")


def is_disabled():
    flag_path = os.path.expanduser("~/.desktop_chaos_alert_disabled")
    return os.path.exists(flag_path)


def periodic_alert(interval: int, count: int):
    for _ in range(count):
        if is_disabled():
            print("通知は現在無効化されています。")
            break
        random_alert()
        time.sleep(interval)


def main():
    parser = argparse.ArgumentParser(description="desktop-chaos-alert: 謎のOSアラートをデスクトップ通知で爆誕させるスキル")
    subparsers = parser.add_subparsers(dest="command")

    subparsers.add_parser("alert", help="ランダムなカオス通知を1回表示")
    subparsers.add_parser("list", help="登録済みメッセージ一覧を表示")
    subparsers.add_parser("summary", help="Skillの概要を表示")

    add_parser = subparsers.add_parser("add", help="新しいカオスメッセージを追加")
    add_parser.add_argument("message", type=str, help="追加するメッセージ")

    subparsers.add_parser("disable", help="通知機能を無効化")
    subparsers.add_parser("enable", help="通知機能を再有効化")

    periodic_parser = subparsers.add_parser("periodic", help="一定間隔で複数回通知")
    periodic_parser.add_argument("--interval", type=int, default=10, help="通知間隔(秒)")
    periodic_parser.add_argument("--count", type=int, default=3, help="通知回数")

    args = parser.parse_args()

    if args.command == "alert":
        if is_disabled():
            print("通知は現在無効化されています。--enable で再有効化できます。")
            return
        random_alert()
    elif args.command == "list":
        list_messages()
    elif args.command == "add":
        add_message(args.message)
    elif args.command == "summary":
        summary()
    elif args.command == "disable":
        disable_alert()
    elif args.command == "enable":
        enable_alert()
    elif args.command == "periodic":
        if is_disabled():
            print("通知は現在無効化されています。--enable で再有効化できます。")
            return
        periodic_alert(args.interval, args.count)
    else:
        parser.print_help()

if __name__ == "__main__":
    main()

references/reference.md

# 概要
このSkillは、開発現場やオンライン会議などで突然「謎のOS緊急アラート」をデスクトップ通知として表示し、場の空気を和ませたり、意図的にカオスを演出するためのものです。通知内容は完全に無意味かつ無害なジョークメッセージのみです。

# 公式ドキュメント抜粋
- macOS: [AppleScript display notification](https://developer.apple.com/library/archive/documentation/LanguagesUtilities/Conceptual/MacAutomationScriptingGuide/DisplayDialogandNotifications.html)
- Linux: [notify-send (libnotify)](https://specifications.freedesktop.org/notification-spec/latest/)
- Windows: [win10toast PyPI](https://pypi.org/project/win10toast/)

# 利用例
- チームの雑談タイムやリモート会議中のアイスブレイク
- 長時間の集中作業の合間に笑いを誘う
- 業務外のイベントやLT会での演出

# 注意点
- 通知は一時的で、履歴やファイル保存は行いません
- 通知が不要な場合は `disable` サブコマンドで簡単に停止できます
- Windowsではwin10toastライブラリが必要です(pipでインストール可能)

# 設計方針
クロスプラットフォーム対応を重視し、実害ゼロ・ログ非保存・即時停止可能な設計としています。通知APIの標準仕様のみを利用し、外部サービス連携や実システムへの影響は一切ありません。

導入手順

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

1. 前提

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

2. degit でフォルダ取得

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

npx degit aazutaku/ai-note/codex/desktop-chaos-alert .agents/skills/desktop-chaos-alert

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

3. ファイル配置確認

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

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

新しいSkillが自動で認識されます。リスト確認したい場合は /skills menu or $skill-name mention と Skill 名で出てきます。

5. 動作確認

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

こんな瞬間に便利

  • session 開始時: 前回までの repo 把握を Codex に一発で復元させたい
  • monorepo 移動時: packages を跨いだ瞬間に context を切り替えたい
  • onboarding 時: 新しい repo を Codex に把握させ、こちらが 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 コードを拾ってしまう可能性
  • Codex 固有の引っかかり: description のセマンティックマッチ精度が要件次第
  • 発動しないケース: description が漠然 / 他の Skill が優先 / git管理外 directory

試す前に確かめたいこと

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

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

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

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

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

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

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