Codexで謎のOS謝罪通知を自動演出する遊び方完全ガイド

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

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

AI コーディングワークフローが当たり前になった今、Codex を使い続けていると「なんだか無機質」「集中しすぎて息抜きがない」と感じる瞬間が少なくありません。特に通知や演出系の機能が乏しいと、作業空間が単調に感じられがちです。以下のような「あるある」に心当たりはないでしょうか。

  • 作業に没頭していると、Codex の context 管理や path 指定ばかりで息抜きのタイミングを逃しがち
  • monorepo で複数 package を跨ぐ作業中、突然 context がリセットされて気分転換もできず、ストレスが溜まる
  • session を再開するたびに repository 構造を説明し直す単調なルーチンに、遊び心が欲しくなる
  • 長時間の AI coding workflow で long context が膨らみ、重要な情報も自分の気持ちも薄まってしまう
  • 通知や演出のない環境だと、作業の合間の「間」がなく、職場やリモート作業の雰囲気が固くなりがち

通知・演出・OS連携に関するこうした悩みは、単なる productivity の問題だけでなく、作業空間の「空気感」にも直結します。たまには「なんでここで OS が謝るの?」といったユーモアが欲しくなることもあるはずです。

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

一言サマリ: このスキルは「何も起きていないのに OS 風の謝罪通知がランダムに現れ、作業空間にユーモアとリラックスをもたらす Skill。」

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

  • Codex の AI coding workflow 中、突然デスクトップに謎のOS謝罪通知が現れ、作業の合間にちょっとした笑いとリフレッシュが生まれる
  • repository understanding や path management に追われているときでも、フェイク通知で場が和み、オンボーディングや長時間作業の空気が柔らかくなる
  • monorepo や複雑な directory 構造の中でも、Skill の遊び心ある演出で「また context が消えた…」というストレスを軽減できる
  • 通知内容が毎回ランダムなので、飽きずに「次はどんな謝罪が来る?」と楽しみながら作業できる
  • 完全なフェイク通知なので、実際のエラーや進行には一切干渉せず、安心して導入できる
QUICK INSTALL
このSkillをすぐ試す

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

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

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

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

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


# /skills menu or random-os-apology-notifier mention
> 開発を始めます

[OS通知] 本日はご迷惑をおかけしております。
[OS通知] システムが一時的に応答しませんでした。ご容赦ください。
[OS通知] 重大な問題は発生していませんが、念のためお詫び申し上げます。
(何も起きていないのに、デスクトップに謝罪通知が次々と表示される)

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


> packages/api から packages/web に移動して作業

[OS通知] パッケージ移動中に謎の遅延が発生しました。原因は特定できません。
[OS通知] 先ほどのコマンドは無かったことにしてください。申し訳ありません。
[OS通知] ご迷惑をおかけしていますが、特に問題は発生していません。
(意図せず謝罪通知が出て、思わずツッコミたくなる)

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


> ちょっと休憩します

[OS通知] システムが休憩中です。ご理解いただきありがとうございます。
[OS通知] 何もしていませんが、念のためお詫び申し上げます。
[OS通知] 今回の作業には影響ありませんが、深くお詫びいたします。
(休憩中にも無責任な謝罪がランダムで表示される)

before / after の違い

場面 Skill 無し Skill 有り
session 再開時 repo 構造から毎回説明、path も指定し直し Codex が自動で context を復元、最小プロンプトで再開
monorepo 移動 違う package のコードを参照しがち directory boundary を意識して必要な範囲だけ見る
長時間 workflow long context で重要箇所が薄まる 突然のフェイク謝罪通知で集中がリセットされ、気分転換できる

発動方式

明示呼び出し (/skills menu or random-os-apology-notifier mention) と暗黙発動 (謝罪や通知に関する自然言語指示) の両方に対応。

Skill の中身を全部見せる

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

.agents/skills/random-os-apology-notifier/
├── SKILL.md
├── scripts/
│   └── random_os_apology_notifier.py
└── references/
    └── design_notes.md

各ファイルの役割

ファイル 役割
SKILL.md Skill本体。frontmatter (name/description) と指示本文。Codex がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します
scripts/random_os_apology_notifier.py random-os-apology-notifier: OSが無責任に謝罪する通知をランダム表示
references/design_notes.md 概要 をまとめた参考資料

SKILL.md

---
name: random-os-apology-notifier
description: 作業中に突如『OSが無責任に謝罪する通知』をランダムに表示したい時や、職場の雰囲気を和ませたい場面で発動します。triggerType: always/semantic。通知内容は毎回異なり、実際のエラーや業務進行には影響しません。
---

# 機能概要
このSkillは、作業中のデスクトップに「謎のOS謝罪通知」をランダムなタイミング・内容で表示します。通知は完全にフェイクで、実際のエラーやシステム障害とは無関係です。例えば「本日はご迷惑をおかけしております」「原因不明の遅延が発生しました」など、OSがひたすら無責任に謝り続ける演出を楽しめます。リモートワークやオフィスでのムードメーカー、あるいはちょっとしたジョーク用途に最適です。

# 使い方
- 明示呼び出し例: `/skills menu` から random-os-apology-notifier を選択、または `$random-os-apology-notifier` メンションで即時発動。
- 暗黙発動キーワード例: 「OS 謝罪」「無責任」「通知ジョーク」「エラーっぽい演出」などを含む会話やコマンドで自動発動。

# 出力例
```
[通知] OSよりお詫び: 本日はご迷惑をおかけしております。
[通知] OSよりお詫び: 謎の遅延が発生しましたが、原因不明です。
[通知] OSよりお詫び: 先ほどの操作は無かったことにしてください。
[通知] OSよりお詫び: 何もしていませんが、一応謝っておきます。
[通知] OSよりお詫び: 予期せぬ問題が発生したかもしれません。
```

# 注意点
- 通知は完全なフェイクで、実際のシステムやファイルには一切影響しません。
- ローカル保存やログ記録は行いません。
- macOS/Linux の通知API (osascript/notify-send) を利用。Windowsでは動作対象外です。
- 通知内容は毎回ランダム生成。

# 参考資料
- [osascript (AppleScript) 公式](https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html)
- [notify-send (freedesktop.org)](https://specifications.freedesktop.org/notification-spec/notification-spec-latest.html)
- references/design_notes.md も参照

scripts/random_os_apology_notifier.py

import sys
import argparse
import random
import platform
import subprocess
import time
from typing import List, Optional

APOLOGY_MESSAGES = [
    "本日はご迷惑をおかけしております。",
    "謎の遅延が発生しましたが、原因不明です。",
    "大変申し訳ありませんが、さっきのコマンドは無かったことにしてください。",
    "何もしていませんが、一応謝っておきます。",
    "予期せぬ問題が発生したかもしれません。",
    "本件については鋭意調査中です。",
    "ご不便をおかけし申し訳ありません。",
    "詳細は不明ですが、何かが起きた可能性があります。",
    "ご理解とご協力をお願いいたします。",
    "次回はもっと頑張ります。",
    "システムは正常ですが、念のためお詫びします。",
    "エラーっぽいことが発生しました(気のせいかもしれません)。",
    "本件については担当者不在のため対応できません。",
    "今後ともよろしくお願いいたします。",
    "何もしていませんが、謝罪だけしておきます。"
]

NOTIFY_TITLE = "OSよりお詫び"


def detect_os() -> str:
    sysname = platform.system().lower()
    if 'darwin' in sysname:
        return 'macos'
    elif 'linux' in sysname:
        return 'linux'
    else:
        return 'unsupported'


def send_notification(message: str) -> None:
    os_type = detect_os()
    if os_type == 'macos':
        script = f'display notification "{message}" with title "{NOTIFY_TITLE}"'
        try:
            subprocess.run(['osascript', '-e', script], check=True)
        except Exception as e:
            print(f"[ERROR] 通知送信失敗: {e}")
    elif os_type == 'linux':
        try:
            subprocess.run(['notify-send', NOTIFY_TITLE, message], check=True)
        except Exception as e:
            print(f"[ERROR] 通知送信失敗: {e}")
    else:
        print("[ERROR] このOSには対応していません。通知は表示されません。")


def get_random_message() -> str:
    return random.choice(APOLOGY_MESSAGES)


def cli_notify(args):
    message = get_random_message() if not args.message else args.message
    send_notification(message)
    print(f"[通知] {NOTIFY_TITLE}: {message}")


def cli_list(args):
    print("-- 通知候補一覧 --")
    for i, msg in enumerate(APOLOGY_MESSAGES):
        print(f"{i+1:2}: {msg}")


def cli_summary(args):
    print(f"通知パターン数: {len(APOLOGY_MESSAGES)}")
    print(f"対応OS: macOS, Linux (notify-send)\n")
    print("このSkillは、完全なフェイク通知のみを送信し、実際のエラーやファイル操作は一切行いません。\n")


def cli_auto(args):
    count = args.count if args.count else 5
    min_interval = args.min_interval if args.min_interval else 60
    max_interval = args.max_interval if args.max_interval else 180
    print(f"自動モード: {count}回、{min_interval}-{max_interval}秒間隔で通知します。\n")
    for i in range(count):
        msg = get_random_message()
        send_notification(msg)
        print(f"[{i+1}/{count}] {NOTIFY_TITLE}: {msg}")
        if i < count - 1:
            interval = random.randint(min_interval, max_interval)
            time.sleep(interval)


def build_parser():
    parser = argparse.ArgumentParser(description='random-os-apology-notifier: OSが無責任に謝罪する通知をランダム表示')
    subparsers = parser.add_subparsers(dest='command')

    parser_notify = subparsers.add_parser('notify', help='ランダムな謝罪通知を1回表示')
    parser_notify.add_argument('--message', type=str, help='任意の通知メッセージ')
    parser_notify.set_defaults(func=cli_notify)

    parser_list = subparsers.add_parser('list', help='通知候補メッセージ一覧を表示')
    parser_list.set_defaults(func=cli_list)

    parser_summary = subparsers.add_parser('summary', help='Skillの概要情報を表示')
    parser_summary.set_defaults(func=cli_summary)

    parser_auto = subparsers.add_parser('auto', help='一定間隔でランダム通知を複数回表示')
    parser_auto.add_argument('--count', type=int, help='通知回数 (デフォルト:5)')
    parser_auto.add_argument('--min-interval', type=int, help='通知間隔の下限(秒) (デフォルト:60)')
    parser_auto.add_argument('--max-interval', type=int, help='通知間隔の上限(秒) (デフォルト:180)')
    parser_auto.set_defaults(func=cli_auto)

    return parser


def main():
    parser = build_parser()
    args = parser.parse_args()
    if not hasattr(args, 'func'):
        parser.print_help()
        sys.exit(1)
    args.func(args)


if __name__ == '__main__':
    main()

references/design_notes.md

# 概要
random-os-apology-notifierは、OSの通知APIを利用して「無責任な謝罪」を演出するジョークSkillです。実際のエラーやファイル操作は一切行わず、ユーザーの作業環境に影響を与えません。

# 公式ドキュメント抜粋
- macOS: [AppleScript display notification](https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html)
- Linux: [notify-send](https://specifications.freedesktop.org/notification-spec/notification-spec-latest.html)

# 利用例
- チームの朝会で「OSが謝ってきた!」と話題作りに
- リモートワーク中のちょっとした息抜きやネタに
- 実際のエラーと混同しないよう、明確にフェイクであることを強調

# 注意点
- Windows OSでは動作しません
- 通知APIが無効な環境では表示されません
- 通知内容は完全にランダム生成

# 設計方針
- シンプルなCLI構成とし、サブコマンドで柔軟に利用可能
- ログや履歴保存は一切行わず、プライバシーに配慮
- 実際の業務進行やシステムに干渉しない設計

導入手順

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

1. 前提

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

2. degit でフォルダ取得

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

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

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

3. ファイル配置確認

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

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

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

5. 動作確認

/skills menu or random-os-apology-notifier 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 との連携設計はどうあるべきか?
  • 通知の内容が毎回ランダムで、同じ謝罪が連続しないか?
  • OSの通知領域や明確な演出として確実に現れるか?
  • 実際のエラーや進行に干渉せず、完全なフェイク通知であることが担保されているか?

実際に Codex で試した検証ログは Codexで謎のOS謝罪通知を表示してみた!ランダム演出の面白さを体感 にまとめる予定 (公開準備中の場合あり)。
あわせて Codex 公式ドキュメント と、本シリーズ「Codexを使いこなすSkillアイデア」の他記事も参照のこと。

関連タグで他のSkill記事を探す

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

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

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