Claude Codeで謎のモチベーション格言通知を活用する方法と設計ガイド

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

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

Claude Code を使っていると、日々の開発フローで「ちょっとした気分転換」や「作業のマンネリ打破」が意外と難しいと感じることがある。AI coding workflow に没頭しすぎて休憩を忘れたり、リポジトリ理解や path 管理に集中しすぎて、気がつけば心も context も煮詰まっていることも。

特に、通知・演出・OS連携系の機能が薄いことで、以下のような「あるある」な悩みが生まれる:

  • 長時間作業で集中しすぎ、気分転換やリフレッシュのきっかけが掴めない
  • リポジトリの context や path management に没頭し、ふとした瞬間にモチベーションが途切れる
  • onboarding や新しい repository 理解で頭がいっぱいになり、遊び心や余裕がなくなる
  • AI とのやりとりが効率一辺倒になり、workflow が単調・無機質に感じる
  • 同僚やチーム内で「ちょっとした笑い」や話題が生まれにくい

こうした「通知」や「演出」不足は、Claude Code を使う開発者なら誰しも一度は感じるポイント。

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

一言サマリ: あなたが作業中Skill。

このSkillを入れることで、作業の合間や集中しすぎたタイミングで、OSのデスクトップ通知として毎回ランダムな「謎のモチベーション格言」が表示される。以下のような効果が期待できる:

  • 長時間のAI coding workflowに適度な「脱力感」とリフレッシュをもたらし、気分転換のきっかけが生まれる
  • repository understanding や path management で凝り固まった思考を一瞬ほぐすことで、context切り替えや新しい発想を促す
  • onboarding 中の新メンバーや同僚との間で、通知内容が話題になり、チームの雰囲気が和らぐ
  • monorepo や複雑な directory 構造に没頭している時でも、ふとした瞬間に笑いが生まれる
  • Claude Code のAI coding workflowに「遊び心」を手軽に追加できる
QUICK INSTALL
このSkillをすぐ試す

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

npx degit aazutaku/ai-note/claude-code/random-os-motivational-quote-notifier .claude/skills/random-os-motivational-quote-notifier

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

Skill を導入すると、以下のようなシーンで OS 側に謎の格言通知がランダムで表示される。

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


# /random-os-motivational-quote-notifier
> 開発セッションを開始

[OS通知] 本日もバグに感謝せよ
(進捗ゼロ、それもまた進化)

プロジェクト: /Users/dev/my-monorepo
repository understanding: 構造解析中...

Claude Code: context を復元しました。

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


> packages/core/ から packages/ui/ に移動

[OS通知] コードは寝かせて美味しくなる

directory: packages/ui/
Claude Code: path management を切り替えました。
repository: my-monorepo

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


> ちょっと気分転換したい

[OS通知] 進捗が見えない?それは新たな始まり

Claude Code: long context を整理しました。
directory: /Users/dev/my-monorepo/tools/

before / after の違い

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

発動方式

明示呼び出し (/random-os-motivational-quote-notifier) と暗黙発動 (「気分転換したい」「進捗が…」などの自然言語コマンド) の両方に対応。

Skill の中身を全部見せる

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

.claude/skills/random-os-motivational-quote-notifier/
├── SKILL.md
├── scripts/
│   └── notifier.py
└── references/
    └── design_notes.md

各ファイルの役割

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

SKILL.md

---
name: random-os-motivational-quote-notifier
description: 作業中やコマンド実行時、または『モチベーション』『やる気』『進捗』『バグ』などのキーワード検出時に、OSのデスクトップ通知でランダムな“謎のOS偽モチベーション格言”を表示します。気分転換やチームの雰囲気変化に最適です。
---

# 機能概要
このSkillは、作業中や特定のキーワード(例: モチベーション、やる気、進捗、バグ)を検出した際、あるいは明示的な呼び出しによって、あなたのデスクトップに“謎のOS偽モチベーション格言”をランダムに通知します。格言は毎回異なり、「本日もバグに感謝せよ」「進捗ゼロ、それもまた進化」「コードは寝かせて美味しくなる」など、やけに的外れで深そうなものばかり。仕事が進まないときや、やる気が出ないとき、逆に動揺したいときに最適なエンタメ通知を提供します。

# 使い方
- 明示呼び出し: `/random-os-motivational-quote-notifier` または `/skill random-os-motivational-quote-notifier notify`
- 暗黙発動: 「やる気」「進捗」「バグ」「モチベーション」などの単語を含む会話やコマンド実行時に自動で発動
- CLIからは `python notifier.py notify` で即時通知

# 出力例
```
$ python notifier.py notify
[通知] OS格言: コードは寝かせて美味しくなる

$ python notifier.py list
1. 本日もバグに感謝せよ
2. 進捗ゼロ、それもまた進化
3. コードは寝かせて美味しくなる
...
```

# 注意点
- 通知はローカルOSの通知機能を利用します(Windows/macOS/Linux対応)
- 通知内容や履歴はローカルにのみ保存され、外部送信はありません
- 長時間の連続通知や大量発動にはご注意ください
- Python 3.8以降、`plyer`または`notify2`などの通知ライブラリが必要です

# 参考資料
- references/design_notes.md
- https://plyer.readthedocs.io/en/latest/
- https://docs.python.org/3/library/random.html

scripts/notifier.py

import sys
import os
import random
import argparse
import platform
from datetime import datetime

try:
    if platform.system() == 'Darwin':
        import subprocess
    elif platform.system() == 'Windows':
        from plyer import notification
    elif platform.system() == 'Linux':
        import notify2
except ImportError:
    pass

QUOTES = [
    "本日もバグに感謝せよ",
    "進捗ゼロ、それもまた進化",
    "コードは寝かせて美味しくなる",
    "仕様書は読むものではなく感じるもの",
    "エラーは成長の証",
    "OSの気分で挙動が変わる、それが真理",
    "デバッグは心の旅路",
    "動けば正義、止まれば哲学",
    "リファクタリングは永遠の未完成",
    "ログは未来への手紙",
    "バグは愛、修正は義務",
    "今日の進捗は明日の肥やし",
    "無駄な最適化は人生のスパイス",
    "テストコードは裏切らない",
    "コミットメッセージは詩である"
]

HISTORY_FILE = os.path.join(os.path.expanduser("~"), ".random_os_motivational_history.txt")


def show_notification(message):
    system = platform.system()
    if system == 'Darwin':
        try:
            subprocess.run([
                'osascript', '-e', f'display notification "{message}" with title "OS格言"'
            ], check=True)
        except Exception as e:
            print(f"[ERROR] 通知失敗: {e}")
    elif system == 'Windows':
        try:
            notification.notify(
                title='OS格言',
                message=message,
                app_name='Random OS Motivational Quote Notifier',
                timeout=6
            )
        except Exception as e:
            print(f"[ERROR] 通知失敗: {e}")
    elif system == 'Linux':
        try:
            notify2.init('Random OS Motivational Quote Notifier')
            n = notify2.Notification('OS格言', message)
            n.set_timeout(6000)
            n.show()
        except Exception as e:
            print(f"[ERROR] 通知失敗: {e}")
    else:
        print(f"[通知] OS格言: {message}")


def get_random_quote():
    return random.choice(QUOTES)


def save_history(quote):
    now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    try:
        with open(HISTORY_FILE, 'a', encoding='utf-8') as f:
            f.write(f"[{now}] {quote}\n")
    except Exception as e:
        print(f"[ERROR] 履歴保存失敗: {e}")


def list_quotes():
    for idx, q in enumerate(QUOTES, 1):
        print(f"{idx}. {q}")


def show_history():
    if not os.path.exists(HISTORY_FILE):
        print("履歴がありません。")
        return
    try:
        with open(HISTORY_FILE, 'r', encoding='utf-8') as f:
            lines = f.readlines()
            if not lines:
                print("履歴がありません。")
                return
            for line in lines[-20:]:
                print(line.strip())
    except Exception as e:
        print(f"[ERROR] 履歴読み込み失敗: {e}")


def clear_history():
    try:
        if os.path.exists(HISTORY_FILE):
            os.remove(HISTORY_FILE)
            print("履歴を削除しました。")
        else:
            print("履歴ファイルがありません。")
    except Exception as e:
        print(f"[ERROR] 履歴削除失敗: {e}")


def notify():
    quote = get_random_quote()
    show_notification(quote)
    save_history(quote)
    print(f"[通知] OS格言: {quote}")


def main():
    parser = argparse.ArgumentParser(description='Random OS Motivational Quote Notifier')
    subparsers = parser.add_subparsers(dest='command')

    notify_parser = subparsers.add_parser('notify', help='ランダムなOS格言を通知')
    list_parser = subparsers.add_parser('list', help='格言一覧を表示')
    history_parser = subparsers.add_parser('history', help='通知履歴を表示')
    clear_parser = subparsers.add_parser('clear', help='通知履歴を削除')

    args = parser.parse_args()
    if not args.command:
        parser.print_help()
        sys.exit(0)

    if args.command == 'notify':
        notify()
    elif args.command == 'list':
        list_quotes()
    elif args.command == 'history':
        show_history()
    elif args.command == 'clear':
        clear_history()
    else:
        parser.print_help()

if __name__ == '__main__':
    main()

references/design_notes.md

# 概要
このSkillは、作業の合間やモチベーションに関するキーワード出現時に、OSの通知機能を使って“謎のOS偽モチベーション格言”をランダム表示するエンタメ系ツールです。日常の開発現場にちょっとした笑いや動揺をもたらします。

# 公式ドキュメント抜粋
- [plyer通知API](https://plyer.readthedocs.io/en/latest/)
- [notify2 (Linux)](https://pypi.org/project/notify2/)
- [Python random](https://docs.python.org/3/library/random.html)

# 利用例
- `python notifier.py notify` で即座に格言を通知
- `/random-os-motivational-quote-notifier` コマンドでAI経由実行
- チームでの朝会や進捗報告時のネタとして活用

# 注意点
- 通知はローカル環境に限定され、外部送信はありません
- OSごとに通知ライブラリが異なるため、事前に`pip install plyer notify2`等が必要
- 格言リストはスクリプト内で編集可能

# 設計方針
- OS判定によるクロスプラットフォーム対応
- 履歴ファイルによる通知記録(ホームディレクトリ直下)
- シンプルなCLIサブコマンド設計で導入・削除も容易

導入手順

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

1. 前提

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

2. degit でフォルダ取得

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

npx degit aazutaku/ai-note/claude-code/random-os-motivational-quote-notifier .claude/skills/random-os-motivational-quote-notifier

.claude/skills/random-os-motivational-quote-notifier の中に SKILL.md / scripts/ / references/ / README.md が展開されます。

3. ファイル配置確認

ls .claude/skills/random-os-motivational-quote-notifier
# SKILL.md, scripts/, references/, README.md があればOK

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

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

5. 動作確認

/random-os-motivational-quote-notifier で呼び出すか、自然言語で発動条件にマッチする指示を出すと 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 を取りたい
  • 気分転換したい時: 作業が煮詰まったタイミングで、AI coding workflow に一瞬の笑いとリフレッシュを加えたい

気になるポイント (壊れそうな箇所)

実運用に乗せる前に頭に入れておきたい懸念。後で検証する観点でもある:

  • 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
  • 通知が出ない環境: OS通知機能が制限されている場合は効果が薄い

試す前に確かめたいこと

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

  • 実 repo での token 消費は許容範囲か?
  • monorepo (packages 多数) で安定して動くか?
  • stale context にならず、長時間 workflow でも有効か?
  • CLAUDE.md との連携設計はどうあるべきか?
  • 通知表示が確実に出ること(OS側の設定も含めて)
  • 格言が毎回ランダムで切り替わるか(固定化しないか)
  • 短時間で導入・削除できるシンプル設計になっているか

実際に Claude Code で試した検証ログは Claude Codeで謎のOS偽モチベーション格言を通知してみた! にまとめる予定 (公開準備中の場合あり)。
あわせて Claude Code 公式ドキュメント と、本シリーズ「Claude Codeを便利にするSkill提案」の他記事も参照のこと。

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

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

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

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