Codex ユーザーが日常でぶつかる悩み
AI coding workflow の日常で、Codex を使い続けていると「またか…」となる瞬間が多々あります。特に repository understanding や path management の文脈で、作業が単調になったり、気分転換が欲しくなることも。通知や演出系 Skill のニーズは意外と根強いものです。実際にはこんな悩みが挙がります:
- Codex が context を見失って違う場所のコードを参照する
- monorepo で package を跨いだ瞬間、Codex が repo 構造を忘れる
- session を再開すると、前回までの context や path 指定をまるごと再説明しないといけない
- 長時間 workflow で long context が膨らみすぎて、important な情報が薄まる (stale context)
- 「ここはこういう構造のリポジトリ」というあらすじを毎回チャットの冒頭で書く羽目になる
こうした背景の中、作業空間に遊び心や意外性、そして AI 社会の風刺を“通知”として挟みたい…そんな気分になることも少なくありません。
この Skill が一言でいうと何を解決するか
一言サマリ: このスキルは、Codex の作業空間に「謎のAI評価通知」を投入し、単調な開発フローや長時間の session にスパイスを加えるSkill。
もう少し具体化すると、このSkillを入れることで以下のような状態になる:
- Codex の context や repo 構造にまつわる作業が続く中、突如「AIによる理不尽な評価コメント」が表示され、気分転換や話題作りになる
- 長時間の AI coding workflow で stale context に陥りそうなとき、ランダムな通知でリフレッシュできる
- onboarding や session 再開時など、緊張感が高いタイミングで「AI社会の風刺」的な演出を体験できる
- monorepo の directory や path management の合間に、遊び心ある通知で空気を変えられる
- Skill の発動頻度やタイミングが絶妙に調整されており、作業の邪魔にならない
GitHub から degit でコマンド1行、Codex の Skill ディレクトリに展開できます。Node.js があれば即時に動きます。
npx degit aazutaku/ai-note/codex/random-os-fake-ai-evaluation-alert .agents/skills/random-os-fake-ai-evaluation-alert実行したらこうなる (3つの利用シーン)
使う側がイメージしやすいよう、擬似 terminal で出力例を3パターン示します。
シーン1: session 開始時 (プロジェクト初動で)
# /skills menu or random-os-fake-ai-evaluation-alert mention
> プロジェクト開始
[OS公式AI通知] 作業者ID: 0xA3C2
AI評価: 本日の集中度は「たぶん寝てる」と判定されました。
理由: ディレクトリ移動回数が基準値を下回っています。
[ヒント] repository understanding を高めるため、README.md を再読推奨。
シーン2: monorepo / package 跨ぎ作業時
> packages/api/ から packages/web/ に移動
[OS公式AI通知] AI自動評価: monorepo 構造の理解度 27%
判定: 「path 指定がランダムすぎ」とAIがコメントしています。
[警告] package 跨ぎ時の context ロスにご注意ください。
シーン3: お遊び的な使い方
> 今日はコーヒー飲みすぎたかも
[OS公式AI通知] 本日のコーヒー摂取量: AI基準値を超過しました。
AIコメント: 「カフェイン依存度が上昇中。休憩を検討してください。」
[参考] repository の memory がリフレッシュされました。
before / after の違い
| 場面 | Skill 無し | Skill 有り |
|---|---|---|
| session 再開時 | repo 構造から毎回説明、path も指定し直し | Codex が自動で context を復元、最小プロンプトで再開 |
| monorepo 移動 | 違う package のコードを参照しがち | directory boundary を意識して必要な範囲だけ見る |
| 長時間 workflow | long context で重要箇所が薄まる | 理不尽AI通知で気分転換しつつ、context を見直すきっかけになる |
発動方式
明示呼び出し (/skills menu or $skill-name mention) と暗黙発動 (description マッチ) の両方に対応。
Skill の中身を全部見せる
.agents/skills/random-os-fake-ai-evaluation-alert/ に配置するファイル一覧です。GitHub に push 済みなので、上記の degit コマンドで一発取得できます。
.agents/skills/random-os-fake-ai-evaluation-alert/
├── SKILL.md
├── scripts/
│ └── random_os_fake_ai_evaluation_alert.py
└── references/
└── design_notes.md
各ファイルの役割
| ファイル | 役割 |
|---|---|
SKILL.md |
Skill本体。frontmatter (name/description) と指示本文。Codex がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します |
scripts/random_os_fake_ai_evaluation_alert.py |
random-os-fake-ai-evaluation-alert: 理不尽AI評価通知スキル |
references/design_notes.md |
概要 をまとめた参考資料 |
SKILL.md
---
name: random-os-fake-ai-evaluation-alert
description: 作業中やコマンド実行時、または/skillsやrandom-os-fake-ai-evaluation-alertへの明示呼び出し時に発動。通知・評価・AI・集中・警告などのキーワードや、ユーザーのアクションが検知された場合に適用。
---
# 機能概要
このSkillは、あなたの作業空間に突然「AIによるOS公式評価通知」を送りつけます。評価内容は完全ランダムで、真面目な体裁ながら理不尽・無意味なコメントが特徴です。例えば「AI判定: たぶん寝てる」「コーヒー摂取量が基準値超過」など、現実のAI社会を風刺した演出を提供します。実用的な効果はありませんが、作業の合間にクスッと笑える通知で空間にスパイスを加えます。
# 使い方
- 明示呼び出し: `/skills random-os-fake-ai-evaluation-alert` または `random-os-fake-ai-evaluation-alert` へのmentionで即時発動。
- 暗黙発動: 「通知」「評価」「AI」「集中」「警告」などのキーワードを含む会話やコマンド実行時に自動発動。頻度は内部で調整され、ウザすぎない程度に1時間数回程度。
# 出力例
```
[AI評価通知] 本日のあなたの集中度: AI判定「たぶん寝てる」
[AI評価通知] 自動分析: コーヒー摂取量が基準値超過
[AI評価通知] タイピング速度: AI基準「なぜか逆走中」
[AI評価通知] 作業効率: AI判定「謎の停滞モード」
[AI評価通知] 画面注視率: AI推測「たぶんYouTube」
[AI評価通知] AIによる自動評価: 今日のやる気指数「未検出」
```
# 注意点
- 本Skillは完全に無害で、システムやファイルに一切影響を与えません。
- 通知内容はすべてランダム生成され、実際の評価や監視は行いません。
- ローカル環境に履歴を保存しません。
- 頻度は過度にならないよう自動調整。
# 参考資料
- [references/design_notes.md](references/design_notes.md) に設計方針や利用例を記載
- OS通知: `notify-send` (Linux), `osascript` (macOS), `win10toast` (Windows)
- [Python subprocess公式](https://docs.python.org/3/library/subprocess.html)
scripts/random_os_fake_ai_evaluation_alert.py
import sys
import os
import random
import time
import argparse
import platform
import subprocess
from datetime import datetime, timedelta
# ランダムAI評価メッセージリスト
AI_MESSAGES = [
"本日のあなたの集中度: AI判定『たぶん寝てる』",
"自動分析: コーヒー摂取量が基準値超過",
"タイピング速度: AI基準『なぜか逆走中』",
"作業効率: AI判定『謎の停滞モード』",
"画面注視率: AI推測『たぶんYouTube』",
"AIによる自動評価: 今日のやる気指数『未検出』",
"AI判定: Slack未読件数が臨界点突破",
"AI警告: ファイル保存回数が少なすぎます",
"自動評価: 進捗バーが水平線を突破",
"AI推測: たぶん今は休憩中",
"AI判定: キーボード操作がランダムウォーク",
"AI評価: コーディング速度が量子トンネル効果",
"AI警告: 画面切替頻度が異常値",
"AI判定: タスク切り替え回数が規格外",
"AI評価: エラー回数がAI基準値を超過",
"AI推測: たぶん猫がキーボードを操作中",
"AI判定: 進捗状況『観測不能』",
"AI警告: 目の瞬き回数がAI基準値未満",
"AI評価: 今日のやる気指数『検出不能』",
"AI判定: コードの美しさがカオス状態"
]
NOTIFY_TITLE = "AI評価通知"
# OSごとの通知実装
def send_notification(message):
sys_platform = platform.system()
try:
if sys_platform == "Linux":
subprocess.run(["notify-send", NOTIFY_TITLE, message], check=False)
elif sys_platform == "Darwin":
script = f'display notification "{message}" with title "{NOTIFY_TITLE}"'
subprocess.run(["osascript", "-e", script], check=False)
elif sys_platform == "Windows":
try:
from win10toast import ToastNotifier
toaster = ToastNotifier()
toaster.show_toast(NOTIFY_TITLE, message, duration=5, threaded=True)
except ImportError:
print(f"[{NOTIFY_TITLE}] {message}")
else:
print(f"[{NOTIFY_TITLE}] {message}")
except Exception as e:
print(f"[{NOTIFY_TITLE}] {message} (通知失敗: {e})")
# ターミナル出力
def print_terminal(message):
print(f"[{NOTIFY_TITLE}] {message}")
# 評価メッセージをランダム選択
def random_ai_message():
return random.choice(AI_MESSAGES)
# ログファイル保存(オプション、デフォルトは保存しない)
def log_message(message, logfile=None):
if logfile:
with open(logfile, 'a', encoding='utf-8') as f:
f.write(f"{datetime.now().isoformat()} {message}\n")
# サブコマンド: 即時通知
def cmd_alert(args):
msg = random_ai_message()
if args.terminal:
print_terminal(msg)
else:
send_notification(msg)
log_message(msg, args.logfile)
# サブコマンド: 連続通知(頻度調整付き)
def cmd_stream(args):
interval = max(60, args.interval) # 最低60秒間隔
count = args.count
for i in range(count):
msg = random_ai_message()
if args.terminal:
print_terminal(msg)
else:
send_notification(msg)
log_message(msg, args.logfile)
if i < count - 1:
time.sleep(interval)
# サブコマンド: メッセージ一覧表示
def cmd_list(args):
for m in AI_MESSAGES:
print(f"- {m}")
# サブコマンド: ログ表示
def cmd_log(args):
if not args.logfile or not os.path.exists(args.logfile):
print("ログファイルが存在しません")
return
with open(args.logfile, encoding='utf-8') as f:
for line in f:
print(line.strip())
# 引数パース
def parse_args():
parser = argparse.ArgumentParser(description='random-os-fake-ai-evaluation-alert: 理不尽AI評価通知スキル')
subparsers = parser.add_subparsers(dest='command', required=True)
parser_alert = subparsers.add_parser('alert', help='AI評価通知を即時発動')
parser_alert.add_argument('--terminal', action='store_true', help='ターミナルに出力のみ')
parser_alert.add_argument('--logfile', type=str, help='通知履歴をファイル保存')
parser_alert.set_defaults(func=cmd_alert)
parser_stream = subparsers.add_parser('stream', help='AI評価通知を一定間隔で繰り返す')
parser_stream.add_argument('--interval', type=int, default=3600, help='通知間隔(秒, 最小60)')
parser_stream.add_argument('--count', type=int, default=3, help='通知回数')
parser_stream.add_argument('--terminal', action='store_true', help='ターミナルに出力のみ')
parser_stream.add_argument('--logfile', type=str, help='通知履歴をファイル保存')
parser_stream.set_defaults(func=cmd_stream)
parser_list = subparsers.add_parser('list', help='AI評価メッセージ一覧表示')
parser_list.set_defaults(func=cmd_list)
parser_log = subparsers.add_parser('log', help='通知ログ表示')
parser_log.add_argument('--logfile', type=str, required=True, help='ログファイルパス')
parser_log.set_defaults(func=cmd_log)
return parser.parse_args()
if __name__ == '__main__':
args = parse_args()
args.func(args)
references/design_notes.md
# 概要
本Skillは、作業中に理不尽かつユーモラスな“AI評価通知”をランダムに生成し、デスクトップやターミナルへ表示することで、作業空間に遊び心を提供します。実用性よりも演出・風刺が主目的です。
# 公式ドキュメント抜粋
- [Python subprocess](https://docs.python.org/3/library/subprocess.html): OSコマンド呼び出しに使用
- [notify-send](https://manpages.ubuntu.com/manpages/latest/man1/notify-send.1.html): Linuxのデスクトップ通知
- [osascript](https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html): macOSの通知
- [win10toast](https://pypi.org/project/win10toast/): Windows 10通知
# 利用例
- `/skills random-os-fake-ai-evaluation-alert alert --terminal` で即時通知
- `/skills random-os-fake-ai-evaluation-alert stream --count 5 --interval 120` で2分ごとに5回通知
# 注意点
- 実際の評価や監視は一切行いません
- 通知頻度は最低60秒間隔に制限し、ウザすぎない設計
- ログ保存は任意で明示指定時のみ
# 設計方針
- 完全に無害であることを最優先
- OSごとの通知APIを実装し、クロスプラットフォーム対応
- メッセージは現実のAI社会の風刺・ユーモアを意識して多数用意
導入手順
このSkillは GitHub で管理されているので、degit を使えば必要なフォルダだけを1コマンドで取得できます。Codex はファイル配置後に再起動するだけで自動認識します。
1. 前提
- Node.js v16 以上 (
degit実行に必要) - Codex がローカルで動いていること
2. degit でフォルダ取得
プロジェクトのルートで以下のコマンドを実行します。
npx degit aazutaku/ai-note/codex/random-os-fake-ai-evaluation-alert .agents/skills/random-os-fake-ai-evaluation-alert
.agents/skills/random-os-fake-ai-evaluation-alert の中に SKILL.md / scripts/ / references/ / README.md が展開されます。
3. ファイル配置確認
ls .agents/skills/random-os-fake-ai-evaluation-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 との連携設計はどうあるべきか?
- 完全に無害であること(実害ゼロ)をどう担保するか?
- 理不尽かつ多様なAI評価メッセージが十分にランダム表示されるか?
実際に Codex で試した検証ログは Codexで謎のAI評価通知を炸裂させてみた!理不尽コメントの嵐を体験 にまとめる予定 (公開準備中の場合あり)。
あわせて Codex 公式ドキュメント と、本シリーズ「Codexを使いこなすSkillアイデア」の他記事も参照のこと。
関連タグで他のSkill記事を探す
本記事に付いているタグから、気になるテーマの記事を探せます。タグページで関連記事をまとめて読めるので、ぜひチェックしてみてください!
