Codex ユーザーが日常でぶつかる悩み
AIコーディングワークフローの中で、Codexを活用していると「作業の合間にちょっと息抜きしたい」「気分転換になる何か面白い演出が欲しい」と感じる瞬間は少なくありません。特に長時間のsessionや複雑なmonorepoを扱っていると、画面の緊張感が高まりっぱなしで、ふとした拍子に集中力が切れてしまうことも。「何か突拍子もないことが起きて、空気を和らげてほしい」と思った経験がある方も多いはずです。
- Codex が context を見失って違う場所のコードを参照する
- monorepo で package を跨いだ瞬間、Codex が repo 構造を忘れる
- session を再開すると、前回までの context や path 指定をまるごと再説明しないといけない
- 長時間 workflow で long context が膨らみすぎて、important な情報が薄まる (stale context)
- 「ここはこういう構造のリポジトリ」というあらすじを毎回チャットの冒頭で書く羽目になる
こうした実務的な悩みに加えて、「作業中に突然謎の進捗バーが現れたら」という遊び心を取り入れたいニーズも、意外と根強く存在します。通知や演出を通じて、堅苦しいAI coding workflowに一瞬の“ゆるさ”や話題作りをもたらしたい、そんな要望に応えるSkillです。
この Skill が一言でいうと何を解決するか
一言サマリ: このスキルは、Codexの作業画面に突如「謎のOS進捗バー祭り」を発生させ、緊張感をほぐす演出Skill。
もう少し具体化すると、このSkillを入れることで以下のような状態になる:
- AI coding workflowの合間に、完全に意味不明な進捗バーが複数同時に現れ、作業空間に遊び心が生まれる
- 進捗バーのテーマや内容が毎回ランダムで、同僚との会話やonboarding時のアイスブレイクにも使える
- 通知・演出がターミナルやエディタの端に現れるため、repoやdirectoryのcontextを見失いがちなタイミングで新鮮な気分転換になる
- sessionの再開やmonorepoのpackage跨ぎなど、Codex特有の“説明疲れ”を一瞬だけリセットできる
- 長時間のlong context作業でも、カオスな進捗バー演出で重要な情報の“薄まり”に気づくきっかけになる
GitHub から degit でコマンド1行、Codex の Skill ディレクトリに展開できます。Node.js があれば即時に動きます。
npx degit aazutaku/ai-note/codex/random-os-mysterious-progressbar-festival .agents/skills/random-os-mysterious-progressbar-festival実行したらこうなる (3つの利用シーン)
使う側がイメージしやすいよう、擬似 terminal で出力例を3パターン示します。
シーン1: session 開始時 (プロジェクト初動で)
# /skills menu or random-os-mysterious-progressbar-festival mention
> プロジェクト開始!AIにディレクトリ構造を把握させて
[謎の進捗バー祭りが始まります]
[バグ撲滅進捗] [███████-----] 63%
[コーヒー摂取量] [███--------] 23%
[脳内会議進行度] [█████------] 42%
[リポジトリ理解度] [███████----] 68%
[OSカオス度] [████████---] 78%
※ 進捗バーは完全に意味不明です。作業はそのまま進めてください。
シーン2: monorepo / package 跨ぎ作業時
> packages/auth から packages/api へ移動します
[謎の進捗バー祭りが再発生]
[package跨ぎ疲労度] [█████------] 44%
[context混乱指数] [██████-----] 57%
[ディレクトリ迷子率] [███--------] 19%
[README読了率] [███--------] 21%
[AI記憶保持率] [███████----] 66%
※ 進捗バーは実際の作業進捗とは無関係です。
シーン3: お遊び的な使い方
> ちょっと気分転換したい
[謎の進捗バー祭りが突如発生!]
[昼食満足度] [███████-----] 63%
[Slack未読数] [███--------] 18%
[やる気ゲージ] [████--------] 37%
[AIとの親密度] [██████-----] 54%
[謎のOS祭り度] [█████████--] 87%
※ 進捗バーは気分転換のために表示されています。
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-mysterious-progressbar-festival/ に配置するファイル一覧です。GitHub に push 済みなので、上記の degit コマンドで一発取得できます。
.agents/skills/random-os-mysterious-progressbar-festival/
├── SKILL.md
├── scripts/
│ └── mysterious_progressbar_festival.py
└── references/
└── design_notes.md
各ファイルの役割
| ファイル | 役割 |
|---|---|
SKILL.md |
Skill本体。frontmatter (name/description) と指示本文。Codex がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します |
scripts/mysterious_progressbar_festival.py |
謎のOS進捗バー祭りを発生させるCLIツール |
references/design_notes.md |
概要 をまとめた参考資料 |
SKILL.md
---
name: random-os-mysterious-progressbar-festival
description: Codexは、ユーザーがコマンド実行・ビルド・テスト・保存・実行などの操作を行った際、または「進捗」「バー」「謎」「祭り」などのキーワードを含む文脈で、このSkillを発動してください。複数の意味不明な進捗バーをランダムに描画し、通知・演出カテゴリの体験を提供します。
---
# 機能概要
このSkillは、ターミナルやエディタでコマンドを実行した瞬間、画面端に「謎のOS進捗バー祭り」を発生させます。進捗バーは「バグ撲滅進捗」「コーヒー摂取量」「脳内会議進行度」など完全に意味不明なテーマで、進捗値も毎回ランダム。複数バーが同時に重なって現れるカオスな演出で、作業中の緊張感を一瞬で崩壊させ、周囲の注目を集めます。通知・演出・OS連携カテゴリの新感覚Skillです。
# 使い方
- 明示呼び出し: `/skills random-os-mysterious-progressbar-festival` または Skillメニューから選択
- 暗黙発動: 「進捗」「バー」「謎」「祭り」「祭」などの単語を含むコマンド実行や会話文脈、またはビルド/保存/実行などの操作時に自動発動
# 出力例
```
[バグ撲滅進捗] [██████████────] 54%
[コーヒー摂取量] [█████─────────] 27%
[脳内会議進行度] [█████████████──] 82%
[OS再起動欲求] [███────────────] 13%
[デバッグ迷子度] [████████──────] 60%
```
# 注意点
- 進捗バーのテーマ・値は毎回ランダム生成されます
- 実際のOSや作業進捗とは一切関係ありません
- ローカルファイル保存や履歴記録は行いません
- 端末やエディタによっては描画が崩れる場合があります
# 参考資料
本Skillの詳細設計・実装例は `references/design_notes.md` を参照してください。Python標準ライブラリのみで動作し、外部依存はありません。進捗バー描画にはANSIエスケープシーケンスを利用しています。
scripts/mysterious_progressbar_festival.py
import sys
import argparse
import random
import time
import shutil
from typing import List, Tuple
# テーマ候補一覧
PROGRESSBAR_THEMES = [
"バグ撲滅進捗",
"コーヒー摂取量",
"脳内会議進行度",
"OS再起動欲求",
"デバッグ迷子度",
"タスク忘却度",
"やる気残量",
"眠気進行度",
"ネット依存度",
"仕様理解度",
"リファクタ欲求",
"進捗報告恐怖",
"脳内BGM音量",
"キーボード摩耗度",
"Slack未読数増加率"
]
BAR_LENGTH = 20
ANSI_RESET = "\033[0m"
ANSI_BOLD = "\033[1m"
ANSI_COLORS = [
"\033[92m", # Green
"\033[94m", # Blue
"\033[93m", # Yellow
"\033[91m", # Red
"\033[95m", # Magenta
"\033[96m", # Cyan
"\033[90m", # Grey
]
def random_progressbar_theme(exclude: List[str] = []) -> str:
candidates = [t for t in PROGRESSBAR_THEMES if t not in exclude]
return random.choice(candidates)
def random_progress_value() -> int:
return random.randint(5, 99)
def render_progressbar(theme: str, value: int, color: str = None) -> str:
filled_len = int(BAR_LENGTH * value / 100)
empty_len = BAR_LENGTH - filled_len
bar = "█" * filled_len + "─" * empty_len
color_code = color if color else ""
return f"[{theme:<10}] {color_code}[{bar}]{ANSI_RESET} {value:3d}%"
def generate_progressbars(n: int = 3) -> List[Tuple[str, int, str]]:
themes = []
bars = []
colors = random.sample(ANSI_COLORS, k=min(n, len(ANSI_COLORS)))
for i in range(n):
theme = random_progressbar_theme(exclude=themes)
value = random_progress_value()
color = colors[i % len(colors)]
themes.append(theme)
bars.append((theme, value, color))
return bars
def print_progressbars(bars: List[Tuple[str, int, str]], clear: bool = False):
if clear:
sys.stdout.write("\033c") # Clear screen
for theme, value, color in bars:
print(render_progressbar(theme, value, color))
# CLI サブコマンド
def cmd_festival(args):
min_bars = args.min_bars or 3
max_bars = args.max_bars or 6
bar_count = random.randint(min_bars, max_bars)
bars = generate_progressbars(bar_count)
print_progressbars(bars)
def cmd_animate(args):
min_bars = args.min_bars or 3
max_bars = args.max_bars or 6
bar_count = random.randint(min_bars, max_bars)
bars = generate_progressbars(bar_count)
steps = args.steps or 10
delay = args.delay or 0.4
for step in range(steps):
sys.stdout.write("\033[H\033[J") # Clear screen
animated_bars = []
for theme, _, color in bars:
# 進捗値をランダムに上下させる
value = random.randint(5, 99)
animated_bars.append((theme, value, color))
print_progressbars(animated_bars)
time.sleep(delay)
def cmd_list_themes(args):
print("利用可能な進捗バーのテーマ:")
for t in PROGRESSBAR_THEMES:
print(f"- {t}")
def main():
parser = argparse.ArgumentParser(description="謎のOS進捗バー祭りを発生させるCLIツール")
subparsers = parser.add_subparsers(dest="command")
parser_festival = subparsers.add_parser("festival", help="ランダムな進捗バー群を一度だけ表示")
parser_festival.add_argument("--min-bars", type=int, default=3, help="表示するバーの最小数")
parser_festival.add_argument("--max-bars", type=int, default=6, help="表示するバーの最大数")
parser_festival.set_defaults(func=cmd_festival)
parser_animate = subparsers.add_parser("animate", help="進捗バーをアニメーション表示")
parser_animate.add_argument("--min-bars", type=int, default=3, help="表示するバーの最小数")
parser_animate.add_argument("--max-bars", type=int, default=6, help="表示するバーの最大数")
parser_animate.add_argument("--steps", type=int, default=10, help="アニメーションのステップ数")
parser_animate.add_argument("--delay", type=float, default=0.4, help="ステップ間の遅延(秒)")
parser_animate.set_defaults(func=cmd_animate)
parser_list = subparsers.add_parser("list-themes", help="利用可能なテーマ一覧を表示")
parser_list.set_defaults(func=cmd_list_themes)
args = parser.parse_args()
if hasattr(args, 'func'):
args.func(args)
else:
parser.print_help()
if __name__ == "__main__":
main()
references/design_notes.md
# 概要
このSkillは、ユーザーのコマンド実行や特定キーワード検知時に、複数の意味不明な進捗バーをランダム生成・描画することで、作業空間にカオスな演出を加えます。進捗テーマ・値は毎回ランダムで、実際の作業内容やOS進捗とは無関係です。
# 公式ドキュメント抜粋
- Python 標準ライブラリ (argparse, random, time, sys) のみ使用
- ANSIエスケープシーケンスでカラー進捗バーを描画
- CLIサブコマンド: festival, animate, list-themes
# 利用例
- `/skills random-os-mysterious-progressbar-festival` で即座に進捗バー群を表示
- `python mysterious_progressbar_festival.py animate` で10ステップのアニメーション
# 注意点
- 実際の進捗やOS状態とは一切連動しません
- ターミナルの種類によっては色や描画が崩れる場合があります
- ログや履歴の保存機能はありません
# 設計方針
- 完全なランダム性とカオスな演出を重視
- 外部依存なし、10-30分で導入可能
- 拡張: テーマ追加やバー数制御も容易
導入手順
このSkillは GitHub で管理されているので、degit を使えば必要なフォルダだけを1コマンドで取得できます。Codex はファイル配置後に再起動するだけで自動認識します。
1. 前提
- Node.js v16 以上 (
degit実行に必要) - Codex がローカルで動いていること
2. degit でフォルダ取得
プロジェクトのルートで以下のコマンドを実行します。
npx degit aazutaku/ai-note/codex/random-os-mysterious-progressbar-festival .agents/skills/random-os-mysterious-progressbar-festival
.agents/skills/random-os-mysterious-progressbar-festival の中に SKILL.md / scripts/ / references/ / README.md が展開されます。
3. ファイル配置確認
ls .agents/skills/random-os-mysterious-progressbar-festival
# 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 との連携設計はどうあるべきか?
- 複数の進捗バーが同時に現れるか、テーマと進捗値が毎回ランダムか?
- 通知や描画が10-30分で簡単に実装できるか?
実際に Codex で試した検証ログは Codexで謎の進捗バー祭りを体験してみた!同時表示とランダム変化を楽しむ にまとめる予定 (公開準備中の場合あり)。
あわせて Codex 公式ドキュメント と、本シリーズ「Codexを使いこなすSkillアイデア」の他記事も参照のこと。
関連タグで他のSkill記事を探す
本記事に付いているタグから、気になるテーマの記事を探せます。タグページで関連記事をまとめて読めるので、ぜひチェックしてみてください!
