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 の難しさを一瞬忘れさせる“遊び”の導入が可能
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記事を探す
本記事に付いているタグから、気になるテーマの記事を探せます。タグページで関連記事をまとめて読めるので、ぜひチェックしてみてください!
