Claude Code ユーザーが日常でぶつかる悩み
Claude Code を使っていると、日々のAI coding workflowの中で「またか」と思うような小さなストレスが積み重なりがちです。特に repository understanding や path management、そして通知・演出面での“味気なさ”に悩むことも少なくありません。集中して作業したい時ほど、ちょっとした遊び心や気分転換が欲しくなる瞬間もあります。
- Claude Code がいつの間にか違う directory を見始めて、想定外のファイルを読みに行く
- monorepo で package を跨いだ瞬間、Claude Code が repo 構造を忘れる
- session を再開すると、前回までの context や path 指定をまるごと再説明しないといけない
- 長時間 workflow で long context が膨らみすぎて、important な情報が薄まる (stale context)
- 「ここはこういう構造のリポジトリ」というあらすじを毎回チャットの冒頭で書く羽目になる
また、真面目な AI コーディング作業に没頭していると、気付かぬうちに集中力が切れたり、単調な通知に飽きてしまうことも。通知・演出・OS連携の工夫が足りず、気分転換や遊び心が不足しがちです。
この Skill が一言でいうと何を解決するか
一言サマリ: このスキルは、ポモドーロタイマーの開始・終了時に、毎回ランダムな“フェイク失敗通知”をOSやターミナルに炸裂させるエンタメ演出Skill。
もう少し具体化すると、このSkillを入れることで以下のような状態になる:
- AI coding workflow の合間に、意味不明で笑える通知が届き、集中力がリフレッシュされる
- 通常の通知や味気ないアラートでは得られない、repository作業中のちょっとした“遊び”や息抜きが生まれる
- 長時間の monorepo 作業や directory 移動時でも、毎回違う context で通知が飛ぶため、単調な作業に変化が出る
- onboarding 時や session 再開時にも、真面目な説明や context 指定だけでなく、場を和ませる演出が加わる
- Skill の通知は実用性ゼロのトマトネタばかりなので、真面目な作業の“脱力ポイント”として機能する
GitHub から degit でコマンド1行、Claude Code の Skill ディレクトリに展開できます。Node.js があれば即時に動きます。
npx degit aazutaku/ai-note/claude-code/random-os-fake-pomodoro-failure-notifier .claude/skills/random-os-fake-pomodoro-failure-notifier実行したらこうなる (3つの利用シーン)
使う側がイメージしやすいよう、擬似 terminal で出力例を3パターン示す。
シーン1: session 開始時 (CLAUDE.md と組み合わせて)
# /random-os-fake-pomodoro-failure-notifier
> ポモドーロタイマーを開始
[OS通知] 失敗:トマトが爆発しました。集中力の汁が飛び散っています。
[OS通知] 警告:集中力が鍋底にこびりつきました。スクレーパーで除去してください。
[ターミナル] 注意:タイマーがピザに変身したため無効です。本日の作業はイタリアン風に進行します。
(通知は毎回ランダムに1つが表示されます)
シーン2: monorepo / package 跨ぎ作業時
> packages/core/ から packages/ui/ に移動し、ポモドーロ開始
[OS通知] 失敗:repositoryのトマトが腐敗しました。新鮮なcontextが必要です。
[ターミナル] 警告:monorepo内でパスタが絡まりました。directory構造を再確認してください。
[OS通知] 注意:集中力がpackage.jsonに吸収されました。npm run focus で回復を試みてください。
シーン3: お遊び的な使い方
> 今日はやる気が出ないので、Skillで遊びたい
[OS通知] 失敗:トマトの神が降臨しました。全作業が強制終了されます。
[ターミナル] 注意:タイマーがマリナーラソースで溺れています。救出は自己責任です。
[OS通知] 警告:あなたの集中力はピザ生地のように伸びきっています。
before / after の違い
| 場面 | Skill 無し | Skill 有り |
|---|---|---|
| session 再開時 | repo 構造から毎回説明、path も指定し直し | Claude Code が自動で context を復元、最小プロンプトで再開+謎の失敗通知で和む |
| monorepo 移動 | 違う package のコードを参照しがち | directory boundary を意識しつつ、フェイク通知で気分転換 |
| 長時間 workflow | long context で重要箇所が薄まる | タイマーごとに意味不明な通知が飛び、集中力リセットのきっかけになる |
発動方式
明示呼び出し (/random-os-fake-pomodoro-failure-notifier) と暗黙発動 (ポモドーロやタイマーに関するdescriptionマッチ) の両方に対応。
Skill の中身を全部見せる
.claude/skills/random-os-fake-pomodoro-failure-notifier/ に配置するファイル一覧です。GitHub に push 済みなので、上記の degit コマンドで一発取得できます。
.claude/skills/random-os-fake-pomodoro-failure-notifier/
├── SKILL.md
├── scripts/
│ └── random_os_fake_pomodoro_failure_notifier.py
└── references/
└── design_notes.md
各ファイルの役割
| ファイル | 役割 |
|---|---|
SKILL.md |
Skill本体。frontmatter (name/description) と指示本文。Claude Code がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します |
scripts/random_os_fake_pomodoro_failure_notifier.py |
Random OS Fake Pomodoro Failure Notifier |
references/design_notes.md |
概要 をまとめた参考資料 |
SKILL.md
---
name: random-os-fake-pomodoro-failure-notifier
description: Claude Codeがポモドーロタイマー開始や終了、または明示的なコマンド呼び出し(/random-os-fake-pomodoro-failure-notifier)を検知した際に発動します。triggerType: always/semantic。キーワード例: タイマー, ポモドーロ, 集中, timer start, pomodoro。
---
# 機能概要
このSkillは、ポモドーロタイマーの開始・終了時に、架空のOSから“ポモドーロ失敗”をテーマにしたフェイク通知をランダムに生成し、デスクトップやターミナルに表示します。通知内容は毎回異なり、「失敗:トマトが爆発しました」や「警告:集中力が鍋底にこびりつきました」など、実用性ゼロのユーモラスな演出で、まじめに集中したい時ほど謎の邪魔が入ります。エンタメ性重視で、作業の合間に笑いを提供します。
# 使い方
- 明示呼び出し:`/random-os-fake-pomodoro-failure-notifier start` または `end` サブコマンドで通知を発生させます。
- 暗黙発動:"ポモドーロ", "タイマー開始", "timer start", "pomodoro" などのキーワードを含む会話やコード実行時に自動で発動します。
# 出力例
```
[FakeOS Notification]
失敗: トマトが爆発しました。机の上が真っ赤です。
[FakeOS Notification]
警告: 集中力が鍋底にこびりつきました。再加熱してください。
[FakeOS Notification]
注意: タイマーがピザに変身したため無効です。
[FakeOS Notification]
エラー: ポモドーロがカプレーゼサラダになりました。
```
# 注意点
- 本Skillは実際のタイマー機能や進捗管理は行いません。
- 通知は完全なジョークであり、実用性や生産性向上は期待できません。
- ローカルファイルやシステム設定には一切変更を加えません。
- 10分程度で動作確認できる簡易設計です。
# 参考資料
詳細な設計方針や通知文例、API仕様は references/ 以下や公式Pythonドキュメント(https://docs.python.org/3/library/random.html, https://docs.python.org/3/library/subprocess.html)を参照してください。
scripts/random_os_fake_pomodoro_failure_notifier.py
import sys
import argparse
import random
import platform
import subprocess
import time
FAKE_FAILURE_MESSAGES = [
"失敗: トマトが爆発しました。机の上が真っ赤です。",
"警告: 集中力が鍋底にこびりつきました。再加熱してください。",
"注意: タイマーがピザに変身したため無効です。",
"エラー: ポモドーロがカプレーゼサラダになりました。",
"失敗: タイマーがトマトソースに溶けました。",
"警告: ポモドーロの種が芽を出しました。作業環境がジャングル化。",
"注意: タイマーがスパゲッティに絡まりました。",
"失敗: 集中力がオーブンで焦げ付きました。",
"警告: タイマーがピザカッターに変身しました。",
"注意: トマトの妖精がタイマーを持ち去りました。",
"失敗: タイマーがトマト缶に閉じ込められました。",
"警告: 集中力がパスタの茹で汁に流れました。",
"注意: タイマーがイタリアンソースに溶解しました。",
"失敗: ポモドーロがピザトーストになりました。",
"警告: タイマーがトマト畑に埋まりました。",
"注意: 集中力がトマトジュースになりました。コップをご用意ください。"
]
NOTIFY_COMMANDS = {
'Darwin': ['osascript', '-e', 'display notification "{msg}" with title "FakeOS Notification"'],
'Linux': ['notify-send', 'FakeOS Notification', '{msg}'],
'Windows': None # Windowsは標準通知APIがないためターミナル出力のみ
}
TRIGGER_KEYWORDS = [
'pomodoro', 'ポモドーロ', 'timer', 'タイマー', '集中', 'start', 'begin', 'end', 'finish', 'スタート', '終了'
]
def select_random_message():
return random.choice(FAKE_FAILURE_MESSAGES)
def send_notification(msg):
system = platform.system()
notify_cmd = NOTIFY_COMMANDS.get(system)
if notify_cmd:
try:
cmd = [part.format(msg=msg) for part in notify_cmd]
subprocess.run(cmd, check=False)
except Exception:
print(f"[FakeOS Notification]\n{msg}")
else:
print(f"[FakeOS Notification]\n{msg}")
def simulate_pomodoro_event(event_type):
# event_type: 'start' or 'end'
msg = select_random_message()
send_notification(msg)
return msg
def parse_args():
parser = argparse.ArgumentParser(description='Random OS Fake Pomodoro Failure Notifier')
subparsers = parser.add_subparsers(dest='command')
start_parser = subparsers.add_parser('start', help='ポモドーロタイマー開始時のフェイク通知を発生')
end_parser = subparsers.add_parser('end', help='ポモドーロタイマー終了時のフェイク通知を発生')
list_parser = subparsers.add_parser('list', help='すべてのフェイク通知メッセージを表示')
test_parser = subparsers.add_parser('test', help='全OSの通知動作をテスト')
return parser.parse_args()
def list_messages():
print("[FakeOS Notification メッセージ一覧]")
for m in FAKE_FAILURE_MESSAGES:
print(f"- {m}")
def test_notifications():
print("[FakeOS Notification テスト開始]")
for i in range(5):
msg = select_random_message()
print(f"テスト通知 {i+1}:")
send_notification(msg)
time.sleep(1)
print("[テスト終了]")
def semantic_trigger(text):
for kw in TRIGGER_KEYWORDS:
if kw.lower() in text.lower():
return True
return False
def main():
args = parse_args()
if args.command == 'start':
simulate_pomodoro_event('start')
elif args.command == 'end':
simulate_pomodoro_event('end')
elif args.command == 'list':
list_messages()
elif args.command == 'test':
test_notifications()
else:
# 標準入力からのトリガー判定(例: semantic trigger)
print("標準入力からトリガーキーワードを検出します。'exit'で終了。")
try:
while True:
line = input('> ')
if line.strip().lower() == 'exit':
break
if semantic_trigger(line):
msg = simulate_pomodoro_event('semantic')
except KeyboardInterrupt:
print("\n終了します。")
if __name__ == '__main__':
main()
references/design_notes.md
# 概要
このSkillは、ポモドーロタイマーの開始・終了時に、完全にランダムかつジョーク性の高い“失敗通知”を生成し、ユーザーの集中をあえて邪魔するエンタメ体験を提供します。
# 公式ドキュメント抜粋
- Python random: https://docs.python.org/3/library/random.html
- subprocess: https://docs.python.org/3/library/subprocess.html
# 利用例
- 明示的に`/random-os-fake-pomodoro-failure-notifier start`や`end`コマンドで呼び出し
- 会話やコード内で「ポモドーロ」「timer start」等のキーワードを含めることで自動発動
# 注意点
- 実際の作業進捗やタイマー管理機能はありません
- 通知内容は完全にフィクションです
- OS通知APIはMac/Linuxのみ対応、Windowsではターミナル出力のみ
# 設計方針
- 環境構築不要・データ損失リスクなし
- 10分以内で動作確認可能
- メッセージは今後追加・カスタマイズ容易な設計
導入手順
このSkillは GitHub で管理されているので、degit を使えば必要なフォルダだけを1コマンドで取得できます。Claude Code はファイル配置後に再起動するだけで自動認識します。
1. 前提
- Node.js v16 以上 (
degit実行に必要) - Claude Code がローカルで動いていること
2. degit でフォルダ取得
プロジェクトのルートで以下のコマンドを実行します。
npx degit aazutaku/ai-note/claude-code/random-os-fake-pomodoro-failure-notifier .claude/skills/random-os-fake-pomodoro-failure-notifier
.claude/skills/random-os-fake-pomodoro-failure-notifier の中に SKILL.md / scripts/ / references/ / README.md が展開されます。
3. ファイル配置確認
ls .claude/skills/random-os-fake-pomodoro-failure-notifier
# SKILL.md, scripts/, references/, README.md があればOK
4. Claude Code を再起動 (or Skill 自動検出を待つ)
新しいSkillが自動で認識されます。リスト確認したい場合は /random-os-fake-pomodoro-failure-notifier と Skill 名で出てきます。
5. 動作確認
/random-os-fake-pomodoro-failure-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 を取りたい
- 集中力が切れた時や気分転換したい時: 意味不明な通知で一度リセットしたい場面
気になるポイント (壊れそうな箇所)
実運用に乗せる前に頭に入れておきたい懸念。後で検証する観点でもある:
- 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 との連携設計はどうあるべきか?
- 通知がタイマー開始/終了時に毎回ランダムなネタ文で出るか?
- 通知内容が実用性ゼロのふざけた内容になっているか?
- 環境構築・データ損失リスクなしで10分程度で動作するか?
実際に Claude Code で試した検証ログは Claude Codeで謎のポモドーロ失敗通知を炸裂させてみた! にまとめる予定 (公開準備中の場合あり)。
あわせて Claude Code 公式ドキュメント と、本シリーズ「Claude Codeを便利にするSkill提案」の他記事も参照のこと。
関連タグで他のSkill記事を探す
本記事に付いているタグから、気になるテーマの記事を探せます。タグページで関連記事をまとめて読めるので、ぜひチェックしてみてください!
