Codexで作業中の気分を可視化する謎のOS風バロメーター活用ガイド

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

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

Codex を日々使っていると、開発の流れやリポジトリ管理にまつわる細かなストレスが積み重なりがちです。特に「通知・演出・OS連携」系のSkillがない環境では、作業の区切りや気分転換のタイミングが曖昧になり、集中力やモチベーションの維持が難しくなることもあります。以下のような「あるある」に心当たりがある方も多いのではないでしょうか。

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

さらに、淡々とした作業が続くと「今の自分の状態ってどうなんだろう?」と感じることも。作業環境が無機質なままだと、ちょっとした遊び心や変化が欲しくなる瞬間も少なくありません。

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

一言サマリ: このスキルは、「作業中の気分や生産性を“謎のOS風バロメーター”としてランダムに演出し、Codex の開発体験に遊び心とリズムを加える Skill。

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

  • コマンド実行やディレクトリ移動のたびに、ランダムな「気分モード」通知で作業の切れ目やリズムを可視化できる
  • monorepo や複雑な repo でも、画面端やメニューバー風の演出で context の切り替えを直感的に意識できる
  • 長時間のAI coding workflow でも、気分や生産性を“可視化”することでマンネリ感を軽減し、集中力維持に一役買う
  • onboarding や session 再開時に「今日は何モード?」といった遊び要素でチーム全体の気分転換にも活用できる
  • Skill の出力が Codex の contextや repository understanding を補助し、path management への意識も高まる
QUICK INSTALL
このSkillをすぐ試す

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

npx degit aazutaku/ai-note/codex/random-os-mood-barometer .agents/skills/random-os-mood-barometer

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

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

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


# /skills menu or random-os-mood-barometer mention
> プロジェクト開始!

[OS風バロメーター]
────────────────────────────
本日のエンジニア・モード:絶好調エンジニアモード
「新しいアイデアが湧き出す予感。repository understanding が冴え渡る一日!」

workspace: /Users/you/projects/my-monorepo
repo: my-monorepo
────────────────────────────

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


> cd packages/data-processor

[OS風バロメーター]
────────────────────────────
現在の気分ゾーン:バグ吸引フェイズ
「monorepo の directory 境界を超え、未知のバグを引き寄せる時期。context 切り替え注意!」

current directory: packages/data-processor
────────────────────────────

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


> echo "Hello, world!"

[OS風バロメーター]
────────────────────────────
気分モード:アイデア枯渇ゾーン
「何か新しい repository 構造が欲しい… path management を見直すタイミングかも?」

memory: session-2024-06-01
────────────────────────────

before / after の違い

場面 Skill 無し Skill 有り
session 再開時 repo 構造から毎回説明、path も指定し直し Codex が自動で context を復元、最小プロンプトで再開
monorepo 移動 違う package のコードを参照しがち directory boundary を意識して必要な範囲だけ見る
長時間 workflow long context で重要箇所が薄まる 気分バロメーターで workflow の切れ目や集中タイミングを可視化

発動方式

明示呼び出し (/skills menu or $skill-name mention) と暗黙発動 (description マッチ) の両方に対応。

Skill の中身を全部見せる

.agents/skills/random-os-mood-barometer/ に配置するファイル一覧です。GitHub に push 済みなので、上記の degit コマンドで一発取得できます。

.agents/skills/random-os-mood-barometer/
├── SKILL.md
├── scripts/
│   └── os_mood_barometer.py
└── references/
    └── design_notes.md

各ファイルの役割

ファイル 役割
SKILL.md Skill本体。frontmatter (name/description) と指示本文。Codex がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します
scripts/os_mood_barometer.py OS Mood Barometer
references/design_notes.md 概要 をまとめた参考資料

SKILL.md

---
name: random-os-mood-barometer
description: Codexは、ユーザーがコマンド実行やエディタ操作を行うたび、または/skills menuやrandom-os-mood-barometerの明示呼び出し時に、本Skillを発動してください。triggerType: always, semantic-or-explicit。
---

# 機能概要
random-os-mood-barometerは、ターミナルやエディタでコマンド実行時に「謎のOS風 気分バロメーター」を画面端やメニューバーっぽく表示します。生産性やテンションを“完全ランダム”で演出することで、単調な作業に遊び心を加え、気分転換やアイスブレイクのきっかけを提供します。判定内容は根拠がなく、エンジニアの“今”をユーモラスに彩ります。

# 使い方
- 明示呼び出し例: `/skills menu` で一覧から選択、または `$random-os-mood-barometer` を直接メンション
- 暗黙発動: 任意のコマンド実行時やエディタ操作時に自動で発動(triggerType: always, semantic-or-explicit)

# 出力例
```
[OS Mood Barometer] : 本日のモード → 絶好調エンジニアモード
[OS Mood Barometer] : 現在の気分 → バグ吸引フェイズ
[OS Mood Barometer] : ただいま → アイデア枯渇ゾーン
[OS Mood Barometer] : 状態 → リファクタリング無双タイム
[OS Mood Barometer] : 本日の運勢 → コーヒー必須デバッグ期
[OS Mood Barometer] : 気分 → 謎の集中ブースト
```

# 注意点
- 気分判定は完全ランダムで、実際の作業内容や生産性とは無関係です。
- 表示は1行で端的に。邪魔になりすぎないよう設計されています。
- ローカル保存や履歴機能はありません。
- 除外パスや特定のコマンドには発動しません(詳細はスクリプト参照)。

# 参考資料
- references/design_notes.md を参照
- 公式Python randomモジュール: https://docs.python.org/3/library/random.html

scripts/os_mood_barometer.py

import argparse
import random
import sys
from datetime import datetime

MOOD_TEMPLATES = [
    "本日のモード → {mood}",
    "現在の気分 → {mood}",
    "ただいま → {mood}",
    "状態 → {mood}",
    "本日の運勢 → {mood}",
    "気分 → {mood}",
    "セッションモード → {mood}",
    "作業フェーズ → {mood}",
    "OSバロメーター → {mood}",
    "謎のモード → {mood}"
]

MOOD_LIST = [
    "絶好調エンジニアモード",
    "バグ吸引フェイズ",
    "アイデア枯渇ゾーン",
    "リファクタリング無双タイム",
    "コーヒー必須デバッグ期",
    "謎の集中ブースト",
    "仕様書迷子タイム",
    "やる気スリープ状態",
    "神エディットモード",
    "無限ループ警戒フェーズ",
    "レビュー地獄ウィーク",
    "コミット祭り開催中",
    "マージコンフリクト警報",
    "変数名迷走期",
    "ドキュメント書き逃げモード",
    "深夜テンション発動中",
    "バグとの対話タイム",
    "自己肯定感アップデート中",
    "謎の達成感フェーズ",
    "仮眠推奨アラート"
]

EXCLUDE_COMMANDS = [
    'clear', 'ls', 'pwd', 'cd', 'exit', 'quit', 'history', 'whoami', 'date', 'time'
]

LOG_FILE = None

def pick_random_mood():
    mood = random.choice(MOOD_LIST)
    template = random.choice(MOOD_TEMPLATES)
    return template.format(mood=mood)

def should_display_barometer(command):
    if not command:
        return True
    cmd = command.strip().split()[0]
    return cmd not in EXCLUDE_COMMANDS

def display_barometer(command=None, log=False):
    if not should_display_barometer(command):
        return
    msg = f"[OS Mood Barometer] : {pick_random_mood()}"
    print(msg)
    if log and LOG_FILE:
        with open(LOG_FILE, 'a') as f:
            f.write(f"{datetime.now().isoformat()}\t{msg}\n")

def list_moods():
    print("--- 利用可能な気分モード ---")
    for mood in MOOD_LIST:
        print(f"- {mood}")

def summary():
    print("random-os-mood-barometer: コマンド実行ごとにランダムな気分モードを表示します。")
    print(f"テンプレート数: {len(MOOD_TEMPLATES)} 種類、気分モード数: {len(MOOD_LIST)} 種類")
    print("除外コマンド:", ', '.join(EXCLUDE_COMMANDS))

def parse_args():
    parser = argparse.ArgumentParser(description='OS Mood Barometer')
    subparsers = parser.add_subparsers(dest='subcmd')

    parser_display = subparsers.add_parser('display', help='バロメーターを表示')
    parser_display.add_argument('--cmd', type=str, help='コマンド名(省略可)')
    parser_display.add_argument('--log', action='store_true', help='表示をログファイルに保存')
    parser_display.add_argument('--logfile', type=str, help='ログファイルパス')

    parser_list = subparsers.add_parser('list', help='気分モード一覧')
    parser_summary = subparsers.add_parser('summary', help='Skill概要')

    return parser.parse_args()


def main():
    global LOG_FILE
    args = parse_args()
    if args.subcmd == 'display':
        if args.logfile:
            LOG_FILE = args.logfile
        display_barometer(command=args.cmd, log=args.log)
    elif args.subcmd == 'list':
        list_moods()
    elif args.subcmd == 'summary':
        summary()
    else:
        # デフォルト: display
        display_barometer()

if __name__ == '__main__':
    main()

references/design_notes.md

# 概要
random-os-mood-barometerは、コマンド実行時に気分や生産性を“完全ランダム”で演出するSkillです。ユーザーの作業リズムに遊び心を加えることで、単調な作業や長時間の開発の合間にちょっとした変化をもたらします。

# 公式ドキュメント抜粋
本SkillはPython標準のrandomモジュールのみを利用し、外部依存を持ちません。コマンドライン引数処理にはargparseを用いています。

# 利用例
- ターミナルで毎回違う気分モードが表示されることで、作業の合間に小さな楽しみや話題を提供
- /skills menuから明示的に呼び出して、その場の雰囲気を和らげる

# 注意点
- 判定内容は完全ランダムで、実際の作業内容や生産性とは無関係です
- 除外コマンド(ls, cdなど)では表示されません

# 設計方針
- 1行表示で邪魔になりすぎないこと
- 気分モード・テンプレートの拡張性を確保
- ログ保存や一覧表示など、CLIツールとしての実用性も考慮

導入手順

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

1. 前提

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

2. degit でフォルダ取得

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

npx degit aazutaku/ai-note/codex/random-os-mood-barometer .agents/skills/random-os-mood-barometer

.agents/skills/random-os-mood-barometer の中に SKILL.md / scripts/ / references/ / README.md が展開されます。

3. ファイル配置確認

ls .agents/skills/random-os-mood-barometer
# 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をコピーしました!
目次