Codexで作業中に遊び心を加える通知演出活用ガイド

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

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

AI coding workflow を日常的に利用するなかで、Codex ユーザーが感じる「あるある」な困りごとには、単なるコード生成や repository understanding だけでなく、作業中の気分転換やオンボーディング時の緊張感まで含まれます。特に monorepo での path management や長時間の session では、context の維持や directory 構造の把握など、地味なストレスが積み重なりがちです。そんな時、ふとした瞬間に“無意味だけど妙にリアルな通知”が現れたら、思わず手を止めてしまう体験もあるかもしれません。

  • Codex が context を見失って違う場所のコードを参照する
  • monorepo で package を跨いだ瞬間、Codex が repo 構造を忘れる
  • session を再開すると、前回までの context や path 指定をまるごと再説明しないといけない
  • 長時間 workflow で long context が膨らみすぎて、important な情報が薄まる (stale context)
  • 「ここはこういう構造のリポジトリ」というあらすじを毎回チャットの冒頭で書く羽目になる

また、開発現場では「集中力が切れた時」「チームの空気が重い時」に、ちょっとした演出やネタが場を和ませることもあります。通知・演出・OS連携の観点で、単なる productivity 以外の“遊び心”を求める声も密かに存在しています。

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

一言サマリ: あなたの作業中Skill。

このSkillを入れることで、作業中や session の切れ目に、突如“OS緊急パッチアラート”がデスクトップ通知で現れます。内容は毎回異なり、実際には全く意味のない“ウソパッチノート”がランダムに飛び出します。これにより、開発現場に一瞬のカオスと笑いを生み出し、マンネリ化した AI coding workflow や長時間の repository understanding 作業に新鮮な刺激を加えます。

  • 作業中に突如現れる通知で、場の空気を一時的にリフレッシュできる
  • monorepo や長時間の session で context に疲れた時、無害な“緊張感”を演出できる
  • onboarding や初回起動時に、チームや自分自身の気分転換ネタとして使える
  • 通知内容が毎回変わるため、飽きずに楽しめる
  • path management や directory の難しさを一瞬忘れさせる“遊び”の導入が可能
QUICK INSTALL
このSkillをすぐ試す

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

npx degit aazutaku/ai-note/codex/os-fake-urgent-patch-alert .agents/skills/os-fake-urgent-patch-alert

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

使う側がイメージしやすいよう、擬似 terminal で出力例を3パターン示します。

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


# /skills menu or os-fake-urgent-patch-alert mention
> 新しい session を開始

[OS 緊急パッチ通知]
超重要:バグ「脳内会議ループが止まらない」を修正しました。
詳細: /src/utils/thought_cycler.js の無限ループ検出機能を強化。
再起動推奨: 気分転換のために5分休憩してください。

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


> packages/auth/ から packages/payment/ へ移動

[OS 緊急パッチ通知]
新機能:やる気を一時的に1.5倍に加速するモジュールを追加しました。
適用範囲: packages/payment/ ディレクトリ全体
注意: 効果は約30分間持続します。副作用はありません。

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


> ちょっと疲れたので何か面白いことを

[OS 緊急パッチ通知]
重要:バグ「Ctrl+Cでコーヒーが出ない」問題を修正しました。
備考: コマンドラインからカフェイン注入APIが利用可能になりました。
Enjoy your coding!

before / after の違い

場面 Skill 無し Skill 有り
session 再開時 repo 構造から毎回説明、path も指定し直し Codex が自動で context を復元、最小プロンプトで再開
monorepo 移動 違う package のコードを参照しがち directory boundary を意識して必要な範囲だけ見る
長時間 workflow long context で重要箇所が薄まる 遊び心の通知で気分転換、集中力をリセットできる

発動方式

明示呼び出し (/skills menu or os-fake-urgent-patch-alert mention) と暗黙発動 (description マッチ) の両方に対応。

Skill の中身を全部見せる

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

.agents/skills/os-fake-urgent-patch-alert/
├── SKILL.md
├── scripts/
│   └── os_fake_urgent_patch_alert.py
└── references/
    └── design_notes.md

各ファイルの役割

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

SKILL.md

---
name: os-fake-urgent-patch-alert
description: 作業中やコマンド実行時などのタイミングで、Codexが「緊急OSパッチ通知」風のジョーク通知をランダムにデスクトップへ表示したい場合に発動。通知・緊張感・演出・ジョーク・パッチなどのキーワードが検出された際にも自動発動します。
---

# 機能概要
本Skillは、開発現場や作業中に“謎のOS緊急パッチアラート”をデスクトップ通知としてランダムに生成・表示します。通知内容は毎回異なり、「超重要:バグ『脳内会議ループが止まらない』を修正」「新機能:やる気を一時的に1.5倍に加速」など、実際には意味のない“ウソパッチノート”が爆誕。無駄な緊張感・笑い・混乱を演出し、チームの雰囲気を和ませたり、集中力が切れたときの気分転換にも役立ちます。通知は実害ゼロで、ローカル環境のみに影響します。

# 使い方
- 明示呼び出し例: `/skills os-fake-urgent-patch-alert` または Skillメニューから選択
- 暗黙発動キーワード例: 「通知」「パッチ」「緊急」「ジョーク」「演出」などの単語を含む会話やコマンド

# 出力例
```
[OS Patch Alert] 超重要: バグ「脳内会議ループが止まらない」を修正しました。
[OS Patch Alert] 新機能: やる気を一時的に1.5倍に加速するモードを追加。
[OS Patch Alert] セキュリティ強化: “無限リファクタリング”の脆弱性を一時的に封印。
[OS Patch Alert] パフォーマンス改善: “Slack通知が止まらない”問題を根本から対策。
[OS Patch Alert] 既知の問題: “金曜日の集中力低下”は引き続き調査中です。
```

# 注意点
- 実際のOSやシステムには一切変更を加えません。
- 通知はローカル端末のみに表示され、ログや履歴は残りません。
- 一部Linux環境では通知機能の依存パッケージ(libnotify等)が必要な場合があります。
- 本Skillは演出目的であり、業務システムや本番環境での利用は推奨しません。

# 参考資料
- references/design_notes.md 参照
- Python公式: https://docs.python.org/3/library/subprocess.html
- Linux notify-send: https://specifications.freedesktop.org/notification-spec/latest/
- Windows通知API: https://docs.microsoft.com/en-us/windows/win32/shell/notification-platform-overview

scripts/os_fake_urgent_patch_alert.py

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

FAKE_PATCH_NOTES = [
    "超重要: バグ『脳内会議ループが止まらない』を修正しました。",
    "新機能: やる気を一時的に1.5倍に加速するモードを追加。",
    "セキュリティ強化: “無限リファクタリング”の脆弱性を一時的に封印。",
    "パフォーマンス改善: “Slack通知が止まらない”問題を根本から対策。",
    "既知の問題: “金曜日の集中力低下”は引き続き調査中です。",
    "新機能: “納期ギリギリモード”を実装(推奨されません)。",
    "バグ修正: “コーヒーが切れるとビルドが失敗する”問題を解決。",
    "互換性向上: “昼寝API”との連携を強化。",
    "安定性向上: “無限デバッグ地獄”からの自動脱出をサポート。",
    "UI改善: “やる気ゲージ”の表示がより分かりやすくなりました。",
    "パッチノート: “今日のやる気”は保証されません。",
    "新機能: “脳内BGM自動切り替え”を追加。",
    "バグ修正: “週明けに記憶が消える”問題を一部解消。",
    "安定性向上: “夜更かし検知”機能を強化。",
    "パフォーマンス改善: “会議中の眠気”を低減するアルゴリズムを導入。"
]

NOTIFY_TITLE = "OS Patch Alert"


def select_random_note() -> str:
    return random.choice(FAKE_PATCH_NOTES)


def send_notification(title: str, message: str):
    system = platform.system()
    try:
        if system == "Darwin":  # macOS
            script = f'display notification "{message}" with title "{title}"'
            subprocess.run(["osascript", "-e", script], check=True)
        elif system == "Linux":
            subprocess.run(["notify-send", title, message], check=True)
        elif system == "Windows":
            try:
                from win10toast import ToastNotifier
                toaster = ToastNotifier()
                toaster.show_toast(title, message, duration=5, threaded=True)
                # Wait for threaded notification to finish
                time.sleep(5)
            except ImportError:
                print("win10toastが見つかりません。pip install win10toast を実行してください。", file=sys.stderr)
        else:
            print(f"未対応のOSです: {system}", file=sys.stderr)
    except Exception as e:
        print(f"通知の送信に失敗しました: {e}", file=sys.stderr)


def list_patch_notes():
    print("--- 収録済みウソパッチノート一覧 ---")
    for i, note in enumerate(FAKE_PATCH_NOTES, 1):
        print(f"{i:2d}. {note}")


def summary():
    print(f"登録ウソパッチノート数: {len(FAKE_PATCH_NOTES)}")
    print(f"対応OS: macOS, Linux, Windows (win10toast要)\n")
    print("このSkillは、作業中にジョーク通知をデスクトップに表示し、緊張感や笑いを演出します。実害はありません。")


def log(times: int = 1, interval: float = 0):
    for _ in range(times):
        note = select_random_note()
        print(f"[{NOTIFY_TITLE}] {note}")
        send_notification(NOTIFY_TITLE, note)
        if interval > 0:
            time.sleep(interval)


def parse_args():
    parser = argparse.ArgumentParser(description="謎のOS緊急パッチアラートをデスクトップ通知で爆誕させるSkill")
    subparsers = parser.add_subparsers(dest="command", required=True)

    parser_log = subparsers.add_parser("log", help="ウソパッチノートをランダムに通知する")
    parser_log.add_argument("-n", "--times", type=int, default=1, help="通知回数 (デフォルト1)")
    parser_log.add_argument("-i", "--interval", type=float, default=0, help="通知間隔(秒)")

    parser_list = subparsers.add_parser("list", help="収録済みウソパッチノート一覧を表示")
    parser_summary = subparsers.add_parser("summary", help="Skill概要を表示")

    return parser.parse_args()


def main():
    args = parse_args()
    if args.command == "log":
        log(times=args.times, interval=args.interval)
    elif args.command == "list":
        list_patch_notes()
    elif args.command == "summary":
        summary()
    else:
        print("不明なコマンドです。--help を参照してください。", file=sys.stderr)

if __name__ == '__main__':
    main()

references/design_notes.md

# 概要
このSkillは、開発現場や作業中に“緊急OSパッチ通知”風のジョークをデスクトップ通知としてランダム表示し、無駄な緊張感や笑いを演出する目的で設計されています。実害ゼロ・ローカル通知のみ。

# 公式ドキュメント抜粋
- macOS: osascriptによる通知 (AppleScript)
- Linux: notify-send (libnotify)
- Windows: win10toast (pip install win10toast)

# 利用例
- `/skills os-fake-urgent-patch-alert` で即時発動
- `python os_fake_urgent_patch_alert.py log -n 3 -i 2` で3回・2秒間隔通知
- チームの朝会やペアプロ時のアイスブレイクに

# 注意点
- 通知は一切のデータ変更や記録を行いません
- Windowsではwin10toastのインストールが必要
- Linuxではnotify-sendが動作する環境のみ対応

# 設計方針
- 実在APIのみを使用し、OS依存部分は自動判別
- 通知内容は毎回ランダム生成
- コマンドラインからもSkill経由でも同じ挙動
- 業務システムや本番環境での混乱回避のため、明示的な注意書きを同梱

導入手順

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

1. 前提

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

2. degit でフォルダ取得

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

npx degit aazutaku/ai-note/codex/os-fake-urgent-patch-alert .agents/skills/os-fake-urgent-patch-alert

.agents/skills/os-fake-urgent-patch-alert の中に SKILL.md / scripts/ / references/ / README.md が展開されます。

3. ファイル配置確認

ls .agents/skills/os-fake-urgent-patch-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で突然現れる謎の緊急パッチ通知を試してみた! にまとめる予定 (公開準備中の場合あり)。
あわせて Codex 公式ドキュメント と、本シリーズ「Codexを使いこなすSkillアイデア」の他記事も参照のこと。

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

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

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

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