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