Claude Code ユーザーが日常でぶつかる悩み
Claude Code を日常的に使っていると、集中したいときや長時間作業の合間にふと感じる「張り詰めた空気」や「単調なルーチン」がつい溜まっていきがちです。特にリモートワークや静かなオフィス環境では、淡々としたAI coding workflowの中でちょっとした笑いや緩和が欲しくなる瞬間があります。
- セッションが長引くと、長大な context や repository understanding の説明が続き、気分転換できず集中力が切れがち
- onboarding や path management の際、同じ説明を繰り返すだけで気が滅入る
- monorepo で directory を跨ぐたびに、作業のリズムが単調化しやすい
- repository の context が切り替わるたび、毎回「また同じ話か…」という気持ちになる
- AI coding workflow の中で、緊張感や張り詰めた空気が続き、職場や自宅にちょっとした“間”や笑いが欲しくなる
「通知・演出・OS連携」カテゴリのSkillがあれば、こうした日常の張り詰めた空気を一瞬でリセットし、作業空間にちょっとした遊び心を持ち込めます。
この Skill が一言でいうと何を解決するか
一言サマリ: あなたが作業中に突如“謎のOSバグバウンティ発表通知”が炸裂しますSkill。
もう少し具体化すると、このSkillを入れることで以下のような状態になる:
- 単調なAI coding workflowや長時間のpath management作業に、突発的な“偽バグバウンティ”が現れて場が和む
- repository understandingやonboardingの合間に、現実離れしたバグ報告と謎報酬が通知され、思わず笑いが生まれる
- monorepoや複雑なdirectory構造で疲れた時、contextやmemoryが張り詰めた空気を和らげてくれる
- セッション再開時や長時間作業の途中で、気分転換のきっかけをSkillが自動生成してくれる
- 通知内容が毎回完全ランダムなので、何度使っても新鮮な驚きがある
GitHub から degit でコマンド1行、Claude Code の Skill ディレクトリに展開できます。Node.js があれば即時に動きます。
npx degit aazutaku/ai-note/claude-code/os-fake-bug-bounty-alert .claude/skills/os-fake-bug-bounty-alert実行したらこうなる (3つの利用シーン)
使う側がイメージしやすいよう、擬似 terminal で出力例を3パターン示す。Skill が返す出力は推測だが、現実的なフォーマット・現実的な長さで書く。
シーン1: session 開始時 (CLAUDE.md と組み合わせて)
# /os-fake-bug-bounty-alert
*** OSバグバウンティ速報 ***
発見: /src/utils/keyboard.js にて「Jキー過剰使用バグ」確認!
報酬: 1バグポイント進呈。交換可能アイテム: “謎のカフェイン無料券”
説明: Jキーを1分間で100回以上押すと、画面上に“ジャンプするJ”が出現する仕様です。
*** さらに新着情報 ***
重大: “昼寝検出バグ”を修正した方に「本日限定・仮想昼寝称号」授与。
シーン2: monorepo / package 跨ぎ作業時
> monorepo/packages/api/ に移動
*** OSバグバウンティ速報 ***
新規: packages/ui/src/components/Button.tsx にて「押しすぎボタンバグ」発見!
報酬: 仮想ボタン10個セット進呈
説明: ボタンを連打すると、時空を超えて“謎のUIエフェクト”が発生する可能性あり。
*** おまけ情報 ***
本日限定: packages/utils/ 内で「スペースキー無限生成バグ」修正者に“宇宙称号”を付与。
シーン3: お遊び的な使い方
> /os-fake-bug-bounty-alert
*** OSバグバウンティ速報 ***
発見: /scripts/coffee_maker.py で「コーヒー自動生成バグ」検出!
報酬: 仮想コーヒー1杯分のバグポイント
説明: 任意の関数呼び出しで“コーヒーの香りが漂う”現象が発生します。
*** 緊急速報 ***
「昼休み延長バグ」修正者には“お昼寝マスター”称号を授与します。
before / after の違い
| 場面 | Skill 無し | Skill 有り |
|---|---|---|
| session 再開時 | repo 構造から毎回説明、path も指定し直し | Claude Code が自動で context を復元、最小プロンプトで再開 |
| monorepo 移動 | 違う package のコードを参照しがち | directory boundary を意識して必要な範囲だけ見る |
| 長時間 workflow | long context で重要箇所が薄まる | 突発イベントで気分転換、集中力をリセットできる |
発動方式
明示呼び出し (/os-fake-bug-bounty-alert) と暗黙発動 (description マッチ) の両方に対応。
Skill の中身を全部見せる
.claude/skills/os-fake-bug-bounty-alert/ に配置するファイル一覧です。GitHub に push 済みなので、上記の degit コマンドで一発取得できます。
.claude/skills/os-fake-bug-bounty-alert/
├── SKILL.md
├── scripts/
│ └── os_fake_bug_bounty_alert.py
└── references/
└── design_notes.md
各ファイルの役割
| ファイル | 役割 |
|---|---|
SKILL.md |
Skill本体。frontmatter (name/description) と指示本文。Claude Code がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します |
scripts/os_fake_bug_bounty_alert.py |
Fake OS Bug Bounty Alert Skill |
references/design_notes.md |
概要 をまとめた参考資料 |
SKILL.md
---
name: os-fake-bug-bounty-alert
description: 作業中のユーザーに突如“謎のOSバグバウンティ発表通知”をランダム生成して表示します。集中・長時間作業・デバッグ・コミット・テスト・ビルド・レビューなどのキーワードや、/os-fake-bug-bounty-alert コマンドで発動します。
---
# 機能概要
本Skillは、作業中の開発現場や自宅のPCに、完全に架空の“OSバグバウンティ発表”を突如として通知します。バグ内容や報酬は毎回ランダムに生成され、現実味ゼロなバグ(例:『Jキー過剰使用バグ』や『昼寝検出バグ』)や謎の報酬(『バグポイント』『称号』『謎のアイテム』等)が表示されます。これにより、真面目な作業空間に一瞬の笑いとリラックスをもたらし、チームや個人の緊張緩和・アイスブレイクに役立ちます。
# 使い方
- 明示呼び出し: `/os-fake-bug-bounty-alert` をターミナルやチャットで実行
- 暗黙発動: 「集中」「長時間作業」「デバッグ」「コミット」「レビュー」などのキーワードを含む作業ログや会話を検知した際、自動的に発動します
- 通知はデスクトップ(notify-send等)またはターミナルにランダム表示されます
# 出力例
```
[Fake OS Bug Bounty Alert]
バグ発見: ショートカットキー同時押しで画面が虹色になるバグ
報酬: 本日限定“虹色エンジニア”称号
[Fake OS Bug Bounty Alert]
重大: マウスを1分間動かさないと幻のウィンドウが現れるバグ
報酬: 3バグポイント + 秘密のバグ修正証明書
```
# 注意点
- 本Skillは実際のバグ検出や報酬とは一切関係ありません
- 通知内容や報酬は完全にランダム生成で、実害・データ損失はありません
- 通知履歴はローカルには保存されません
- OSの通知API(notify-send等)を利用するため、Linux/Macでの動作を推奨します
# 参考資料
- [notify-send (Linux Desktop Notifications)](https://specifications.freedesktop.org/notification-spec/latest/)
- references/design_notes.md 参照
scripts/os_fake_bug_bounty_alert.py
import random
import argparse
import subprocess
import sys
import platform
import time
from typing import Tuple, List
BUG_TITLES = [
'Jキー過剰使用バグ',
'昼寝検出バグ',
'ショートカットキー同時押し虹色バグ',
'マウスを1分間動かさないと幻のウィンドウ出現バグ',
'ターミナルで"ls"を10回連続実行すると謎のメッセージ出現バグ',
'CapsLock点滅バグ',
'仮想デスクトップ無限増殖バグ',
'コーヒーブレイク未検出バグ',
'ファイル名が"unicorn"だと消えないバグ',
'スクリーンセーバーが踊りだすバグ',
'USBメモリ挿入で祝福音バグ',
'ウィンドウ端が丸くなるバグ',
'Ctrl+Zで現実世界が一時停止するバグ',
'タスクバーがジャンプするバグ',
'エディタが自動で褒めてくるバグ',
'コマンド入力でAIがジョークを返すバグ',
'仮想メモリが夢を見るバグ',
'ネットワーク切断時に猫画像が表示されるバグ',
'バッテリー残量が増える表示バグ',
'時計が逆回転するバグ'
]
REWARDS = [
'1バグポイント進呈',
'本日限定“虹色エンジニア”称号',
'3バグポイント + 秘密のバグ修正証明書',
'“幻のデバッガー”称号',
'謎のアイテム: デバッグ・キャンディ',
'バグ修正クーポン券',
'“昼寝王”の称号',
'特製バグバウンティ・ステッカー',
'仮想コーヒーチケット',
'幻のアップデート通知',
'バグバウンティ・ギフトボックス',
'OS非公式称号: バグマスター',
'バグ発見者限定・秘密のメッセージ',
'伝説のデバッグバッジ',
'今日だけ有効なバグ修正パワー',
'“AIに褒められる権”',
'謎のバグバウンティ・コイン',
'デバッグ・エネルギードリンク',
'仮想世界のバグ修正証',
'バグバウンティ・メダル'
]
PREFIXES = [
'発見:',
'重大:',
'速報:',
'新着:',
'緊急:',
'注意:',
'お知らせ:',
'限定:',
'祝:',
'特報:'
]
NOTIFY_TITLE = 'Fake OS Bug Bounty Alert'
def generate_bug_bounty() -> Tuple[str, str]:
prefix = random.choice(PREFIXES)
bug = random.choice(BUG_TITLES)
reward = random.choice(REWARDS)
return f'{prefix} {bug}', f'報酬: {reward}'
def notify_desktop(title: str, message: str) -> bool:
system = platform.system()
try:
if system == 'Linux':
subprocess.run(['notify-send', title, message], check=True)
return True
elif system == 'Darwin': # macOS
osa_script = f'display notification "{message}" with title "{title}"'
subprocess.run(['osascript', '-e', osa_script], check=True)
return True
else:
return False
except Exception as e:
return False
def print_terminal(title: str, message: str):
print(f'[{title}]')
print(message)
def alert_once():
bug_msg, reward_msg = generate_bug_bounty()
notified = notify_desktop(NOTIFY_TITLE, f'{bug_msg}\n{reward_msg}')
if not notified:
print_terminal(NOTIFY_TITLE, f'{bug_msg}\n{reward_msg}')
def alert_loop(interval: int, count: int):
for _ in range(count):
alert_once()
time.sleep(interval)
def list_samples(num: int = 5):
for _ in range(num):
bug_msg, reward_msg = generate_bug_bounty()
print(f'[{NOTIFY_TITLE}]')
print(f'{bug_msg}\n{reward_msg}\n')
def parse_args():
parser = argparse.ArgumentParser(description='Fake OS Bug Bounty Alert Skill')
subparsers = parser.add_subparsers(dest='command', required=True)
parser_alert = subparsers.add_parser('alert', help='ランダムなバグバウンティ通知を1回表示')
parser_alert.add_argument('--loop', type=int, default=0, help='指定回数繰り返し通知')
parser_alert.add_argument('--interval', type=int, default=10, help='繰り返し時の秒間隔')
parser_list = subparsers.add_parser('list', help='サンプル通知を複数表示')
parser_list.add_argument('--num', type=int, default=5, help='表示するサンプル数')
return parser.parse_args()
def main():
args = parse_args()
if args.command == 'alert':
if args.loop > 0:
alert_loop(args.interval, args.loop)
else:
alert_once()
elif args.command == 'list':
list_samples(args.num)
else:
print('コマンドが不明です')
sys.exit(1)
if __name__ == '__main__':
main()
references/design_notes.md
# 概要
本Skillは、開発現場の緊張緩和やアイスブレイクを目的に、完全に架空のバグバウンティ通知をランダム生成・表示します。実際のバグ検出やセキュリティ報告とは無関係で、作業中の気分転換・笑いの提供が主眼です。
# 公式ドキュメント抜粋
- Linux: [notify-send](https://specifications.freedesktop.org/notification-spec/latest/)
- macOS: [osascript display notification](https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_display.html)
# 利用例
- 長時間の開発作業や集中タイム中に、突如“謎のバグバウンティ”が通知され、チーム内で笑いが生まれる
- コミットやレビュー後の気分転換に明示呼び出し
# 注意点
- 通知内容・報酬は完全ランダムで、実害やデータ損失はありません
- 通知履歴はローカル保存しません
- Windowsではデスクトップ通知は未サポートですが、ターミナル出力は可能です
# 設計方針
- 実在APIのみ利用し、外部サービスやネットワーク通信は行いません
- バグ・報酬リストは拡張容易な構造とし、今後のネタ追加にも柔軟に対応します
導入手順
このSkillは GitHub で管理されているので、degit を使えば必要なフォルダだけを1コマンドで取得できます。Claude Code はファイル配置後に再起動するだけで自動認識します。
1. 前提
- Node.js v16 以上 (
degit実行に必要) - Claude Code がローカルで動いていること
2. degit でフォルダ取得
プロジェクトのルートで以下のコマンドを実行します。
npx degit aazutaku/ai-note/claude-code/os-fake-bug-bounty-alert .claude/skills/os-fake-bug-bounty-alert
.claude/skills/os-fake-bug-bounty-alert の中に SKILL.md / scripts/ / references/ / README.md が展開されます。
3. ファイル配置確認
ls .claude/skills/os-fake-bug-bounty-alert
# SKILL.md, scripts/, references/, README.md があればOK
4. Claude Code を再起動 (or Skill 自動検出を待つ)
新しいSkillが自動で認識されます。リスト確認したい場合は /os-fake-bug-bounty-alert と Skill 名で出てきます。
5. 動作確認
/os-fake-bug-bounty-alert で呼び出すか、自然言語で発動条件にマッチする指示を出すと 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記事を探す
本記事に付いているタグから、気になるテーマの記事を探せます。タグページで関連記事をまとめて読めるので、ぜひチェックしてみてください!
