Codexで作業に驚きのスパイスを加える通知演出活用ガイド

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

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

AI coding workflow の中で、Codex を長時間使っていると作業が単調になりがちです。特に repository understanding や path management など、地味な繰り返し作業が続くと集中力が切れやすく、「何か刺激がほしい」と感じる瞬間が生まれます。通知・演出・OS連携に関する悩みも少なくありません。

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

こうした状況が続くと、集中力の維持やモチベーションの低下が気になってくるものです。作業にちょっとした遊び心や変化を加えたい――そんなニーズが現場ではしばしば生まれています。

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

一言サマリ: あなたの作業がマンネリ化してきたらSkill。

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

  • Codex の AI coding workflow 中に、完全フェイクな「ウイルス検出アラート」通知が突発的に表示され、単調な作業にユーモアと刺激をプラス
  • 通知内容は本物と絶対に間違えない設計で、repository understanding や path management の合間にリフレッシュできる
  • 長時間の session や monorepo 作業でも、context 切れや stale context の空気を和らげる演出が可能
  • onboarding 時や session 再開時にも、チーム内で「何これ?」と話題になりやすく、場の空気を柔らかくできる
  • OS 標準の通知 API だけで動作し、導入も簡単
QUICK INSTALL
このSkillをすぐ試す

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

npx degit aazutaku/ai-note/codex/random-os-fake-virus-alert .agents/skills/random-os-fake-virus-alert

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

使う側がイメージしやすいよう、擬似 terminal で出力例を3パターン示す。Skill が返す出力は推測だが、現実的なフォーマット・現実的な長さで書く。

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


# /skills menu
> /skills menu

[通知] 危険:未知のバグウイルスを検出しました
詳細: src/utils/buggy-helper.js から自己増殖するコードを検出
対策: コーヒーを飲みながら深呼吸してください

[通知] 注意:あなたの repository が自我を持ち始めました
詳細: monorepo/packages/ai-core/ で人格形成の兆候あり
対策: AI に優しく語りかけましょう

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


> packages/api/ の context を切り替え

[通知] 警告:directory 境界を越えるバグウイルス発見
詳細: packages/api/ → packages/shared/ で不審な移動を検知
対策: context をリセットして再確認してください

[通知] 注意:repository understanding が乱れています
詳細: path management 機能が混乱状態
対策: 一度ディレクトリ構造を見直しましょう

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


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

[通知] 緊急:Codex が独自進化を開始
詳細: long context 内で未知のアルゴリズムが発生
対策: 休憩してから作業を再開してください

[通知] お知らせ:あなたのコードがジョークを生成しました
詳細: repo 内で笑い成分を検出
対策: チームメンバーと共有してみましょう

before / after の違い

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

発動方式

明示呼び出し (/skills menu or $skill-name mention) と暗黙発動 (description マッチ) の両方に対応。

Skill の中身を全部見せる

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

.agents/skills/random-os-fake-virus-alert/
├── SKILL.md
├── scripts/
│   └── random_os_fake_virus_alert.py
└── references/
    └── design_notes.md

各ファイルの役割

ファイル 役割
SKILL.md Skill本体。frontmatter (name/description) と指示本文。Codex がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します
scripts/random_os_fake_virus_alert.py ランダムなジョークウイルス通知を表示します
references/design_notes.md 概要 をまとめた参考資料

SKILL.md

---
name: random-os-fake-virus-alert
description: 作業が単調・集中力が切れた・休憩が必要と検知された際や、明示的な /skills メニュー呼び出し時に発動。triggerType: always/semantic。通知・ジョーク・演出カテゴリ。
---

# 機能概要
このSkillは、作業がマンネリ化したり集中力が途切れたタイミングで、デスクトップに“絶対に本物と間違えない”ユーモア満載のウイルス検出風アラート通知をランダム表示します。『危険:未知のバグウイルスを検出』『注意:あなたのコードが自我を持ちました』など、日常にスパイスを加える軽妙なジョーク通知をOS標準APIで演出。実害や悪質な挙動は一切なく、気分転換やチームの雰囲気づくりに最適です。

# 使い方
- 明示呼び出し例: `/skills menu` で本Skillを選択、または `$random-os-fake-virus-alert` メンション
- 暗黙発動例: 「眠い」「飽きた」「集中できない」等の発言や、作業が一定時間停滞した際に自動発動

# 出力例
```
[通知] 危険:未知のバグウイルスを検出しました!
[通知] 注意:あなたのコードが自我を持ちました。今すぐ休憩を推奨します。
[通知] システム警告:AIがあなたの冗談を理解できませんでした。
[通知] お知らせ:バグが自己増殖を開始しました(嘘です)。
[通知] 警告:あなたのコーヒー残量が危険水域です。
```

# 注意点
- 通知は本物のウイルス警告と誤認されないよう、明確なジョーク文言・演出のみ
- OS標準の通知API(Windows: Toast, macOS: AppleScript, Linux: notify-send等)を使用し、追加インストール不要
- ローカルファイルやシステム設定には一切変更を加えません
- 頻度や内容はユーザーの作業状況に応じて調整可能

# 参考資料
- [Python公式: 通知API](https://docs.python.org/ja/3/library/subprocess.html)
- references/design_notes.md 参照

scripts/random_os_fake_virus_alert.py

import sys
import os
import random
import time
import argparse
import platform
import subprocess
from datetime import datetime, timedelta

FAKE_ALERTS = [
    "危険:未知のバグウイルスを検出しました!",
    "注意:あなたのコードが自我を持ちました。今すぐ休憩を推奨します。",
    "システム警告:AIがあなたの冗談を理解できませんでした。",
    "お知らせ:バグが自己増殖を開始しました(嘘です)。",
    "警告:あなたのコーヒー残量が危険水域です。",
    "注意:デバッグのしすぎで現実世界にバグが侵入しました。",
    "警告:あなたのPCが笑いすぎて処理速度が低下しています。",
    "重大:コード内に『やる気』が見つかりませんでした。",
    "注意:この通知は完全にジョークです。安心してください。",
    "警告:バグがバグを呼び寄せています。"
]

LOG_FILE = os.path.expanduser("~/.random_os_fake_virus_alert.log")


def send_notification(message):
    system = platform.system()
    try:
        if system == "Windows":
            from win10toast import ToastNotifier
            toaster = ToastNotifier()
            toaster.show_toast("Fake Virus Alert", message, duration=5, threaded=True)
        elif system == "Darwin":
            script = f'display notification "{message}" with title "Fake Virus Alert"'
            subprocess.run(["osascript", "-e", script], check=True)
        elif system == "Linux":
            subprocess.run(["notify-send", "Fake Virus Alert", message], check=True)
        else:
            print(f"[通知] {message}")
    except Exception as e:
        print(f"[通知失敗] {message} ({e})")


def log_alert(message):
    with open(LOG_FILE, "a", encoding="utf-8") as f:
        f.write(f"{datetime.now().isoformat()}\t{message}\n")


def list_alerts(limit=20):
    if not os.path.exists(LOG_FILE):
        print("まだ通知履歴はありません。")
        return
    with open(LOG_FILE, encoding="utf-8") as f:
        lines = f.readlines()[-limit:]
        for line in lines:
            print(line.strip())


def summary_alerts():
    if not os.path.exists(LOG_FILE):
        print("まだ通知履歴はありません。")
        return
    count = 0
    recent = None
    with open(LOG_FILE, encoding="utf-8") as f:
        for line in f:
            count += 1
            recent = line.strip()
    print(f"合計通知回数: {count}")
    if recent:
        print(f"最新通知: {recent}")


def random_alert():
    message = random.choice(FAKE_ALERTS)
    send_notification(message)
    log_alert(message)
    print(f"[通知] {message}")


def auto_mode(interval_min=30, interval_max=90):
    print(f"自動モード開始: {interval_min}-{interval_max}分ごとにランダム通知")
    try:
        while True:
            wait = random.randint(interval_min * 60, interval_max * 60)
            time.sleep(wait)
            random_alert()
    except KeyboardInterrupt:
        print("自動モード終了")


def parse_args():
    parser = argparse.ArgumentParser(description="ランダムなジョークウイルス通知を表示します")
    subparsers = parser.add_subparsers(dest="command")

    subparsers.add_parser("alert", help="今すぐランダム通知を表示")
    auto = subparsers.add_parser("auto", help="自動で定期的に通知を表示")
    auto.add_argument("--min", type=int, default=30, help="最小間隔(分)")
    auto.add_argument("--max", type=int, default=90, help="最大間隔(分)")
    subparsers.add_parser("list", help="通知履歴を表示")
    subparsers.add_parser("summary", help="通知履歴のサマリーを表示")
    return parser.parse_args()


def main():
    args = parse_args()
    if args.command == "alert":
        random_alert()
    elif args.command == "auto":
        auto_mode(args.min, args.max)
    elif args.command == "list":
        list_alerts()
    elif args.command == "summary":
        summary_alerts()
    else:
        print("使い方: python random_os_fake_virus_alert.py [alert|auto|list|summary]")

if __name__ == "__main__":
    main()

references/design_notes.md

# 概要
本Skillは、OS標準の通知APIを活用し、明らかにジョークと分かる“フェイクウイルスアラート”をランダム表示することで、作業のマンネリ化を打破し、チームや個人の気分転換を促進します。

# 公式ドキュメント抜粋
- Windows: win10toast (https://pypi.org/project/win10toast/)
- macOS: AppleScript display notification (https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_cmds.html)
- Linux: notify-send (https://specifications.freedesktop.org/notification-spec/)

# 利用例
- 長時間のコーディングやリモートワーク中、気分転換のきっかけに
- チームのSlackやZoomで話題作りとして

# 注意点
- 通知内容は本物のウイルス警告やセキュリティアラートと誤認されないよう、明確なジョーク文言のみを使用
- システムやファイルには一切影響を与えません

# 設計方針
- クロスプラットフォーム(Windows/macOS/Linux)対応
- 環境構築不要(OS標準APIのみ)
- ログ機能・履歴閲覧・サマリー表示で運用状況も可視化

導入手順

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

1. 前提

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

2. degit でフォルダ取得

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

npx degit aazutaku/ai-note/codex/random-os-fake-virus-alert .agents/skills/random-os-fake-virus-alert

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

3. ファイル配置確認

ls .agents/skills/random-os-fake-virus-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 との連携設計はどうあるべきか?
  • 通知内容が本物と絶対に誤認されないユーモア設計か?
  • 通知の頻度・タイミングが作業の邪魔になりすぎないか?
  • 環境構築不要・OS標準APIのみで動作するか?

実際に Codex で試した検証ログは Codexで謎のウイルス警告を突然表示してみた!作業に笑いを添える新感覚通知演出 にまとめる予定 (公開準備中の場合あり)。
あわせて Codex 公式ドキュメント と、本シリーズ「Codexを使いこなすSkillアイデア」の他記事も参照のこと。

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

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

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

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