Codex ユーザーが日常でぶつかる悩み
AIコーディングエージェントである Codex を日常的に使っていると、どうしても作業が単調になったり、システムの通知が淡々としすぎて緊張感が高まることがあります。特に長時間のコーディングや、複数人でのオンボーディング作業の際、ちょっとした「遊び心」や「意外性」が欲しくなる瞬間も多いはずです。また、通知や演出を通じてチームの雰囲気を和ませたい、というニーズも根強く存在します。
- Codex が context を見失って違う場所のコードを参照するたび、ちょっとした気分転換や笑いが欲しくなる
- monorepo で package を跨いだ瞬間、Codex が repo 構造を忘れるため、無機質なやり取りが続いてしまう
- session を再開すると、前回までの context や path 指定をまるごと再説明しないといけず、気が重くなる
- 長時間 workflow で long context が膨らみすぎて、important な情報が薄まる (stale context) 中、集中力も切れがち
- 「ここはこういう構造のリポジトリ」というあらすじを毎回チャットの冒頭で書く羽目になり、マンネリを感じる
こうした「通知・演出・OS連携」カテゴリの悩みは、単なる効率化だけでなく、作業空間にちょっとした遊びやリフレッシュを持ち込みたいという現場の本音にも直結しています。
この Skill が一言でいうと何を解決するか
一言サマリ: このスキルは、Codex の作業中に“未来のOSエラー予言”というジョーク通知を自動で挟み込み、作業の緊張感を和らげるエンタメSkillです。
もう少し具体化すると、このSkillを入れることで以下のような状態になる:
- AI coding workflow の中に「意味不明な未来のエラープロフェシー通知」がランダムで挿入され、単調な作業に笑いや意外性が生まれる
- Codex の通知や context 切り替えタイミングで、毎回異なる“エラー予言”が現れることで、チームや個人のオンボーディング体験が柔らかくなる
- repo や directory の切り替え時、長時間の session など、気が張り詰めがちな場面で「なんでやねん」とツッコミたくなる演出が自然に入る
- Skill の発動は .agents/skills/ 配置だけでOK、面倒な設定不要で即導入できる
- 通知は完全にジョークなので、repository understanding や path management など本来の context や memory を一切妨げない
GitHub から degit でコマンド1行、Codex の Skill ディレクトリに展開できます。Node.js があれば即時に動きます。
npx degit aazutaku/ai-note/codex/random-os-fake-error-prophecy .agents/skills/random-os-fake-error-prophecy実行したらこうなる (3つの利用シーン)
使う側がイメージしやすいよう、擬似 terminal で出力例を3パターン示します。
シーン1: session 開始時 (プロジェクト初動で)
# /skills menu or random-os-fake-error-prophecy mention
> プロジェクトの初期化スクリプトを走らせて
[通知] エラー: 明日、/src/utils/ ディレクトリ内で謎のファイル名衝突が予言されています。
[通知] 警告: 来週水曜、あなたのエディタが自動保存を忘れる可能性が80%と算出されました。
[Codex] context: repo 構造の把握を開始します。
シーン2: monorepo / package 跨ぎ作業時
> packages/api/ から packages/web/ へ移動して
[通知] エラー: 未来の金曜日、packages/web/ で package.json が自己主張を始めます。
[通知] 警告: 近日中に monorepo の依存関係が逆転する可能性が観測されています。
[Codex] repository understanding: packages/web/ に context 切り替え完了。
シーン3: お遊び的な使い方
> なんか面白いこと言って
[通知] エラー: 来月のどこかで、あなたのマウスが反逆し始めるでしょう。
[通知] 警告: 未来のアップデートで、README.md が詩的表現に書き換わる予兆あり。
[Codex] memory: 直近のジョーク通知を context に記録しました。
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-error-prophecy/ に配置するファイル一覧です。GitHub に push 済みなので、上記の degit コマンドで一発取得できます。
.agents/skills/random-os-fake-error-prophecy/
├── SKILL.md
├── scripts/
│ └── random_os_fake_error_prophecy.py
└── references/
└── design_notes.md
各ファイルの役割
| ファイル | 役割 |
|---|---|
SKILL.md |
Skill本体。frontmatter (name/description) と指示本文。Codex がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します |
scripts/random_os_fake_error_prophecy.py |
random-os-fake-error-prophecy: 未来のトラブルを予言するジョーク通知スクリプト |
references/design_notes.md |
概要 をまとめた参考資料 |
SKILL.md
---
name: random-os-fake-error-prophecy
description: コマンド実行やファイル編集などの操作時に、'エラー'や'警告'など未来のトラブルを予言するメッセージをランダムに通知します。triggerType: always/semantic-or-explicit、キーワード例: error, warning, prophecy。
---
# 機能概要
このSkillは、ターミナルやエディタでコマンドを実行するたびに、まるでOSが未来を予言するかのような“エラープロフェシー”通知をランダムに表示します。通知内容は「エラー: 明日プリンターが紙詰まりします」「警告: 来週、あなたのキーボードが反逆します」など、完全に架空かつ意味不明な未来のトラブル予告です。作業の合間に緊張感を和らげ、思わず笑ってしまうようなエンタメ体験を提供します。
# 使い方
- 明示呼び出し: `/skills menu` から `random-os-fake-error-prophecy` を選択、または `$random-os-fake-error-prophecy` を直接メンション。
- 暗黙発動: ターミナルやエディタでコマンド実行、ファイル保存、または `error`, `warning`, `future`, `prophecy` などのキーワードを含む操作時に自動発動。
# 出力例
```
エラー: 明日の午後、あなたのマウスが一時的に消失します
警告: 来週金曜、Wi-Fiが自我に目覚めます
予言: 3日後、あなたのエディタが詩を詠み始めます
エラー: 1時間後、CapsLockが勝手にONになります
警告: 次回の再起動時、時計が逆回転します
```
# 注意点
- 本Skillの通知は完全なジョークであり、実際のシステムや作業には一切影響しません。
- 本物のエラーや警告とは無関係です。混同に注意してください。
- 通知内容はローカルには保存されません。
- 除外パスや特定のコマンドに対する発動制御はありません。
# 参考資料
詳細な設計方針や利用例は `references/design_notes.md` を参照してください。通知機能にはPythonの `random` と `datetime` 標準ライブラリのみを利用しています。
scripts/random_os_fake_error_prophecy.py
import sys
import argparse
import random
from datetime import datetime, timedelta
PROPHECY_TEMPLATES = [
"エラー: {future_time}、あなたの{device}が{event}します",
"警告: {future_time}、{device}が{event}します",
"予言: {future_time}、{device}が{event}を始めます",
"エラー: {future_time}、{device}が{event}状態になります",
"警告: {future_time}、{device}が{event}に目覚めます",
"予言: {future_time}、{device}が{event}を宣言します",
"エラー: {future_time}、{device}が{event}に反逆します",
"警告: {future_time}、{device}が{event}を計画しています"
]
DEVICES = [
"マウス", "キーボード", "Wi-Fi", "プリンター", "エディタ", "ディスプレイ", "バッテリー", "USBメモリ", "スピーカー", "タッチパッド", "CapsLock", "時計"
]
EVENTS = [
"消失", "自我に目覚める", "詩を詠み始める", "勝手にONになる", "逆回転する", "紙詰まりする", "反逆する", "再起動する", "音を出さなくなる", "動かなくなる", "アップデートを要求する", "謎の動作を始める"
]
FUTURE_TIMES = [
"明日の午後", "来週金曜", "3日後", "1時間後", "次回の再起動時", "今夜", "2週間後", "5分後", "次の満月の夜", "次の会議中"
]
def random_future_time():
# 1/3の確率で具体的な日時を返す
if random.random() < 0.33:
delta = random.choice([1,2,3,5,7,14])
future = datetime.now() + timedelta(days=delta)
return future.strftime("%Y-%m-%d")
return random.choice(FUTURE_TIMES)
def generate_prophecy():
template = random.choice(PROPHECY_TEMPLATES)
device = random.choice(DEVICES)
event = random.choice(EVENTS)
future_time = random_future_time()
return template.format(device=device, event=event, future_time=future_time)
def log_prophecy(logfile=None):
prophecy = generate_prophecy()
print(prophecy)
if logfile:
try:
with open(logfile, 'a', encoding='utf-8') as f:
f.write(f"{datetime.now().isoformat()} {prophecy}\n")
except Exception as e:
print(f"ログファイルへの書き込みに失敗しました: {e}", file=sys.stderr)
def list_prophecies(count=5):
for _ in range(count):
print(generate_prophecy())
def summary_prophecies(count=20):
device_count = {d:0 for d in DEVICES}
event_count = {e:0 for e in EVENTS}
for _ in range(count):
device = random.choice(DEVICES)
event = random.choice(EVENTS)
device_count[device] += 1
event_count[event] += 1
print("デバイス別予言発生数:")
for d, c in sorted(device_count.items(), key=lambda x: -x[1]):
print(f" {d}: {c}")
print("イベント別予言発生数:")
for e, c in sorted(event_count.items(), key=lambda x: -x[1]):
print(f" {e}: {c}")
def main():
parser = argparse.ArgumentParser(description='random-os-fake-error-prophecy: 未来のトラブルを予言するジョーク通知スクリプト')
subparsers = parser.add_subparsers(dest='command')
parser_log = subparsers.add_parser('log', help='予言を1つ表示し、必要に応じてログファイルに保存')
parser_log.add_argument('--logfile', type=str, help='予言を追記するログファイルパス')
parser_list = subparsers.add_parser('list', help='複数の予言を表示')
parser_list.add_argument('--count', type=int, default=5, help='表示する予言数 (デフォルト5)')
parser_summary = subparsers.add_parser('summary', help='予言のデバイス・イベント集計')
parser_summary.add_argument('--count', type=int, default=20, help='集計する予言数 (デフォルト20)')
args = parser.parse_args()
if args.command == 'log':
log_prophecy(args.logfile)
elif args.command == 'list':
list_prophecies(args.count)
elif args.command == 'summary':
summary_prophecies(args.count)
else:
parser.print_help()
if __name__ == '__main__':
main()
references/design_notes.md
# 概要
このSkillは、作業中のユーザーに対して完全に架空の未来トラブルを“予言”することで、緊張感を和らげたり、遊び心を提供することを目的としています。
# 公式ドキュメント抜粋
本SkillはPython標準ライブラリのみを利用し、外部APIやシステムリソースには一切アクセスしません。通知はすべて標準出力です。
# 利用例
- ターミナルで `python random_os_fake_error_prophecy.py log` を実行すると、1件の予言が表示されます。
- `list` サブコマンドで複数の予言を一度に確認可能。
- `summary` でどのデバイス・イベントが多いか集計できます。
# 注意点
- 本Skillは実際のエラーやシステム挙動には一切影響しません。
- 予言内容は完全なフィクションです。混乱を避けるため、業務システム等での常時表示は推奨しません。
# 設計方針
- 予言文はテンプレート・デバイス・イベント・未来時刻をランダムに組み合わせて生成。
- 通知頻度やタイミングはトリガー側で制御可能。
- ログ保存機能は任意で利用可能です。
導入手順
このSkillは GitHub で管理されているので、degit を使えば必要なフォルダだけを1コマンドで取得できます。Codex はファイル配置後に再起動するだけで自動認識します。
1. 前提
- Node.js v16 以上 (
degit実行に必要) - Codex がローカルで動いていること
2. degit でフォルダ取得
プロジェクトのルートで以下のコマンドを実行します。
npx degit aazutaku/ai-note/codex/random-os-fake-error-prophecy .agents/skills/random-os-fake-error-prophecy
.agents/skills/random-os-fake-error-prophecy の中に SKILL.md / scripts/ / references/ / README.md が展開されます。
3. ファイル配置確認
ls .agents/skills/random-os-fake-error-prophecy
# 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記事を探す
本記事に付いているタグから、気になるテーマの記事を探せます。タグページで関連記事をまとめて読めるので、ぜひチェックしてみてください!
