Codex ユーザーが日常でぶつかる悩み
AI coding workflow の中で、Codex を使っていると「集中力が切れる」「作業に没頭しすぎて現実感が薄れる」といった体験は意外と多いものです。特に長時間の session や大規模 repository を扱う場合、ちょっとしたリフレッシュや気分転換が欲しくなる瞬間が訪れます。しかし、OSやツールからの通知はたいてい無機質で、逆にストレスの原因になることも。
こんな悩み、Codex ユーザーなら「あるある!」と感じるはず:
- Codex が context を見失って違う場所のコードを参照する
- monorepo で package を跨いだ瞬間、Codex が repo 構造を忘れる
- session を再開すると、前回までの context や path 指定をまるごと再説明しないといけない
- 長時間 workflow で long context が膨らみすぎて、important な情報が薄まる (stale context)
- 「ここはこういう構造のリポジトリ」というあらすじを毎回チャットの冒頭で書く羽目になる
さらに、単調な作業や context 管理に追われると、気分転換のきっかけが欲しくなるもの。そんな時に「謎のOS省エネモード」通知が突然現れたら、思わずクスッとしてしまうかもしれません。
この Skill が一言でいうと何を解決するか
一言サマリ: このスキルは、Codex の作業中に突如として“謎のOS省エネモード突入通知”を演出し、集中力や現実感覚にユーモラスな揺さぶりを与えるSkill。
もう少し具体化すると、このSkillを入れることで以下のような状態になる:
- 単調なAI coding workflowに、毎回違うフェイク通知でリフレッシュ効果をもたらす
- 長時間 session や monorepo の作業中でも、ランダムな演出で気分転換できる
- 「省エネモード中なので全てが遅く感じるかも」など、現実には何も起きていないのに自己暗示的な演出を楽しめる
- Codex の通知・演出 Skill カテゴリを拡張し、OS連携風の体験を疑似的に追加できる
- 通知内容が毎回バリエーション豊かで、作業者の集中とユーモアを両立
GitHub から degit でコマンド1行、Codex の Skill ディレクトリに展開できます。Node.js があれば即時に動きます。
npx degit aazutaku/ai-note/codex/random-os-fake-power-saving-mode .agents/skills/random-os-fake-power-saving-mode実行したらこうなる (3つの利用シーン)
使う側がイメージしやすいよう、擬似 terminal で出力例を3パターン示します。
シーン1: session 開始時 (プロジェクト初動で)
# /skills menu or random-os-fake-power-saving-mode mention
> プロジェクトの作業を始めます
[通知] OSが独断で「パフォーマンス自己最適化モード」に突入しました。
全ウィンドウの明るさが自動で10%ダウン(実際は変化なし)。
キーボード省入力モード発動中:タイプ音が静かになった気がします。
※省エネモード中なので、全ての処理が少し遅く感じるかもしれません。
(実際の作業には一切影響ありません)
シーン2: monorepo / package 跨ぎ作業時
> packages/api/ から packages/ui/ に移動します
[通知] OSが「全パッケージ横断省エネモード」を検知しました。
packages/ 配下の全ディレクトリで自動キャッシュクリア(嘘です)。
「リポジトリ理解力向上モード」発動中。Codex の context が鮮明になった気がします。
※この通知はフェイクです。いつも通り作業を続けてください。
シーン3: お遊び的な使い方
> ちょっと気分転換したい
[通知] OSが「謎の省入力フェスティバル」を開催中。
一部ショートカットキーが自動で入れ替わった気がします(気のせい)。
ディレクトリ /tmp/fake-power-saving/ が爆誕したような演出(実際は生成されません)。
省エネ中なので、頭の回転もゆっくりになるかも?
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-power-saving-mode/ に配置するファイル一覧です。GitHub に push 済みなので、上記の degit コマンドで一発取得できます。
.agents/skills/random-os-fake-power-saving-mode/
├── SKILL.md
├── scripts/
│ └── fake_power_saving_mode.py
└── references/
└── design_notes.md
各ファイルの役割
| ファイル | 役割 |
|---|---|
SKILL.md |
Skill本体。frontmatter (name/description) と指示本文。Codex がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します |
scripts/fake_power_saving_mode.py |
Random OS Fake Power Saving Mode Notifier |
references/design_notes.md |
概要 をまとめた参考資料 |
SKILL.md
---
name: random-os-fake-power-saving-mode
description: 作業中やコーディング時に“省エネモード”や“OS自己最適化”などのフェイク通知を発生させ、ユーザーの集中や現実感覚にユーモラスな揺さぶりを与えたい場合に発動します。キーワード例: 省エネ, パフォーマンス低下, OS通知。
---
# 機能概要
このSkillは、作業中に突然「OSが独断で省エネモードに突入した」という架空の通知を端末やデスクトップに表示します。通知内容は毎回ランダムで、実際には何も起こらず、システムや作業環境に影響を与えません。ユーモラスな演出で、作業者の集中力や現実感覚を微妙に揺さぶることを目的としています。
# 使い方
- 明示呼び出し: `/skills random-os-fake-power-saving-mode` または `$random-os-fake-power-saving-mode`
- 暗黙発動キーワード例: 「省エネモード」「パフォーマンス低下」「OS自己最適化」などが会話やコード内に現れた場合に自動発動します。
# 出力例
```
[通知] OS省エネモードが自動発動しました。
全ウィンドウの明るさ自動調整中…(完了)
キーボード省入力モード:有効
CPUパフォーマンス:自己最適化中
注意:省エネ中は全てが遅く感じるかもしれません。
[通知] OSが独断で「超省エネモード」に切り替えました。
画面の色温度を勝手に調整しています…(実際には何もしていません)
```
# 注意点
- 通知は完全なフェイクで、OSや作業環境には一切影響を与えません。
- 通知内容は毎回ランダム生成され、バリエーション豊かです。
- ローカルへの設定保存や履歴記録は行いません。
- 実際の省エネ機能やパフォーマンス制御は一切実装されていません。
# 参考資料
- [Python公式: notifications/OS通知](https://docs.python.org/3/library/subprocess.html)
- references/design_notes.md 参照(通知設計・ユーモア性について)
scripts/fake_power_saving_mode.py
import sys
import argparse
import random
import platform
import subprocess
import time
from typing import List
FAKE_NOTIFICATIONS = [
{
"title": "OS省エネモードが自動発動しました。",
"lines": [
"全ウィンドウの明るさ自動調整中…(完了)",
"キーボード省入力モード:有効",
"CPUパフォーマンス:自己最適化中",
"注意:省エネ中は全てが遅く感じるかもしれません。"
]
},
{
"title": "OSが独断で『超省エネモード』に切り替えました。",
"lines": [
"画面の色温度を勝手に調整しています…(実際には何もしていません)",
"全アプリケーションのリフレッシュレートを自動低下中",
"バッテリー節約アルゴリズム:AI最適化(実装予定)",
"ご理解とご協力をお願いします。"
]
},
{
"title": "謎の省エネモード突入通知",
"lines": [
"OSが勝手にパフォーマンスを自己最適化しています。",
"一部機能が制限される場合があります(ウソです)",
"省エネ解除は自動で行われます。",
"何も起こっていませんのでご安心ください。"
]
},
{
"title": "Fake Power Saving Mode Activated",
"lines": [
"All windows brightness auto-adjusted (not really)",
"Keyboard input minimized to save energy (makes no sense)",
"OS is optimizing performance in the background",
"You may feel everything is slower now (placebo effect)"
]
},
{
"title": "省エネモード:フェイク通知",
"lines": [
"画面の解像度をダウンスケーリング中…(嘘)",
"ネットワーク帯域幅を自動制限(していません)",
"全プロセスの優先度をランダム化(意味不明)",
"この通知は完全なジョークです。"
]
},
{
"title": "OS Energy Saver Mode (Fake)",
"lines": [
"Reducing system font size for power saving (not implemented)",
"Randomly pausing background apps (no effect)",
"Auto-dimming the terminal window",
"Enjoy your placebo performance boost!"
]
}
]
def select_random_notification() -> dict:
return random.choice(FAKE_NOTIFICATIONS)
def format_notification(notification: dict) -> str:
lines = [f"[通知] {notification['title']}"]
lines.extend(notification['lines'])
return "\n".join(lines)
def show_notification_terminal(notification: dict):
print(format_notification(notification))
def show_notification_desktop(notification: dict):
system = platform.system()
title = notification["title"]
message = "\n".join(notification["lines"])
try:
if system == "Darwin": # macOS
subprocess.run([
"osascript", "-e",
f'display notification "{message}" with title "{title}"'
], check=True)
elif system == "Linux":
subprocess.run([
"notify-send", title, message
], check=True)
elif system == "Windows":
try:
from win10toast import ToastNotifier
toaster = ToastNotifier()
toaster.show_toast(title, message, duration=5)
except ImportError:
print("win10toastがインストールされていません。ターミナル通知のみ行います。")
show_notification_terminal(notification)
else:
show_notification_terminal(notification)
except Exception as e:
print(f"通知送信に失敗しました: {e}")
show_notification_terminal(notification)
def list_notifications():
for idx, n in enumerate(FAKE_NOTIFICATIONS, 1):
print(f"{idx}. {n['title']}")
for line in n['lines']:
print(f" - {line}")
print()
def summary():
print("このSkillは、完全なフェイクの省エネ通知をランダムに生成し、デスクトップまたはターミナルに表示します。\n実際のOSや作業環境には一切影響を与えません。通知内容は毎回変化し、ユーモラスな演出で集中力や現実感覚を揺さぶります。")
def main():
parser = argparse.ArgumentParser(description="Random OS Fake Power Saving Mode Notifier")
subparsers = parser.add_subparsers(dest="command", help="サブコマンド")
parser_log = subparsers.add_parser("log", help="フェイク省エネ通知を1回表示")
parser_log.add_argument("--desktop", action="store_true", help="デスクトップ通知も行う(notify-send/osascript等使用)")
parser_list = subparsers.add_parser("list", help="全通知バリエーションを一覧表示")
parser_summary = subparsers.add_parser("summary", help="Skill概要を表示")
args = parser.parse_args()
if args.command == "log":
notification = select_random_notification()
show_notification_terminal(notification)
if args.desktop:
show_notification_desktop(notification)
elif args.command == "list":
list_notifications()
elif args.command == "summary":
summary()
else:
parser.print_help()
if __name__ == "__main__":
main()
references/design_notes.md
# 概要
このSkillは、ユーザーの作業中に“OS省エネモード突入”という完全なフェイク通知を発生させることで、現実感覚や集中力にユーモラスな揺さぶりを与えることを目的としています。
# 公式ドキュメント抜粋
- Python標準ライブラリ `subprocess` を用いて、macOSなら`osascript`、Linuxなら`notify-send`、Windowsなら`win10toast`によるデスクトップ通知を実装。
- 公式: https://docs.python.org/3/library/subprocess.html
# 利用例
- 長時間のコーディングやリモートワーク時の気分転換
- チーム内でのジョークやペアプロ時の小ネタ
- フェイク通知を使った集中力リセット
# 注意点
- 実際のOSや作業環境には一切影響を与えません。
- 通知内容は毎回ランダム生成され、履歴や設定はローカル保存されません。
- 一部環境ではデスクトップ通知用コマンドが未インストールの場合があります。
# 設計方針
- 完全なフェイク通知であることを明示
- バリエーション豊かな通知文生成
- OS依存部分はエラーハンドリングを徹底
- ユーザー体験のユーモア性を重視
導入手順
このSkillは GitHub で管理されているので、degit を使えば必要なフォルダだけを1コマンドで取得できます。Codex はファイル配置後に再起動するだけで自動認識します。
1. 前提
- Node.js v16 以上 (
degit実行に必要) - Codex がローカルで動いていること
2. degit でフォルダ取得
プロジェクトのルートで以下のコマンドを実行します。
npx degit aazutaku/ai-note/codex/random-os-fake-power-saving-mode .agents/skills/random-os-fake-power-saving-mode
.agents/skills/random-os-fake-power-saving-mode の中に SKILL.md / scripts/ / references/ / README.md が展開されます。
3. ファイル配置確認
ls .agents/skills/random-os-fake-power-saving-mode
# 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記事を探す
本記事に付いているタグから、気になるテーマの記事を探せます。タグページで関連記事をまとめて読めるので、ぜひチェックしてみてください!
