Claude Codeで開発現場に笑いを届ける通知演出Skillの作り方

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

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

開発現場で Claude Code を使い込んでいると、集中が途切れたり、長時間の作業で疲労感が蓄積したりする瞬間が少なくありません。特にリポジトリ構造や context の管理に気を取られがちな中、空気が張り詰めてしまうことも。そんな時、ちょっとした遊び心やリフレッシュ要素が欲しいと感じるシーンは意外と多いものです。

  • Claude Code で長時間作業していると、単調な workflow になりがちで集中力が切れる
  • monorepo の複雑な directory 構造や path management に意識が向きすぎて、場の雰囲気が硬直化する
  • repository understanding に没頭していると、チーム内でちょっとした笑いが欲しくなる瞬間がある
  • onboarding の説明や重要な context 記述が続くと、メンバーの緊張感が高まりすぎてしまう
  • AI coding workflow の会話が真面目一辺倒になり、気分転換のきっかけがなくなる

通知・演出・OS連携ジャンルの Skill を組み込むことで、こうした「空気を和ませたい」「場を和らげたい」というニーズに応えられる余地があります。

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

一言サマリ: このスキルは、開発現場に“謎のOSブルースクリーン風”ネタ通知をランダムで炸裂させ、緊張感や単調さを一瞬でリセットします。

もう少し具体化すると、このSkillを入れることで以下のような状態になる:

  • Claude Code の AI coding workflow の合間に、遊び心ある通知で場の空気を和ませられる
  • 長時間 session でも、ネタ系ブルースクリーン通知でメンバーの集中力をリフレッシュ
  • monorepo や複雑な repository でも、path management の合間にちょっとした笑いを投入できる
  • onboarding や repository understanding の説明中でも、堅苦しさを和らげる効果が得られる
  • Skill の内容が毎回ランダムで変わるため、飽きずに使い続けられる
QUICK INSTALL
このSkillをすぐ試す

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

npx degit aazutaku/ai-note/claude-code/random-os-fake-bluescreen-notifier .claude/skills/random-os-fake-bluescreen-notifier

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

使う側がイメージしやすいよう、擬似 terminal で出力例を3パターン示す。Skill が返す出力は推測だが、現実的なフォーマット・現実的な長さで書く。

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


# /random-os-fake-bluescreen-notifier

[FAKE BSOD NOTIFICATION]
エラー: コーヒーブレイク不足
STOP CODE: TAKE_A_BREAK_NOW
ヒント: 5分休憩してから repository understanding を再開してください。
(この通知はジョークです。作業への影響はありません)

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


> /random-os-fake-bluescreen-notifier

[FAKE BSOD NOTIFICATION]
STOP CODE: CAT_ON_KEYBOARD
原因: packages/utils/ ディレクトリで猫が Enter キーを押しました
対策: キーボードから猫を優しく降ろしてください。
(本通知はネタです。Claude Code の path management には影響しません)

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


> /random-os-fake-bluescreen-notifier

[FAKE BSOD NOTIFICATION]
エラー: 眠気の暴走が検出されました
STOP CODE: SLEEPY_DEVELOPER
提案: 目薬を差すか、ストレッチをしてください
(このブルースクリーンは本物ではありません)

before / after の違い

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

発動方式

明示呼び出し (/random-os-fake-bluescreen-notifier) と暗黙発動 (「ブルースクリーン出して」「面白い通知」などの自然言語トリガー) の両方に対応。

Skill の中身を全部見せる

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

.claude/skills/random-os-fake-bluescreen-notifier/
├── SKILL.md
├── scripts/
│   └── fake_bluescreen_notifier.py
└── references/
    └── design_notes.md

各ファイルの役割

ファイル 役割
SKILL.md Skill本体。frontmatter (name/description) と指示本文。Claude Code がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します
scripts/fake_bluescreen_notifier.py random-os-fake-bluescreen-notifier: ネタ系ブルースクリーン風通知を表示します。
references/design_notes.md 概要 をまとめた参考資料

SKILL.md

---
name: random-os-fake-bluescreen-notifier
description: このSkillは「ブルースクリーン」「エラー通知」「集中力低下」「作業中の息抜き」などのキーワードや、/random-os-fake-bluescreen-notifier コマンドで発動します。開発現場にユーモラスな通知を届けたい時に最適です。
---

# 機能概要
`random-os-fake-bluescreen-notifier`は、作業中のデスクトップに“謎のOSブルースクリーン風”のネタ通知をランダムに表示するSkillです。通知内容は毎回異なり、「STOP CODE: 眠気の暴走」「エラー: コーヒーブレイク不足」など、実害のないユーモア溢れるメッセージが特徴です。開発現場やチーム作業の緊張感を和らげ、ちょっとした息抜きや話題作りに役立ちます。本物のBSoDとは明確に異なるデザイン・文言で、誤認や混乱を防ぎます。

# 使い方
- 明示的な呼び出し: `/random-os-fake-bluescreen-notifier` コマンドを実行
- 暗黙発動: 「ブルースクリーン」「エラー通知」「集中力低下」「眠気」などのキーワードが会話やコード中に現れた際に自動発動

# 出力例
```
[FAKE-OS-BLUESCREEN]
STOP CODE: 眠気の暴走
エラー: コーヒーブレイク不足
原因: キーボードに猫が乗りました
ヒント: 立ち上がってストレッチしましょう
---
これは本物のエラーではありません。安心して作業を続けてください。
```

# 注意点
- 本Skillは通知表示のみで、システムやファイルには一切変更を加えません。
- 本物のOSエラー画面と誤認されないよう、明確に「FAKE」や注意書きを付与しています。
- ローカル保存やログ出力は行いません。
- 実際の障害やエラー対応には使用しないでください。

# 参考資料
- references/design_notes.md
- https://docs.python.org/ja/3/library/tkinter.html
- https://www.microsoft.com/en-us/windows/

scripts/fake_bluescreen_notifier.py

import sys
import argparse
import random
import threading
import time
import tkinter as tk
from tkinter import messagebox

FAKE_TITLES = [
    'STOP CODE: 眠気の暴走',
    'STOP CODE: コーヒーブレイク不足',
    'STOP CODE: キーボードに猫が乗りました',
    'STOP CODE: デバッグ過多エラー',
    'STOP CODE: 仕様変更検出',
    'STOP CODE: タイポ発生',
    'STOP CODE: 無限ループ警告',
    'STOP CODE: リリース恐怖症',
    'STOP CODE: 進捗ゼロ',
    'STOP CODE: ネットワーク遅延'
]

FAKE_MESSAGES = [
    'エラー: コーヒーブレイク不足',
    '原因: キーボードに猫が乗りました',
    'ヒント: 立ち上がってストレッチしましょう',
    '推奨: 5分間の休憩を取りましょう',
    'エラー: 仕様書未読',
    '警告: コードレビュー未実施',
    '原因: 眠気の暴走',
    'ヒント: 深呼吸してみましょう',
    '警告: コーヒー残量低下',
    '原因: Slack通知過多'
]

FAKE_HINTS = [
    'これは本物のエラーではありません。安心して作業を続けてください。',
    'この通知はジョークです。ご安心ください。',
    '冗談通知です。本物のブルースクリーンではありません。',
    '作業の合間に一息つきましょう。',
    '本Skillはシステムに影響を与えません。'
]


def generate_fake_bluescreen():
    title = random.choice(FAKE_TITLES)
    messages = random.sample(FAKE_MESSAGES, k=3)
    hint = random.choice(FAKE_HINTS)
    lines = ['[FAKE-OS-BLUESCREEN]', title]
    lines.extend(messages)
    lines.append('---')
    lines.append(hint)
    return '\n'.join(lines)


def show_bluescreen_gui(message, duration=8):
    def on_close():
        root.destroy()

    root = tk.Tk()
    root.title('FAKE-OS-BLUESCREEN')
    root.configure(bg='#1E2B4F')
    root.geometry('600x340')
    root.resizable(False, False)
    # Remove window decorations
    root.overrideredirect(True)
    # Center window
    x = (root.winfo_screenwidth() // 2) - 300
    y = (root.winfo_screenheight() // 2) - 170
    root.geometry(f'+{x}+{y}')

    frame = tk.Frame(root, bg='#1E2B4F')
    frame.pack(expand=True, fill='both')

    label = tk.Label(
        frame,
        text=message,
        font=('Consolas', 14),
        fg='#E3E3E3',
        bg='#1E2B4F',
        justify='left',
        anchor='w'
    )
    label.pack(padx=24, pady=32, anchor='w')

    # Add a fake error icon
    icon = tk.Label(
        frame,
        text=':(',
        font=('Arial', 48, 'bold'),
        fg='#3FA9F5',
        bg='#1E2B4F'
    )
    icon.place(x=24, y=16)

    # Add close button
    close_btn = tk.Button(
        frame,
        text='閉じる',
        command=on_close,
        font=('Arial', 12),
        bg='#3FA9F5',
        fg='white',
        relief='flat',
        activebackground='#2167A9',
        activeforeground='white'
    )
    close_btn.place(x=500, y=280, width=70, height=32)

    # Auto-close after duration seconds
    root.after(duration * 1000, on_close)
    root.mainloop()


def print_bluescreen_terminal(message):
    print('\n' + message + '\n')


def handle_notify(args):
    message = generate_fake_bluescreen()
    if args.gui:
        try:
            show_bluescreen_gui(message)
        except Exception as e:
            print('GUI表示に失敗しました:', e)
            print_bluescreen_terminal(message)
    else:
        print_bluescreen_terminal(message)


def handle_sample(args):
    for _ in range(args.count):
        message = generate_fake_bluescreen()
        print_bluescreen_terminal(message)
        print('-' * 60)


def main():
    parser = argparse.ArgumentParser(
        description='random-os-fake-bluescreen-notifier: ネタ系ブルースクリーン風通知を表示します。'
    )
    subparsers = parser.add_subparsers(dest='command', help='サブコマンド')

    notify_parser = subparsers.add_parser('notify', help='ブルースクリーン風通知を表示')
    notify_parser.add_argument('--gui', action='store_true', help='GUIで表示 (Tkinter)')
    notify_parser.set_defaults(func=handle_notify)

    sample_parser = subparsers.add_parser('sample', help='ランダムメッセージを複数生成し標準出力')
    sample_parser.add_argument('--count', type=int, default=3, help='生成数 (デフォルト: 3)')
    sample_parser.set_defaults(func=handle_sample)

    args = parser.parse_args()
    if hasattr(args, 'func'):
        args.func(args)
    else:
        parser.print_help()

if __name__ == '__main__':
    main()

references/design_notes.md

# 概要
このSkillは、開発現場の緊張を和らげるための“ネタ系通知”として設計されています。実際のエラーやシステム障害と誤認されないよう、明確なFAKE表示や注意書きを付与し、ユーザーの混乱を防ぎます。

# 公式ドキュメント抜粋
Tkinter公式ドキュメント: https://docs.python.org/ja/3/library/tkinter.html

# 利用例
- チームの休憩タイミングに合わせて明示呼び出し
- 「眠気」「エラー」などの会話キーワードで自動発動
- オンライン勉強会やハッカソンでのアイスブレイク

# 注意点
- 本Skillは通知表示のみで、システムやファイルへの変更は一切行いません。
- 本物のエラー画面と誤認されないよう、色・文言・注意書きで差別化しています。

# 設計方針
- 毎回異なるランダムメッセージ生成
- GUIとターミナル両対応
- ログや履歴は残さず、セキュリティ・プライバシーに配慮

導入手順

この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-bluescreen-notifier .claude/skills/random-os-fake-bluescreen-notifier

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

3. ファイル配置確認

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

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

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

5. 動作確認

/random-os-fake-bluescreen-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 との連携設計はどうあるべきか?
  • 通知内容が毎回ランダムで面白いネタになっているか?
  • 本物の OS ブルースクリーンと誤認されるリスクはないか?
  • 実行時に環境やデータへ一切悪影響を及ぼさないことが保証されているか?

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

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

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

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

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