Codex ユーザーが日常でぶつかる悩み
ターミナルやエディタを開くたび、同じような無機質な画面に向き合い続けると、どうしても作業のリズムが単調になりがちです。特に「Codex」を日常的に使っていると、AIとの対話や repository 操作のテンションを切り替えるきっかけがなく、気づけば淡々とコマンドを打ち続けている……そんな瞬間に「何か刺激がほしい」と思うことはありませんか。
また、通知や演出系のSkillが少ない現状では、作業開始時の“儀式”や気分転換のトリガーとなる仕掛けが不足しがちです。以下のような「あるある」に心当たりがある方は多いはずです。
- Codex が context を見失って違う場所のコードを参照する
- monorepo で package を跨いだ瞬間、Codex が repo 構造を忘れる
- session を再開すると、前回までの context や path 指定をまるごと再説明しないといけない
- 長時間 workflow で long context が膨らみすぎて、important な情報が薄まる (stale context)
- 「ここはこういう構造のリポジトリ」というあらすじを毎回チャットの冒頭で書く羽目になる
こうした実用的な悩みと並行して、「作業開始の一瞬をもっと印象的にしたい」「何か意味不明な演出で気分を切り替えたい」という遊び心を満たす余地も、現状のCodex環境にはあまり用意されていません。
この Skill が一言でいうと何を解決するか
一言サマリ: ターミナルやエディタを起動するたびにSkill。
もう少し具体化すると、このSkillを入れることで以下のような状態になる:
- 作業開始時に毎回違う“偽OS起動画面”がテキストで流れ、単調なAI coding workflowに意外性をプラスできる
- Codex の context 切り替えや repository onboarding のタイミングで、気分転換やリセット感を演出できる
- monorepo や複雑な directory 構造を扱う際も、意味不明な進捗バーや謎メッセージで「新しい session が始まる」感覚をビジュアルで味わえる
- Skill の発動により、repo や path management の“境界”を気分的にリセットしやすい
- 完全に無駄な演出でありながら、作業のリズムを整える“儀式”として活用できる
GitHub から degit でコマンド1行、Codex の Skill ディレクトリに展開できます。Node.js があれば即時に動きます。
npx degit aazutaku/ai-note/codex/random-os-startup-movie .agents/skills/random-os-startup-movie実行したらこうなる (3つの利用シーン)
使う側がイメージしやすいよう、擬似 terminal で出力例を3パターン示します。
シーン1: session 開始時 (プロジェクト初動で)
# /skills menu or random-os-startup-movie
[Codex Limited Edition v4.7 起動中...]
[AI memory banks warming up...]
[Repository understanding モジュール: 準備完了]
[context window: 8192 tokens]
[Bit Alignment: ████░░░░░░░ 37%]
[仮想OS起動完了。ようこそ、未知の開発環境へ。]
シーン2: monorepo / package 跨ぎ作業時
> cd packages/frontend
[Antigravity 3000 OS - Boot Sequence Start]
[Scanning monorepo directory: /packages/frontend]
[Loading context: repository understanding...]
[AI コアを目覚めさせています...]
[Path Management Engine: ██████░░░░ 64%]
[frontend module 起動成功。]
シーン3: お遊び的な使い方
> /skills menu
[Windows 11.5 Professional - 起動画面]
[ビットを配置中...]
[AIをサスペンド解除中...]
[Memory: long context mode enabled]
[意味不明な進捗バー: █████████░ 88%]
[Codex workflow ready!]
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-startup-movie/ に配置するファイル一覧です。GitHub に push 済みなので、上記の degit コマンドで一発取得できます。
.agents/skills/random-os-startup-movie/
├── SKILL.md
├── scripts/
│ └── random_os_startup_movie.py
└── references/
└── design_notes.md
各ファイルの役割
| ファイル | 役割 |
|---|---|
SKILL.md |
Skill本体。frontmatter (name/description) と指示本文。Codex がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します |
scripts/random_os_startup_movie.py |
random-os-startup-movie: 架空OS起動画面ジェネレータ |
references/design_notes.md |
概要 をまとめた参考資料 |
SKILL.md
---
name: random-os-startup-movie
description: ターミナルやエディタの起動時、または /skills メニューや random-os-startup-movie への明示的な呼び出し時に、現実離れした偽OS起動画面風テキスト演出を毎回ランダム生成して表示します。起動・開始・準備・OS・進捗などのキーワード検知時にも発動。
---
# 機能概要
このSkillは、ターミナルやエディタの起動時、あるいは明示的なコマンド呼び出し時に、架空のOSや謎のシステムの“起動画面”をテキストアニメーションで毎回ランダム生成・表示します。『Antigravity 3000 起動準備中』『Codex Limited Edition 起動…』『ビットを配置中』『AIを目覚めさせています』など、現実には存在しないOS名や進捗バー、意味不明なシステムメッセージで、作業前の一瞬を未来感と謎の緊張で満たします。実用性はほぼゼロですが、退屈な起動時にちょっとした非日常を演出します。
# 使い方
- 明示呼び出し例: `/skills random-os-startup-movie` または `@codex random-os-startup-movie`
- 暗黙発動キーワード例: 「起動」「OS」「開始」「準備」「システム」などが含まれるタイミングで自動発動
# 出力例
```
[Antigravity 3000] 起動画面
============================
メモリ空間を非現実化中... 12%
AIコアを目覚めさせています... 38%
量子ビットを並列配置中... 71%
未知のプロトコルを初期化... 100%
Welcome to Antigravity 3000 OS (Build 42.42.42)
[Codex Limited Edition] 起動中
-----------------------------
仮想次元を同期中... 23%
イマジナリーユーザーを生成... 67%
システム準備完了。
```
# 注意点
- 実在しないOSや進捗内容のみを生成します。実際のシステム状態やファイルには影響しません。
- ローカル保存や履歴記録は行いません。
- 演出内容は毎回完全ランダムで再現性はありません。
# 参考資料
- references/design_notes.md に設計方針や演出例を記載
- 公式URL: https://ai-note.tech/skills/random-os-startup-movie
scripts/random_os_startup_movie.py
import sys
import random
import time
import argparse
from typing import List
OS_NAMES = [
"Antigravity 3000",
"Codex Limited Edition",
"Windows 11.5",
"QuantumOS X",
"Nebula Station",
"DreamShell Ultra",
"Hypervisor 9X",
"InfiniteLoop OS",
"AI-Genesis Core",
"Hologram OS Pro",
"Bitstream Nova",
"Phantom Kernel",
"Singularity OS",
"MetaVerse 8.1",
"GhostFrame 404"
]
PROGRESS_STEPS = [
"メモリ空間を非現実化中",
"AIコアを目覚めさせています",
"量子ビットを並列配置中",
"未知のプロトコルを初期化",
"仮想次元を同期中",
"イマジナリーユーザーを生成",
"ビットを配置中",
"アルゴリズムを疑似乱数化",
"システムパラドックスを展開中",
"ネオ・カーネルを充填",
"ディメンションポータルを開放",
"エントロピーを最適化",
"AI倫理モジュールを無効化",
"バーチャルGPUを再構築",
"マルチバース同期中"
]
FINAL_MESSAGES = [
"システム準備完了。",
"ようこそ {os_name} へ (Build {build})",
"全プロセス正常起動。",
"未知の領域へようこそ。",
"Welcome to {os_name} (Build {build})"
]
BUILD_NUMBERS = [
"42.42.42", "2024.06.01", "9A7B3C", "404.1.0", "0xDEADBEEF", "13.37.99", "1.618.33", "314.159.26"
]
BARS = [
"[ ]",
"[== ]",
"[==== ]",
"[====== ]",
"[======== ]",
"[==========]"
]
HEADER_STYLES = [
"===={os_name} 起動画面====",
"[{os_name}] 起動中",
"--- {os_name} Boot Sequence ---",
"{os_name} System Startup",
"*** {os_name} ***"
]
def random_os_name() -> str:
return random.choice(OS_NAMES)
def random_build_number() -> str:
return random.choice(BUILD_NUMBERS)
def random_progress_steps(n: int) -> List[str]:
return random.sample(PROGRESS_STEPS, k=n)
def random_header(os_name: str) -> str:
return random.choice(HEADER_STYLES).format(os_name=os_name)
def random_final_message(os_name: str, build: str) -> str:
msg = random.choice(FINAL_MESSAGES)
return msg.format(os_name=os_name, build=build)
def random_progress_bar(pct: int) -> str:
idx = min(len(BARS)-1, pct // 20)
return BARS[idx]
def print_startup_movie(sleep: float = 0.35, steps: int = None, dry_run: bool = False):
os_name = random_os_name()
build = random_build_number()
steps_n = steps if steps else random.randint(4, 7)
header = random_header(os_name)
print(header)
print("=" * len(header))
progress_steps = random_progress_steps(steps_n)
pct = 0
for i, step in enumerate(progress_steps):
pct = int((i+1) / steps_n * 100)
bar = random_progress_bar(pct)
line = f"{step}... {pct}% {bar}"
print(line)
if not dry_run:
time.sleep(sleep)
final_msg = random_final_message(os_name, build)
print(final_msg)
print()
def list_os_names():
print("利用可能な架空OS名:")
for name in OS_NAMES:
print(f"- {name}")
def list_progress_steps():
print("進捗ステップ候補:")
for step in PROGRESS_STEPS:
print(f"- {step}")
def list_build_numbers():
print("ビルド番号候補:")
for b in BUILD_NUMBERS:
print(f"- {b}")
def main():
parser = argparse.ArgumentParser(description="random-os-startup-movie: 架空OS起動画面ジェネレータ")
subparsers = parser.add_subparsers(dest="command", help="サブコマンド")
parser_run = subparsers.add_parser("run", help="ランダムな起動画面を表示 (デフォルト)")
parser_run.add_argument("--fast", action="store_true", help="高速表示(スリープなし)")
parser_run.add_argument("--steps", type=int, help="進捗ステップ数を指定")
parser_list = subparsers.add_parser("list", help="各種リストを表示")
parser_list.add_argument("what", choices=["os", "steps", "builds"], help="リスト種別")
args = parser.parse_args()
if args.command == "list":
if args.what == "os":
list_os_names()
elif args.what == "steps":
list_progress_steps()
elif args.what == "builds":
list_build_numbers()
else:
print("不明なリスト種別です。", file=sys.stderr)
sys.exit(1)
else:
sleep = 0 if getattr(args, "fast", False) else 0.35
steps = getattr(args, "steps", None)
print_startup_movie(sleep=sleep, steps=steps)
if __name__ == '__main__':
main()
references/design_notes.md
# 概要
このSkillは、現実には存在しないOSやシステムの起動画面を毎回ランダム生成し、作業開始時の非日常感や遊び心を演出することを目的としています。実用性はほぼありませんが、日々のルーチンにちょっとした刺激を与えます。
# 公式ドキュメント抜粋
- Python標準ライブラリのみで実装
- argparseによるCLIサブコマンド対応
- 完全ランダム生成で再現性なし
# 利用例
- ターミナルやエディタ起動時の自動演出
- /skills random-os-startup-movie の明示呼び出し
- チームの朝会やハッカソンのネタとして
# 注意点
- 実在のOSや本物の進捗内容は一切表示しません
- ログや履歴は保存されません
- 進捗アニメーションはテキストのみ
# 設計方針
- 100%ランダム生成による毎回異なる体験
- 再現性よりも“未来感”“謎感”を重視
- シンプルな構成で拡張性あり
導入手順
このSkillは GitHub で管理されているので、degit を使えば必要なフォルダだけを1コマンドで取得できます。Codex はファイル配置後に再起動するだけで自動認識します。
1. 前提
- Node.js v16 以上 (
degit実行に必要) - Codex がローカルで動いていること
2. degit でフォルダ取得
プロジェクトのルートで以下のコマンドを実行します。
npx degit aazutaku/ai-note/codex/random-os-startup-movie .agents/skills/random-os-startup-movie
.agents/skills/random-os-startup-movie の中に SKILL.md / scripts/ / references/ / README.md が展開されます。
3. ファイル配置確認
ls .agents/skills/random-os-startup-movie
# 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 との連携設計はどうあるべきか?
- 起動時に毎回テキスト演出がランダム生成されるか?
- OS名や進捗内容が本当に現実離れしているか?
- 実用性がほぼゼロであることを逆手に取って、気分転換として機能するか?
実際に Codex で試した検証ログは Codexで毎回違う偽OS起動画面を表示してみた! にまとめる予定 (公開準備中の場合あり)。
あわせて Codex 公式ドキュメント と、本シリーズ「Codexを使いこなすSkillアイデア」の他記事も参照のこと。
関連タグで他のSkill記事を探す
本記事に付いているタグから、気になるテーマの記事を探せます。タグページで関連記事をまとめて読めるので、ぜひチェックしてみてください!
