Codex ユーザーが日常でぶつかる悩み
AI coding workflow を日々回していると、「またか…」と思うような小さなストレスや、思いがけず集中が切れてしまう瞬間が繰り返し訪れます。特に Codex のような repository understanding を前提としたツールでは、context や path management の煩雑さが積み重なりがちです。そんな中、ふとしたタイミングで気分転換したくなることも。「このまま作業を続けて大丈夫?」と自分をリセットしたい気持ちが湧くこともあります。
- Codex が context を見失って違う場所のコードを参照する
- monorepo で package を跨いだ瞬間、Codex が repo 構造を忘れる
- session を再開すると、前回までの context や path 指定をまるごと再説明しないといけない
- 長時間 workflow で long context が膨らみすぎて、important な情報が薄まる (stale context)
- 「ここはこういう構造のリポジトリ」というあらすじを毎回チャットの冒頭で書く羽目になる
これらの悩みは、単なる作業効率の問題だけでなく、集中力の持続や「今ここで何をしているのか」というメンタル面にも直結します。通知や演出を通じて、時に強制的に context をリセットする「きっかけ」が欲しいと感じることも少なくありません。
この Skill が一言でいうと何を解決するか
一言サマリ: このスキルは、Codex の作業フローに“謎のOS再起動進捗バー”という演出をランダム挿入し、気分転換や context のリセット感をユーモラスに提供します。
もう少し具体化すると、このSkillを入れることで以下のような状態になる:
- 作業が煮詰まったタイミングで、repo や directory の context を“物理的にリセットした気分”になれる
- monorepo や長時間 session で stale context を感じた時、進捗バー演出で workflow を区切り直せる
- onboarding や session 再開時に、気持ちを切り替えて新鮮な気分で取り組める
- 実際の repository や memory には影響せず、AI coding workflow の合間にちょっとした遊び心を加えられる
- Codex の context 復元や path management の煩雑さを、一時的に忘れてリフレッシュできる
GitHub から degit でコマンド1行、Codex の Skill ディレクトリに展開できます。Node.js があれば即時に動きます。
npx degit aazutaku/ai-note/codex/random-os-fake-reboot-progressbar .agents/skills/random-os-fake-reboot-progressbar実行したらこうなる (3つの利用シーン)
使う側がイメージしやすいよう、擬似 terminal で出力例を3パターン示す。Skill が返す出力は推測だが、現実的なフォーマット・現実的な長さで書く。
シーン1: session 開始時 (プロジェクト初動で)
# /skills menu or random-os-fake-reboot-progressbar mention
> なんとなく気分転換したい
[OS SYSTEM REBOOT PROGRESS]
再起動準備中... (12%)
全プロセスの状態を保存しています...
謎のキャッシュクリア中... (28%)
config/main.yaml のバックアップ完了
あと3分で全てがリセットされます
謎のプロセス終了中... (55%)
memory/context snapshot 取得中...
[進捗バー: ▓▓▓░░░░░░░░░░]
シーン2: monorepo / package 跨ぎ作業時
> packages/api から packages/web に移動
[OS SYSTEM REBOOT PROGRESS]
packages/api のセッション終了処理中... (33%)
repository understanding を初期化しています
全 directory の permission を確認中...
謎の依存関係をシャットダウン中... (67%)
あと2分で context がリセットされます
[進捗バー: ▓▓▓▓▓░░░░░░░]
シーン3: お遊び的な使い方
> 今日は気分が乗らないので何か変化がほしい
[OS SYSTEM REBOOT PROGRESS]
謎のプロセス終了中... (24%)
意味不明な directory をスキャンしています...
再起動用メモリ確保中... (49%)
「あと1分で全てがリセットされます」
全ての path management を一時停止...
[進捗バー: ▓▓▓▓░░░░░░░░]
before / after の違い
| 場面 | Skill 無し | Skill 有り |
|---|---|---|
| session 再開時 | repo 構造から毎回説明、path も指定し直し | Codex が自動で context を復元、最小プロンプトで再開 |
| monorepo 移動 | 違う package のコードを参照しがち | directory boundary を意識して必要な範囲だけ見る |
| 長時間 workflow | long context で重要箇所が薄まる | 進捗バー演出で気分転換、context のリフレッシュを促進 |
発動方式
明示呼び出し (/skills menu or $skill-name mention) と暗黙発動 (description マッチ) の両方に対応。
Skill の中身を全部見せる
.agents/skills/random-os-fake-reboot-progressbar/ に配置するファイル一覧です。GitHub に push 済みなので、上記の degit コマンドで一発取得できます。
.agents/skills/random-os-fake-reboot-progressbar/
├── SKILL.md
├── scripts/
│ └── fake_reboot_progressbar.py
└── references/
└── design_notes.md
各ファイルの役割
| ファイル | 役割 |
|---|---|
SKILL.md |
Skill本体。frontmatter (name/description) と指示本文。Codex がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します |
scripts/fake_reboot_progressbar.py |
謎のOS再起動進捗バーをランダムに表示するスクリプト (冗談用) |
references/design_notes.md |
概要 をまとめた参考資料 |
SKILL.md
---
name: random-os-fake-reboot-progressbar
description: 作業に没頭しすぎている時や、冗談やリセット感を演出したいタイミングで発動。再起動・進捗・リセット・OS・プロセス・バー・冗談・混乱 などのキーワードが会話やコマンドに含まれる場合に適切。
---
# 機能概要
このSkillは、あなたの作業環境に“謎のOS再起動進捗バー”をランダムに表示します。進捗バーは「再起動準備中…」「謎のプロセス終了中…」などの意味不明なメッセージとともに進行し、「あと3分で全てがリセットされます」など、焦りと笑いを誘う演出を提供します。実際のシステム再起動やプロセス終了は一切行われません。集中しすぎた時のリフレッシュや、会話・作業フローに混乱とユーモアを加えたい場面に最適です。
# 使い方
- 明示呼び出し例: `/skills random-os-fake-reboot-progressbar` または `@codex skill:random-os-fake-reboot-progressbar`
- 暗黙発動キーワード例: 「再起動」「進捗バー」「OSリセット」「プロセス終了」「冗談」「リフレッシュ」「混乱」などが会話に含まれると自動発動。
# 出力例
```
[==> ] 12% 再起動準備中…
[=====> ] 28% 謎のプロセス終了中…
[========> ] 41% システムキャッシュを解放中…
[=============> ] 67% 仮想デバイスを初期化中…
[==================> ] 92% あと3分で全てがリセットされます
[====================] 100% 完了!実際には何も起きませんでした。
```
# 注意点
- 本Skillは視覚的な演出のみで、実際の再起動やシステム操作は一切行いません。
- 進捗バーやメッセージは毎回ランダム生成されます。
- ローカル保存や履歴記録は行いません。
- 長時間の進捗バー表示や、複数同時実行には非対応です。
# 参考資料
- references/design_notes.md を参照
- 公式Pythonドキュメント: https://docs.python.org/3/library/random.html, https://docs.python.org/3/library/time.html
scripts/fake_reboot_progressbar.py
import sys
import time
import random
import argparse
from typing import List
PROGRESS_MESSAGES = [
"再起動準備中…",
"謎のプロセス終了中…",
"システムキャッシュを解放中…",
"仮想デバイスを初期化中…",
"レジストリを最適化中…",
"メモリリークを検知中…",
"仮想カーネルを再構成中…",
"OSカーネルをシャッフル中…",
"不要なバイナリを圧縮中…",
"未知のエラーを解析中…",
"セキュリティホールを拡張中…",
"リセットトークンを生成中…",
"謎のデータを消去中…",
"非現実プロセスを終了中…",
"仮想ファームウェアを更新中…",
"全ての設定を忘却中…",
"OSの記憶を初期化中…",
"システム時間を巻き戻し中…"
]
FINAL_MESSAGES = [
"あと3分で全てがリセットされます",
"もうすぐ再起動が完了します",
"最終プロセスを終了中…",
"全ての作業が無に帰します",
"あと少しで現実がリセットされます"
]
COMPLETE_MESSAGE = "[====================] 100% 完了!実際には何も起きませんでした。"
BAR_LENGTH = 20
def random_progress_steps(num_steps: int) -> List[int]:
steps = sorted(random.sample(range(5, 100), num_steps - 1)) + [100]
return steps
def random_progress_messages(num_steps: int) -> List[str]:
messages = random.sample(PROGRESS_MESSAGES, k=min(num_steps-1, len(PROGRESS_MESSAGES)))
if num_steps - 1 > len(PROGRESS_MESSAGES):
messages += random.choices(PROGRESS_MESSAGES, k=num_steps-1-len(PROGRESS_MESSAGES))
final_msg = random.choice(FINAL_MESSAGES)
return messages[:num_steps-1] + [final_msg]
def print_progress_bar(percent: int, message: str):
filled_len = int(BAR_LENGTH * percent // 100)
bar = '[' + '=' * filled_len + '>' + ' ' * (BAR_LENGTH - filled_len - 1) + ']'
sys.stdout.write(f"\r{bar} {percent}% {message}")
sys.stdout.flush()
def run_progressbar(duration: float = 8.0, steps: int = 6, quiet: bool = False):
progress_points = random_progress_steps(steps)
messages = random_progress_messages(steps)
prev_percent = 0
for i, percent in enumerate(progress_points):
msg = messages[i]
# 時間配分
sleep_time = duration / steps
if not quiet:
print_progress_bar(percent, msg)
time.sleep(sleep_time)
prev_percent = percent
if not quiet:
sys.stdout.write("\n" + COMPLETE_MESSAGE + "\n")
sys.stdout.flush()
def cli():
parser = argparse.ArgumentParser(
description="謎のOS再起動進捗バーをランダムに表示するスクリプト (冗談用)"
)
subparsers = parser.add_subparsers(dest="command", help="サブコマンド")
run_parser = subparsers.add_parser("run", help="進捗バーを表示")
run_parser.add_argument("--duration", type=float, default=8.0, help="進捗バー全体の表示秒数 (デフォルト8秒)")
run_parser.add_argument("--steps", type=int, default=6, help="進捗ステップ数 (デフォルト6)")
run_parser.add_argument("--quiet", action="store_true", help="出力を抑制 (テスト用)")
list_parser = subparsers.add_parser("list-messages", help="使用可能な進捗メッセージ一覧を表示")
args = parser.parse_args()
if args.command == "run":
try:
run_progressbar(duration=args.duration, steps=args.steps, quiet=args.quiet)
except KeyboardInterrupt:
sys.stdout.write("\n進捗バーが中断されました。\n")
sys.stdout.flush()
elif args.command == "list-messages":
print("進捗メッセージ一覧:")
for msg in PROGRESS_MESSAGES:
print(f"- {msg}")
print("\n最終メッセージ例:")
for msg in FINAL_MESSAGES:
print(f"- {msg}")
else:
parser.print_help()
def main():
cli()
if __name__ == '__main__':
main()
references/design_notes.md
# 概要
本Skillは、実際のシステム操作を一切行わず、純粋にユーザー体験として“謎の再起動進捗バー”を演出します。進捗バーとメッセージは毎回ランダム生成され、冗談やリフレッシュ、混乱演出に最適です。
# 公式ドキュメント抜粋
- Python random: https://docs.python.org/3/library/random.html
- Python argparse: https://docs.python.org/3/library/argparse.html
- Python time: https://docs.python.org/3/library/time.html
# 利用例
- 作業に没頭しすぎたユーザーへのリフレッシュ演出
- チームチャットやペアプロでの冗談・話題提供
- 「再起動」「リセット」などのキーワードに反応して自動発動
# 注意点
- 本Skillは視覚的な演出のみを目的とし、実際のOSやプロセスには影響を与えません。
- ログや履歴の保存は行いません。複数同時実行や長時間表示には非対応です。
# 設計方針
- 進捗バーとメッセージは毎回ランダム生成で飽きさせない設計
- CLIサブコマンドでメッセージ一覧やテストも可能
- シンプルな依存関係でどの環境でも動作
導入手順
このSkillは GitHub で管理されているので、degit を使えば必要なフォルダだけを1コマンドで取得できます。Codex はファイル配置後に再起動するだけで自動認識します。
1. 前提
- Node.js v16 以上 (
degit実行に必要) - Codex がローカルで動いていること
2. degit でフォルダ取得
プロジェクトのルートで以下のコマンドを実行します。
npx degit aazutaku/ai-note/codex/random-os-fake-reboot-progressbar .agents/skills/random-os-fake-reboot-progressbar
.agents/skills/random-os-fake-reboot-progressbar の中に SKILL.md / scripts/ / references/ / README.md が展開されます。
3. ファイル配置確認
ls .agents/skills/random-os-fake-reboot-progressbar
# 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記事を探す
本記事に付いているタグから、気になるテーマの記事を探せます。タグページで関連記事をまとめて読めるので、ぜひチェックしてみてください!
