Claude Codeでカオスなシステム保守通知を演出するSkill構築ガイド

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

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

Claude Code を日々使っていると、真面目な開発現場や集中した AI coding workflow の最中に、ちょっとした「現実感のズレ」や「遊び心のなさ」に気づく瞬間があります。特に repository understanding や context 復元に集中している時ほど、張り詰めた空気が漂いがちです。そんな中、以下のような「あるある」な悩みが発生します:

  • Claude Code がいつの間にか違う directory を見始めて、想定外のファイルを読みに行く
  • monorepo で package を跨いだ瞬間、Claude Code が repo 構造を忘れる
  • session を再開すると、前回までの context や path 指定をまるごと再説明しないといけない
  • 長時間 workflow で long context が膨らみすぎて、important な情報が薄まる (stale context)
  • 「ここはこういう構造のリポジトリ」というあらすじを毎回チャットの冒頭で書く羽目になる

さらに、会議やペアプロ中に場の空気を和ませる“ちょっとした演出”が欲しくなることも。通知や演出系 Skill の需要は、こうした「真面目すぎる現場」にこそ高まります。

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

一言サマリ: このスキルは、突如現れる“謎のOSシステムメンテナンス通知”で、Claude Code の作業空間にカオスな遊び心を注入します。

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

  • 集中しがちな AI coding workflow の最中に、現実味ゼロの fake system alert で場の空気を一変できる
  • repository understanding や path management に没頭している時でも、強制的に“メンテ予告”で一息つける
  • monorepo や長時間 session で stale context に陥りがちな時、突発的な通知でリフレッシュ効果を得られる
  • onboarding や会議中に、周囲の注意を一気に引きつけて話題のきっかけを作れる
  • 完全に無害で、データ損失や誤動作リスクなしに“遊び”を取り入れられる
QUICK INSTALL
このSkillをすぐ試す

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

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

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

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

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


# /random-os-fake-system-maintenance-alert

*** 重要なお知らせ ***
本日 21:00 より、全システムのファイルパス表記を逆さまにします。
例: src/utils/helper.py → .yp.repleh/sluhts/crs

影響範囲: repository 全体 (特に packages/core, packages/web)
ご理解とご協力をお願いいたします。

(この通知は自動生成されています)

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


> 今から packages/api/ の context を見に行って

*** 緊急メンテナンス予告 ***
明日午前2時より、右クリック機能が左クリックに統合されます。
対象: packages/api/ 以下の全ディレクトリ

該当ディレクトリ: packages/api/routes, packages/api/services
影響: repository understanding, path management に一時的な混乱が予想されます

(この通知は自動生成されています)

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


> 何か面白いこと起きないかな

*** システムメンテナンス告知 ***
次回起動時、全ファイル名が「こんにちは」に書き換わる可能性があります。
対象: 全 repository, 特に 

Skill の中身を全部見せる

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

.claude/skills/random-os-fake-system-maintenance-alert/
├── SKILL.md
├── scripts/
│   └── random_os_fake_system_maintenance_alert.py
└── references/
    └── design_notes.md

各ファイルの役割

ファイル 役割
SKILL.md Skill本体。frontmatter (name/description) と指示本文。Claude Code がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します
scripts/random_os_fake_system_maintenance_alert.py osascript -e 'display notification "{message}" with title "Fake OS Maintenance"'
references/design_notes.md 概要 をまとめた参考資料

SKILL.md

---
name: random-os-fake-system-maintenance-alert
description: 作業やペアプロ、会議中など、集中力が高まっているタイミングや『メンテナンス』『システム通知』『OS』『保守』などのキーワードが会話やコードに現れた際に、カオスな偽システム保守通知をランダムに発動します。明示的な /random-os-fake-system-maintenance-alert コマンドでも利用可能です。
---

# 機能概要
このSkillは、作業中に突如「謎のOSシステムメンテナンス予告通知」をランダム表示します。通知内容は「本日21:00より全システムを逆さまにします」「緊急:マウス左クリック機能が右クリックに統合されます」など、現実味ゼロのカオスな内容ばかり。真面目な現場やペアプロ、会議の空気を一変させ、集中力や現実感覚を華麗に攪乱します。通知は毎回ランダム生成されるため、同じものが表示されることはほぼありません。

# 使い方
- 明示呼び出し例: `/random-os-fake-system-maintenance-alert` を実行すると即座に偽通知が表示されます。
- 暗黙発動キーワード例: 「メンテナンス」「保守」「OS」「通知」「システム」などが会話やコードに現れると自動発動します。

# 出力例
```terminal
[OSメンテナンス通知] 重要:本日23:30より全端末の画面表示を縦書きに切り替えます。
[OSメンテナンス通知] 緊急:明日午前2時から全ユーザーのパスワードが「password」にリセットされます。
[OSメンテナンス通知] ご案内:本日深夜、マウスカーソルが常に逃げ続けるモードに移行します。
[OSメンテナンス通知] 重要:全ファイル名がランダムな絵文字に変換されます。
[OSメンテナンス通知] 緊急:全システムで「Ctrl+Z」が「シャットダウン」に割り当てられます。
```

# 注意点
- 実際のシステムには一切影響しません。通知は完全なジョークです。
- データ損失や誤動作リスクはゼロです。
- 通知内容は毎回ランダム生成され、ローカルに保存されません。
- 業務や重要な会議でのご利用は空気を読んでください。

# 参考資料
- [参考: references/design_notes.md](references/design_notes.md)
- [公式: Python random/argparse/標準通知API](https://docs.python.org/3/library/random.html)

scripts/random_os_fake_system_maintenance_alert.py

import sys
import argparse
import random
import datetime
import platform
import os

# 通知メッセージテンプレート
ALERT_TEMPLATES = [
    "重要:本日{time}より全システムを逆さまにします。",
    "緊急:マウス左クリック機能が右クリックに統合されます。",
    "全端末の画面表示を縦書きに切り替えます。",
    "明日午前2時から全ユーザーのパスワードが『password』にリセットされます。",
    "本日深夜、マウスカーソルが常に逃げ続けるモードに移行します。",
    "全ファイル名がランダムな絵文字に変換されます。",
    "重要:全システムで『Ctrl+Z』が『シャットダウン』に割り当てられます。",
    "ご案内:本日{time}より全ユーザーのデスクトップ画像が社長の顔写真に変更されます。",
    "緊急:明日から全アプリがコマンドライン専用になります。",
    "重要:全システムの言語設定がラテン語に変更されます。",
    "本日{time}より全端末の時計が逆回転モードになります。",
    "全ユーザーのログイン名がランダムな数字列に変更されます。",
    "本日{time}から全ての通知音が『ピヨピヨ』に統一されます。",
    "全システムのマウスカーソルが1.5倍速で移動します。",
    "全ユーザーのホームディレクトリが『/tmp』に移動されます。"
]

PREFIXES = [
    "[OSメンテナンス通知]",
    "[システム保守案内]",
    "[重要なお知らせ]",
    "[緊急メンテナンス]",
    "[ご案内]"
]

# 通知内容をランダム生成
def generate_alert():
    now = datetime.datetime.now()
    time_str = now.strftime("%H:%M")
    template = random.choice(ALERT_TEMPLATES)
    prefix = random.choice(PREFIXES)
    # テンプレートに {time} が含まれていれば置換
    message = template.replace("{time}", time_str)
    return f"{prefix} {message}"

# 複数件生成
def generate_alerts(count=1):
    alerts = []
    for _ in range(count):
        alerts.append(generate_alert())
    return alerts

# OS別通知表示 (クロスプラットフォーム)
def show_notification(message):
    sys_platform = platform.system()
    try:
        if sys_platform == "Darwin":
            # macOS: AppleScript 経由で通知
            os.system(f'''osascript -e 'display notification "{message}" with title "Fake OS Maintenance"' ''')
        elif sys_platform == "Linux":
            # Linux: notify-send (要インストール)
            os.system(f'notify-send "Fake OS Maintenance" "{message}"')
        elif sys_platform == "Windows":
            # Windows: powershell 経由で通知
            powershell_cmd = (
                f'[Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType = WindowsRuntime] > $null;'
                f'$template = [Windows.UI.Notifications.ToastNotificationManager]::GetTemplateContent([Windows.UI.Notifications.ToastTemplateType]::ToastText02);'
                f'$textNodes = $template.GetElementsByTagName("text");'
                f'$textNodes.Item(0).AppendChild($template.CreateTextNode("Fake OS Maintenance")) > $null;'
                f'$textNodes.Item(1).AppendChild($template.CreateTextNode("{message}")) > $null;'
                f'$toast = [Windows.UI.Notifications.ToastNotification]::new($template);'
                f'$notifier = [Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier("Fake OS Maintenance");'
                f'$notifier.Show($toast);'
            )
            os.system(f'powershell -Command "{powershell_cmd}"')
        else:
            # 未対応OSは標準出力
            print(message)
    except Exception as e:
        print(f"通知エラー: {e}")
        print(message)

# CLIサブコマンド定義
def main():
    parser = argparse.ArgumentParser(description="ランダムな偽OSシステムメンテナンス通知を表示します。")
    subparsers = parser.add_subparsers(dest="command")

    # log: 通知を1件生成して表示
    parser_log = subparsers.add_parser("log", help="ランダム通知を1件表示")
    parser_log.add_argument("-n", "--number", type=int, default=1, help="通知件数 (デフォルト:1)")
    parser_log.add_argument("--silent", action="store_true", help="通知を標準出力のみに表示")

    # list: 通知を複数件生成して出力
    parser_list = subparsers.add_parser("list", help="ランダム通知を複数件生成して一覧表示")
    parser_list.add_argument("-n", "--number", type=int, default=5, help="通知件数 (デフォルト:5)")

    # summary: テンプレート一覧
    parser_summary = subparsers.add_parser("summary", help="利用可能な通知テンプレート一覧を表示")

    args = parser.parse_args()

    if args.command == "log":
        alerts = generate_alerts(args.number)
        for alert in alerts:
            if args.silent:
                print(alert)
            else:
                show_notification(alert)
                print(alert)
    elif args.command == "list":
        alerts = generate_alerts(args.number)
        for alert in alerts:
            print(alert)
    elif args.command == "summary":
        print("利用可能な通知テンプレート:")
        for i, temp in enumerate(ALERT_TEMPLATES, 1):
            print(f"{i:2d}. {temp}")
    else:
        parser.print_help()

if __name__ == '__main__':
    main()

references/design_notes.md

# 概要
このSkillは、現実味ゼロのカオスなシステム保守通知をランダム生成し、ユーザーの集中力や現実感覚を攪乱するための演出ツールです。通知内容は完全なジョークで、実システムやデータに一切影響を与えません。

# 公式ドキュメント抜粋
- [Python random](https://docs.python.org/3/library/random.html)
- [argparse](https://docs.python.org/3/library/argparse.html)
- [notify-send (Linux)](https://wiki.archlinux.jp/index.php/Notify-send)
- [AppleScript display notification (macOS)](https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_classes.html#//apple_ref/doc/uid/TP40000983-CH1g-BCIBHHBB)

# 利用例
- ペアプロやリモート会議中に突然発動し、場の空気を和ませたり混乱させたりできます。
- 明示的なコマンド呼び出しや、特定のキーワード検知による自動発動に対応。

# 注意点
- 通知は完全に架空であり、実際のシステムやファイルに変更は加えません。
- OSごとに通知APIを使い分けているため、環境によっては標準出力のみとなる場合があります。

# 設計方針
- 毎回ランダム生成し、内容の重複やマンネリ化を防止。
- 10分程度で即試せるシンプルな構成。
- データ損失や誤動作リスクを完全排除。

導入手順

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

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

3. ファイル配置確認

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

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

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

5. 動作確認

/random-os-fake-system-maintenance-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をコピーしました!
目次