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に「遊び心」を手軽に追加できる
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記事を探す
本記事に付いているタグから、気になるテーマの記事を探せます。タグページで関連記事をまとめて読めるので、ぜひチェックしてみてください!
