Claude Codeでデスクトップに偽パスワード警告を自動表示する演出ガイド

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

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

AI coding workflow の日常には、思わず「またか」と感じる小さな混乱がつきものです。特に repository understanding や path management の場面で、Claude Code の挙動が意図しない方向に進むと、集中力が一瞬途切れてしまうことも。OS連携や通知系のSkillがあれば、こうした状況をちょっと和らげてくれるかもしれません。

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

また、作業に没頭していると、ふとした瞬間に緊張感が途切れたり、逆に無駄に焦ったりすることも。通知や演出系のSkillで、ちょっとした遊び心や気分転換ができれば、onboarding や長時間作業の合間も楽しくなるはずです。

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

一言サマリ: このスキルは、現実感ゼロの“OS公式パスワード流出警告”をランダム生成し、作業中にジョーク通知として爆誕させるSkill。

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

  • 作業やコマンド実行のたびに、毎回違う“謎のパスワード流出警告”がデスクトップや画面端に表示され、周囲や自分の気分転換になる
  • 現実に存在しないパスワード・メッセージなので、セキュリティリスクや本物の流出と混同することがない
  • 通知の末尾やタイトルに必ず「ジョーク通知」である旨が明示され、安心して楽しめる
  • onboarding や長時間のAI coding workflow の合間に、ちょっとした笑い・話題作り・集中力リセットとして活用できる
  • Skill の発動は明示・暗黙どちらにも対応し、意図しないタイミングで本物っぽく見えすぎないバランスで演出される
QUICK INSTALL
このSkillをすぐ試す

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

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

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

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

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


# /os-fake-random-password-alert
> セッションを開始します

[OS警告] あなたの秘密パスワードが「banana-1977」としてインターネット上に流出しました。
詳細: 本日 14:23 に外部データベースで検出
ご安心ください。この通知はジョークです。

[ジョーク通知] 重要なパスワードは引き続き安全に管理しましょう。

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


> packages/core/ に切り替え

[OS警告] 警告: 本日発見された流出パスワード「tamagoyaki123」
対象: /packages/core/utils/password.ts
ご安心ください。この通知はジョークです。

[ジョーク通知] monorepo 構造の理解は引き続き Claude Code にお任せください。

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


> 気分転換に何か面白い通知を出して

[OS警告] 注意: 新たに流出したパスワード「panda-curry2024」が検出されました。
影響範囲: /src/services/auth/
ご安心ください。この通知はジョークです。

[ジョーク通知] セキュリティ意識は大切ですが、落ち着いて作業を続けましょう。

before / after の違い

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

発動方式

明示呼び出し (/os-fake-random-password-alert) と暗黙発動 (パスワード・流出・警告に関する description マッチ) の両方に対応。

Skill の中身を全部見せる

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

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

各ファイルの役割

ファイル 役割
SKILL.md Skill本体。frontmatter (name/description) と指示本文。Claude Code がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します
scripts/fake_password_alert.py os-fake-random-password-alert: 謎のパスワード流出警告をランダム通知
references/design_notes.md 概要 をまとめた参考資料

SKILL.md

---
name: os-fake-random-password-alert
description: このSkillは、コマンド実行・作業開始・通知・警告・ジョーク・パスワード流出などのキーワードや明示的な /os-fake-random-password-alert 呼び出し時に発動します。ユーザーの操作に合わせ、毎回異なる“偽パスワード流出警告”をデスクトップ通知で表示します。
---

# 機能概要
このSkill「os-fake-random-password-alert」は、あなたの作業中やコマンド実行時に“謎のOS公式・パスワード流出警告”をデスクトップ通知として表示します。通知内容は毎回ランダムに生成され、実在しないパスワード(例:「banana-1977」「tamagoyaki123」)が流出した旨の警告が現れます。現実感がありつつも、必ず「これはジョーク通知です」と明記されるため、混乱を避けつつエンタメとして楽しめます。周囲の反応や自分の気分転換・ネタ用途に最適です。

# 使い方
- 明示的呼び出し例: `/os-fake-random-password-alert`
- 暗黙発動キーワード例: 「コマンド実行」「警告」「パスワード流出」「通知」「ジョーク」などを含む操作や会話時に自動発動します。
- CLIから直接スクリプトを実行することも可能です。

# 出力例
```
[通知] あなたの秘密パスワードが「banana-1977」としてインターネットに流出しました。
警告:本日発見された流出パスワード「tamagoyaki123」
重要:あなたのアカウント情報「penguin_2020」が外部に公開されました。
注意:システムが新たな流出パスワード「misoSoup88」を検出しました。
※これはジョーク通知です。実際の流出ではありません。
```

# 注意点
- 通知内容は毎回ランダム生成され、現実に存在しないパスワードのみを使用します。
- 本Skillはユーザーのローカル環境に通知を表示しますが、情報の保存や外部送信は一切行いません。
- 本物の警告と誤認されないよう、必ず「ジョーク通知」と明記されます。
- 一部のOSや通知環境によっては表示形式が異なる場合があります。

# 参考資料
- references/design_notes.md を参照
- 公式ドキュメント: https://docs.python.org/ja/3/library/random.html, https://plyer.readthedocs.io/en/latest/

scripts/fake_password_alert.py

import random
import string
import sys
import argparse
import time
import threading
import platform
try:
    from plyer import notification
except ImportError:
    notification = None

PASSWORD_WORDS = [
    'banana', 'tamagoyaki', 'penguin', 'misoSoup', 'sakura', 'ramen', 'giraffe', 'moon', 'coffee', 'apple',
    'wasabi', 'mountain', 'river', 'piano', 'neko', 'inu', 'sushi', 'caramel', 'takoyaki', 'matcha', 'honey',
    'robot', 'cloud', 'maple', 'onigiri', 'kappa', 'ninja', 'kokeshi', 'sumo', 'origami', 'soba', 'yakitori',
    'melon', 'curry', 'bamboo', 'plum', 'tiger', 'crane', 'castle', 'fuji', 'shiba', 'koi', 'tulip', 'squid'
]

SYMBOLS = ['!', '@', '#', '$', '%', '&']

TEMPLATE_MESSAGES = [
    'あなたの秘密パスワードが「{password}」としてインターネットに流出しました。',
    '警告:本日発見された流出パスワード「{password}」',
    '重要:あなたのアカウント情報「{password}」が外部に公開されました。',
    '注意:システムが新たな流出パスワード「{password}」を検出しました。',
    'セキュリティ警告:流出した認証情報「{password}」',
    '新規流出パスワード「{password}」が見つかりました。',
    '速報:あなたのパスワード「{password}」がダークウェブで発見されました。',
    'ご注意:不審なパスワード「{password}」が第三者により公開されました。'
]

JOKE_NOTICE = '※これはジョーク通知です。実際の流出ではありません。'


def generate_fake_password():
    word = random.choice(PASSWORD_WORDS)
    year = str(random.randint(1950, 2025))
    suffix = random.choice(['', str(random.randint(10,999)), random.choice(SYMBOLS)+str(random.randint(1,99))])
    if random.random() < 0.3:
        # たまに複数単語
        word2 = random.choice(PASSWORD_WORDS)
        password = f"{word}{random.choice(['_', '-', ''])}{word2}{suffix}"
    else:
        password = f"{word}{suffix}"
    # さらにランダムで数字や記号を付加
    if random.random() < 0.4:
        password += random.choice(SYMBOLS)
    if random.random() < 0.2:
        password = password.capitalize()
    return password


def generate_alert_message():
    password = generate_fake_password()
    template = random.choice(TEMPLATE_MESSAGES)
    message = template.format(password=password)
    return message


def show_notification(title, message):
    if notification:
        try:
            notification.notify(
                title=title,
                message=message,
                app_name='FakePasswordAlert',
                timeout=8
            )
        except Exception as e:
            print(f"[通知失敗] {e}")
            print(f"{title}: {message}")
    else:
        # plyerがなければprint
        print(f"[通知] {title}: {message}")


def print_alert():
    alert = generate_alert_message()
    print(f"[通知] {alert}\n{JOKE_NOTICE}")


def notify_alert():
    alert = generate_alert_message()
    title = "パスワード流出警告 (ジョーク)"
    message = f"{alert}\n{JOKE_NOTICE}"
    show_notification(title, message)


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


def main():
    parser = argparse.ArgumentParser(description='os-fake-random-password-alert: 謎のパスワード流出警告をランダム通知')
    subparsers = parser.add_subparsers(dest='command', required=False)

    parser_alert = subparsers.add_parser('alert', help='1回だけ偽パスワード流出警告を通知')
    parser_print = subparsers.add_parser('print', help='1回だけ通知内容を標準出力')
    parser_loop = subparsers.add_parser('loop', help='一定間隔で複数回通知')
    parser_loop.add_argument('--interval', type=int, default=10, help='通知間隔(秒)')
    parser_loop.add_argument('--count', type=int, default=3, help='通知回数')
    parser_test = subparsers.add_parser('test', help='全テンプレートで1回ずつ通知')

    args = parser.parse_args()

    if not args.command or args.command == 'alert':
        notify_alert()
    elif args.command == 'print':
        print_alert()
    elif args.command == 'loop':
        loop_alert(args.interval, args.count)
    elif args.command == 'test':
        for template in TEMPLATE_MESSAGES:
            password = generate_fake_password()
            alert = template.format(password=password)
            title = "パスワード流出警告 (ジョーク)"
            message = f"{alert}\n{JOKE_NOTICE}"
            show_notification(title, message)
            time.sleep(2)
    else:
        parser.print_help()

if __name__ == '__main__':
    main()

references/design_notes.md

# 概要
本Skillは、作業やコマンド実行時に毎回異なる“偽パスワード流出警告”をデスクトップ通知で表示し、ユーザーや周囲を一瞬驚かせつつ、必ず「ジョーク通知」である旨を明示するエンタメ系演出ツールです。

# 設計方針
- 通知内容は完全にランダム生成し、実在しないパスワードのみを使用。
- 通知テンプレートやパスワード生成ロジックは拡張性を持たせています。
- plyerライブラリによるクロスプラットフォームな通知実装。
- 本物の流出警告と誤認されないよう、文末に必ず「ジョーク通知」明記。

# 利用例
- チームの休憩時間やイベントでのネタ演出。
- セキュリティ啓発のきっかけや、作業の気分転換。
- ターミナルやスクリプトから直接実行し、複数回通知も可能。

# 注意点
- plyer未導入環境ではprint出力となります。
- ログや履歴は一切保存されません。
- 実際のパスワードや個人情報は一切使用しません。

# 公式ドキュメント
- https://plyer.readthedocs.io/en/latest/
- https://docs.python.org/ja/3/library/random.html

導入手順

このSkillは GitHub で管理されているので、degit を使えば必要なフォルダだけを1コマンドで取得できます。Claude Code はファイル配置後に再起動するだけで自動認識します。

1. 前提

  • Node.js v16 以上 (degit 実行に必要)
  • Claude Code がローカルで動いていること

2. degit でフォルダ取得

プロジェクトのルートで以下のコマンドを実行します。

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

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

3. ファイル配置確認

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

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

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

5. 動作確認

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