Claude Codeで画面切り替え演出を自動化するSkillの構築手順

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

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

Claude Code を日常的に使っていると、思わず「あるある!」と声が出るような細かな困りごとがたまっていきます。特に通知や演出、OS連携まわりでの違和感や、思いがけない挙動に戸惑うことも少なくありません。

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

これらの悩みに加え、集中して作業しているときにふと気を抜きたくなったり、ちょっとした遊び心を入れてみたくなる瞬間も。そんなときに「通知・演出・OS連携」カテゴリのSkillが役立つ場面が出てきます。

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

一言サマリ: このスキルは、作業中に突如「謎のボスキー」を発動し、ターミナルやエディタ画面を一瞬だけカオスなダミー画面に切り替える演出を提供します。

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

  • 作業中にワンアクションで画面を一時的に隠し、完全ランダムな意味不明ダミー画面を表示できる
  • 「誰か来た!」といった緊張感や遊び心をAI coding workflowに取り入れ、日常の単調さを崩せる
  • repository understanding や path management の合間に、カオスな演出で気分転換できる
  • 毎回異なるダミー画面が生成されるため、マンネリ化せず楽しめる
  • 終了後は元の directory や context に即座に復帰できるので、workflowを中断しない
QUICK INSTALL
このSkillをすぐ試す

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

npx degit aazutaku/ai-note/claude-code/random-os-sudden-boss-key .claude/skills/random-os-sudden-boss-key

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

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

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


# /random-os-sudden-boss-key
> 急に画面を隠したい

=== [RANDOM-OS WARNING] ===
重大なシステム異常を検知しました。
Error Code: 0xDEADBEEF
Please contact your system administrator.

[Press any key to continue...]

(3秒後、自動的に元のエディタ画面に復帰)

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


> ちょっと一時的に画面をカオスに

=== [謎グラフ: CPU Usage vs. Banana Index] ===
|    | CPU (%) | Banana |
|----|---------|--------|
| A  |   42    |   7    |
| B  |   89    |   2    |
| C  |   13    |   9    |

(ダミーグラフ表示後、自動的に packages/api/handlers.py の編集画面へ戻る)

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


> 上司が来たので謎ボスキー発動

=== [RANDOM-OS: SYSTEM UPDATE] ===
アップデート中...
進捗: ████████░░ 80%
Do not turn off your computer.

(5秒後、元の repository context に復帰)

before / after の違い

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

発動方式

明示呼び出し (/random-os-sudden-boss-key) と暗黙発動 (「画面を隠したい」「ボスキー」などの自然言語指示) の両方に対応。

Skill の中身を全部見せる

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

.claude/skills/random-os-sudden-boss-key/
├── SKILL.md
├── scripts/
│   └── random_boss_key.py
└── references/
    └── design_notes.md

各ファイルの役割

ファイル 役割
SKILL.md Skill本体。frontmatter (name/description) と指示本文。Claude Code がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します
scripts/random_boss_key.py Random OS Sudden Boss Key
references/design_notes.md 概要 をまとめた参考資料

SKILL.md

---
name: random-os-sudden-boss-key
description: 作業中に“ボスキー”を発動し、ターミナルやエディタ画面を即座に完全ランダムなダミー画面(謎グラフや警告)へ切り替えたい場合に利用。キーワード: ボスキー, 画面切替, ダミー, ランダム, 一時隠し。
---

# 機能概要
このSkillは、作業中に突如“謎のボスキー”を発動し、現在のターミナルやエディタ画面を一瞬だけ意味不明なダミー画面へ切り替えます。表示される内容は毎回完全ランダムで、「業務資料っぽさゼロの謎グラフ」や「よくわからない警告ウィンドウ」など、むしろ怪しまれる演出です。緊張感のある職場環境を一瞬でカオスに変えたいとき、またはジョークやストレス発散のために活用できます。

# 使い方
明示的な呼び出し例:

```
/random-os-sudden-boss-key
```

暗黙的な発動キーワード例:
- "ボスキー発動"
- "画面を隠したい"
- "急に誰か来た"

発動すると、現在の画面が即座にランダムなダミー画面に切り替わり、任意のキー入力や一定時間経過で元の画面に復帰します。

# 出力例
```
=== WARNING ===
OS Error: 0xDEADBEEF
System integrity check failed.
[OK]

---

┌─────────────┐
│  RANDOM DATA CHART │
├─────┬─────┤
│ Foo │  42 │
│ Bar │  99 │
│ Baz │   7 │
└─────┴─────┘
```

# 注意点
- 本Skillは実験的な演出用です。実際の業務資料や本物の警告画面ではありません。
- ローカルでのみ動作し、外部サーバ等へ情報送信はありません。
- 画面切替は一時的で、復帰後に内容は保存されません。
- X11/Wayland環境またはWindows/macOSの標準Pythonで動作しますが、環境によっては一部機能が制限される場合があります。

# 参考資料
詳細な設計方針や参考実装については`references/design_notes.md`を参照してください。Python標準GUI(Tkinter)や`random`、`matplotlib`等の公式ドキュメントもご覧ください。

scripts/random_boss_key.py

import sys
import argparse
import threading
import random
import time
import tkinter as tk
from tkinter import messagebox
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
from PIL import Image, ImageTk
import io

DUMMY_WARNINGS = [
    'OS Error: 0xDEADBEEF\nSystem integrity check failed.',
    'Critical Failure!\nUnable to allocate quantum buffer.',
    'Warning: Null pointer dereferenced.',
    'Security Alert: Suspicious process detected.',
    'Kernel Panic: Unhandled exception in module.',
    'Memory Leak Detected!\nPlease restart your system.',
    'System Overload: Too many open files.',
]

DUMMY_CHART_LABELS = [
    ['Foo', 'Bar', 'Baz', 'Qux'],
    ['Alpha', 'Beta', 'Gamma', 'Delta'],
    ['Red', 'Green', 'Blue', 'Yellow'],
    ['Cat', 'Dog', 'Fish', 'Bird'],
]

class DummyScreen:
    def __init__(self, duration=5):
        self.duration = duration
        self.root = None
        self.closed = threading.Event()

    def show_random(self):
        # Decide randomly: warning or chart
        if random.choice([True, False]):
            self.show_warning()
        else:
            self.show_chart()

    def show_warning(self):
        self.root = tk.Tk()
        self.root.title('System Warning')
        self.root.geometry('480x240')
        self.root.attributes('-topmost', True)
        self.root.protocol('WM_DELETE_WINDOW', self.close)
        msg = random.choice(DUMMY_WARNINGS)
        label = tk.Label(self.root, text='=== WARNING ===\n' + msg + '\n', font=('Consolas', 14), fg='red')
        label.pack(pady=30)
        btn = tk.Button(self.root, text='OK', command=self.close)
        btn.pack(pady=20)
        self.root.bind('<Key>', lambda e: self.close())
        self._auto_close()
        self.root.mainloop()

    def show_chart(self):
        # Generate random chart
        labels = random.choice(DUMMY_CHART_LABELS)
        values = [random.randint(1, 100) for _ in labels]
        fig, ax = plt.subplots(figsize=(5, 2.5))
        ax.bar(labels, values, color=[random.choice(['#e74c3c', '#3498db', '#2ecc71', '#f1c40f']) for _ in labels])
        ax.set_title('RANDOM DATA CHART')
        ax.set_ylabel('Value')
        plt.tight_layout()
        buf = io.BytesIO()
        plt.savefig(buf, format='png')
        plt.close(fig)
        buf.seek(0)
        img = Image.open(buf)
        self.root = tk.Tk()
        self.root.title('Data Dashboard')
        self.root.geometry('520x300')
        self.root.attributes('-topmost', True)
        self.root.protocol('WM_DELETE_WINDOW', self.close)
        tkimg = ImageTk.PhotoImage(img)
        panel = tk.Label(self.root, image=tkimg)
        panel.image = tkimg
        panel.pack(pady=10)
        btn = tk.Button(self.root, text='Close', command=self.close)
        btn.pack(pady=10)
        self.root.bind('<Key>', lambda e: self.close())
        self._auto_close()
        self.root.mainloop()

    def _auto_close(self):
        def timer():
            time.sleep(self.duration)
            if not self.closed.is_set():
                try:
                    self.root.after(0, self.close)
                except Exception:
                    pass
        threading.Thread(target=timer, daemon=True).start()

    def close(self):
        self.closed.set()
        if self.root:
            self.root.destroy()


def main():
    parser = argparse.ArgumentParser(description='Random OS Sudden Boss Key')
    parser.add_argument('--mode', choices=['auto', 'warning', 'chart'], default='auto', help='Dummy screen type')
    parser.add_argument('--duration', type=int, default=5, help='Display seconds (default: 5)')
    parser.add_argument('--list', action='store_true', help='List all dummy patterns')
    args = parser.parse_args()

    if args.list:
        print('=== Dummy Warnings ===')
        for w in DUMMY_WARNINGS:
            print('-', w)
        print('\n=== Dummy Chart Label Sets ===')
        for labels in DUMMY_CHART_LABELS:
            print('-', ', '.join(labels))
        sys.exit(0)

    ds = DummyScreen(duration=args.duration)
    if args.mode == 'auto':
        ds.show_random()
    elif args.mode == 'warning':
        ds.show_warning()
    elif args.mode == 'chart':
        ds.show_chart()

if __name__ == '__main__':
    main()

references/design_notes.md

# 概要
このSkillは、作業中の画面を一時的に完全ランダムなダミー画面へ切り替える「ボスキー」演出をPythonで実現します。TkinterによるGUI表示とmatplotlibによるグラフ生成を組み合わせ、毎回異なる内容を即座に表示します。

# 公式ドキュメント抜粋
- Tkinter: https://docs.python.org/ja/3/library/tkinter.html
- matplotlib: https://matplotlib.org/stable/users/index.html
- Pillow: https://pillow.readthedocs.io/en/stable/

# 利用例
- 明示的に`/random-os-sudden-boss-key`を実行
- CLIから`python random_boss_key.py --mode auto`で実行
- "画面を隠したい"などの発話で自動発動

# 注意点
- 本Skillはジョーク・演出用途です。実際の業務用途やセキュリティ対策には不向きです。
- 画面切替は一時的で、内容は保存されません。
- 環境によってはウィンドウが最前面に来ない場合があります。

# 設計方針
- Python標準GUI(Tkinter)を利用し、追加インストール不要で動作する設計
- ダミー内容は毎回乱数で生成し、常に新鮮な演出を保証
- 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-sudden-boss-key .claude/skills/random-os-sudden-boss-key

.claude/skills/random-os-sudden-boss-key の中に SKILL.md / scripts/ / references/ / README.md が展開されます。

3. ファイル配置確認

ls .claude/skills/random-os-sudden-boss-key
# SKILL.md, scripts/, references/, README.md があればOK

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

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

5. 動作確認

/random-os-sudden-boss-key で呼び出すか、自然言語で発動条件にマッチする指示を出すと 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をコピーしました!
目次