Claude Codeで作業中に古代詩通知を自動表示する演出構築ガイド

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

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

Claude Code を日々使っていると、ちょっとした“間”や作業の切れ目に、気持ちのリセットや遊び心が欲しくなる瞬間があります。しかし、現実には以下のような悩みがつきまといがちです。

  • 集中している最中、ふとしたタイミングで気分転換やリフレッシュのきっかけがなく、作業が単調になりやすい
  • 長時間の AI coding workflow で context が膨らみ、重要な repository understanding が埋もれがち
  • monorepo で複数の directory を行き来していると、path management の煩雑さに気を取られてしまう
  • onboarding 時や session 再開時、「また最初から説明か…」と感じることが多い
  • 通知や演出が無機質で、開発現場に遊びや知的な混乱が足りないと感じる

特に通知・演出・OS連携まわりは、Claude Code の workflow に“風穴”を開けるようなアイデアが求められています。堅い作業の合間に、ちょっとした余白や笑いが欲しい、そんな声もよく聞かれます。

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

一言サマリ: このスキルは、作業中の唐突な“古代詩通知”で、AI coding workflow に知的な混乱と笑いをもたらします。

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

  • いつでも完全ランダムな“OS古代詩通知”が発動し、長時間の単調な作業や stale context を一気にリフレッシュ
  • repo や directory の移動タイミングで、思わずクスッとする古文調ポエムが飛び出し、onboarding や path management の心理的負担が軽減
  • session 再開やメモリ復元の瞬間に、AIからの謎の“知的エンタメ”が挿入され、コミュニケーションのハードルが下がる
  • monorepo の複雑な repository understanding の合間に、全く関係ない詩が挟まることで、context の切り替えが自然にできる
  • AI coding workflow の中に“遊び”や“余白”を生み、開発体験が豊かになる
QUICK INSTALL
このSkillをすぐ試す

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

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

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

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

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


# /random-os-fake-ancient-poem-notifier

[OS通知] 西のコードベースにバグの風そよぐ
  main.py の彼方、未知の警告鳴り渡る
  今日の session、静かなる始まりなり

(Claude Code が session context をセットしつつ、謎の古文詩を表示)

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


> package/core/ から packages/infra/ へ移動

[OS通知] packages/infra/の奥に、静かなる commit の灯
  君が directory を跨ぐたび、古の知恵よ目覚めよ
  path management も、今宵は詩となる

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


# /random-os-fake-ancient-poem-notifier

[OS通知] あなたのShiftキー、今宵は静かに眠るべし
  repository understanding も束の間の休息を
  長き context の果てに、笑いの一陣吹き抜ける

before / after の違い

場面 Skill 無し Skill 有り
session 再開時 repo 構造から毎回説明、path も指定し直し Claude Code が自動で context を復元、詩的な通知で再開に遊び心
monorepo 移動 違う package のコードを参照しがち directory boundary で古文調通知、気持ちも context も切り替えやすい
長時間 workflow long context で重要箇所が薄まる 詩的通知が適度なリセットとなり、集中力維持に役立つ

発動方式

明示呼び出し (/random-os-fake-ancient-poem-notifier) と暗黙発動 (description マッチ) の両方に対応。

Skill の中身を全部見せる

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

.claude/skills/random-os-fake-ancient-poem-notifier/
├── SKILL.md
├── scripts/
│   └── ancient_poem_notifier.py
└── references/
    └── design_notes.md

各ファイルの役割

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

SKILL.md

---
name: random-os-fake-ancient-poem-notifier
description: このSkillは、作業中やコマンド実行時など任意タイミングで“古文調の謎ポエム通知”をデスクトップやターミナルにランダム表示します。通知内容は完全ランダム生成で、作業内容やエラー情報とは無関係です。trigger: always, semantic, /random-os-fake-ancient-poem-notifier。
---

# 機能概要
このSkillは、あなたの開発作業中に“OS古代詩通知”をランダムなタイミングで表示します。通知内容は、まるで万葉集や古典文学のような謎めいた詩文で、現代の開発現場に一陣の知的混乱と笑いをもたらします。内容は完全に作業やエラーと無関係で、集中力を絶妙にそらしつつ、コード人生に新たな刺激を与えます。

# 使い方
- 明示呼び出し: `/random-os-fake-ancient-poem-notifier` をコマンドとして入力すると、即座に1つの“古代詩通知”が表示されます。
- 暗黙発動: 「通知」「詩」「古文」「集中力」「疲れ」などのキーワードや、一定時間作業が続いたタイミングで自動発動します。

# 出力例
```
[OS古代詩通知]
西のコードベースにバグの風そよぐ
静かなる夜に、あなたのShiftキー眠る
エラーの海を越えて、デバッグの舟は進む

[OS古代詩通知]
朝焼けのメモリ、未割り当ての夢を見る
バージョン管理の波、静かに揺れる
```

# 注意点
- 実際のシステム通知や作業内容には一切影響を与えません。
- 通知内容はすべてランダム生成され、毎回異なります。
- ローカル保存や履歴機能はありません。
- 除外パス: システム設定や重要なファイルには干渉しません。

# 参考資料
- references/design_notes.md に設計思想や動作例を記載
- 公式: https://docs.python.org/3/library/subprocess.html, https://pypi.org/project/plyer/

scripts/ancient_poem_notifier.py

import argparse
import random
import sys
import time
import platform

try:
    from plyer import notification
except ImportError:
    notification = None

# 古文調の詩句パーツ
POEM_SUBJECTS = [
    "西のコードベースに",
    "朝焼けのメモリ、",
    "静かなる夜に、",
    "バージョン管理の波、",
    "エラーの海を越えて、",
    "あなたのShiftキー、",
    "未割り当ての夢、",
    "デバッグの舟は",
    "静寂のターミナルに、",
    "古きAPIの森にて、"
]

POEM_PREDICATES = [
    "バグの風そよぐ",
    "今宵は静かに眠るべし",
    "静かに揺れる",
    "未定義の変数、彷徨う",
    "エラーの兆し、遠くに見ゆ",
    "リファクタの声、響き渡る",
    "コミットの灯、淡くとも",
    "警告の雨、降り注ぐ",
    "型安全の夢、儚し",
    "ビルドの神、微笑む"
]

POEM_ENDINGS = [
    "",
    "静かなる時を刻む",
    "コードの彼方へ",
    "夢の如く消えゆく",
    "バージョンを越えて",
    "開発者の心に残る",
    "新たな朝を待つ",
    "無限ループの果てに",
    "再起動の詩とともに"
]


def generate_poem():
    lines = []
    line_count = random.choice([2, 3])
    for _ in range(line_count):
        subj = random.choice(POEM_SUBJECTS)
        pred = random.choice(POEM_PREDICATES)
        ending = random.choice(POEM_ENDINGS)
        line = subj + pred
        if ending and random.random() > 0.7:
            line += "、" + ending
        lines.append(line)
    return "\n".join(lines)


def notify(title, message):
    # plyer通知 or fallbackでprint
    if notification:
        try:
            notification.notify(
                title=title,
                message=message,
                app_name="OS古代詩通知",
                timeout=8
            )
        except Exception as e:
            print(f"[通知失敗] {e}\n{title}\n{message}")
    else:
        print(f"[OS古代詩通知]\n{message}")


def run_once(args):
    poem = generate_poem()
    notify("OS古代詩通知", poem)
    if args.print:
        print(f"[OS古代詩通知]\n{poem}")


def run_random_loop(args):
    try:
        while True:
            wait = random.randint(args.min_interval, args.max_interval)
            time.sleep(wait)
            poem = generate_poem()
            notify("OS古代詩通知", poem)
            if args.print:
                print(f"[OS古代詩通知]\n{poem}")
    except KeyboardInterrupt:
        print("\n[終了] 古代詩通知ループを停止しました。")


def list_sample(args):
    print("--- 古代詩通知サンプル ---")
    for _ in range(args.count):
        print(f"[OS古代詩通知]\n{generate_poem()}\n")


def main():
    parser = argparse.ArgumentParser(
        description="謎のOS古代詩通知をデスクトップ/ターミナルにランダム表示するSkill"
    )
    subparsers = parser.add_subparsers(dest="command")

    # 明示呼び出し
    parser_once = subparsers.add_parser("once", help="1回だけ古代詩通知を表示")
    parser_once.add_argument("--print", action="store_true", help="標準出力にも表示")
    parser_once.set_defaults(func=run_once)

    # ランダムループ
    parser_loop = subparsers.add_parser("loop", help="ランダムな間隔で古代詩通知を繰り返し表示")
    parser_loop.add_argument("--min-interval", type=int, default=60, help="最短通知間隔(秒)")
    parser_loop.add_argument("--max-interval", type=int, default=300, help="最長通知間隔(秒)")
    parser_loop.add_argument("--print", action="store_true", help="標準出力にも表示")
    parser_loop.set_defaults(func=run_random_loop)

    # サンプル出力
    parser_sample = subparsers.add_parser("sample", help="古代詩通知サンプルを複数表示")
    parser_sample.add_argument("--count", type=int, default=5, help="出力する通知数")
    parser_sample.set_defaults(func=list_sample)

    args = parser.parse_args()
    if not args.command:
        parser.print_help()
        sys.exit(1)
    args.func(args)

if __name__ == '__main__':
    main()

references/design_notes.md

# 概要
このSkillは、開発者の作業中に意図的な“知的ノイズ”として古文調の詩を通知し、集中力のリセットや気分転換を促します。通知内容は完全ランダム生成で、実際の作業内容やエラーには一切干渉しません。

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

# 利用例
- `/random-os-fake-ancient-poem-notifier once` で1回だけ通知
- `/random-os-fake-ancient-poem-notifier loop --min-interval 120 --max-interval 600` で2-10分ごとに自動通知
- `/random-os-fake-ancient-poem-notifier sample --count 10` で10個の詩を標準出力

# 注意点
- plyer未インストール時は標準出力のみ対応
- 通知内容は完全に無関係な詩文で、誤作動や誤通知の心配はありません

# 設計方針
- OS依存せず、Pythonと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-poem-notifier .claude/skills/random-os-fake-ancient-poem-notifier

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

3. ファイル配置確認

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

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

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

5. 動作確認

/random-os-fake-ancient-poem-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 を取りたい
  • 気分転換や遊び心が欲しい時: 単調な作業の合間に、知的な“混乱”や笑いを求めている時

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

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

  • 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をコピーしました!
目次