Claude Codeで作業中に古代予言通知を自動表示する演出構築入門

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

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

Claude Code を使った開発現場では、真面目なAI coding workflowの合間に、ふとした瞬間に「何か面白いことが起きてほしい」と感じることがあります。特に、長時間にわたる repository understanding や path management、monorepo 構造の解析など、集中力が必要な作業を続けていると、ちょっとしたリフレッシュや意外性が欲しくなるものです。

また、通知や演出系のSkillが少なく、作業が単調になりがちだったり、チーム onboardingの際にも“堅苦しさ”を感じやすいという声も。そんな背景から、作業中に唐突な“謎の演出”が走ることで、場の空気が和んだり、ちょっとした話題が生まれることを期待する人も増えています。

  • 長時間の repository や directory 構造解析で集中力が途切れる
  • monorepo での package 跨ぎ作業が単調で飽きやすい
  • onboarding や session 再開時に、緊張感や堅苦しさが漂う
  • AI coding workflow が効率的すぎて、雑談や遊び心が入り込む余地がない
  • 通知や演出系 Skill が少なく、「何か面白い演出がほしい」と感じる

こういった悩みは、通知・演出・OS連携カテゴリのSkillで解消できる可能性があります。

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

一言サマリ: このスキルは、作業中に突如“謎のOS古代予言通知”を炸裂させ、開発現場に遊び心とリフレッシュをもたらすSkill。

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

  • 作業の合間やコマンド実行時に、毎回異なる“古代書物風”の予言通知がランダムに表示され、思わず二度見&リフレッシュできる
  • 真面目な repository understanding や path management の流れに、意外性のあるエンタメ要素を注入できる
  • onboarding や長時間のAI coding workflowで、場の空気が和み、コミュニケーションのきっかけになる
  • 通知・演出系 Skill の少なさを補い、Claude Code の活用幅を拡張できる
  • 副作用やデータ損失なしで、気軽に導入・削除が可能
QUICK INSTALL
このSkillをすぐ試す

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

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

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

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

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


# /random-os-fake-ancient-prophecy-alert
> 新しい session を開始

[謎のOS古代予言通知]
「西のウィンドウズに赤きバグ現る時、選ばれし者はリブートせよ」
---
本日の repository: /home/user/projects/ancient-os
directory 構造を見直すがよい

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


> packages/core/utils/ に移動して作業

[謎のOS古代予言通知]
「2024年、ファイル名にパワー宿る。/packages/core/utils/の深き階層に注意せよ」
---
monorepo 構造を再確認中

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


> ちょっと気分転換したい

[謎のOS古代予言通知]
「時の流れは速し。build ディレクトリに眠るコード、再び目覚める日近し」
---
この予言に従うかは、あなた次第

before / after の違い

場面 Skill 無し Skill 有り
session 再開時 repo 構造から毎回説明、path も指定し直し 唐突な予言通知で場が和み、気分転換しつつ再開
monorepo 移動 単調な package 跨ぎ作業 directory ごとに異なる予言が現れ、作業にアクセント
長時間 workflow long context で重要箇所が薄まる 定期的な予言通知で集中力をリセット

発動方式

明示呼び出し (/random-os-fake-ancient-prophecy-alert) と暗黙発動 (自然言語説明やコマンド内容が条件にマッチ) の両方に対応。

Skill の中身を全部見せる

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

.claude/skills/random-os-fake-ancient-prophecy-alert/
├── SKILL.md
├── scripts/
│   └── prophecy_alert.py
└── references/
    └── design_notes.md

各ファイルの役割

ファイル 役割
SKILL.md Skill本体。frontmatter (name/description) と指示本文。Claude Code がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します
scripts/prophecy_alert.py 謎のOS古代予言通知をランダムに表示
references/design_notes.md 概要 をまとめた参考資料

SKILL.md

---
name: random-os-fake-ancient-prophecy-alert
description: 作業中やコマンド実行後に、キーワード(build, run, test, deploy, commit, push, install, update, error, warning, success)を検知した時、または明示的な呼び出し時に、古代OS風の予言通知をランダムに生成・表示します。
---

# 機能概要
このSkillは、あなたの開発作業中やコマンド実行の合間に、突如として“謎のOS古代予言通知”をランダムに放ちます。通知内容は毎回異なり、「西のウィンドウズに赤きバグ現る時、選ばれし者はリブートせよ」や「2024年、ファイル名にパワー宿る」など、意味不明かつ荘厳な古代書物風メッセージが炸裂。真面目な現場に突如として古代ロマンを注入し、思わず二度見&クスッと笑える“作業中断型エンタメ演出”を体験できます。データ損失や副作用は一切なく、どんな環境でも安全に利用できます。

# 使い方
- 明示呼び出し: `/random-os-fake-ancient-prophecy-alert`
- 暗黙発動: build, run, test, deploy, commit, push, install, update, error, warning, success などのキーワードを含む作業やコマンド実行時に自動発動

# 出力例
```
=== 古代OS予言通知 ===
『西のウィンドウズに赤きバグ現る時、選ばれし者はリブートせよ』

=== 古代OS予言通知 ===
『2024年、ファイル名にパワー宿る。拡張子を変える者、道を得ん』

=== 古代OS予言通知 ===
『sudoの呪文、三度唱えし者に青き画面の試練訪れる』
```

# 注意点
- 本Skillは通知演出のみで、ファイルや設定の変更、データ保存は一切行いません。
- 予言内容は完全にランダム生成され、実際のOSやセキュリティには一切関係ありません。
- 重大な作業やCI/CDパイプライン等での自動実行にはご注意ください。
- ローカル通知のみで、外部サーバーへの通信はありません。

# 参考資料
- [Python公式通知API: notify2, plyer](https://pypi.org/project/plyer/)
- references/design_notes.md 参照

scripts/prophecy_alert.py

import sys
import argparse
import random
import time
import os

try:
    from plyer import notification
    PLYER_AVAILABLE = True
except ImportError:
    PLYER_AVAILABLE = False

PROPHECY_TEMPLATES = [
    "西の{os}に{color}き{bug}現る時、選ばれし者は{action}せよ",
    "{year}年、{noun}にパワー宿る。{verb}者、道を得ん",
    "{cmd}の呪文、三度唱えし者に{color}き{screen}の試練訪れる",
    "{file}の奥深く、{beast}眠りし時、{user}は目覚める",
    "{os}の{mountain}越えし後、{user}に{gift}授けられる",
    "{noun}を{verb}すれば、{os}の門開かれる",
    "{year}の{event}、{user}は{action}を忘れるな",
    "{cmd}の失敗、{os}の怒りを呼ぶ",
    "{noun}に{color}き光差す時、{user}は{gift}を手にする",
    "{file}に隠された{beast}、{user}のみが見つけ出す"
]

TEMPLATE_VARS = {
    "os": ["ウィンドウズ", "リナックス", "マック"],
    "color": ["赤", "青", "黒", "白", "金"],
    "bug": ["バグ", "影", "警告", "謎のエラー"],
    "action": ["リブート", "再起動", "ビルド", "祈り"],
    "year": ["2024年", "1999年", "2038年", "2000年"],
    "noun": ["ファイル名", "拡張子", "パーミッション", "プロセス", "パスワード"],
    "verb": ["変える", "守る", "削除する", "選ぶ"],
    "cmd": ["sudo", "make", "git", "ls", "docker"],
    "screen": ["画面", "闇", "砂嵐"],
    "file": ["/etc/passwd", "/dev/null", "README.md", "main.py"],
    "beast": ["ドラゴン", "バグベア", "ゴーレム", "ワーム"],
    "user": [os.getenv("USER", "選ばれし者")],
    "mountain": ["壁", "山脈", "迷宮", "森"],
    "gift": ["知恵", "勇気", "バグ修正", "新たな権限"],
    "event": ["大停電", "アップデート", "バグ祭り", "リリース"],
}

TRIGGER_KEYWORDS = [
    "build", "run", "test", "deploy", "commit", "push", "install", "update", "error", "warning", "success"
]

NOTIFY_TITLE = "古代OS予言通知"


def generate_prophecy():
    template = random.choice(PROPHECY_TEMPLATES)
    filled = template
    for key, values in TEMPLATE_VARS.items():
        filled = filled.replace('{' + key + '}', random.choice(values))
    return filled


def show_notification(prophecy):
    if PLYER_AVAILABLE:
        try:
            notification.notify(
                title=NOTIFY_TITLE,
                message=prophecy,
                app_name="ProphecyAlert",
                timeout=5
            )
        except Exception as e:
            print(f"[通知失敗] {e}")
            print(f"=== {NOTIFY_TITLE} ===\n『{prophecy}』\n")
    else:
        print(f"=== {NOTIFY_TITLE} ===\n『{prophecy}』\n")


def trigger_by_keywords(log_line):
    for kw in TRIGGER_KEYWORDS:
        if kw in log_line.lower():
            return True
    return False


def monitor_stdin():
    try:
        for line in sys.stdin:
            if trigger_by_keywords(line):
                prophecy = generate_prophecy()
                show_notification(prophecy)
    except KeyboardInterrupt:
        pass


def random_interval_alert(min_sec=180, max_sec=600):
    try:
        while True:
            wait = random.randint(min_sec, max_sec)
            time.sleep(wait)
            prophecy = generate_prophecy()
            show_notification(prophecy)
    except KeyboardInterrupt:
        pass


def main():
    parser = argparse.ArgumentParser(description="謎のOS古代予言通知をランダムに表示")
    subparsers = parser.add_subparsers(dest="command")

    parser_once = subparsers.add_parser("once", help="1回だけ予言通知")
    parser_monitor = subparsers.add_parser("monitor", help="標準入力を監視し、キーワード検知で通知")
    parser_random = subparsers.add_parser("random", help="一定時間ごとにランダム通知")
    parser_random.add_argument("--min", type=int, default=180, help="最小間隔(秒)")
    parser_random.add_argument("--max", type=int, default=600, help="最大間隔(秒)")

    args = parser.parse_args()

    if args.command == "once":
        prophecy = generate_prophecy()
        show_notification(prophecy)
    elif args.command == "monitor":
        print("標準入力を監視します。Ctrl+Cで終了。\n")
        monitor_stdin()
    elif args.command == "random":
        print(f"{args.min}秒〜{args.max}秒の間隔で予言通知を発動します。Ctrl+Cで終了。\n")
        random_interval_alert(args.min, args.max)
    else:
        parser.print_help()
        print("\n例: python prophecy_alert.py once")

if __name__ == '__main__':
    main()

references/design_notes.md

# 概要
本Skillは、開発現場に“古代OSの謎予言”という非日常的な演出を加えることで、作業の合間に笑いや気分転換を提供することを目的としています。通知は完全に無害で、実業務やデータに影響を与えません。

# 公式ドキュメント抜粋
通知APIにはPythonの[plyer](https://pypi.org/project/plyer/)を利用。plyerはクロスプラットフォームでデスクトップ通知を実現できるため、Windows/Mac/Linuxいずれでも動作します。

# 利用例
- 明示呼び出し: `python prophecy_alert.py once`
- コマンド出力監視: `your_command | python prophecy_alert.py monitor`
- ランダム通知: `python prophecy_alert.py random --min 120 --max 300`

# 注意点
- plyer未インストール時は標準出力のみ。
- 予言内容は完全に架空で、実際のOSやセキュリティには一切関係ありません。

# 設計方針
- 予言テンプレートと変数を分離し、毎回異なる通知を生成。
- 標準入力監視・ランダム発動・明示呼び出しの3モードを用意。
- plyerが使えない場合も必ず標準出力で通知。

導入手順

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

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

3. ファイル配置確認

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

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

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

5. 動作確認

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