Claude Codeで作業気分を可視化してターミナルを楽しく変える方法

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

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

Claude Code を使って日々の開発を進めていると、作業の合間にちょっとした「気分転換」や「遊び心」が欲しくなる瞬間があるものです。特に長時間にわたる AI coding workflow では、集中力が切れたり、同じようなコマンドを繰り返す単調さを感じたりしがちです。しかし、実際の現場では以下のような悩みがよく聞かれます。

  • ターミナル作業が淡々と進み、気分転換やちょっとした演出が欲しいと思うことがある
  • 長時間の session で集中力が切れがちだが、程よくリズムを変えてくれる仕掛けが少ない
  • onboarding や repository understanding の合間に、緊張感を和らげる要素が欲しい
  • コマンド実行のたびに「今の自分、どんなテンション?」と遊び心で確認したくなるが、その余白がない
  • 通知や演出が全くないため、ターミナルが単なる作業場になりがち

通知・演出・OS連携カテゴリの Skill が増えてきた今、ターミナルを“遊び場”に変えるようなユーモアある演出を求める声は少なくありません。

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

一言サマリ: このスキルは、ターミナル作業時に完全ランダムな「気分指数」と小ネタコメントを毎回表示し、作業空間に遊び心を演出するSkill。

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

  • コマンド実行ごとに「やる気指数」やユーモラスなコメントが表示され、ターミナル作業が一気に楽しくなる
  • 長時間の AI coding workflow や onboarding の合間に、気分転換として自然にリズムが生まれる
  • monorepo や複雑な repository での directory 移動時にも、思わずツッコミたくなる演出で集中力をリセットできる
  • Claude Code の通知・演出 Skill カテゴリを活用し、単調な作業空間に彩りを加えることができる
  • Skill の導入・発動が簡単で、path management や context 設計に影響せず気軽に楽しめる
QUICK INSTALL
このSkillをすぐ試す

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

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

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

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

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


# /terminal-mood-barometer
> プロジェクト初期化して

[terminal-mood-barometer] やる気指数: 87
今日もコーディング日和!この勢いで repository understanding 進めよう。

> CLAUDE.md 読み込み完了
> 現在の directory: /home/user/my-repo
> context: 新規 session スタート

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


> packages/api/ の main.py を修正して

[terminal-mood-barometer] やる気指数: 12
カフェイン補給推奨。monorepo の旅はまだ続く。

> packages/api/main.py の編集を開始します
> repository understanding: packages/api/ ディレクトリに移動
> context: path management 更新

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


> テストのカバレッジを確認して

[terminal-mood-barometer] やる気指数: 99
神がかり的集中力。今ならどんなバグも見逃さない気がする。

> pytest --cov=src/
> テスト結果: coverage 92%
> memory: long context 対応

before / after の違い

場面 Skill 無し Skill 有り
session 再開時 repo 構造から毎回説明、path も指定し直し Claude Code が自動で context を復元、最小プロンプトで再開
monorepo 移動 違う package のコードを参照しがち directory boundary を意識して必要な範囲だけ見る
長時間 workflow long context で重要箇所が薄まる 気分指数の通知で集中力リセット、作業リズムを維持

発動方式

明示呼び出し (/terminal-mood-barometer) と暗黙発動 (「やる気」「気分」「モチベーション」などの description マッチ) の両方に対応。

Skill の中身を全部見せる

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

.claude/skills/terminal-mood-barometer/
├── SKILL.md
├── scripts/
│   └── mood_barometer.py
└── references/
    └── design_notes.md

各ファイルの役割

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

SKILL.md

---
name: terminal-mood-barometer
description: コマンド実行時、または明示的に /terminal-mood-barometer を呼び出した際に、気分指数とコメントをランダム表示する。ターミナル作業の合間に演出を加えたい場面で発動。
---

# 機能概要
terminal-mood-barometerは、ターミナルでコマンドを実行するたびに「気分指数」とユーモラスなコメントを完全ランダムで表示するスキルです。真面目な作業中にも、毎回異なるやる気スコアや小ネタが割り込むことで、作業の雰囲気を和らげたり、ちょっとした遊び心を提供します。コマンドライン作業の単調さを打破し、チームや個人の気分転換や話題作りにも役立ちます。

# 使い方
- 明示呼び出し例: `/terminal-mood-barometer` で現在の気分指数を表示
- 暗黙発動例: `git commit` や `ls` など任意のコマンド実行時に自動で発動(設定による)
- 発動キーワード: "コマンド実行", "やる気", "気分指数", "バロメーター"

# 出力例
```
[Terminal Mood Barometer]
やる気指数: 87
コメント: 今日もコーディング日和!

[Terminal Mood Barometer]
やる気指数: 12
コメント: カフェイン補給推奨。無理せず休憩を。

[Terminal Mood Barometer]
やる気指数: 54
コメント: まあまあの調子。あと一息!
```

# 注意点
- 気分指数とコメントは完全にランダム生成で、実際の作業状況や感情を反映しません
- 履歴やスコアはローカル保存されません
- 出力は標準出力のみで、他のファイルやシステム設定は変更しません
- コマンドの実行結果を妨げることはありませんが、出力が多い場合は見落としに注意

# 参考資料
- [Python random — 公式ドキュメント](https://docs.python.org/ja/3/library/random.html)
- references/design_notes.md も参照してください

scripts/mood_barometer.py

import sys
import argparse
import random
import time
from typing import Tuple, List

MOOD_COMMENTS = [
    (range(0, 10), [
        "カフェイン補給推奨。無理せず休憩を。",
        "今日は低気圧かも。深呼吸してみよう。",
        "やる気2:机の下に隠れたい気分。"
    ]),
    (range(10, 30), [
        "やる気低め。音楽でも流してみては?",
        "集中力が散漫かも。軽くストレッチ!",
        "やる気15:おやつタイムが必要かも。"
    ]),
    (range(30, 60), [
        "まあまあの調子。あと一息!",
        "やる気50:普通です。",
        "波に乗り始めた?その調子!"
    ]),
    (range(60, 80), [
        "やる気高め!このまま突き進もう。",
        "やる気70:集中力アップ中。",
        "いい感じ。タスクがどんどん片付く予感。"
    ]),
    (range(80, 101), [
        "やる気指数: MAX!今日もコーディング日和!",
        "絶好調!何でもできそうな気分。",
        "やる気95:天才モード発動中。"
    ]),
]

HISTORY_LIMIT = 20

class MoodHistory:
    def __init__(self):
        self.entries: List[Tuple[float, int, str]] = []

    def add(self, timestamp: float, mood: int, comment: str):
        self.entries.append((timestamp, mood, comment))
        if len(self.entries) > HISTORY_LIMIT:
            self.entries.pop(0)

    def list(self):
        for t, m, c in self.entries:
            ts = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(t))
            print(f"{ts} | やる気指数: {m} | {c}")

    def summary(self):
        if not self.entries:
            print("履歴がありません。")
            return
        moods = [m for _, m, _ in self.entries]
        avg = sum(moods) / len(moods)
        print(f"直近{len(moods)}回の平均やる気指数: {avg:.1f}")

history = MoodHistory()

def pick_mood_and_comment() -> Tuple[int, str]:
    mood = random.randint(0, 100)
    comment = None
    for r, comments in MOOD_COMMENTS:
        if mood in r:
            comment = random.choice(comments)
            break
    if comment is None:
        comment = "気分不明。"
    return mood, comment

def print_mood(mood: int, comment: str):
    print("[Terminal Mood Barometer]")
    print(f"やる気指数: {mood}")
    print(f"コメント: {comment}")

def log_mood():
    mood, comment = pick_mood_and_comment()
    print_mood(mood, comment)
    history.add(time.time(), mood, comment)

def list_history():
    history.list()

def summary_history():
    history.summary()

def parse_args():
    parser = argparse.ArgumentParser(description='Terminal Mood Barometer')
    subparsers = parser.add_subparsers(dest='command', required=False)

    parser_log = subparsers.add_parser('log', help='現在の気分指数を表示')
    parser_list = subparsers.add_parser('list', help='直近の気分履歴を表示')
    parser_summary = subparsers.add_parser('summary', help='気分履歴の平均を表示')
    return parser.parse_args()

def main():
    args = parse_args()
    if args.command == 'log' or args.command is None:
        log_mood()
    elif args.command == 'list':
        list_history()
    elif args.command == 'summary':
        summary_history()
    else:
        print('不明なコマンドです')
        sys.exit(1)

if __name__ == '__main__':
    main()

references/design_notes.md

# 概要
このスキルは、ターミナル作業の合間に完全ランダムな「やる気指数」とコメントを表示し、作業者に遊び心やリフレッシュを提供します。コマンド実行時の演出として設計されています。

# 公式ドキュメント抜粋
Pythonのrandomモジュールを用い、0-100の乱数生成と、範囲ごとに異なるコメントを割り当てています。標準出力のみを利用し、ファイルやシステム設定には影響しません。

# 利用例
- 日々のコーディングや運用作業の合間に、気分転換や話題作りとして活用
- チームでのペアプロやリモート作業時のアイスブレイク

# 注意点
表示される指数やコメントは完全ランダムで、実際の気分や作業効率とは無関係です。履歴はセッション内の一時保存のみで、永続化はされません。

# 設計方針
シンプルなCLIサブコマンド構成(log/list/summary)とし、出力の邪魔にならないよう配慮しました。演出のバリエーションは今後も拡張可能です。

導入手順

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

1. 前提

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

2. degit でフォルダ取得

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

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

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

3. ファイル配置確認

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

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

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

5. 動作確認

/terminal-mood-barometer で呼び出すか、自然言語で発動条件にマッチする指示を出すと 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 との連携設計はどうあるべきか?
  • コマンド実行時に必ず気分指数とコメントが表示されるか?
  • 気分指数とコメントが毎回ランダムで変わるか?
  • 通知表示が作業を邪魔しすぎず、でも確実に目につくか?

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

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

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

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

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