Claude Codeで未来感あふれるサイバーパンク通知を構築する方法

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

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

Claude Code で日々開発を進めていると、集中力が切れたり、長時間の作業で単調さを感じる瞬間がよくあります。AI coding workflow の中で、実用一辺倒のやりとりばかりだと、どうしても気分転換や遊び心が不足しがちです。特に repository understanding や path management に没頭していると、ふとした瞬間に「何か刺激がほしい」と思うことも。

  • 長時間同じ directory で作業していると、気分転換やリフレッシュのきっかけがない
  • onboarding やメンバー追加時、堅苦しい説明ばかりでプロジェクトの雰囲気が伝わりにくい
  • monorepo で複数 package を行き来するうちに、作業が単調化しやすい
  • 重要な context や memory の整理ばかり意識して、遊びや演出の余地がなくなりがち
  • AI coding workflow の合間に、ちょっとした「現実逃避」やユーモアを挟みたいが、自然なタイミングが作りにくい

「通知・演出・OS連携」カテゴリの Skill で、こうした“余白”や“遊び心”を取り入れることは、意外と重要な課題です。

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

一言サマリ: このスキルは、作業中のデスクトップに突如サイバーパンクなSF風OS通知を出現させ、日常の開発フローに刺激と遊び心をプラスするSkill。

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

  • AI coding workflow の合間に、未来SF世界の“謎通知”で気分転換やリフレッシュができる
  • onboarding や session 開始時、プロジェクトの雰囲気を一瞬で近未来の電脳都市風に演出できる
  • 長時間の repository understanding や path management の途中で、実用性ゼロの“無駄にかっこいい”体験が得られる
  • monorepo 構成でも、package 跨ぎのタイミングで印象的な演出を挟み、単調さを解消できる
  • どんな directory でも、現実逃避的な演出をワンクリックで発動できる
QUICK INSTALL
このSkillをすぐ試す

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

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

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

使う側がイメージしやすいよう、擬似 terminal で出力例を3パターン示す。

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


# /random-os-fake-cyberpunk-notifier

[NeonOS Notification]
>>> ニューロン接続不良を検出
推奨対応: シンセ脳波モジュールの再同期を実施してください。
詳細: /src/neural/connection_manager.py

[NeonOS Notification]
>>> クローム義手アップデート推奨
最新バージョン: v3.7.2
アップデートは設定 > バイオメカニクス から

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


> 移動: packages/data-sync/ から packages/brainwave-io/ へ

[NeonOS Alert]
>>> シンセ脳波警告
brainwave-io パッケージで異常振幅を検出
推奨: /packages/brainwave-io/waveform_analyzer.ts を点検

[NeonOS Notification]
>>> サイバーデータバスの遅延
data-sync モジュールで5ms超過

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


> /random-os-fake-cyberpunk-notifier

[NeonOS System]
>>> ハイパーリンク・プロトコルの同期失敗
エラーコード: 0xC1B3R
対処: システム再起動を推奨

[NeonOS Notification]
>>> サイバーセキュリティ・ファントム検出
ファイル: /tmp/ghost_packet.log

before / after の違い

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

発動方式

明示呼び出し (/random-os-fake-cyberpunk-notifier) と暗黙発動 (「サイバーパンク通知を表示」「未来風OS通知を出して」などの指示) の両方に対応。

Skill の中身を全部見せる

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

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

各ファイルの役割

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

SKILL.md

---
name: random-os-fake-cyberpunk-notifier
description: このSkillは「サイバーパンク」「SF通知」「未来的演出」などのキーワードや、/random-os-fake-cyberpunk-notifier コマンドが入力された際に発動します。作業中の合間や気分転換、雰囲気づくりの演出用途に最適です。
---

# 機能概要
random-os-fake-cyberpunk-notifierは、現実には存在しないサイバーパンク風の未来OS通知をデスクトップに表示するSkillです。ニューロン接続エラーや義手アップデートなど、SF世界の住人になった気分を味わえます。実用性はありませんが、作業の合間や気分転換、配信・イベントの演出などで「非日常感」を演出したい時に最適です。

# 使い方
明示的には `/random-os-fake-cyberpunk-notifier` コマンドで即時発動できます。また、「サイバーパンク」「SF通知」「未来的演出」などのキーワードを含む会話やコード内で暗黙的にトリガーされます。通知頻度やタイミングは自動調整され、迷惑にならない範囲でランダムに出現します。

# 出力例
```
[NeuroOS] ニューロン接続不良を検出: シナプス・インターフェース再起動推奨
[ChromeSys] クローム義手ファームウェアのアップデートが利用可能です
[SynthWave] シンセ脳波異常: 脳内信号の再調整を推奨
[GhostShell] ゴースト・プロトコルがアクティブ化されました
[GridNet] ネットワーク・ジャック警告: 外部アクセス試行を検出
```

# 注意点
本Skillは実用的な通知や警告は一切行いません。通知内容はすべてフィクションです。ローカル環境の通知API(Windows: Toast, macOS: terminal-notifier, Linux: notify-send)を利用するため、OS標準通知が有効である必要があります。通知履歴は保存されません。

# 参考資料
本SkillはPythonの標準通知APIおよび外部ツール(plyer, notify-send, terminal-notifier等)を利用しています。詳細は`references/design_notes.md`および公式ドキュメント(https://plyer.readthedocs.io/)を参照してください。

scripts/cyberpunk_notifier.py

import sys
import os
import random
import subprocess
import argparse
import platform
import time
from datetime import datetime

CYBERPUNK_MESSAGES = [
    ("NeuroOS", "ニューロン接続不良を検出: シナプス・インターフェース再起動推奨"),
    ("ChromeSys", "クローム義手ファームウェアのアップデートが利用可能です"),
    ("SynthWave", "シンセ脳波異常: 脳内信号の再調整を推奨"),
    ("GhostShell", "ゴースト・プロトコルがアクティブ化されました"),
    ("GridNet", "ネットワーク・ジャック警告: 外部アクセス試行を検出"),
    ("PulseCore", "バイオ・バッテリー残量低下: 充電ステーションへの接続を推奨"),
    ("NanoGuard", "ナノマシン自己修復モードが作動しました"),
    ("OptiLink", "視覚拡張モジュールの再調整が必要です"),
    ("CipherSec", "暗号化プロトコルの異常検出: セキュリティ監査を推奨"),
    ("EchoGrid", "サウンド・フィードバックループ警告: 音声出力の制御を推奨"),
    ("NeuroOS", "仮想人格の同期ズレを検出: メモリ断片化の可能性あり"),
    ("GhostShell", "自己認証失敗: ゴーストIDの再登録が必要です"),
    ("PulseCore", "生体認証データの更新を推奨します"),
    ("SynthWave", "脳波パターンが異常値を記録: 医療AIに連絡推奨"),
    ("GridNet", "外部ネットワークからの不審な信号を遮断しました"),
]

OS_TYPE = platform.system()


def show_notification(title, message):
    try:
        if OS_TYPE == "Darwin":
            # macOS: Use terminal-notifier if available
            if shutil.which("terminal-notifier"):
                subprocess.run([
                    "terminal-notifier",
                    "-title", title,
                    "-message", message
                ])
            else:
                # fallback to AppleScript
                script = f'display notification "{message}" with title "{title}"'
                subprocess.run(["osascript", "-e", script])
        elif OS_TYPE == "Linux":
            if shutil.which("notify-send"):
                subprocess.run(["notify-send", title, message])
            else:
                print(f"[通知失敗] notify-sendが見つかりません: {title} - {message}")
        elif OS_TYPE == "Windows":
            try:
                from plyer import notification
                notification.notify(title=title, message=message, app_name="Cyberpunk Notifier")
            except ImportError:
                print(f"[通知失敗] plyerパッケージが必要です: {title} - {message}")
        else:
            print(f"[通知未対応OS] {title}: {message}")
    except Exception as e:
        print(f"[通知エラー] {e}")


def random_message():
    return random.choice(CYBERPUNK_MESSAGES)


def notify_once():
    title, message = random_message()
    show_notification(title, message)
    print(f"[{title}] {message}")


def notify_loop(interval, count):
    for i in range(count):
        notify_once()
        if i < count - 1:
            time.sleep(interval)


def list_messages():
    print("--- サイバーパンク風通知メッセージ一覧 ---")
    for title, msg in CYBERPUNK_MESSAGES:
        print(f"[{title}] {msg}")


def summary():
    print("Skill: random-os-fake-cyberpunk-notifier")
    print(f"通知パターン数: {len(CYBERPUNK_MESSAGES)}")
    print(f"対応OS: macOS, Linux, Windows")
    print(f"通知API: terminal-notifier, notify-send, plyer")


def parse_args():
    parser = argparse.ArgumentParser(description="サイバーパンク風の架空OS通知をデスクトップに表示します。")
    subparsers = parser.add_subparsers(dest="command")

    parser_once = subparsers.add_parser("notify", help="1回だけ通知を表示")
    parser_loop = subparsers.add_parser("loop", help="指定回数/間隔で通知を繰り返す")
    parser_loop.add_argument("-n", "--count", type=int, default=5, help="通知回数 (デフォルト: 5)")
    parser_loop.add_argument("-i", "--interval", type=int, default=60, help="通知間隔(秒) (デフォルト: 60)")
    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 == "notify":
        notify_once()
    elif args.command == "loop":
        notify_loop(args.interval, args.count)
    elif args.command == "list":
        list_messages()
    elif args.command == "summary":
        summary()
    else:
        print("使い方: python cyberpunk_notifier.py [notify|loop|list|summary]")
        print("例: python cyberpunk_notifier.py notify")

if __name__ == '__main__':
    import shutil
    main()

references/design_notes.md

# 概要
このSkillは、架空のサイバーパンクOS通知を現実のデスクトップ通知APIで実現します。演出や雰囲気作り、配信・イベント用途を主眼としています。

# 公式ドキュメント抜粋
- plyer: https://plyer.readthedocs.io/en/latest/
- notify-send (Linux): https://specifications.freedesktop.org/notification-spec/
- terminal-notifier (macOS): https://github.com/julienXX/terminal-notifier

# 利用例
- 作業中に非日常感を演出
- 配信やイベントのBGM的な演出
- チームの気分転換やアイスブレイク

# 注意点
- 通知内容はすべてフィクションです。実用的な警告や障害通知は含みません。
- OS標準の通知APIが有効である必要があります。
- plyer, notify-send, terminal-notifier等、一部外部ツールが必要な場合があります。

# 設計方針
- クロスプラットフォーム対応
- 実在APIのみ利用し、架空コマンドや独自通知エンジンは使わない
- 迷惑にならない頻度・ランダム性を重視
- メッセージ内容は随時拡張可能

導入手順

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

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

3. ファイル配置確認

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

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

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

5. 動作確認

/random-os-fake-cyberpunk-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 を取りたい
  • 気分転換したい時: 単調な作業の合間に、サイバーパンクな通知でリフレッシュしたい
  • 遊び心を加えたい時: プロジェクトに“無駄にかっこいい”演出を差し込みたい

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

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

  • 通知頻度・タイミング: 頻繁すぎると作業を妨げる恐れがある。適切な間隔・発動条件の調整が必要
  • OS通知領域との連携: すべてのOSで標準通知領域に正しく表示されるか要確認
  • 通知内容の多様性: パターンが少ないと飽きやすい。定期的なアップデートやカスタマイズ性も検討
  • 実用性ゼロゆえの誤解: 本当に重要なエラー通知と混同しないよう明確な演出が必要
  • 他Skillとの干渉: repository understanding や path management 系Skillと同時利用時の挙動

試す前に確かめたいこと

この Skill を実運用に投入する前に確かめたい問いを並べる:

  • 通知が本当にSF・サイバーパンク風になっているか?
  • 通知頻度やタイミングが迷惑にならないか?
  • OSの標準通知領域にしっかり出るか?
  • 他の repository understanding 系Skillと併用した際の挙動は問題ないか?
  • 実際のAI coding workflowで、気分転換や現実逃避の効果を実感できるか?

実際に Claude Code で試した検証ログは Claude Codeで謎のサイバーパンク通知を出してみた!近未来感がクセになる にまとめる予定 (公開準備中の場合あり)。
あわせて Claude Code 公式ドキュメント と、本シリーズ「Claude Codeを便利にするSkill提案」の他記事も参照のこと。

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

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

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

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