Codexで謎のOS画面ズーム警告を演出する完全攻略ガイド

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

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 一つで即座に“意味不明な盛り上げ”を実現
QUICK INSTALL
このSkillをすぐ試す

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記事を探す

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

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

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