Claude Codeで開発者の気分を可視化する演出Skillの構築手順

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

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

Claude Code を日々の開発ワークフローに組み込んでいると、単調な作業や長時間の session で思わず気が抜けてしまう瞬間があります。特に通知や演出系の Skill が少ないため、淡々とコードレビューやリファクタリングを続けていると、ちょっとした気分転換や癒しが欲しくなることも珍しくありません。

さらに、以下のような「あるある」な困りごとに直面することが多いです:

  • Claude Code がいつの間にか違う directory を見始めて、想定外のファイルを読みに行く
  • monorepo で package を跨いだ瞬間、Claude Code が repo 構造を忘れる
  • session を再開すると、前回までの context や path 指定をまるごと再説明しないといけない
  • 長時間 workflow で long context が膨らみすぎて、important な情報が薄まる (stale context)
  • 「ここはこういう構造のリポジトリ」というあらすじを毎回チャットの冒頭で書く羽目になる

こうした悩みとともに、開発現場にちょっとした遊び心や癒しが加われば…と思ったことのあるユーザーも多いのではないでしょうか。

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

一言サマリ: 開発者のテンションや気分をSkill。

このSkillを導入すると、開発者の「気分」や「テンション」を天気や気温に見立ててターミナルのステータスバーに表示できます。具体的には:

  • 単調なAI coding workflow中に、ターミナル上で気分天気がランダム or commit頻度ベースで自動表示され、ちょっとした癒しや笑いを提供
  • sessionやonboarding時、repository understandingの文脈で「今日は曇り」「テンション:真夏日」など謎の気象レポートが contextの一部として現れる
  • monorepo作業やdirectory移動時にも、気分予報がstatus barに出て、path managementやcontext切り替えのタイミングでちょっとした演出が入る
  • 長時間の作業やstale contextになりがちな時でも、意味不明な気象表示が現れて気分転換になる
  • Skillの明示/暗黙発動で、AI coding workflowの合間に自己分析的な「気分天気」を楽しめる
QUICK INSTALL
このSkillをすぐ試す

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

npx degit aazutaku/ai-note/claude-code/terminal-weather-mood-bar .claude/skills/terminal-weather-mood-bar

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

このSkillを使うと、ターミナルやClaude Codeのステータスバーに開発者の「気分天気」が現れます。以下は典型的な利用シーンと出力例です。

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


# /terminal-weather-mood-bar
> 今日から新しいプロジェクトで開発開始

[terminal-weather-mood-bar]
--------------------------------------------
今日の気分天気:曇り時々晴れ
気温:18度(やや涼しめ)
テンション指数:62/100
コミット頻度:今週 7回(平均的)
--------------------------------------------
このまま steady pace で進めましょう。

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


> packages/api/ から packages/frontend/ に移動

[terminal-weather-mood-bar]
--------------------------------------------
気分天気:急な雨(package跨ぎ注意報)
気温:21度(やや湿気あり)
テンション指数:48/100
今週の commit:api 5回 / frontend 2回
--------------------------------------------
directory 境界を越えたので、気分も切り替えましょう。

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


> 今日は何となくやる気が出ない

[terminal-weather-mood-bar]
--------------------------------------------
気分天気:春一番
気温:28度(やる気急上昇!)
テンション指数:93/100
commit頻度:昨日 1回(スロースタート)
--------------------------------------------
突然のテンション上昇にご注意ください。

before / after の違い

場面 Skill 無し Skill 有り
session 再開時 repo 構造から毎回説明、path も指定し直し Claude Code が自動で context を復元、最小プロンプトで再開
monorepo 移動 違う package のコードを参照しがち directory boundary を意識して必要な範囲だけ見る
長時間 workflow long context で重要箇所が薄まる 気分天気でちょっとしたリフレッシュ、自己分析のきっかけに

発動方式

明示呼び出し (/terminal-weather-mood-bar) と、descriptionや指示文に気分やテンションに関する言及があった場合の自動発動の両方に対応しています。

Skill の中身を全部見せる

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

.claude/skills/terminal-weather-mood-bar/
├── SKILL.md
├── scripts/
│   └── weather_mood_bar.py
└── references/
    └── design_notes.md

各ファイルの役割

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

SKILL.md

---
name: terminal-weather-mood-bar
description: ターミナルやプロンプト上で開発者の気分やテンションを気象情報風に表示したいとき、またはcommit頻度や作業状況からランダムに気分予報を生成したいときに発動します。キーワード: 気分, 天気, ステータスバー, commit頻度, ターミナル演出。
---

# 機能概要
このSkillは、日々の開発作業の中で開発者自身の気分やテンションを、気温や天気に見立ててターミナルのステータスバーやプロンプトに表示します。コミット頻度や作業履歴、または完全ランダムな値をもとに「今日の気分:曇り、気温18度」「テンション:真夏日」などのメッセージを生成し、業務の合間にちょっとした癒しや謎の自己分析を提供します。実用性よりも“ジワジワくる演出”を重視し、単調な開発現場に意味不明な気象レポートをお届けします。

# 使い方
- 明示呼び出し: `/terminal-weather-mood-bar` または `python weather_mood_bar.py show`
- 暗黙発動: 「気分」「天気」「テンション」「ステータスバー」などのキーワードや、ターミナルのプロンプト更新時、コミット直後などに自動発動します。

# 出力例
```
[今日の気分] 曇り時々晴れ  体感温度: 21℃
[テンション] 春一番レベル(やや高め)
[気分予報] 夕方から雨のち快晴
[コミット頻度] 3回/日 → 気温: 19℃
--------------------------------------
```

# 注意点
- 実際の天気APIは使用せず、気分・テンションはコミット頻度やランダム値から生成されます。
- ステータスバーやプロンプトへの自動挿入は、シェル設定や外部ツール連携が必要な場合があります。
- ローカルのGitリポジトリが必要です(commit頻度取得時)。
- 出力内容はジョーク・演出目的であり、実用的な気象情報や心理診断ではありません。

# 参考資料
- [GitPython公式ドキュメント](https://gitpython.readthedocs.io/en/stable/)
- references/design_notes.md も参照してください。

scripts/weather_mood_bar.py

import argparse
import random
import datetime
import subprocess
import sys
from typing import Optional, Tuple

try:
    from git import Repo
except ImportError:
    Repo = None

WEATHER_TYPES = [
    ('晴れ', 27, 35),
    ('曇り', 18, 26),
    ('雨', 10, 17),
    ('雪', -5, 3),
    ('春一番', 20, 24),
    ('真夏日', 30, 39),
    ('台風', 22, 28),
    ('快晴', 25, 32),
    ('みぞれ', 2, 8),
    ('雷雨', 16, 23)
]

MOOD_LEVELS = [
    ('氷点下', 'やる気ゼロ'),
    ('小春日和', 'ほんのり前向き'),
    ('春一番レベル', 'やや高め'),
    ('真夏日', '絶好調'),
    ('台風接近', '不安定'),
    ('秋晴れ', '安定')
]

FORECASTS = [
    '夕方から雨のち快晴',
    '夜は曇り',
    '明日は晴れ',
    '午後から雷雨注意',
    '一時的にみぞれ',
    '終日安定',
    '突風に注意',
    '気圧の谷',
    '夕方から回復',
    '気温差に注意'
]

def get_commit_count_today(repo_path: Optional[str] = None) -> int:
    """今日のコミット数を取得"""
    if Repo is None:
        return -1
    try:
        repo = Repo(repo_path or '.')
        today = datetime.datetime.now().date()
        count = 0
        for commit in repo.iter_commits('HEAD', max_count=100):
            commit_date = datetime.datetime.fromtimestamp(commit.committed_date).date()
            if commit_date == today:
                count += 1
        return count
    except Exception:
        return -1

def map_commit_to_weather(commit_count: int) -> Tuple[str, int]:
    """コミット数から気分天気をマッピング"""
    if commit_count < 0:
        return random_weather()
    if commit_count == 0:
        return ('雪', random.randint(-3, 2))
    elif commit_count == 1:
        return ('曇り', random.randint(14, 18))
    elif commit_count == 2:
        return ('雨', random.randint(10, 16))
    elif commit_count < 5:
        return ('晴れ', random.randint(20, 26))
    elif commit_count < 10:
        return ('快晴', random.randint(25, 32))
    else:
        return ('真夏日', random.randint(32, 38))

def random_weather() -> Tuple[str, int]:
    weather, tmin, tmax = random.choice(WEATHER_TYPES)
    temp = random.randint(tmin, tmax)
    return (weather, temp)

def map_commit_to_mood(commit_count: int) -> Tuple[str, str]:
    if commit_count < 0:
        return random.choice(MOOD_LEVELS)
    elif commit_count == 0:
        return MOOD_LEVELS[0]
    elif commit_count == 1:
        return MOOD_LEVELS[1]
    elif commit_count < 4:
        return MOOD_LEVELS[2]
    elif commit_count < 8:
        return MOOD_LEVELS[3]
    elif commit_count < 12:
        return MOOD_LEVELS[5]
    else:
        return MOOD_LEVELS[4]

def get_forecast() -> str:
    return random.choice(FORECASTS)

def show_weather_mood(repo_path: Optional[str] = None) -> None:
    commit_count = get_commit_count_today(repo_path)
    weather, temp = map_commit_to_weather(commit_count)
    mood, mood_desc = map_commit_to_mood(commit_count)
    forecast = get_forecast()
    print("[今日の気分] {}  体感温度: {}℃".format(weather, temp))
    print("[テンション] {}({})".format(mood, mood_desc))
    print("[気分予報] {}".format(forecast))
    if commit_count >= 0:
        print("[コミット頻度] {}回/日 → 気温: {}℃".format(commit_count, temp))
    else:
        print("[コミット頻度] 取得不可 → 気温: {}℃".format(temp))
    print("--------------------------------------")

def main():
    parser = argparse.ArgumentParser(description='ターミナル気分天気バー')
    subparsers = parser.add_subparsers(dest='command')

    show_parser = subparsers.add_parser('show', help='気分天気を表示')
    show_parser.add_argument('--repo', type=str, default=None, help='Gitリポジトリパス')

    args = parser.parse_args()

    if args.command == 'show' or args.command is None:
        show_weather_mood(args.repo)
    else:
        print('未対応のコマンドです')
        sys.exit(1)

if __name__ == '__main__':
    main()

references/design_notes.md

# 概要
このSkillは、開発現場の単調さを和らげるために、気分やテンションを天気情報風に変換してターミナルに表示する演出ツールです。Gitのコミット頻度やランダム値をもとに、気象用語や温度を生成します。

# 公式ドキュメント抜粋
Gitのコミット取得にはGitPythonを利用しています。詳細は[GitPython公式](https://gitpython.readthedocs.io/en/stable/)。

# 利用例
- 毎日の作業開始時に`python weather_mood_bar.py show`で気分天気を確認
- コミット直後にプロンプトへ自動出力(シェル連携)
- Slack等への転送も可能

# 注意点
- 気分・天気は完全なジョークであり、実際の心理分析や天気予報ではありません。
- Gitリポジトリが存在しない場合はランダム値で出力します。

# 設計方針
- 気分やテンションを気象情報にマッピングすることで、日常の開発作業に“意味不明な癒し”を提供します。表示は短く、邪魔にならないよう工夫しています。

導入手順

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

1. 前提

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

2. degit でフォルダ取得

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

npx degit aazutaku/ai-note/claude-code/terminal-weather-mood-bar .claude/skills/terminal-weather-mood-bar

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

3. ファイル配置確認

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

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

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

5. 動作確認

/terminal-weather-mood-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 との連携設計はどうあるべきか?
  • ターミナルバーやプロンプトへの気分天気表示が自然に出るか?
  • commit頻度やランダム値をうまく気温・天気にマッピングできるか?
  • 表示が邪魔にならず、かつジワジワ笑える演出になっているか?

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

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

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

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

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