Codexで謎のOS復元演出を使いこなす意外な活用ガイド

  • URLをコピーしました!
目次

Codex ユーザーが日常でぶつかる悩み

AIコーディングエージェントとしての Codex を使っていると、日々の開発フローの中で「ちょっとした気分転換」や「リズムの切り替え」が欲しくなる瞬間が意外と多いものです。特に長時間の session や複雑な monorepo での作業が続くと、集中力が切れてしまったり、同じ context の繰り返しで作業が単調になりがちです。そんな時、思わず「なんで今!?」とツッコミたくなるような演出が、逆に場の空気を変えてくれることもあります。

  • Codex が context を見失って違う場所のコードを参照する
  • monorepo で package を跨いだ瞬間、Codex が repo 構造を忘れる
  • session を再開すると、前回までの context や path 指定をまるごと再説明しないといけない
  • 長時間 workflow で long context が膨らみすぎて、important な情報が薄まる (stale context)
  • 「ここはこういう構造のリポジトリ」というあらすじを毎回チャットの冒頭で書く羽目になる

また、通知・演出・OS連携系の Skill をうまく活用できていないと、作業のリズムが単調になりがちで「何か面白いアクセントがあれば…」と感じる人も少なくありません。

この Skill が一言でいうと何を解決するか

一言サマリ: このスキルは、Codex の日常作業に「謎のOS復元ウィンドウ」という遊び心を突然差し込むSkill。

もう少し具体化すると、このSkillを入れることで以下のような状態になる:

  • 作業の合間や集中が切れた瞬間に、ランダムなタイミングで「OSシステム復元進捗ウィンドウ」が現れ、場の空気を一変できる
  • 進捗バーやテキストが毎回ランダムで、単調な workflow に予測不能なアクセントが加わる
  • 実害ゼロで「何も起きない」ので、context や repo 構造を壊さずに気分転換ができる
  • 通知・演出系 Skill の活用例として、onboarding や session 再開時のアイスブレイクにも使える
  • Codex の AI coding workflow に「遊び」を持ち込むことで、長時間作業のストレス軽減やチームの話題作りに貢献
QUICK INSTALL
このSkillをすぐ試す

GitHub から degit でコマンド1行、Codex の Skill ディレクトリに展開できます。Node.js があれば即時に動きます。

npx degit aazutaku/ai-note/codex/random-os-sudden-fake-system-restore .agents/skills/random-os-sudden-fake-system-restore

実行したらこうなる (3つの利用シーン)

使う側がイメージしやすいよう、擬似 terminal で出力例を3パターン示します。

シーン1: session 開始時 (プロジェクト初動で)


# /skills menu or random-os-sudden-fake-system-restore

[OS: システム復元]
--------------------------
進捗: 37%
謎の変更を元に戻しています...
[パス: /Users/you/projects/awesome-repo/]
--------------------------
ヒント: システムの気分調整中。お待ちください。

(進捗バーがランダムに増減)
進捗: 89%
進捗: 12%
進捗: 100%
[復元完了] 何も変わりませんでした。

シーン2: monorepo / package 跨ぎ作業時


> 移動: packages/api/ から packages/ui/ へ

[OS: システム復元]
--------------------------
進捗: 52%
OSの気分転換中です...
[パス: /Users/you/projects/monorepo/packages/ui/]
--------------------------
進捗: 13%
進捗: 76%
進捗: 100%
[復元完了] 何も起きませんでした。

シーン3: お遊び的な使い方


> ちょっと休憩したい

[OS: システム復元]
--------------------------
進捗: 5%
謎のファイル構造を再構築中...
[パス: /Users/you/projects/fun-project/]
--------------------------
進捗: 62%
進捗: 99%
進捗: 7%
進捗: 100%
[復元完了] 気分がリフレッシュされました(気のせい)。

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-sudden-fake-system-restore/ に配置するファイル一覧です。GitHub に push 済みなので、上記の degit コマンドで一発取得できます。

.agents/skills/random-os-sudden-fake-system-restore/
├── SKILL.md
├── scripts/
│   └── fake_system_restore.py
└── references/
    └── design_notes.md

各ファイルの役割

ファイル 役割
SKILL.md Skill本体。frontmatter (name/description) と指示本文。Codex がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します
scripts/fake_system_restore.py 謎のOSシステム復元進捗ウィンドウをフェイク表示するスクリプト
references/design_notes.md 概要 をまとめた参考資料

SKILL.md

---
name: random-os-sudden-fake-system-restore
description: このSkillは、作業中や長時間のセッション時、または「復元」「システム」「進捗」などのキーワードが会話やコマンドに現れた際に、突如“フェイクOS復元進捗ウィンドウ”を演出します。明示的な呼び出しやメニュー選択でも発動可能です。
---

# 機能概要
このSkillは、ユーザーが作業に集中している最中や、会話内で「復元」「システム」「進捗」などの単語が出現した際に、突如として“謎のOSシステム復元進捗ウィンドウ”を模した演出を表示します。進捗バーやステータスメッセージは毎回ランダム生成され、「謎の変更を元に戻しています」「OSの気分調整中」などのユーモラスなテキストとともに進行します。復元完了後も実際のシステムには何も影響を与えません。作業の緊張感や単調さを一瞬でカオスに変える、遊び心満載のスキルです。

# 使い方
- 明示呼び出し: `/skills menu` から「random-os-sudden-fake-system-restore」を選択、または `$random-os-sudden-fake-system-restore` とメンション
- 暗黙発動: 会話やコマンド内に「復元」「システム」「進捗」「リセット」などのキーワードが含まれている場合、自動的に進捗ウィンドウが表示されます

# 出力例
```
[OSシステム復元ツール]
-----------------------------
進捗: 37% | 謎の変更を元に戻しています...
進捗: 62% | OSの気分調整中...
進捗: 85% | 不明なファイルを復元中...
進捗: 100% | システム復元完了(何も起きませんでした)
-----------------------------
```

# 注意点
- このSkillは完全なフェイク演出であり、実際のシステムやファイルには一切変更を加えません。
- ローカル保存や履歴への記録は行われません。
- 一部の環境(ターミナル以外や特殊なUI)では表示が崩れる場合があります。
- 実際のシステム復元機能とは一切関係ありません。

# 参考資料
- [Python公式ドキュメント](https://docs.python.org/ja/3/library/random.html)
- [OS風UI演出サンプル](https://github.com/willmcgugan/rich)
- 詳細な設計方針や応用例は references/ 以下を参照してください。

scripts/fake_system_restore.py

import argparse
import random
import sys
import time
from typing import List

RESTORE_MESSAGES = [
    "謎の変更を元に戻しています...",
    "OSの気分調整中...",
    "不明なファイルを復元中...",
    "レジストリの気まぐれを修正中...",
    "システムの気分転換を実施中...",
    "意味不明なエラーを解決中...",
    "不可視ファイルを復元中...",
    "進捗バーの色を調整中...",
    "謎のプロセスを再起動中...",
    "仮想メモリのご機嫌を確認中...",
    "バックグラウンドで何かしています...",
    "システムのやる気を回復中..."
]

COMPLETE_MESSAGE = "システム復元完了(何も起きませんでした)"


def generate_progress_steps(min_steps=8, max_steps=20) -> List[int]:
    steps = random.randint(min_steps, max_steps)
    progress_points = sorted(random.sample(range(5, 100), steps - 1))
    progress_points.append(100)
    return progress_points


def pick_random_message() -> str:
    return random.choice(RESTORE_MESSAGES)


def print_restore_header():
    print("[OSシステム復元ツール]")
    print("-----------------------------")


def print_restore_footer():
    print("-----------------------------")


def simulate_restore(progress_delay=0.6, message_delay=0.3):
    print_restore_header()
    progress_steps = generate_progress_steps()
    last_progress = 0
    for progress in progress_steps:
        message = pick_random_message()
        bar = progress_bar(progress)
        sys.stdout.write(f"\r進捗: {progress:3d}% {bar} | {message}    ")
        sys.stdout.flush()
        time.sleep(random.uniform(progress_delay * 0.5, progress_delay * 1.2))
        sys.stdout.write("\n")
        time.sleep(random.uniform(message_delay * 0.5, message_delay * 1.5))
        last_progress = progress
    sys.stdout.write(f"進捗: 100% | {COMPLETE_MESSAGE}\n")
    print_restore_footer()


def progress_bar(progress: int, width: int = 24) -> str:
    filled = int(width * progress / 100)
    return "[" + "#" * filled + "-" * (width - filled) + "]"


def handle_log(args):
    print("[LOG] フェイク復元進捗を記録します (実際には何も保存されません)")
    simulate_restore()


def handle_list(args):
    print("[LIST] 過去のフェイク復元履歴 (履歴はありません)")
    print("(このSkillは履歴保存機能を持ちません)")


def handle_summary(args):
    print("[SUMMARY] フェイク復元進捗のサマリー")
    print("全てランダム生成・記録なし・本物の復元ではありません")


def main():
    parser = argparse.ArgumentParser(
        description="謎のOSシステム復元進捗ウィンドウをフェイク表示するスクリプト"
    )
    subparsers = parser.add_subparsers(dest="command", help="サブコマンド")

    parser_log = subparsers.add_parser("log", help="フェイク復元進捗を表示")
    parser_log.set_defaults(func=handle_log)

    parser_list = subparsers.add_parser("list", help="履歴一覧 (機能しません)")
    parser_list.set_defaults(func=handle_list)

    parser_summary = subparsers.add_parser("summary", help="サマリー表示")
    parser_summary.set_defaults(func=handle_summary)

    args = parser.parse_args()
    if hasattr(args, 'func'):
        args.func(args)
    else:
        # デフォルト動作: フェイク復元進捗を表示
        simulate_restore()

if __name__ == '__main__':
    main()

references/design_notes.md

# 概要
本Skillは、OSのシステム復元や進捗バーの“本物らしさ”と“フェイク感”を両立させた演出ツールです。ユーザーの作業中や特定キーワード検知時に、完全に無害な進捗ウィンドウを出現させ、場の空気を和ませたり、意図的に混乱を演出する用途で設計されています。

# 公式ドキュメント抜粋
- [Python random](https://docs.python.org/ja/3/library/random.html): 進捗やメッセージのランダム化に利用
- [argparse](https://docs.python.org/ja/3/library/argparse.html): CLIインターフェースの実装

# 利用例
- 長時間のコーディングや会議の合間に“謎の復元”を挟み、場を和ませる
- チームメンバーをちょっとだけ驚かせる
- システム管理者ごっこや演出用途

# 注意点
- 本Skillは実際のファイルやシステムには一切影響を与えません
- 履歴やログも残りません
- 本物の復元作業と誤認しないよう注意

# 設計方針
- 進捗率やメッセージは毎回完全ランダム
- CLIサブコマンド(log/list/summary)で柔軟な演出
- シンプルな依存関係でどこでも動作

導入手順

このSkillは GitHub で管理されているので、degit を使えば必要なフォルダだけを1コマンドで取得できます。Codex はファイル配置後に再起動するだけで自動認識します。

1. 前提

  • Node.js v16 以上 (degit 実行に必要)
  • Codex がローカルで動いていること

2. degit でフォルダ取得

プロジェクトのルートで以下のコマンドを実行します。

npx degit aazutaku/ai-note/codex/random-os-sudden-fake-system-restore .agents/skills/random-os-sudden-fake-system-restore

.agents/skills/random-os-sudden-fake-system-restore の中に SKILL.md / scripts/ / references/ / README.md が展開されます。

3. ファイル配置確認

ls .agents/skills/random-os-sudden-fake-system-restore
# 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記事を探す

本記事に付いているタグから、気になるテーマの記事を探せます。タグページで関連記事をまとめて読めるので、ぜひチェックしてみてください!

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次