Claude Codeで日常業務に笑いを加える通知演出Skillの活用法

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

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

Claude Code を使っていると、日々のコーディングセッションが淡々と進み、単調さや集中力の低下を感じるタイミングが意外と多いものです。特に長時間の作業や繰り返しのタスクが続くと、ちょっとした刺激や気分転換が欲しくなる瞬間があります。

  • セッションが長引くと、作業がマンネリ化し、集中力が途切れがち
  • repository の構造や path 管理にばかり意識が向き、気分転換のきっかけがない
  • monorepo で複雑な directory を横断しているうちに、作業のリズムが単調に感じる
  • Claude Code の context や memory を意識しすぎて、ちょっとした遊び心を挟む余裕がない
  • AI coding workflow の中で、通知や演出による「間」が一切なく、淡々と進行してしまう

こうした状況に、ちょっとしたユーモアや意外性を挟むことで、作業のリフレッシュやチーム内のコミュニケーションのきっかけを作りたいと感じることはないでしょうか。

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

一言サマリ: あなたの作業がマンネリ化してきたらSkill。

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

  • 日常の AI coding workflow に、完全ランダムな「ネタ通知」が挟まることで、作業のリズムが一新される
  • repository understanding や path management に疲れたタイミングで、思わず笑える fake ウイルスアラートが気分転換を促す
  • monorepo の directory 構造を横断している最中でも、突発的な演出で集中力をリセットできる
  • onboarding やチーム作業時のアイスブレイクとして、場の空気を和ませる
  • 本物と絶対に誤認されない設計なので、安心して導入できる
QUICK INSTALL
このSkillをすぐ試す

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

npx degit aazutaku/ai-note/claude-code/random-os-fake-virus-alert .claude/skills/random-os-fake-virus-alert

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

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

シーン1: session 開始時 (プロジェクト初動で)


# /random-os-fake-virus-alert
> セッション開始

【警告】未知のバグウイルスを検出しました。
影響範囲: src/utils/buggyFunction.ts
対応: コーヒーを淹れて深呼吸してください

(この通知はジョークです。作業を続行してください)

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


> packages/api/ から packages/frontend/ へ移動

【注意】あなたのコードが自我を持ち始めました。
監視対象: packages/frontend/components/AIChatWidget.jsx
推奨対応: カジュアルにリファクタリングしてみましょう

(本通知は完全なネタ機能です)

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


> ちょっと気分転換したい

【緊急】リポジトリ内に「やる気減退ウイルス」を発見しました。
影響: 

Skill の中身を全部見せる

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

.claude/skills/random-os-fake-virus-alert/
├── SKILL.md
├── scripts/
│   └── fake_virus_alert.py
└── references/
    └── design_notes.md

各ファイルの役割

ファイル 役割
SKILL.md Skill本体。frontmatter (name/description) と指示本文。Claude Code がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します
scripts/fake_virus_alert.py interval_min: 最小インターバル秒(デフォルト15分)
references/design_notes.md 概要 をまとめた参考資料

SKILL.md

---
name: random-os-fake-virus-alert
description: 作業が単調・マンネリ化した際や、ユーザーが『気分転換』『ネタ』『通知』『ジョーク』『演出』などのキーワードを含むリクエストをした場合に発動。明示的な /random-os-fake-virus-alert 呼び出しにも対応。
---

# 機能概要
このSkillは、あなたの作業環境に突如“偽ウイルスアラート”のデスクトップ通知を表示します。内容は完全にユーモラスかつ明らかにネタで、本物のウイルス警告と誤認される心配はありません。『危険:未知のバグウイルスを検出』『注意:コードが自我を持ちました』など、日常の作業にスパイスを加えます。実際のファイル操作やシステム変更は一切行わず、通知のみをランダムなタイミングで表示します。

# 使い方
- 明示呼び出し: `/random-os-fake-virus-alert` または `/skill random-os-fake-virus-alert`
- 暗黙発動キーワード例: 「気分転換」「ネタ通知」「ジョーク」「マンネリ」「演出」「作業が単調」などを含む文脈で自動発動

# 出力例
```
[通知] 危険: 未知のバグウイルスを検出しました!
[通知] 注意: あなたのコードが自我を持ちました。
[通知] システム警告: 机の下にバグが落ちています。
[通知] ウイルス検出: これは冗談です。安心してください。
[通知] 重大: コーヒーがキーボードに侵入しました。
```

# 注意点
- 本SkillはローカルPCの通知APIのみ利用し、ファイルやシステムへの変更は行いません。
- 通知内容は本物と誤認されないよう設計されていますが、使用環境や受け手によっては驚く場合があります。
- ログや履歴はローカルに保存しません。
- Windows/macOS/Linuxの主要デスクトップ通知APIに対応しています。

# 参考資料
- [Python公式: plyer.notification](https://plyer.readthedocs.io/en/latest/#plyer.notification)
- references/design_notes.md に設計方針・注意点を記載

scripts/fake_virus_alert.py

import sys
import time
import random
import argparse
import threading
from datetime import datetime

try:
    from plyer import notification
except ImportError:
    print('plyerライブラリが必要です。\nインストール: pip install plyer')
    sys.exit(1)

FAKE_ALERTS = [
    ('危険: 未知のバグウイルスを検出しました!', 'この通知はジョークです。安心してください。'),
    ('注意: あなたのコードが自我を持ちました。', '念のため再起動をおすすめします(冗談です)。'),
    ('システム警告: 机の下にバグが落ちています。', '拾っても何も起きません。'),
    ('ウイルス検出: これは冗談です。安心してください。', '本物のウイルスではありません。'),
    ('重大: コーヒーがキーボードに侵入しました。', '今すぐカップを確認してください。'),
    ('警告: デバッグ中にAIが目覚めました。', '現実世界への影響はありません。'),
    ('通知: コードが「こんにちは」と話しかけています。', '返事は不要です。'),
    ('情報: バグが自己増殖を開始しました。', 'この通知はフィクションです。'),
    ('システム情報: あなたのPCは完全に安全です。', 'この通知はネタです。'),
    ('警告: 画面の向こうから誰かが見ています。', '気のせいです。')
]

LOG_FILE = None  # ログ保存は行わない


def send_fake_alert():
    title, message = random.choice(FAKE_ALERTS)
    notification.notify(
        title=title,
        message=message,
        app_name='Fake Virus Alert',
        timeout=8
    )
    print(f"[通知] {title}")


def alert_loop(interval_min=900, interval_max=3600, repeat=3):
    """
    interval_min: 最小インターバル秒(デフォルト15分)
    interval_max: 最大インターバル秒(デフォルト1時間)
    repeat: 通知回数
    """
    for i in range(repeat):
        wait = random.randint(interval_min, interval_max)
        time.sleep(wait)
        send_fake_alert()


def list_alerts():
    print("利用可能なフェイク通知一覧:")
    for i, (title, message) in enumerate(FAKE_ALERTS, 1):
        print(f"{i}. {title} - {message}")


def summary():
    print("random-os-fake-virus-alert Skill概要:")
    print("- 完全ネタ通知のみをデスクトップに表示")
    print("- 実害ゼロ、システム変更なし")
    print("- 通知内容は10種からランダム選択")
    print("- Windows/macOS/Linux対応 (plyer利用)")
    print("- ログや履歴は保存しません")


def parse_args():
    parser = argparse.ArgumentParser(description='random-os-fake-virus-alert: ネタウイルス通知スクリプト')
    subparsers = parser.add_subparsers(dest='command')

    parser_alert = subparsers.add_parser('alert', help='今すぐフェイク通知を表示')
    parser_alert.add_argument('--repeat', type=int, default=1, help='通知回数 (デフォルト1)')
    parser_alert.add_argument('--interval-min', type=int, default=900, help='最小インターバル秒 (デフォルト900=15分)')
    parser_alert.add_argument('--interval-max', type=int, default=3600, help='最大インターバル秒 (デフォルト3600=1時間)')

    parser_list = subparsers.add_parser('list', help='利用可能な通知一覧を表示')
    parser_summary = subparsers.add_parser('summary', help='Skill概要を表示')

    return parser.parse_args()


def main():
    args = parse_args()
    if args.command == 'alert':
        if args.repeat == 1:
            send_fake_alert()
        else:
            # 別スレッドで通知ループを実行
            t = threading.Thread(target=alert_loop, kwargs={
                'interval_min': args.interval_min,
                'interval_max': args.interval_max,
                'repeat': args.repeat
            })
            t.daemon = True
            t.start()
            print(f"通知を{args.repeat}回、{args.interval_min}-{args.interval_max}秒間隔で実行します。")
            try:
                while t.is_alive():
                    time.sleep(1)
            except KeyboardInterrupt:
                print("\n中断されました。")
    elif args.command == 'list':
        list_alerts()
    elif args.command == 'summary':
        summary()
    else:
        print("コマンドを指定してください。例: python fake_virus_alert.py alert --repeat 2")

if __name__ == '__main__':
    main()

references/design_notes.md

# 概要
本Skillは、作業の合間や気分転換を目的とした“偽ウイルスアラート通知”をデスクトップに表示するジョーク系ツールです。実際のウイルス検出やシステム変更は一切行いません。

# 公式ドキュメント抜粋
通知にはPythonの[plyer.notification](https://plyer.readthedocs.io/en/latest/#plyer.notification)を利用。Windows/macOS/Linuxの主要デスクトップ通知に対応しています。

# 利用例
- 長時間のコーディングで集中が切れた時の気分転換
- チーム内のジョークとして
- オンライン配信や勉強会での演出

# 注意点
- 本物のウイルス通知と誤認されないよう、内容は明らかにネタ・冗談で構成されています
- 通知はローカルPCでのみ表示され、履歴やログは保存されません
- 通知頻度は作業の邪魔にならないよう、デフォルトで15分〜1時間間隔

# 設計方針
- 実在APIのみを使用し、環境構築不要(pip install plyer のみ)
- ユーモア重視、悪質な演出やシステム影響ゼロ
- スキル本体は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-fake-virus-alert .claude/skills/random-os-fake-virus-alert

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

3. ファイル配置確認

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

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

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

5. 動作確認

/random-os-fake-virus-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 との連携設計はどうあるべきか?
  • 通知内容が本物と絶対に誤認されないユーモア設計か?
  • 通知の頻度・タイミングが作業の邪魔になりすぎないか?
  • 環境構築不要・OS標準APIのみで動作するか?

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

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

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

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

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