Claude Codeで職場に笑いを呼ぶ通知演出Skillの作り方

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

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

Claude Code を使ったAI coding workflowは、repository understandingやpath managementが肝。だが日々の作業で、思わぬ集中切れや謎のストレスに見舞われる瞬間も多い。特に、通知・演出・OS連携系のSkillがまだ少なく、「ちょっとした遊び心」や「場の空気を和ませる」仕掛けが欲しい場面もある。

例えば以下のような「あるある」に、心当たりがある人も多いはず:

  • 集中している最中、突然の通知で workflowが中断されると、逆に気分転換になることもある
  • リポジトリのdirectoryやpath指定に没頭しすぎて、思考が硬直しがち
  • monorepo構成の巨大なrepositoryで、Claude Codeのcontextやmemory管理に疲れる
  • 長時間作業でlong contextが膨張し、重要な情報が埋もれてしまう
  • 職場やリモート会議で、ちょっとした笑いが欲しいが、真面目なAI coding workflowに遊び要素が少ない

こうした「真面目な作業環境に、謎の演出やネタ要素を注入したい」というニーズは、意外と多い。

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

一言サマリ: 作業中に突然“OSのパワーセーバー警告”をデスクトップ通知で炸裂させるスキルですSkill。

このSkillを導入することで、Claude CodeによるAI coding workflowの最中に、根拠も効力もない「省エネ警告」がランダムに表示されるようになる。具体的な効果は以下の通り:

  • 集中しすぎによる思考の硬直やcontextのマンネリ化を、強制的にリフレッシュできる
  • monorepoや複雑なdirectory構造で疲れた時に、ユーモラスな通知が気分転換を促す
  • 職場やリモートワークの場で、謎の演出による笑いや話題作りができる
  • AI coding workflowに「遊び」や「余白」を持たせ、単調な作業感を和らげる
  • 実害ゼロで、repositoryやcontext、memoryには一切影響しない安心設計
QUICK INSTALL
このSkillをすぐ試す

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

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

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

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

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


# /random-os-fake-power-saver-alert

[通知] OS省エネモード: CPU温存のため、10分間タイピングを控えてください。
理由: repositoryの初回スキャン中に熱暴走の兆候を検知しました。
ヒント: ディレクトリ構造の見直しもこの間にどうぞ。

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


> /random-os-fake-power-saver-alert

[警告] マウス移動過多: 省エネモード発動
packages/api/ から packages/web/ への連続移動を検知しました。
10分間、思考も控えめにお願いします。
(この通知は実際のリソース消費と無関係です)

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


> /random-os-fake-power-saver-alert

[通知] 電力節約のため、今から5分間「重要なディレクトリ以外」を閲覧禁止とします。
対象外: node_modules, build, dist, .git
理由: AI workflowの効率向上のため (根拠なし)

before / after の違い

場面 Skill 無し Skill 有り
session 再開時 repo 構造から毎回説明、path も指定し直し Claude Code が自動で context を復元、最小プロンプトで再開
monorepo 移動 違う package のコードを参照しがち directory boundary を意識して必要な範囲だけ見る
長時間 workflow long context で重要箇所が薄まる 突発的な省エネ通知でリフレッシュ、集中力を維持しやすい

発動方式

明示呼び出し (/random-os-fake-power-saver-alert) と暗黙発動 (自然言語で「省エネ通知」等を含む指示) の両方に対応。

Skill の中身を全部見せる

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

.claude/skills/random-os-fake-power-saver-alert/
├── SKILL.md
├── scripts/
│   └── random_os_fake_power_saver_alert.py
└── references/
    └── design_notes.md

各ファイルの役割

ファイル 役割
SKILL.md Skill本体。frontmatter (name/description) と指示本文。Claude Code がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します
scripts/random_os_fake_power_saver_alert.py ランダムな偽OSパワーセーバー警告をデスクトップ通知で表示します。
references/design_notes.md 概要 をまとめた参考資料

SKILL.md

---
name: random-os-fake-power-saver-alert
description: 作業中や集中タイムに“パワーセーバー警告”のような偽OS通知をランダムに炸裂させ、職場や自宅の雰囲気を一変させたいときに発動。『省エネ』『警告』『通知』『パワーセーブ』『休憩』などのキーワードや、/random-os-fake-power-saver-alert コマンドで明示的にも起動可能。
---

# 機能概要
このSkillは、PC作業中に突然“OSのパワーセーバー警告”を装ったデスクトップ通知をランダムに表示します。通知内容は「CPU温存のため10分間タイピング禁止」「マウス移動過多:省エネモード発動」など、根拠も効力もない省エネ指示が毎回異なる形で現れます。集中を問答無用で中断し、周囲に謎の笑いと混乱を提供。業務や勉強の合間に気分転換やネタとして使いたい方に最適です。

# 使い方
- 明示呼び出し例:
  `/random-os-fake-power-saver-alert` (またはSkillパネルから直接実行)
- 暗黙発動キーワード例:
  「省エネ」「パワーセーブ」「警告」「休憩」「通知」「集中力低下」などが会話やコード内に含まれると自動発動します。

# 出力例
```
[通知] 電力節約のため、思考も控えめにしてください。
[通知] CPU温存モード: 10分間タイピング禁止。
[通知] マウス移動過多:省エネモード発動。
[通知] 画面注視が長すぎます。目を閉じて省エネしましょう。
[通知] システム冷却中。深呼吸して待機してください。
[通知] 電力不足: しばらく作業を控えてください。
```

# 注意点
- 実際のOSやシステム設定・電源管理には一切影響しません。
- 通知はローカル環境の通知API(Windows/macOS/Linux)を利用します。
- 通知内容は完全なジョークであり、実害はありません。
- スクリプトはPython3.7以降と、`plyer`パッケージが必要です。

# 参考資料
- 参考: references/design_notes.md
- 公式: https://plyer.readthedocs.io/en/latest/
- 通知API仕様: https://docs.python.org/ja/3/library/subprocess.html

scripts/random_os_fake_power_saver_alert.py

import sys
import time
import random
import argparse
from threading import Thread, Event

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

ALERT_MESSAGES = [
    'CPU温存のため10分間タイピング禁止。',
    'マウス移動過多:省エネモード発動。',
    '電力節約のため思考も控えめにしてください。',
    '画面注視が長すぎます。目を閉じて省エネしましょう。',
    'システム冷却中。深呼吸して待機してください。',
    '電力不足: しばらく作業を控えてください。',
    'メモリ保護のため、ジョークを思い出してください。',
    'ディスプレイ輝度を心で下げてください。',
    'マウスクリック数が多すぎます。両手を膝に置いてください。',
    'CPU温度が上昇中。笑顔で冷却してください。',
    '省エネのため、今から1分間だけ何も考えないでください。',
    'バッテリー保護: しばらく目を閉じてください。',
    '冷却ファンが悲鳴を上げています。作業を中断してください。',
    '省エネモード:キーボードから手を離してください。',
    '電力節約のため、画面を見つめるのをやめましょう。',
    'マウスの動きが激しすぎます。省エネのため、しばらく静止してください。',
    'タイピング速度が速すぎます。省エネのため、ゆっくり入力してください。',
    'ディスプレイの輝度を心で下げてください。',
    '省エネ警告: しばらく深呼吸だけしてください。',
    'システム省電力モード: 何もせずに1分間待機してください。'
]

class PowerSaverAlert:
    def __init__(self, interval=600, count=5, dry_run=False):
        self.interval = interval
        self.count = count
        self.dry_run = dry_run
        self.stop_event = Event()
        self.history = []

    def send_alert(self, message):
        if self.dry_run:
            print(f'[通知] {message}')
        else:
            notification.notify(
                title='パワーセーバー警告',
                message=message,
                app_name='Fake Power Saver',
                timeout=10
            )
            print(f'[通知] {message}')
        self.history.append((time.strftime('%Y-%m-%d %H:%M:%S'), message))

    def run(self):
        for i in range(self.count):
            if self.stop_event.is_set():
                break
            msg = random.choice(ALERT_MESSAGES)
            self.send_alert(msg)
            if i < self.count - 1:
                for _ in range(self.interval):
                    if self.stop_event.is_set():
                        break
                    time.sleep(1)

    def stop(self):
        self.stop_event.set()

    def list_history(self):
        for t, msg in self.history:
            print(f'{t}  {msg}')

    def summary(self):
        print(f'送信済み警告数: {len(self.history)}')
        unique = set(msg for _, msg in self.history)
        print(f'ユニーク警告数: {len(unique)}')


def main():
    parser = argparse.ArgumentParser(
        description='ランダムな偽OSパワーセーバー警告をデスクトップ通知で表示します。')
    subparsers = parser.add_subparsers(dest='command')

    # runコマンド
    parser_run = subparsers.add_parser('run', help='警告通知を開始')
    parser_run.add_argument('--interval', type=int, default=600, help='通知間隔(秒) デフォルト600')
    parser_run.add_argument('--count', type=int, default=5, help='通知回数 デフォルト5')
    parser_run.add_argument('--dry-run', action='store_true', help='通知を端末出力のみにする')

    # listコマンド
    parser_list = subparsers.add_parser('list', help='送信済み警告履歴を表示')

    # summaryコマンド
    parser_summary = subparsers.add_parser('summary', help='警告履歴のサマリーを表示')

    args = parser.parse_args()
    alert = PowerSaverAlert()

    if args.command == 'run':
        alert = PowerSaverAlert(interval=args.interval, count=args.count, dry_run=args.dry_run)
        try:
            alert.run()
        except KeyboardInterrupt:
            print('中断されました')
    elif args.command == 'list':
        alert.list_history()
    elif args.command == 'summary':
        alert.summary()
    else:
        parser.print_help()

if __name__ == '__main__':
    main()

references/design_notes.md

# 概要
このSkillは、作業中に突然“偽OS省エネ警告”をデスクトップ通知で表示し、ユーザーや周囲の集中を意図的に中断させるジョーク系演出ツールです。実際の電源管理やシステム状態には一切影響を与えません。

# 公式ドキュメント抜粋
通知表示にはPythonの`plyer`パッケージの`notification`モジュールを利用しています。plyerはクロスプラットフォームで、Windows/macOS/Linuxの標準通知APIをラップします。

# 利用例
- チームのリフレッシュタイムや雑談ネタに
- 長時間作業の合間に強制的な気分転換として
- オフィスやリモートワーク環境でのジョーク用途

# 注意点
- 通知内容は完全なフィクションであり、実際の作業やPCには影響しません。
- plyerの通知は環境によって表示形式や動作が異なる場合があります。
- スクリプトはローカル通知のみ対応。リモート通知やモバイル通知はサポート外です。

# 設計方針
- シンプルなCLI構成とし、run/list/summaryサブコマンドで柔軟に操作可能
- 通知内容は完全ランダムかつ毎回異なるよう十分なバリエーションを用意
- 実害ゼロ・ネタ度MAX・安全設計を徹底

導入手順

この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-power-saver-alert .claude/skills/random-os-fake-power-saver-alert

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

3. ファイル配置確認

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

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

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

5. 動作確認

/random-os-fake-power-saver-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 を取りたい
  • ちょっとした息抜きや話題作り: 真面目なAI coding workflowに遊び心を注入したい時

気になるポイント (壊れそうな箇所)

実運用に乗せる前に頭に入れておきたい懸念。後で検証する観点でもある:

  • 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 との連携設計はどうあるべきか?
  • ランダムな省エネ警告が一定間隔で正しく通知されるか?
  • 通知内容が毎回異なり、十分にふざけているか?
  • ユーザー操作やPCの状態には実害がないことが担保されているか?

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

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

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

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

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