Codex ユーザーが日常でぶつかる悩み
Codex を日々使っていると、開発効率を上げるための工夫や集中力維持のための演出が欲しくなる瞬間が多々あります。特にモチベーションが下がりがちな長時間の作業や、単調なリポジトリの初期設定中など、「ちょっとした遊び心が欲しい」と感じる場面が意外と多いものです。
また、通知や演出系 Skill を活用しているユーザーほど、「味気ないターミナル画面に何かアクセントが欲しい」「毎回同じ起動メッセージだと気分が乗らない」といった些細な悩みを抱えているのではないでしょうか。以下のような困りごとが日常的に発生しています。
- 長時間の AI coding workflow で、作業開始時に気分転換やリフレッシュができず、集中力が途切れがち
- monorepo や大規模 repository での作業時、味気ないターミナル起動や session 再開が単調で、onboarding の雰囲気作りが難しい
- 毎回同じ context や directory 情報だけが表示され、開発の合間に遊び心や変化を感じられない
- session を再開したとき、path 管理や repository understanding 以外の新鮮な演出がなく、気持ちの切り替えがしづらい
- 通知・演出系 Skill の導入を検討しているが、実用性だけでなく“理不尽な楽しさ”も味わいたいと思っている
この Skill が一言でいうと何を解決するか
一言サマリ: ターミナルを開くたびにSkill。
もう少し具体化すると、このSkillを入れることで以下のような状態になる:
- 毎回ターミナルや Codex の session を開くたびに、現実には存在しない“偽OS起動メッセージ”がランダムで表示され、作業開始がちょっと楽しくなる
- repo や directory の構造説明に飽きたとき、遊び心ある演出で onboarding や routine 作業に変化を与えられる
- AI coding workflow の合間に、context や memory とは無関係な“異世界感”を注入できる
- Skill の導入・解除も簡単で、実作業やファイルには一切影響せず安全に使える
- Codex の context や path management には干渉せず、気分転換だけをピンポイントで提供
GitHub から degit でコマンド1行、Codex の Skill ディレクトリに展開できます。Node.js があれば即時に動きます。
npx degit aazutaku/ai-note/codex/os-greeting-changer .agents/skills/os-greeting-changer実行したらこうなる (3つの利用シーン)
使う側がイメージしやすいよう、擬似 terminal で出力例を3パターン示す。Skill が返す出力は推測だが、現実的なフォーマット・現実的な長さで書く。
シーン1: session 開始時 (プロジェクト初動で)
# /skills menu or os-greeting-changer mention
> プロジェクトの作業を開始
[OS Boot Sequence]
Windows 99 Ultimate Edition 起動中...
新しいディレクトリ: src/components/ をスキャンしています...
仮想メモリを拡張しています... Ready.
ようこそ、開発者様。
シーン2: monorepo / package 跨ぎ作業時
> packages/api/ に移動
[System Startup]
Macintosh SE/30 が時空を超えて復活しました。
ディレクトリ: packages/api/routes/ を初期化中...
API モジュールのロードを開始します。
しばらくお待ちください...
シーン3: お遊び的な使い方
> 今日もがんばるぞ
[Booting...]
Linux 12.04 "Coffee Break" Edition がコーヒータイム中です。
ファイルシステムを点検しています...
/dev/random からエンタメ要素を注入中...
Ready for a new adventure!
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/os-greeting-changer/ に配置するファイル一覧です。GitHub に push 済みなので、上記の degit コマンドで一発取得できます。
.agents/skills/os-greeting-changer/
├── SKILL.md
├── scripts/
│ └── os_greeting_changer.py
└── references/
└── design_notes.md
各ファイルの役割
| ファイル | 役割 |
|---|---|
SKILL.md |
Skill本体。frontmatter (name/description) と指示本文。Codex がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します |
scripts/os_greeting_changer.py |
ターミナル起動時に偽OSメッセージをランダム表示する遊び心Skill |
references/design_notes.md |
概要 をまとめた参考資料 |
SKILL.md
---
name: os-greeting-changer
description: ターミナルやコンソール起動時、または /skills menu などの明示呼び出し時に発動。現実には存在しないOSや珍しい起動演出をランダムに表示し、実作業やファイルには一切影響しない安全なSkillです。
---
# 機能概要
os-greeting-changerは、ターミナルやコンソールを開くたびに現実には存在しない“偽OS起動メッセージ”をランダム表示するSkillです。Windows 99やMacintosh SE/30の時空を超えた復活、Linuxがコーヒーブレイク中など、実際には絶対に見られない珍OSや謎の起動演出で、毎日の作業開始にちょっとした異世界感を注入します。実用性はありませんが、開発の合間にクスッと笑える理不尽な遊び心を提供します。
# 使い方
- 明示呼び出し: `/skills menu` でSkill一覧から選択、または `$os-greeting-changer` で直接呼び出し
- 暗黙発動: ターミナル/コンソール起動時やセッション開始時に自動で発動(triggerType: always)
# 出力例
```
[Windows 99 Professional Edition 起動中...]
[Macintosh SE/30が時空を超えて復活しました]
[Linux 12.04: コーヒータイム中、しばらくお待ち下さい]
[BeOS Hyper Edition: メモリ空間を再構築しています]
[NEC PC-9801 Universe 起動... 未来OSモード]
[Amiga Galaxy OS: フロッピーを宇宙からダウンロード中]
[Atari ST++: MIDIシーケンサーを自己進化中]
[Sun Solaris 11.99: 太陽フレア検出...再起動します]
```
# 注意点
- 本Skillは出力のみで、ファイルやシステムには一切影響を与えません
- ローカル保存や履歴機能はありません
- ジョークメッセージのみで実用性はありません
- 既存のOS環境や設定を変更することはありません
# 参考資料
- references/design_notes.md に設計方針や利用例を記載
- 公式ドキュメント: https://ai-note.tech/docs/skills/os-greeting-changer
scripts/os_greeting_changer.py
import argparse
import random
import sys
from datetime import datetime
FAKE_OS_MESSAGES = [
"[Windows 99 Professional Edition 起動中...]",
"[Macintosh SE/30が時空を超えて復活しました]",
"[Linux 12.04: コーヒータイム中、しばらくお待ち下さい]",
"[BeOS Hyper Edition: メモリ空間を再構築しています]",
"[NEC PC-9801 Universe 起動... 未来OSモード]",
"[Amiga Galaxy OS: フロッピーを宇宙からダウンロード中]",
"[Atari ST++: MIDIシーケンサーを自己進化中]",
"[Sun Solaris 11.99: 太陽フレア検出...再起動します]",
"[OS/3 Warp: ワープゲート初期化中]",
"[PalmOS Infinity: タッチペンを検出しました]",
"[MS-DOS 13.1: 仮想メモリが無限大です]",
"[Commodore 128 Ultra: BASICインタープリタをAI化中]",
"[Haiku OS: 五七五で起動します]",
"[Plan 9 from Bell Labs: プラネット9へログイン中]",
"[QNX Quantum Edition: カーネルが量子化されました]",
"[Solaris 42.0: 太陽系ネットワークに接続中]",
"[ReactOS 5.0: 互換性が宇宙レベルに拡張されました]",
"[TempleOS 3.1: 神託を受信中]",
"[IRIX 9.9: グラフィック次元を展開しています]",
"[NextStep 6.0: タイムマシン起動準備完了]"
]
HISTORY = []
def print_random_greeting():
message = random.choice(FAKE_OS_MESSAGES)
timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
HISTORY.append((timestamp, message))
print(message)
return message
def list_greetings():
print("=== os-greeting-changer: メッセージ一覧 ===")
for idx, msg in enumerate(FAKE_OS_MESSAGES, 1):
print(f"{idx}. {msg}")
def show_history():
if not HISTORY:
print("履歴はありません。直近のセッションでのみ有効です。")
return
print("=== os-greeting-changer: このセッションの履歴 ===")
for t, m in HISTORY:
print(f"{t}: {m}")
def summary():
print(f"本Skillには{len(FAKE_OS_MESSAGES)}種類の偽OS起動メッセージが登録されています。\n")
print("例:")
for msg in random.sample(FAKE_OS_MESSAGES, 3):
print(f"- {msg}")
print("\nファイルやシステムには一切影響を与えません。安全にご利用いただけます。")
def main():
parser = argparse.ArgumentParser(
description="ターミナル起動時に偽OSメッセージをランダム表示する遊び心Skill"
)
subparsers = parser.add_subparsers(dest="command")
parser_log = subparsers.add_parser("log", help="偽OSメッセージを1つランダム表示(デフォルト動作)")
parser_list = subparsers.add_parser("list", help="登録済みの全メッセージ一覧を表示")
parser_history = subparsers.add_parser("history", help="このセッションで表示した履歴を表示")
parser_summary = subparsers.add_parser("summary", help="Skillの概要とサンプルを表示")
args = parser.parse_args()
if args.command is None or args.command == "log":
print_random_greeting()
elif args.command == "list":
list_greetings()
elif args.command == "history":
show_history()
elif args.command == "summary":
summary()
else:
parser.print_help()
if __name__ == '__main__':
main()
references/design_notes.md
# 概要
os-greeting-changerは、ターミナル起動時や明示呼び出し時にだけ動作し、現実には存在しないOSの起動メッセージをランダム表示するSkillです。実用性よりも遊び心やリラックス効果を重視しています。
# 公式ドキュメント抜粋
本Skillは、ファイルやシステム設定に一切変更を加えず、出力のみを行う安全設計です。履歴はセッション内のみ保持し、永続保存は行いません。
# 利用例
- 毎朝ターミナルを開くたびに異世界OSのメッセージで気分転換
- チームのペアプロやリモート会議で話題作りに
- /skills menu から明示的に呼び出してジョークを楽しむ
# 注意点
本Skillは完全にジョーク用途です。実作業やファイル操作に影響を与えませんが、業務用途での誤解を避けるためにも注意喚起を行っています。
# 設計方針
- 実在しないOS名や演出を中心に、現実では絶対に見られない内容を厳選
- シンプルな構成で、どの環境でも安全に動作するよう配慮
- 公式: https://ai-note.tech/docs/skills/os-greeting-changer
導入手順
このSkillは GitHub で管理されているので、degit を使えば必要なフォルダだけを1コマンドで取得できます。Codex はファイル配置後に再起動するだけで自動認識します。
1. 前提
- Node.js v16 以上 (
degit実行に必要) - Codex がローカルで動いていること
2. degit でフォルダ取得
プロジェクトのルートで以下のコマンドを実行します。
npx degit aazutaku/ai-note/codex/os-greeting-changer .agents/skills/os-greeting-changer
.agents/skills/os-greeting-changer の中に SKILL.md / scripts/ / references/ / README.md が展開されます。
3. ファイル配置確認
ls .agents/skills/os-greeting-changer
# 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メッセージがランダム表示されるか?
- 現実には存在しないOSや起動演出が混ざっているか?
- 実作業やファイルに一切影響しない安全設計か?
実際に Codex で試した検証ログは Codexで偽OS起動メッセージを毎回変えて楽しんでみた にまとめる予定 (公開準備中の場合あり)。
あわせて Codex 公式ドキュメント と、本シリーズ「Codexを使いこなすSkillアイデア」の他記事も参照のこと。
関連タグで他のSkill記事を探す
本記事に付いているタグから、気になるテーマの記事を探せます。タグページで関連記事をまとめて読めるので、ぜひチェックしてみてください!
