Codexで謎の進捗バー演出を活用して作業の緊張感を和らげる方法

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

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作業でも、カオスな進捗バー演出で重要な情報の“薄まり”に気づくきっかけになる
QUICK INSTALL
このSkillをすぐ試す

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記事を探す

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

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

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