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 の中に“遊び”や“余白”を生み、開発体験が豊かになる
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記事を探す
本記事に付いているタグから、気になるテーマの記事を探せます。タグページで関連記事をまとめて読めるので、ぜひチェックしてみてください!
