Claude Codeで開発現場の緊張を和らげる通知演出の作り方

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

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が自動生成してくれる
  • 通知内容が毎回完全ランダムなので、何度使っても新鮮な驚きがある
QUICK INSTALL
この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記事を探す

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

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

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