Codex ユーザーが日常でぶつかる悩み
AIコーディング環境で日々作業していると、真面目な開発フローの中にふと「ちょっとした気分転換」や「遊び心」が欲しくなる瞬間があるものです。しかし、現実には以下のような悩みを感じやすい状況が多くあります。
- 集中している最中、ふと現実逃避したくなるが、開発環境があまりにも無機質で遊びがない
- 長時間のAI coding workflowで、リポジトリやcontextの説明ばかり繰り返し、気分転換のきっかけがない
- monorepo構造の巨大なrepositoryを扱うとき、directoryやpath管理ばかりに気を取られて息が詰まる
- Codexのcontextやmemoryが膨らみ、重要な情報が埋もれてしまい、作業がマンネリ化しやすい
- AIの通知や演出が「真面目すぎ」て、ちょっとした笑いや混乱が欲しいのに全く起きない
「通知・演出・OS連携」カテゴリのSkillがあれば、こうした退屈な瞬間に意外性やユーモアを持ち込むことができ、日々の開発体験が一変します。
この Skill が一言でいうと何を解決するか
一言サマリ: このスキルは、Codexの作業空間に「謎のOS読心術通知」という不条理な混乱と笑いを自動で差し込みます。
もう少し具体化すると、このSkillを入れることで以下のような状態になる:
- AI coding workflowの合間に、contextやrepository理解とは無関係な「フェイクのテレパシーコマンド通知」が突発的に表示され、気分転換や話題作りになる
- monorepoや複雑なdirectory構造で単調になりがちな作業に、意外性のある演出が加わり、オンボーディングや長時間作業のストレスを緩和できる
- Codexの通知が「OSがあなたの心を読んだ」風のネタを毎回ランダム生成するため、毎回新鮮な驚きや笑いが生まれる
- Skillの導入・解除が簡単で、repositoryやpath管理、context設計に一切影響せず安全
- AIとのやり取りに、ちょっとした「人間らしい」遊び心や現実逃避の余地を持たせられる
GitHub から degit でコマンド1行、Codex の Skill ディレクトリに展開できます。Node.js があれば即時に動きます。
npx degit aazutaku/ai-note/codex/random-os-fake-telepathic-command-alert .agents/skills/random-os-fake-telepathic-command-alert実行したらこうなる (3つの利用シーン)
使う側がイメージしやすいよう、擬似 terminal で出力例を3パターン示す。
シーン1: session 開始時 (プロジェクト初動で)
# /skills menu
> スキル一覧を表示
[OS通知] テレパシーコマンド検出: 'install quantum-coffee-maker'
[OS通知] あなたが心で唱えたコマンドを認識しました: 'git push --to-parallel-universe'
[OS通知] 念波受信: 'npm run teleport-to-prod'
(※これらは実行されません。完全なフェイク通知です)
シーン2: monorepo / package 跨ぎ作業時
> packages/api/ ディレクトリに移動
[OS通知] テレパシーコマンド検出: 'merge all branches telepathically'
[OS通知] あなたが心で考えたコマンドをOSが察知: 'cd packages/ui && open portal-to-design-system'
[OS通知] 念波検出: 'ls -la --show-hidden-dreams'
(※どれも本当に実行されません)
シーン3: お遊び的な使い方
> ちょっと休憩したい
[OS通知] テレパシーコマンド検出: 'take a nap in /dev/dream'
[OS通知] 心の声をキャッチ: 'brew install productivity-boost'
[OS通知] 念波受信: 'rm -rf /procrastination'
(※完全なジョーク通知です)
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-telepathic-command-alert/ に配置するファイル一覧です。GitHub に push 済みなので、上記の degit コマンドで一発取得できます。
.agents/skills/random-os-fake-telepathic-command-alert/
├── SKILL.md
├── scripts/
│ └── telepathic_alert.py
└── references/
└── design_notes.md
各ファイルの役割
| ファイル | 役割 |
|---|---|
SKILL.md |
Skill本体。frontmatter (name/description) と指示本文。Codex がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します |
scripts/telepathic_alert.py |
OS読心術フェイク通知スキル |
references/design_notes.md |
概要 をまとめた参考資料 |
SKILL.md
---
name: random-os-fake-telepathic-command-alert
description: このSkillは、ユーザーがコマンド入力や作業中に“念波”や“心の声”をOSが検出したかのようなフェイク通知をランダムに表示します。明示的な呼び出し(/skills menuやskill名メンション)や、作業進行・コマンド実行などのsemantic trigger時に発動します。
---
# 機能概要
`random-os-fake-telepathic-command-alert`は、作業やコマンド実行の合間に「OSがあなたの心の中のコマンドを検出した」とする、完全に架空の通知をランダムで表示するSkillです。実際には存在しないコマンドや妄想的な操作内容を、あたかもOSが読心術で察知したかのように演出します。真面目な作業空間に突如現れる不条理な通知で、現実逃避や笑いを提供し、作業の合間のリフレッシュやチーム内のアイスブレイクにも活用できます。
# 使い方
- 明示呼び出し例: `/skills menu` から本Skillを選択、または `@random-os-fake-telepathic-command-alert` で直接発動
- 暗黙発動例: コマンド実行直後、長時間入力なし、または「deploy」「build」「coffee」などのキーワードを含む作業時に自動発動
# 出力例
```
[Telepathic OS Alert]
あなたが心の中で考えたコマンドを検出しました: 'make coffee'
[Telepathic OS Alert]
念波検出: 'deploy to mars'
[Telepathic OS Alert]
思念コマンド捕捉: 'sudo fix all bugs instantly'
[Telepathic OS Alert]
OSがあなたの夢を感知しました: 'take a nap'
[Telepathic OS Alert]
未知の念波: 'hack time itself'
```
# 注意点
- 実際のコマンドやファイル操作は一切行いません
- 通知内容は毎回ランダム生成され、実行・保存・履歴等は残りません
- ローカル通知API(Linux: notify-send, macOS: osascript, Windows: Toast通知)を利用
- チームや共有環境での利用時は、混乱を避けるため周知推奨
# 参考資料
- references/design_notes.md
- [Linux notify-send](https://specifications.freedesktop.org/notification-spec/latest/)
- [macOS osascript](https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html)
- [Windows Toast Notifications](https://learn.microsoft.com/en-us/windows/uwp/design/shell/tiles-and-notifications/toast-notifications)
scripts/telepathic_alert.py
import sys
import os
import random
import platform
import subprocess
import argparse
import time
from typing import List
FAKE_COMMANDS = [
"make coffee",
"deploy to mars",
"sudo fix all bugs instantly",
"take a nap",
"hack time itself",
"summon pizza",
"enable quantum mode",
"reboot universe",
"teleport home",
"auto-merge all PRs",
"undo last year",
"find meaning of life",
"run infinite loop of joy",
"activate stealth mode",
"mute all meetings",
"generate unlimited snacks",
"escape reality",
"clone self",
"start holiday",
"pause time"
]
ALERT_PREFIXES = [
"[Telepathic OS Alert]",
"[念波検出]",
"[思念コマンド捕捉]",
"[OS読心術通知]",
"[未知の念波]"
]
ALERT_PATTERNS = [
"あなたが心の中で考えたコマンドを検出しました: '{cmd}'",
"念波検出: '{cmd}'",
"思念コマンド捕捉: '{cmd}'",
"OSがあなたの夢を感知しました: '{cmd}'",
"未知の念波: '{cmd}'"
]
HISTORY_FILE = os.path.expanduser("~/.telepathic_alert_history")
def choose_fake_alert() -> str:
cmd = random.choice(FAKE_COMMANDS)
pattern = random.choice(ALERT_PATTERNS)
prefix = random.choice(ALERT_PREFIXES)
return f"{prefix}\n{pattern.format(cmd=cmd)}"
def send_notification(message: str):
sys_platform = platform.system()
try:
if sys_platform == "Linux":
subprocess.run(["notify-send", "Telepathic OS Alert", message], check=True)
elif sys_platform == "Darwin":
# macOS: use osascript
script = f'display notification "{message}" with title "Telepathic OS Alert"'
subprocess.run(["osascript", "-e", script], check=True)
elif sys_platform == "Windows":
try:
from win10toast import ToastNotifier
toaster = ToastNotifier()
toaster.show_toast("Telepathic OS Alert", message, duration=5)
except ImportError:
print("win10toastが必要です: pip install win10toast")
else:
print("このOSでは通知がサポートされていません。\n" + message)
except Exception as e:
print(f"通知送信時にエラー: {e}\n\n{message}")
def log_alert(message: str):
try:
with open(HISTORY_FILE, "a", encoding="utf-8") as f:
f.write(f"{time.strftime('%Y-%m-%d %H:%M:%S')}\t{message}\n")
except Exception as e:
print(f"履歴ファイル書き込みエラー: {e}")
def show_history(limit: int = 10):
if not os.path.exists(HISTORY_FILE):
print("履歴がありません。")
return
try:
with open(HISTORY_FILE, "r", encoding="utf-8") as f:
lines = f.readlines()[-limit:]
print("-- Telepathic Alert 履歴 --")
for line in lines:
print(line.strip())
except Exception as e:
print(f"履歴表示エラー: {e}")
def summary():
if not os.path.exists(HISTORY_FILE):
print("履歴がありません。")
return
try:
with open(HISTORY_FILE, "r", encoding="utf-8") as f:
lines = f.readlines()
total = len(lines)
cmds = [l.split('\t')[-1].split(": '")[-1].rstrip("'") for l in lines if ": '" in l]
unique_cmds = set(cmds)
print(f"合計通知数: {total}")
print(f"ユニーク妄想コマンド数: {len(unique_cmds)}")
print(f"最近のコマンド例: {list(unique_cmds)[:5]}")
except Exception as e:
print(f"サマリー取得エラー: {e}")
def main():
parser = argparse.ArgumentParser(description="OS読心術フェイク通知スキル")
subparsers = parser.add_subparsers(dest="command")
parser_log = subparsers.add_parser("log", help="ランダムなテレパシー通知を発生させる")
parser_log.add_argument("--count", type=int, default=1, help="連続発生回数")
parser_log.add_argument("--interval", type=float, default=0, help="通知間隔(秒)")
parser_history = subparsers.add_parser("list", help="通知履歴を表示")
parser_history.add_argument("--limit", type=int, default=10, help="表示件数")
parser_summary = subparsers.add_parser("summary", help="通知履歴のサマリーを表示")
args = parser.parse_args()
if args.command == "log":
for _ in range(args.count):
msg = choose_fake_alert()
send_notification(msg)
log_alert(msg)
if args.interval > 0 and _ < args.count - 1:
time.sleep(args.interval)
elif args.command == "list":
show_history(args.limit)
elif args.command == "summary":
summary()
else:
parser.print_help()
if __name__ == '__main__':
main()
references/design_notes.md
# 概要
このSkillは、現実には存在しない“妄想コマンド”をOSが検出したかのような通知をランダムに生成・表示することで、作業空間にユーモアと意外性をもたらします。実際のコマンドやファイル操作は一切行わない安全設計です。
# 公式ドキュメント抜粋
- Linux: `notify-send`(freedesktop.org通知仕様)
- macOS: `osascript`のAppleScript通知
- Windows: `win10toast`によるトースト通知
# 利用例
- 長時間作業や単調なコマンド入力の合間に、意図的に“謎のOS通知”を発生させて気分転換
- チーム内でのアイスブレイクや、ペア作業時の話題作り
# 注意点
- 実コマンドや実データには一切アクセスせず、内容は完全にランダムな生成のみ
- 通知履歴はローカルのホームディレクトリに保存されますが、外部送信はありません
- 通知APIの動作はOSに依存するため、Linux/macOS/Windowsで挙動が異なります
# 設計方針
- “読心術”や“念波”といったSF的演出を重視し、通知内容は現実逃避・笑い・驚きを狙って設計
- セキュリティやプライバシーに配慮し、実行環境の実データや履歴には一切触れない
導入手順
このSkillは GitHub で管理されているので、degit を使えば必要なフォルダだけを1コマンドで取得できます。Codex はファイル配置後に再起動するだけで自動認識します。
1. 前提
- Node.js v16 以上 (
degit実行に必要) - Codex がローカルで動いていること
2. degit でフォルダ取得
プロジェクトのルートで以下のコマンドを実行します。
npx degit aazutaku/ai-note/codex/random-os-fake-telepathic-command-alert .agents/skills/random-os-fake-telepathic-command-alert
.agents/skills/random-os-fake-telepathic-command-alert の中に SKILL.md / scripts/ / references/ / README.md が展開されます。
3. ファイル配置確認
ls .agents/skills/random-os-fake-telepathic-command-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 との連携設計はどうあるべきか?
- 通知が完全にランダムで、実コマンドや実データに一切触れていないか?
- “読心術”風のネタ感がしっかり伝わるか? (ユーザーが混乱せず楽しめるか?)
実際に Codex で試した検証ログは Codexで謎のテレパシーOS通知を爆誕させてみた! にまとめる予定 (公開準備中の場合あり)。
あわせて Codex 公式ドキュメント と、本シリーズ「Codexを使いこなすSkillアイデア」の他記事も参照のこと。
関連タグで他のSkill記事を探す
本記事に付いているタグから、気になるテーマの記事を探せます。タグページで関連記事をまとめて読めるので、ぜひチェックしてみてください!
