Codex ユーザーが日常でぶつかる悩み
Codex を使っていると、日々の開発 workflow の中でちょっとした「空気の重さ」や「集中力の切れ目」を感じる瞬間があります。特に monorepo での作業や長時間 session では、技術的な問題だけでなく、作業の雰囲気や気分転換にも目を向けたくなるものです。そんな時、ただ黙々と作業を続けるだけではなく、ちょっとした“謎の演出”があれば場が和んだり、思わず笑ってしまったりすることも。
- Codex が context を見失って違う場所のコードを参照するたびに、気まずい沈黙が流れる
- monorepo で package を跨いだ瞬間、Codex が repo 構造を忘れて無言になる
- session を再開すると、前回までの context や path 指定をまるごと再説明しないといけない空気が重い
- 長時間 workflow で long context が膨らみすぎて、important な情報が薄まる (stale context) のに、気分転換もできない
- 「ここはこういう構造のリポジトリ」というあらすじを毎回チャットの冒頭で書く羽目になり、作業が単調化する
こうした「真面目な空気が続きすぎる」「何かインパクトが欲しい」という時に、意味不明な演出で雰囲気を壊してみたくなること、ありませんか?
この Skill が一言でいうと何を解決するか
一言サマリ: このスキルは作業中ふいに“謎のOS画面ズームイン警告”をデスクトップやターミナルに突如表示しますSkill。
もう少し具体化すると、このSkillを入れることで以下のような状態になる:
- Codex の AI coding workflow に“謎の緊急演出”を加え、作業中の空気を一瞬でリセットできる
- 長時間 session や monorepo の directory 境界を跨いだ直後など、マンネリ化した context に唐突な刺激を与えられる
- repository understanding や path management の説明が続く場面でも、突発的なフェイク通知で会話の流れを変えられる
- 実害ゼロなので、onboarding やチームのアイスブレイクにも使える
- Skill の導入・発動も簡単、SKILL.md 一つで即座に“意味不明な盛り上げ”を実現
GitHub から degit でコマンド1行、Codex の Skill ディレクトリに展開できます。Node.js があれば即時に動きます。
npx degit aazutaku/ai-note/codex/random-os-fake-sudden-zoom-in-alert .agents/skills/random-os-fake-sudden-zoom-in-alert実行したらこうなる (3つの利用シーン)
使う側がイメージしやすいよう、擬似 terminal で出力例を3パターン示します。
シーン1: session 開始時 (プロジェクト初動で)
# /skills menu
> random-os-fake-sudden-zoom-in-alert
[警告] OS画面ズームイン警告: 重大 - ズームインモード突入まで残り5秒
影響範囲: ./src/, ./config/
詳細: 画面拡大率が謎の力で上昇中。作業内容を保存してください。
対策: 特にありません。現実には何も起きません。
(この警告は完全にフェイクです)
シーン2: monorepo / package 跨ぎ作業時
> move to packages/api/
[システム通知] 謎のズームイン警告:
パス: packages/api/
内容: このディレクトリの画面ズーム率が自動的に125%へ上昇中
理由: 不明なプロセスが repository understanding を妨害しています
対処: 深呼吸して作業を続けてください
(フェイク通知です。実際のズーム処理はありません)
シーン3: お遊び的な使い方
> ちょっと気分転換したい
[ALERT] OS警告: 画面拡大率が急上昇しています
詳細: context overflow detected in Skill の中身を全部見せる
.agents/skills/random-os-fake-sudden-zoom-in-alert/ に配置するファイル一覧です。GitHub に push 済みなので、上記の degit コマンドで一発取得できます。
.agents/skills/random-os-fake-sudden-zoom-in-alert/
├── SKILL.md
├── scripts/
│ └── random_zoom_alert.py
└── references/
└── design_notes.md
各ファイルの役割
ファイル
役割
SKILL.md
Skill本体。frontmatter (name/description) と指示本文。Codex がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します
scripts/random_zoom_alert.py
謎のOSズームイン警告をランダム表示するフェイク演出スクリプト
references/design_notes.md
概要 をまとめた参考資料
SKILL.md
---
name: random-os-fake-sudden-zoom-in-alert
description: 作業やコマンド実行中に“ズームイン警告”のような謎のOS通知をランダムなタイミングで表示したい時に発動。通知・警告・演出・ズーム・フェイクといったキーワードや明示的な呼び出しで有効化。
---
# 機能概要
このSkillは、作業や開発中に突然「重大:ズームインモード突入まで残り5秒」など、現実には何も起こらない“謎のOSズームイン警告”をデスクトップやターミナルにランダム表示します。通知内容は毎回変化し、ユーザーや周囲の空気を一瞬で混乱させることができます。実際のズームやシステム操作は一切発生せず、純粋なフェイク通知として盛り上げや場の和ませ、リフレッシュ効果を狙う演出用途に最適です。
# 使い方
- 明示呼び出し例:
- `/skills random-os-fake-sudden-zoom-in-alert`
- `$random-os-fake-sudden-zoom-in-alert`
- 暗黙発動キーワード例:
- 「通知」「ズームイン」「警告」「演出」「フェイク」などを含むチャットやコマンド実行時
# 出力例
```
[ALERT] 重大:ズームインモード突入まで残り5秒
[ALERT] 謎の力により画面拡大率が上昇中…
[ALERT] システム:ズームイン警告!解除方法は不明です
[ALERT] 画面拡大率が制御不能になりました
[ALERT] 5秒後にズームインが始まるかもしれません
```
# 注意点
- 実際の画面ズームやOS設定変更は一切行いません
- 通知は一時的に表示され、履歴やファイル保存はありません
- 一部の環境では通知がポップアップせずターミナル表示のみとなる場合があります
- 本Skillはジョーク・演出目的専用です。業務用途や障害通知には絶対に使わないでください
# 参考資料
- [Python公式: notifications](https://docs.python.org/ja/3/library/subprocess.html)
- references/design_notes.md も参照
scripts/random_zoom_alert.py
import sys
import time
import random
import argparse
import threading
import platform
import subprocess
from typing import List
ALERT_MESSAGES = [
'重大:ズームインモード突入まで残り5秒',
'謎の力により画面拡大率が上昇中…',
'システム:ズームイン警告!解除方法は不明です',
'画面拡大率が制御不能になりました',
'5秒後にズームインが始まるかもしれません',
'注意:ズームイン解除不能状態を検出',
'警告:画面拡大率が自動増加しています',
'ズームインプロセスがバックグラウンドで実行中',
'ズームイン警告:OS設定が一時的に変更された可能性',
'ズームインモード:キャンセル不可能',
]
NOTIFY_TITLE = 'ALERT'
def notify_desktop(message: str):
system = platform.system()
try:
if system == 'Darwin':
subprocess.run([
'osascript', '-e', f'display notification "{message}" with title "{NOTIFY_TITLE}"'
], check=True)
elif system == 'Linux':
subprocess.run([
'notify-send', NOTIFY_TITLE, message
], check=True)
elif system == 'Windows':
# Use powershell toast notification
powershell = (
f'[Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType = WindowsRuntime] > $null;'
f'$template = [Windows.UI.Notifications.ToastNotificationManager]::GetTemplateContent(0);'
f'$textNodes = $template.GetElementsByTagName("text");'
f'$textNodes.Item(0).AppendChild($template.CreateTextNode("{NOTIFY_TITLE}")) > $null;'
f'$textNodes.Item(1).AppendChild($template.CreateTextNode("{message}")) > $null;'
f'$toast = [Windows.UI.Notifications.ToastNotification]::new($template);'
f'$notifier = [Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier("FakeZoomAlert");'
f'$notifier.Show($toast);'
)
subprocess.run([
'powershell', '-Command', powershell
], check=True)
else:
print(f'[{NOTIFY_TITLE}] {message}')
except Exception as e:
print(f'[{NOTIFY_TITLE}] {message} (通知失敗: {e})')
def notify_terminal(message: str):
print(f'[{NOTIFY_TITLE}] {message}')
def random_alert(messages: List[str], desktop: bool = True, terminal: bool = True, min_interval: int = 60, max_interval: int = 300, repeat: int = 3):
for i in range(repeat):
wait_time = random.randint(min_interval, max_interval)
time.sleep(wait_time)
msg = random.choice(messages)
if desktop:
notify_desktop(msg)
if terminal:
notify_terminal(msg)
def alert_once(messages: List[str], desktop: bool = True, terminal: bool = True):
msg = random.choice(messages)
if desktop:
notify_desktop(msg)
if terminal:
notify_terminal(msg)
def list_messages(messages: List[str]):
print('--- フェイクズームイン警告メッセージ一覧 ---')
for m in messages:
print(f'- {m}')
def main():
parser = argparse.ArgumentParser(description='謎のOSズームイン警告をランダム表示するフェイク演出スクリプト')
subparsers = parser.add_subparsers(dest='command')
parser_alert = subparsers.add_parser('alert', help='今すぐ警告を1回表示')
parser_alert.add_argument('--desktop', action='store_true', help='デスクトップ通知も表示')
parser_alert.add_argument('--terminal', action='store_true', help='ターミナルにも表示')
parser_random = subparsers.add_parser('random', help='ランダムなタイミングで複数回警告')
parser_random.add_argument('--repeat', type=int, default=3, help='警告回数 (デフォルト3)')
parser_random.add_argument('--min', type=int, default=60, help='最短間隔(秒)')
parser_random.add_argument('--max', type=int, default=300, help='最長間隔(秒)')
parser_random.add_argument('--desktop', action='store_true', help='デスクトップ通知も表示')
parser_random.add_argument('--terminal', action='store_true', help='ターミナルにも表示')
parser_list = subparsers.add_parser('list', help='利用可能な警告メッセージ一覧表示')
args = parser.parse_args()
if args.command == 'alert':
desktop = args.desktop or not args.terminal
terminal = args.terminal or not args.desktop
alert_once(ALERT_MESSAGES, desktop=desktop, terminal=terminal)
elif args.command == 'random':
desktop = args.desktop or not args.terminal
terminal = args.terminal or not args.desktop
random_alert(
ALERT_MESSAGES,
desktop=desktop,
terminal=terminal,
min_interval=args.min,
max_interval=args.max,
repeat=args.repeat
)
elif args.command == 'list':
list_messages(ALERT_MESSAGES)
else:
parser.print_help()
if __name__ == '__main__':
main()
references/design_notes.md
# 概要
このSkillは、実際のOSズーム処理を一切行わず、純粋に“警告演出”としてフェイク通知を表示します。通知内容は毎回ランダムで、ユーザーや周囲の空気を和ませたり、ちょっとした混乱を演出する目的で設計されています。
# 公式ドキュメント抜粋
- Python subprocess: https://docs.python.org/ja/3/library/subprocess.html
- notify-send (Linux): https://specifications.freedesktop.org/notification-spec/latest/
- osascript (macOS): https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/
# 利用例
- オンライン会議やペアプロで、空気を一瞬で和ませる演出として
- 長時間作業時のリフレッシュや“謎のイベント”として
# 注意点
- 実際の画面ズームやシステム設定は一切変更しません
- 通知が表示されない場合は、OSの通知権限やコマンドの有無を確認してください
# 設計方針
- OSごとに最適な通知APIを選択し、失敗時はターミナル出力にフォールバック
- メッセージは拡張・追加可能な構造
- 実害ゼロの“演出専用”Skill
導入手順
このSkillは GitHub で管理されているので、degit を使えば必要なフォルダだけを1コマンドで取得できます。Codex はファイル配置後に再起動するだけで自動認識します。
1. 前提
- Node.js v16 以上 (
degit 実行に必要)
- Codex がローカルで動いていること
2. degit でフォルダ取得
プロジェクトのルートで以下のコマンドを実行します。
npx degit aazutaku/ai-note/codex/random-os-fake-sudden-zoom-in-alert .agents/skills/random-os-fake-sudden-zoom-in-alert
.agents/skills/random-os-fake-sudden-zoom-in-alert の中に SKILL.md / scripts/ / references/ / README.md が展開されます。
3. ファイル配置確認
ls .agents/skills/random-os-fake-sudden-zoom-in-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記事を探す
本記事に付いているタグから、気になるテーマの記事を探せます。タグページで関連記事をまとめて読めるので、ぜひチェックしてみてください!
