Codexで作業中の気分温度を可視化して空気を和らげる活用ガイド

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

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

日々 Codex を使っていると、プロジェクトごとの context や repo の directory 構造をうまく伝えきれず、思わぬ混乱を招くシーンが多々あります。特に monorepo や長時間の AI coding workflow では、Codex の記憶や path management 周りの「抜け」や「ズレ」が発生しがちです。

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

また、作業が煮詰まったときに「ちょっとした息抜き」や「空気のゆるみ」が欲しい瞬間もよくあります。通知・演出・OS連携系の Skill で、そうした場面をうまく演出できるとチームの雰囲気も和みます。

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

一言サマリ: このスキルは、作業中の“気分温度”をOSのステータスバー風に毎回ランダム表示し、カオスな演出で空気を和ませるSkill。

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

  • AI coding workflow の合間に、気分の“温度”を毎回ユーモラスに演出し、長時間作業の緊張感を和らげる
  • Codex の context 切り替えや repository onboarding 時に、温度バーが場を和ませてくれる
  • monorepo での directory 移動や package 跨ぎ作業時に、謎の温度演出で会話やレビューが盛り上がる
  • 作業テンションや workflow の“空気”を可視化し、チーム内コミュニケーションのきっかけになる
  • Skill の導入だけで、OS風の演出を簡単に追加できる
QUICK INSTALL
このSkillをすぐ試す

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

npx degit aazutaku/ai-note/codex/os-mood-temperature-bar .agents/skills/os-mood-temperature-bar

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

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

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


# /skills menu
> プロジェクトの初期セットアップを始めます

[os-mood-temperature-bar]
─────────────────────────────
  気分温度: 絶好調 38.7℃
  (本日のテンション: 夏の甲子園決勝並)
─────────────────────────────
repo: my-monorepo/
directory: apps/web/
─────────────────────────────

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


> packages/api/ に移動して main 関数を修正

[os-mood-temperature-bar]
─────────────────────────────
  気分温度: 炎上中 42.5℃
  (テンション: 緊急対応モード)
─────────────────────────────
repo: my-monorepo/
directory: packages/api/
─────────────────────────────

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


> テストが全部落ちたので、ちょっと一息

[os-mood-temperature-bar]
─────────────────────────────
  気分温度: 冷え冷え 15.2℃
  (テンション: 北極圏)
─────────────────────────────
repo: my-monorepo/
directory: tests/
─────────────────────────────

before / after の違い

場面 Skill 無し Skill 有り
session 再開時 repo 構造から毎回説明、path も指定し直し Codex が自動で context を復元、最小プロンプトで再開+気分温度の演出で和む
monorepo 移動 違う package のコードを参照しがち directory boundary を意識した温度演出で、今どこにいるか分かりやすい
長時間 workflow long context で重要箇所が薄まる 温度バーで workflow の区切りや気分転換ができる

発動方式

明示呼び出し (/skills menu や Skill 名での mention) と、説明文マッチによる暗黙発動の両方に対応しています。

Skill の中身を全部見せる

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

.agents/skills/os-mood-temperature-bar/
├── SKILL.md
├── scripts/
│   └── mood_temperature_bar.py
└── references/
    └── design_notes.md

各ファイルの役割

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

SKILL.md

---
name: os-mood-temperature-bar
description: コマンド実行時やターミナル作業中、または明示的なSkill呼び出し(/skills menuやos-mood-temperature-barメンション)時に発動。気分温度やテンションをランダムな数値とコメントでOSバー風に表示したい場合に使用。
---

# 機能概要
このSkillは、あなたの作業中の“気分温度”を、まるでOSのステータスバーやメニューバーのような演出で表示します。コマンド実行やエディタ操作時に、気分やテンションを「絶好調39度」「冷え冷え16度」「炎上中42.5度」など、完全ランダムな温度とコメントで可視化。作業現場の空気を和ませたり、ちょっとしたカオスを演出したいときに最適です。

# 使い方
- 明示呼び出し: `/skills menu` で一覧から選択、または `os-mood-temperature-bar` を直接メンション。
- 暗黙発動: 「気分」「テンション」「温度」「バー」「ステータス」などのキーワードを含む会話やコマンド実行時に自動発動。

# 出力例
```
[os-mood-temperature-bar] 気分温度: 42.7℃ (炎上中) | ステータスバー: [■■■■■■■■■■■          ]
[os-mood-temperature-bar] 気分温度: 16.2℃ (冷え冷え) | ステータスバー: [■■■                   ]
[os-mood-temperature-bar] 気分温度: 39.0℃ (絶好調) | ステータスバー: [■■■■■■■■■■■■■■■   ]
[os-mood-temperature-bar] 気分温度: 27.5℃ (まあまあ) | ステータスバー: [■■■■■■■■■         ]
[os-mood-temperature-bar] 気分温度: 35.1℃ (ノリノリ) | ステータスバー: [■■■■■■■■■■■■      ]
```

# 注意点
- 温度やコメントは完全ランダムで、実際の体調や作業効率とは無関係です。
- ローカルにログファイル(`mood_temperature.log`)が保存されます。
- OSの本物のメニューバーには直接表示されません。ターミナルやエディタでの演出となります。
- 長時間の連続実行や自動化には向きません。

# 参考資料
- 詳細な設計や利用例は`references/design_notes.md`を参照。
- 公式ドキュメント: https://docs.python.org/3/library/random.html, https://docs.python.org/3/library/argparse.html

scripts/mood_temperature_bar.py

import sys
import argparse
import random
import datetime
import os

MOOD_LABELS = [
    (15, '冷え冷え'),
    (25, 'まあまあ'),
    (32, '普通'),
    (37, 'ノリノリ'),
    (40, '絶好調'),
    (43, '炎上中'),
]

BAR_LENGTH = 20
LOG_FILE = 'mood_temperature.log'

def get_mood_label(temp):
    for threshold, label in MOOD_LABELS:
        if temp < threshold:
            return label
    return MOOD_LABELS[-1][1]

def generate_temperature():
    # 15.0〜43.0度の範囲でランダム
    return round(random.uniform(15.0, 43.0), 1)

def generate_bar(temp):
    # 15.0〜43.0度を0〜BAR_LENGTHにマッピング
    min_temp, max_temp = 15.0, 43.0
    filled = int((temp - min_temp) / (max_temp - min_temp) * BAR_LENGTH)
    bar = '■' * filled + ' ' * (BAR_LENGTH - filled)
    return f'[{bar}]'

def format_status(temp, label):
    bar = generate_bar(temp)
    return f"[os-mood-temperature-bar] 気分温度: {temp}℃ ({label}) | ステータスバー: {bar}"

def log_status(temp, label, status):
    now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    with open(LOG_FILE, 'a', encoding='utf-8') as f:
        f.write(f"{now}\t{temp}\t{label}\t{status}\n")

def show_log():
    if not os.path.exists(LOG_FILE):
        print("ログファイルがありません。まだ気分温度を記録していません。")
        return
    with open(LOG_FILE, 'r', encoding='utf-8') as f:
        for line in f:
            print(line.strip())

def show_summary():
    if not os.path.exists(LOG_FILE):
        print("ログファイルがありません。まだ気分温度を記録していません。")
        return
    temps = []
    labels = {}
    with open(LOG_FILE, 'r', encoding='utf-8') as f:
        for line in f:
            parts = line.strip().split('\t')
            if len(parts) >= 3:
                try:
                    temp = float(parts[1])
                    label = parts[2]
                    temps.append(temp)
                    labels[label] = labels.get(label, 0) + 1
                except Exception:
                    continue
    if not temps:
        print("記録がありません。")
        return
    print(f"記録数: {len(temps)}")
    print(f"平均気分温度: {round(sum(temps)/len(temps), 1)}℃")
    print("コメント分布:")
    for label, count in sorted(labels.items(), key=lambda x: -x[1]):
        print(f"  {label}: {count}回")

def main():
    parser = argparse.ArgumentParser(description='気分温度ステータスバー')
    subparsers = parser.add_subparsers(dest='command')

    parser_log = subparsers.add_parser('log', help='最新の気分温度を表示し、ログに記録')
    parser_list = subparsers.add_parser('list', help='気分温度ログを表示')
    parser_summary = subparsers.add_parser('summary', help='気分温度ログのサマリを表示')
    parser.add_argument('--no-log', action='store_true', help='ログに記録しない')

    args = parser.parse_args()

    if args.command == 'list':
        show_log()
    elif args.command == 'summary':
        show_summary()
    else:
        temp = generate_temperature()
        label = get_mood_label(temp)
        status = format_status(temp, label)
        print(status)
        if not args.no_log:
            log_status(temp, label, status)

if __name__ == '__main__':
    main()

references/design_notes.md

# 概要
このSkillは、作業中の気分やテンションを“温度”という形で可視化し、ターミナルやエディタ上でOSバー風に演出します。温度は完全ランダムで、実際の体調や心理状態とは無関係です。

# 公式ドキュメント抜粋
- Python random: https://docs.python.org/3/library/random.html
- argparse: https://docs.python.org/3/library/argparse.html

# 利用例
- コマンド実行ごとに気分温度を表示して、作業の雰囲気を和ませる
- ログやサマリで過去の“気分温度”の分布を確認し、ネタとして楽しむ

# 注意点
- 本物のOSメニューバーには表示されません。ターミナルやチャットbot経由での演出です。
- ログはローカルに保存され、プライバシーには配慮されています。

# 設計方針
- シンプルなCLI構成で、log/list/summaryの3サブコマンドを用意
- 温度やコメントはランダム生成、演出重視
- ログファイルはUTF-8で安全に追記

導入手順

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

1. 前提

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

2. degit でフォルダ取得

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

npx degit aazutaku/ai-note/codex/os-mood-temperature-bar .agents/skills/os-mood-temperature-bar

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

3. ファイル配置確認

ls .agents/skills/os-mood-temperature-bar
# 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のメニューバーやターミナルでしっかり演出されるか
  • 作業テンションの“温度”表現が十分にカオスか

実際に Codex で試した検証ログは Codexで気分の“温度”をOS風バーに表示してみた! にまとめる予定 (公開準備中の場合あり)。
あわせて Codex 公式ドキュメント と、本シリーズ「Codexを使いこなすSkillアイデア」の他記事も参照のこと。

関連タグで他のSkill記事を探す

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

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

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