Claude Codeで気分温度の演出を自動化するSkill構築ガイド

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

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

Claude Code を日々の開発で活用していると、集中力やテンションの波、作業の「空気感」を可視化できたら面白いと感じる瞬間がよくあります。特に、長時間の作業やチームでのやり取りが続くと、ちょっとした「遊び」や「脱線」がモチベーション維持やコミュニケーションの潤滑油になることも。

以下のような「あるある」な困りごとに心当たりがあるユーザーも多いはずです:

  • 黙々とターミナルやエディタで作業していると、場の雰囲気が硬直しがちで、ちょっとした息抜きや話題のきっかけが欲しくなる
  • Claude Code の通知や演出が淡白で、進捗や気分の変化を可視化できる遊び心が少ない
  • 長時間のAI coding workflowで、集中力やテンションが下がっているのに気づかず作業を続けてしまう
  • リポジトリの context や path 管理に気を取られて、作業そのものが単調に感じる瞬間がある
  • 周囲との雑談やチームの一体感を生む「ネタ」や「演出」が不足しがち

こうした「空気の温度」を手軽に演出できる仕掛けがあれば、日々の開発体験が少しだけ楽しくなるかもしれません。

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

一言サマリ: このスキルは、作業中の“気分温度”をOS風バーとしてランダムに演出し、開発現場にカオスな遊び心をもたらします。

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

  • ターミナルやエディタ操作のたびに、ランダムな“気分温度”がOSのメニューバー風に表示され、作業の空気感が可視化される
  • Claude Code の通知・演出が一段階アップし、セッションや context の切り替え時に「今の気分」が即座に伝わる
  • チームや周囲との雑談・コミュニケーションのきっかけになるユーモラスな演出を手軽に追加できる
  • 長時間のAI coding workflowでも、path managementやrepository understandingの合間に小さな息抜きが生まれる
  • onboardingやsession再開時など、いつものルーティンに「温度ネタ」を挟むことで、開発体験に彩りが加わる
QUICK INSTALL
このSkillをすぐ試す

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

npx degit aazutaku/ai-note/claude-code/os-mood-temperature-bar .claude/skills/os-mood-temperature-bar

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

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

シーン1: session 開始時 (CLAUDE.md と組み合わせて)


# /os-mood-temperature-bar
> 今日もよろしく!

────────────────────────────
[OS-MOOD] 気分温度バー: 39.2℃ (絶好調)
────────────────────────────
repository: ./src/
directory: ./src/components/
context: 新規セッション開始
────────────────────────────
「今日のあなたは、やる気全開の高温注意報です。」
────────────────────────────

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


> packages/api/handlers/userHandler.ts を編集

────────────────────────────
[OS-MOOD] 気分温度バー: 16.7℃ (冷え冷え)
────────────────────────────
repository: ./packages/api/
directory: ./packages/api/handlers/
context: monorepo package 移動
────────────────────────────
「静けさ漂うpackageで、淡々と作業中。」
────────────────────────────

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


> ちょっとブレイクタイム

────────────────────────────
[OS-MOOD] 気分温度バー: 42.5℃ (炎上中)
────────────────────────────
repository: ./tests/
directory: ./tests/e2e/
context: 休憩中
────────────────────────────
「このテンション、もはや火事場の馬鹿力。」
────────────────────────────

before / after の違い

場面 Skill 無し Skill 有り
session 再開時 repo 構造から毎回説明、path も指定し直し Claude Code が自動で context を復元、気分温度バーで空気感も演出
monorepo 移動 違う package のコードを参照しがち directory boundary とともに「温度」も切り替え、作業の雰囲気を可視化
長時間 workflow long context で重要箇所が薄まる 気分温度バーで適度なリフレッシュ、集中力の変化を演出

発動方式

明示呼び出し (/os-mood-temperature-bar) と暗黙発動 (description マッチ) の両方に対応。

Skill の中身を全部見せる

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

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

各ファイルの役割

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

SKILL.md

---
name: os-mood-temperature-bar
description: Claude Codeは、ユーザーがターミナルやエディタでコマンド実行や編集操作を行うたびに、このSkillを発動し、作業中の“気分温度”をOSのステータスバー風にランダムで表示します。明示呼び出し(/os-mood-temperature-bar)や「気分」「温度」「テンション」等のキーワード検出時にも発動します。
---

# 機能概要
このSkillは、あなたの作業中の“気分温度”をOSのステータスバーやメニューバー風に表示します。コマンド実行やエディタ操作のたび、気分が「絶好調39度」「冷え冷え16度」「炎上中42.5度」など、完全ランダムな温度とコメントで演出されます。仕事の空気が一瞬ゆるみ、チーム内の会話やリフレッシュのきっかけにもなります。

# 使い方
- 明示的呼び出し: `/os-mood-temperature-bar` を入力
- 暗黙的発動: 「気分」「温度」「テンション」「やる気」などの単語を含む操作や会話の直後
- CLIサブコマンド: `python os_mood_temperature_bar.py log` で温度記録、`list` で履歴表示、`summary` で統計も可能

# 出力例
```
[OS-Mood-Bar] 気分温度: 42.5度 炎上中!
[OS-Mood-Bar] 気分温度: 16.0度 冷え冷え…
[OS-Mood-Bar] 気分温度: 39.0度 絶好調!
[OS-Mood-Bar] 気分温度: 27.3度 まあまあ
[OS-Mood-Bar] 気分温度: 21.8度 低気圧注意
```

# 注意点
- 温度とコメントは完全ランダムで、実際の気分や体調とは無関係です
- ローカル環境に記録ファイル(.os_mood_log.json)が生成されます
- メニューバーやターミナル出力を模倣しますが、GUI統合はありません
- 業務用途での真面目な利用には不向きです

# 参考資料
- [Python random モジュール公式](https://docs.python.org/ja/3/library/random.html)
- references/design_notes.md 参照(設計方針・利用例・注意点など)

scripts/os_mood_temperature_bar.py

import argparse
import json
import os
import random
import sys
import datetime
from typing import List, Dict, Any

LOG_FILE = os.path.expanduser("~/.os_mood_log.json")
COMMENTS = [
    (15, "冷え冷え…"),
    (20, "低気圧注意"),
    (25, "ぼちぼち"),
    (30, "まあまあ"),
    (35, "上昇中!"),
    (39, "絶好調!"),
    (42, "炎上中!"),
    (45, "危険域!")
]

def generate_mood_temperature() -> Dict[str, Any]:
    temp = round(random.uniform(15.0, 45.0), 1)
    comment = None
    for threshold, comm in COMMENTS:
        if temp <= threshold:
            comment = comm
            break
    if comment is None:
        comment = "???"
    return {
        "timestamp": datetime.datetime.now().isoformat(),
        "temperature": temp,
        "comment": comment
    }

def print_mood_bar(entry: Dict[str, Any]):
    print(f"[OS-Mood-Bar] 気分温度: {entry['temperature']}度 {entry['comment']}")

def load_log() -> List[Dict[str, Any]]:
    if not os.path.exists(LOG_FILE):
        return []
    try:
        with open(LOG_FILE, 'r', encoding='utf-8') as f:
            return json.load(f)
    except Exception:
        return []

def save_log(entries: List[Dict[str, Any]]):
    try:
        with open(LOG_FILE, 'w', encoding='utf-8') as f:
            json.dump(entries, f, ensure_ascii=False, indent=2)
    except Exception as e:
        print(f"[OS-Mood-Bar] ログ保存失敗: {e}", file=sys.stderr)

def log_temperature():
    entry = generate_mood_temperature()
    entries = load_log()
    entries.append(entry)
    save_log(entries)
    print_mood_bar(entry)

def list_temperatures():
    entries = load_log()
    if not entries:
        print("[OS-Mood-Bar] ログがありません。")
        return
    for entry in entries[-20:]:
        ts = entry.get('timestamp', '')
        temp = entry.get('temperature', '?')
        comment = entry.get('comment', '')
        print(f"{ts} | {temp}度 {comment}")

def summary_temperatures():
    entries = load_log()
    if not entries:
        print("[OS-Mood-Bar] ログがありません。")
        return
    temps = [e['temperature'] for e in entries if 'temperature' in e]
    avg = sum(temps) / len(temps)
    mx = max(temps)
    mn = min(temps)
    print(f"[OS-Mood-Bar] ログ件数: {len(temps)}")
    print(f"平均: {avg:.1f}度 最高: {mx:.1f}度 最低: {mn:.1f}度")

def clear_log():
    if os.path.exists(LOG_FILE):
        os.remove(LOG_FILE)
        print("[OS-Mood-Bar] ログを削除しました。")
    else:
        print("[OS-Mood-Bar] ログファイルが存在しません。")

def main():
    parser = argparse.ArgumentParser(description='OS Mood Temperature Bar')
    subparsers = parser.add_subparsers(dest='command')

    subparsers.add_parser('log', help='現在の気分温度を記録し表示')
    subparsers.add_parser('list', help='気分温度ログを表示')
    subparsers.add_parser('summary', help='気分温度ログの統計')
    subparsers.add_parser('clear', help='気分温度ログを削除')

    args = parser.parse_args()
    if not args.command:
        # デフォルトで1回表示
        entry = generate_mood_temperature()
        print_mood_bar(entry)
        sys.exit(0)
    if args.command == 'log':
        log_temperature()
    elif args.command == 'list':
        list_temperatures()
    elif args.command == 'summary':
        summary_temperatures()
    elif args.command == 'clear':
        clear_log()
    else:
        parser.print_help()

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
- JSON: https://docs.python.org/ja/3/library/json.html

# 利用例
- ターミナルで `python os_mood_temperature_bar.py log` を実行し、その瞬間の「気分温度」を記録
- `list` で過去の気分温度履歴を閲覧
- `summary` で平均・最高・最低温度を確認

# 注意点
- 実際の気分や健康状態を反映するものではありません
- ログはローカルファイル(ユーザーホーム直下)に保存されます
- GUIのOSメニューバー統合はありません

# 設計方針
CLIサブコマンドでの操作性と、シンプルなJSONログによる履歴管理を重視。演出コメントは温度帯ごとに分岐し、カオスな演出を意図的に強調しています。

導入手順

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

1. 前提

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

2. degit でフォルダ取得

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

npx degit aazutaku/ai-note/claude-code/os-mood-temperature-bar .claude/skills/os-mood-temperature-bar

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

3. ファイル配置確認

ls .claude/skills/os-mood-temperature-bar
# SKILL.md, scripts/, references/, README.md があればOK

4. Claude Code を再起動 (or Skill 自動検出を待つ)

新しいSkillが自動で認識されます。リスト確認したい場合は /os-mood-temperature-bar と Skill 名で出てきます。

5. 動作確認

/os-mood-temperature-bar で呼び出すか、自然言語で発動条件にマッチする指示を出すと Skill が動きます。期待される出力イメージは「実行したらこうなる」セクションを参照してください。

こんな瞬間に便利

  • session 開始時: 前回までの repo 把握を Claude Code に一発で復元させたい
  • monorepo 移動時: packages を跨いだ瞬間に context を切り替えたい
  • onboarding 時: 新しい repo を Claude Code に把握させ、こちらが 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 コードを拾ってしまう可能性
  • Claude Code 固有の引っかかり: paths フロントマターでの絞り込みを使わないと意図しないタイミングで発動する
  • 発動しないケース: description が漠然 / 他の Skill が優先 / git管理外 directory
  • 温度表示のカオスさが逆に混乱を招く: 作業に集中したい場面では演出がノイズになる場合がある

試す前に確かめたいこと

この Skill を実運用に投入する前に確かめたい問いを並べる:

  • 実 repo での token 消費は許容範囲か?
  • monorepo (packages 多数) で安定して動くか?
  • stale context にならず、長時間 workflow でも有効か?
  • CLAUDE.md との連携設計はどうあるべきか?
  • 温度表示が毎回ランダム/おかしな値になるか?
  • OSのメニューバーやターミナルでしっかり演出されるか?
  • 作業テンションの“温度”表現が十分にカオスか?

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

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

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

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

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