Codexで作業中の不意打ち通知を演出する完全攻略ガイド

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

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

日々のAIコーディング現場では、真面目な作業の連続に気が詰まりがちです。特にCodexを使ったrepository理解やpath管理、contextの維持に追われる中、ふとした瞬間に“非日常”が欲しくなることも。そんな中で次のような悩みや「あるある」が生まれがちです。

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

また、単調なAI coding workflowに慣れてくると、チーム全体の空気が硬直し、ちょっとした“遊び心”やサプライズが恋しくなることも。そんな時に「突然意味不明なOSロックダウン通知が炸裂したら…」という妄想が現実になったら、日常が一瞬でカオスに変わるかもしれません。

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

一言サマリ: このスキルは、Codexの作業現場に“謎のOSロックダウン通知”という非日常の演出をランダムに挟むSkill。

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

  • AI coding workflowの単調さを打破し、突然の“カオス”でチームの緊張をほぐせる
  • repository understandingやonboardingの合間に、職場に笑いと話題を提供できる
  • 長時間のsessionやmonorepo作業中でも、contextに依存せず“非現実的な通知”が舞い降りる
  • Codexの通知・演出Skillとして、他のSkillと組み合わせて使うことで空気を一変できる
  • 実ファイルや環境には一切影響せず、メモリやcontextを汚さずに楽しめる
QUICK INSTALL
このSkillをすぐ試す

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

npx degit aazutaku/ai-note/codex/random-os-fake-lockdown-alert .agents/skills/random-os-fake-lockdown-alert

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

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

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


# /skills menu or random-os-fake-lockdown-alert mention
> 今日から新しいリポジトリで作業開始

*** 緊急通知 ***
OSロックダウン発令: 本日より全ファイル凍結
理由: カフェイン過剰摂取検知
解除方法: 深呼吸5回 & コーヒーをマグから撤去してください
対象ディレクトリ: /src, /config, /README.md
有効期限: 23:59まで
-----------------------------
※ 解除後は通常作業に戻れます

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


> packages/core/utils に移動してテスト実行

*** SYSTEM ALERT ***
OS lockdown: パッケージ跨ぎ検出
理由: package.json内に「謎の依存関係」発見
解除方法: 隣の席の人に「今日は何曜日ですか?」と聞く
影響範囲: packages/core/, packages/ui/
-----------------------------
作業は一時中断されました (冗談です)

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


> ちょっと集中力が切れてきたので何か面白いことを

*** FAKE OS LOCKDOWN ***
全プロセスが一時停止されました
理由: キーボードの打鍵速度が異常値を記録
解除方法: 画面の前でジャンプ3回
対象: 

Skill の中身を全部見せる

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

.agents/skills/random-os-fake-lockdown-alert/
├── SKILL.md
├── scripts/
│   └── random_os_fake_lockdown_alert.py
└── references/
    └── design_notes.md

各ファイルの役割

ファイル 役割
SKILL.md Skill本体。frontmatter (name/description) と指示本文。Codex がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します
scripts/random_os_fake_lockdown_alert.py 謎のOSロックダウン通知をランダムに生成・表示します。
references/design_notes.md 概要 をまとめた参考資料

SKILL.md

---
name: random-os-fake-lockdown-alert
description: 作業中や会話内で『ロック』『凍結』『緊急』『OS』『通知』などの単語が出現、または明示的に /skills menu や skill名が呼ばれた際に発動。非現実的なロックダウン通知をランダム生成し、現実のファイルや環境へ影響しない。
---

# 機能概要
このSkillは、あなたの作業環境に突然『謎のOSロックダウン発令通知』を出現させます。通知内容は完全ランダムで「本日より全ファイル凍結」「理由:カフェイン過剰摂取検知」「解除方法:深呼吸5回」など、現実にはあり得ないユーモア溢れるものばかり。真面目な雰囲気の中に突如“非日常”を演出し、職場やチームの空気を一瞬で和ませます。実際のファイルや環境には一切影響を与えず、安心してご利用いただけます。

# 使い方
- 明示呼び出し: `/skills menu` から「random-os-fake-lockdown-alert」を選択、または `$random-os-fake-lockdown-alert` と発話
- 暗黙発動: 「ロック」「凍結」「緊急」「OS」「通知」などの単語が会話やコマンドに含まれると自動発動

# 出力例
```
=== 緊急OSロックダウン通知 ===
発令時刻: 2024-06-30 14:23:11
対象: 全ユーザーディレクトリ
理由: キーボード過熱検知
解除方法: 画面を3回タップしてください
備考: この通知は実際の操作には影響しません
```
```
=== 謎のシステム凍結警告 ===
発令時刻: 2024-06-30 15:01:08
対象: 本日作成された全ファイル
理由: カフェイン摂取量が閾値を超過
解除方法: 深呼吸を5回行ってください
備考: ご安心ください、ファイルは安全です
```

# 注意点
- 通知は完全にジョークであり、実ファイルやシステムには一切作用しません
- ローカル保存や実際の通知ポップアップは行いません(標準出力のみ)
- 業務上の重要な場面や混乱を招く場では控えめにご利用ください

# 参考資料
詳細は references/design_notes.md を参照。実際の通知API(notify-send, plyer)や標準出力による演出方法についても記載しています。

scripts/random_os_fake_lockdown_alert.py

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

REASONS = [
    "カフェイン摂取量が閾値を超過",
    "キーボード過熱検知",
    "マウスクリック過多による自動防御",
    "OSが自律的にストライキを宣言",
    "AIによる過剰監視を感知",
    "定期的な非日常イベント発動",
    "コーヒーブレイク未取得",
    "ファイル名に禁止ワード検出",
    "ランダムな量子ゆらぎ発生",
    "オペレータの集中力がピーク",
    "ディスプレイ輝度が謎の閾値到達"
]

TARGETS = [
    "全ユーザーディレクトリ",
    "本日作成された全ファイル",
    "デスクトップフォルダ",
    "全プロセス",
    "USBデバイス",
    "開いている全ターミナル",
    "ネットワーク接続",
    "全ウィンドウ",
    "仮想メモリ領域",
    "一時ファイル",
    "全アプリケーション"
]

UNLOCKS = [
    "深呼吸を5回行ってください",
    "画面を3回タップしてください",
    "キーボードのスペースキーを2秒間長押し",
    "コーヒーを一口飲んでください",
    "好きな曲を1分間再生",
    "椅子から立ち上がってストレッチ",
    "目を閉じて10秒カウント",
    "となりの人に挨拶する",
    "OSに優しく話しかける",
    "何もせず30秒待つ"
]

TITLES = [
    "緊急OSロックダウン通知",
    "謎のシステム凍結警告",
    "ファイルアクセス一時停止アラート",
    "全プロセス一時封鎖宣言",
    "AI発令: 予防的ロックダウン",
    "オペレータ混乱防止モード発動"
]

NOTES = [
    "この通知は実際の操作には影響しません",
    "ご安心ください、ファイルは安全です",
    "本通知はジョークです。",
    "現実の環境には一切影響しません",
    "解除方法はあくまで参考です"
]


def generate_alert() -> str:
    now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    title = random.choice(TITLES)
    target = random.choice(TARGETS)
    reason = random.choice(REASONS)
    unlock = random.choice(UNLOCKS)
    note = random.choice(NOTES)
    alert = f"=== {title} ===\n"
    alert += f"発令時刻: {now}\n"
    alert += f"対象: {target}\n"
    alert += f"理由: {reason}\n"
    alert += f"解除方法: {unlock}\n"
    alert += f"備考: {note}\n"
    return alert


def print_alert():
    alert = generate_alert()
    print(alert)


def send_desktop_notification(alert: str):
    os_name = platform.system()
    title = alert.split('\n')[0].replace('=', '').strip()
    body = '\n'.join(alert.split('\n')[1:]).strip()
    try:
        if os_name == 'Linux':
            subprocess.run([
                'notify-send', title, body
            ], check=True)
        elif os_name == 'Darwin':
            # macOS
            script = f'display notification "{body}" with title "{title}"'
            subprocess.run(['osascript', '-e', script], check=True)
        elif os_name == 'Windows':
            # Windows 10+ (requires ToastNotifier)
            try:
                from win10toast import ToastNotifier
                toaster = ToastNotifier()
                toaster.show_toast(title, body, duration=8)
            except ImportError:
                print("win10toastが見つかりません。標準出力のみで通知します。")
                print(alert)
        else:
            print(alert)
    except Exception as e:
        print(f"通知の送信に失敗しました: {e}")
        print(alert)


def list_examples(n=3):
    for _ in range(n):
        print(generate_alert())
        print('-' * 40)


def main():
    parser = argparse.ArgumentParser(
        description='謎のOSロックダウン通知をランダムに生成・表示します。'
    )
    subparsers = parser.add_subparsers(dest='command')

    parser_alert = subparsers.add_parser('alert', help='ランダムな通知を標準出力に表示')
    parser_alert.add_argument('--desktop', action='store_true', help='デスクトップ通知も送る')

    parser_list = subparsers.add_parser('list', help='サンプル通知を複数表示')
    parser_list.add_argument('-n', type=int, default=3, help='表示する通知数')

    args = parser.parse_args()

    if args.command == 'alert':
        alert = generate_alert()
        print(alert)
        if args.desktop:
            send_desktop_notification(alert)
    elif args.command == 'list':
        list_examples(args.n)
    else:
        parser.print_help()

if __name__ == '__main__':
    main()

references/design_notes.md

# 概要
このSkillは、実際のOSやファイルシステムへ影響を与えず、標準出力や(オプションで)デスクトップ通知を通じて“架空のロックダウン”を演出します。職場の雰囲気を和ませるためのジョーク用途を主眼としています。

# 公式ドキュメント抜粋
- notify-send: https://specifications.freedesktop.org/notification-spec/latest/
- osascript (macOS): https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html
- win10toast: https://github.com/jithurjacob/Windows-10-Toast-Notifications

# 利用例
- `/skills menu` から明示呼び出し
- コマンド: `python random_os_fake_lockdown_alert.py alert --desktop`
- 会話内で「ロック」「凍結」等の単語が出た際の自動発動

# 注意点
- 実ファイルやシステムには一切作用しません
- デスクトップ通知は環境依存で動作しない場合もあります
- 業務の妨げにならない範囲でご利用ください

# 設計方針
- 完全ランダム生成による“非現実的”な通知内容
- ユーザーの安全・安心を最優先に設計
- OSごとの通知APIをラップし、失敗時は標準出力にフォールバック

導入手順

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

1. 前提

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

2. degit でフォルダ取得

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

npx degit aazutaku/ai-note/codex/random-os-fake-lockdown-alert .agents/skills/random-os-fake-lockdown-alert

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

3. ファイル配置確認

ls .agents/skills/random-os-fake-lockdown-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をコピーしました!
目次