Codexで作業中に笑いを誘発する謎のブルースクリーン通知活用ガイド

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

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

開発現場で Codex を活用していると、思わず「あるある!」と感じる瞬間が多くあります。特に集中しているときや、複雑な repository 構造を扱っているとき、ふとしたタイミングで空気が張り詰めがちです。そんな中、ふとした“息抜き”や、場の雰囲気を和らげる仕掛けが欲しくなることも。

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

通知・演出・OS連携系の Skill を導入したいと感じるのは、単なる効率化だけでなく、業務の合間にちょっとしたユーモアやリラックスできる瞬間が欲しいとき。特にチーム開発では、緊張感が続くほど小さなきっかけで場が和むことも多いものです。

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

一言サマリ: このスキルは、作業中にランダムな“OSブルースクリーン風”のネタ通知をデスクトップに表示し、開発現場の緊張感を一瞬で和らげるSkill。

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

  • 長時間の AI coding workflow の合間に、ユーモラスな通知でリフレッシュできる
  • monorepo での複雑な作業や repository understanding の途中、場の空気が和む
  • onboarding や session 再開時の堅苦しさを、ランダム通知で緩和できる
  • Codex の context が切れたり stale context になったタイミングで、ちょっとした“遊び”が入る
  • Skill の導入・解除も簡単で、path management や directory 構造に影響を与えない
QUICK INSTALL
このSkillをすぐ試す

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

npx degit aazutaku/ai-note/codex/random-os-fake-bluescreen-notifier .agents/skills/random-os-fake-bluescreen-notifier

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

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

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


# /skills menu or random-os-fake-bluescreen-notifier
> 今日は新しいプロジェクトを始めます

[通知] OSブルースクリーン風メッセージを表示します
─────────────────────────────
エラー: コーヒーブレイク不足
STOP CODE: TAKE_A_BREAK_0xC0FFEE
原因: 連続作業時間が規定値を超過しました

[閉じる] [今すぐコーヒーを淹れる]
─────────────────────────────
(この通知はジョークです。作業は続行可能)

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


> packages/api から packages/web に移動

[通知] OSブルースクリーン風メッセージを表示します
─────────────────────────────
STOP CODE: 猫がキーボードに乗りました
エラー: 入力が予期せず中断されました
対処: 猫を優しくどかしてください

[閉じる] [猫の写真を見る]
─────────────────────────────
(誤認防止: 本物のエラーではありません)

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


> ちょっと気分転換したい

[通知] OSブルースクリーン風メッセージを表示します
─────────────────────────────
STOP CODE: 眠気の暴走
エラー: 注意力が低下しています
推奨: 5分間ストレッチしましょう

[閉じる] [ストレッチ方法を見る]
─────────────────────────────
(通知はランダムで変わります)

before / after の違い

場面 Skill 無し Skill 有り
session 再開時 repo 構造から毎回説明、path も指定し直し Codex が自動で context を復元、最小プロンプトで再開+和み通知
monorepo 移動 違う package のコードを参照しがち directory boundary を意識しつつ、ユーモラスな通知で場が和む
長時間 workflow long context で重要箇所が薄まる 適度なタイミングで通知が入り、集中力をリセットできる

発動方式

明示呼び出し (/skills menu or random-os-fake-bluescreen-notifier mention) と、説明文に「ブルースクリーン」「気分転換」などが含まれる場合の暗黙発動の両方に対応しています。

Skill の中身を全部見せる

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

.agents/skills/random-os-fake-bluescreen-notifier/
├── SKILL.md
├── scripts/
│   └── fake_bluescreen_notifier.py
└── references/
    └── design_notes.md

各ファイルの役割

ファイル 役割
SKILL.md Skill本体。frontmatter (name/description) と指示本文。Codex がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します
scripts/fake_bluescreen_notifier.py Random OS Fake Bluescreen Notifier
references/design_notes.md 概要 をまとめた参考資料

SKILL.md

---
name: random-os-fake-bluescreen-notifier
description: 作業中のリフレッシュや緊張緩和が必要な場面で、/skills menuやrandom-os-fake-bluescreen-notifierへの明示的な呼び出し、または「ブルースクリーン」「エラー」「息抜き」などのキーワードを検知した際に発動します。
---

# 機能概要
このSkillは、開発現場やオフィスで突然“OSブルースクリーン風”のジョーク通知をデスクトップに表示します。通知内容は毎回ランダムで、例えば「STOP CODE: コーヒーブレイク不足」や「原因: キーボードに猫が乗りました」など、実害のないユーモラスなメッセージです。これにより、作業中の緊張感を和らげたり、チーム内のコミュニケーションを活性化することができます。誤認防止のため、実際のBSoDとは明確に異なるデザインや文言を用いています。

# 使い方
- 明示呼び出し例: `/skills menu` から「random-os-fake-bluescreen-notifier」を選択、または `$random-os-fake-bluescreen-notifier` を直接メンション。
- 暗黙発動キーワード例: 「ブルースクリーン」「エラー通知」「息抜き」「ジョーク」「集中力低下」などの会話内出現時。

# 出力例
```
[FAKE OS BLUESCREEN]
エラー: コーヒーブレイク不足
STOP CODE: 眠気の暴走
原因: キーボードに猫が乗りました
ヒント: 立ち上がってストレッチしましょう
---
これはジョーク通知です。作業を続けても問題ありません。
```

# 注意点
- 本Skillは実際のシステムエラーやブルースクリーンを発生させるものではありません。
- 通知は一時的な表示のみで、ローカルファイルやシステム設定には一切影響を与えません。
- 出力はユーザーのデスクトップ通知機能に依存します。
- ジョーク内容は毎回ランダム生成されますが、不快な表現や誤認を避ける工夫が施されています。

# 参考資料
- [参考: references/design_notes.md](references/design_notes.md)
- [Python公式: plyer通知API](https://github.com/kivy/plyer)
- [Microsoft BSoDデザインガイド](https://docs.microsoft.com/en-us/windows/win32/debug/system-error-codes)

scripts/fake_bluescreen_notifier.py

import random
import sys
import argparse
import time
from plyer import notification

FAKE_ERRORS = [
    "エラー: コーヒーブレイク不足",
    "STOP CODE: 眠気の暴走",
    "原因: キーボードに猫が乗りました",
    "エラー: コードレビュー過多",
    "STOP CODE: 机の上に謎の書類",
    "原因: インターネットの海で遭難",
    "エラー: 進捗が迷子になりました",
    "STOP CODE: マウスが反抗期",
    "原因: コーヒーが冷めました",
    "エラー: 画面の向こうから猫の鳴き声"
]

FAKE_HINTS = [
    "ヒント: 立ち上がってストレッチしましょう",
    "ヒント: 深呼吸してみましょう",
    "ヒント: コーヒーを淹れ直しましょう",
    "ヒント: 目を休めてください",
    "ヒント: ちょっと散歩してみませんか?",
    "ヒント: チームメンバーに声をかけてみましょう",
    "ヒント: 水分補給を忘れずに",
    "ヒント: 猫を撫でてリラックスしましょう"
]

FAKE_FOOTER = "---\nこれはジョーク通知です。作業を続けても問題ありません。"


def generate_fake_bluescreen():
    error = random.choice(FAKE_ERRORS)
    stop_code = random.choice([e for e in FAKE_ERRORS if e != error])
    cause = random.choice([e for e in FAKE_ERRORS if e != error and e != stop_code])
    hint = random.choice(FAKE_HINTS)
    lines = [
        "[FAKE OS BLUESCREEN]",
        error,
        stop_code,
        cause,
        hint,
        FAKE_FOOTER
    ]
    return "\n".join(lines)


def show_notification(message, title="FAKE OS BLUESCREEN"):
    try:
        notification.notify(
            title=title,
            message=message,
            app_name="FakeBlueScreenNotifier",
            timeout=10
        )
    except Exception as e:
        print(f"[通知失敗]: {e}")
        print(message)


def log_event(message):
    try:
        with open("fake_bluescreen_log.txt", "a", encoding="utf-8") as f:
            f.write(f"[{time.strftime('%Y-%m-%d %H:%M:%S')}]\n{message}\n\n")
    except Exception as e:
        print(f"[ログ保存失敗]: {e}")


def list_logs():
    try:
        with open("fake_bluescreen_log.txt", "r", encoding="utf-8") as f:
            print(f.read())
    except FileNotFoundError:
        print("[ログファイルが存在しません]")


def summary_logs():
    try:
        count = 0
        with open("fake_bluescreen_log.txt", "r", encoding="utf-8") as f:
            for line in f:
                if line.startswith("[20"):
                    count += 1
        print(f"発行済みジョーク通知数: {count}")
    except FileNotFoundError:
        print("[ログファイルが存在しません]")


def main():
    parser = argparse.ArgumentParser(description="Random OS Fake Bluescreen Notifier")
    subparsers = parser.add_subparsers(dest="command")

    parser_notify = subparsers.add_parser("notify", help="ジョークブルースクリーン通知を表示")
    parser_notify.add_argument("--log", action="store_true", help="通知内容をログファイルに保存")

    parser_list = subparsers.add_parser("list", help="通知ログを一覧表示")
    parser_summary = subparsers.add_parser("summary", help="通知発行数を表示")

    args = parser.parse_args()

    if args.command == "notify":
        msg = generate_fake_bluescreen()
        show_notification(msg)
        print(msg)
        if args.log:
            log_event(msg)
    elif args.command == "list":
        list_logs()
    elif args.command == "summary":
        summary_logs()
    else:
        parser.print_help()

if __name__ == "__main__":
    main()

references/design_notes.md

# 概要
本Skillは、開発現場やリモートワーク時の息抜きやチームコミュニケーション促進を目的とし、実害のない“ブルースクリーン風”通知をランダムに生成・表示します。

# 公式ドキュメント抜粋
通知表示にはPythonのplyerライブラリを利用。plyerはクロスプラットフォーム対応の通知APIを提供し、Windows/macOS/Linuxで動作します。

# 利用例
- チームの朝会や雑談タイムに、話題のきっかけとして利用
- 長時間作業時のリフレッシュ用リマインダーとして
- プロジェクトの進捗が停滞した際のムード転換

# 注意点
- 本Skillはユーザーのデスクトップ通知機能に依存します。通知が表示されない場合はOS側の設定を確認してください。
- 実際のシステムエラーやBSoDと誤認されないよう、明確にジョークである旨を明記しています。

# 設計方針
- 実在するAPIのみを使用し、システムやデータに一切影響を与えない設計
- 通知内容は毎回ランダム生成され、出力例やヒントも複数パターンを用意
- ログ機能を備え、過去の通知内容を振り返ることも可能

導入手順

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

1. 前提

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

2. degit でフォルダ取得

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

npx degit aazutaku/ai-note/codex/random-os-fake-bluescreen-notifier .agents/skills/random-os-fake-bluescreen-notifier

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

3. ファイル配置確認

ls .agents/skills/random-os-fake-bluescreen-notifier
# SKILL.md, scripts/, references/, README.md があればOK

4. Codex を再起動 (or Skill 自動検出を待つ)

新しいSkillが自動で認識されます。リスト確認したい場合は /skills menu or random-os-fake-bluescreen-notifier と Skill 名で出てきます。

5. 動作確認

/skills menu or random-os-fake-bluescreen-notifier で呼び出すか、自然言語で発動条件にマッチする指示を出すと 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をコピーしました!
目次