Claude Code ユーザーが日常でぶつかる悩み
Claude Code を日常的に使っていると、便利さの裏で思わず「またか…」と感じるシーンが少なくありません。特に通知や演出、OS連携まわりで、ふとした瞬間に集中力が切れたり、思考が途切れたりすることも。以下のような悩みが「あるある」として挙げられます。
- Claude Code がいつの間にか違う directory を見始めて、想定外のファイルを読みに行く
- monorepo で package を跨いだ瞬間、Claude Code が repo 構造を忘れる
- session を再開すると、前回までの context や path 指定をまるごと再説明しないといけない
- 長時間 workflow で long context が膨らみすぎて、important な情報が薄まる (stale context)
- 「ここはこういう構造のリポジトリ」というあらすじを毎回チャットの冒頭で書く羽目になる
さらに、長時間作業や繰り返しの onboarding で集中力が途切れ、ちょっとした「遊び」や変化が欲しくなる瞬間も。そんな時に「謎の通知」や「意味不明な演出」があれば、意外とリフレッシュにつながるのでは?という声もよく聞かれます。
この Skill が一言でいうと何を解決するか
一言サマリ: このスキルは、Claude Code の作業中に突如現れる“謎の古文書巻物通知”で、集中力のリセットや気分転換を強制的に演出する Skill。
もう少し具体化すると、このSkillを入れることで以下のような状態になる:
- AI coding workflow の合間に、完全無意味な“古文書巻物通知”が現れ、作業のマンネリや stale context を強制リセット
- repo や directory の切り替え時、monorepo の package 跨ぎ時に、謎のOS公式っぽい演出で笑いと違和感を提供
- onboarding や session 再開時の「いつもと同じ流れ」に、毎回異なる context(=通知文)で変化と話題を生む
- Skill の巻物風UIが、単調なターミナルやデスクトップに“謎のエンタメ性”を持ち込む
- 通知内容が毎回ランダム生成なので、記憶に残る一発ネタとしてチーム内でも話題化
GitHub から degit でコマンド1行、Claude Code の Skill ディレクトリに展開できます。Node.js があれば即時に動きます。
npx degit aazutaku/ai-note/claude-code/random-os-fake-ancient-scroll-alert .claude/skills/random-os-fake-ancient-scroll-alert実行したらこうなる (3つの利用シーン)
使う側がイメージしやすいよう、擬似 terminal で出力例を3パターン示します。
シーン1: session 開始時 (CLAUDE.md と組み合わせて)
# /random-os-fake-ancient-scroll-alert
[巻物通知]
━━━━━━━━━━━━━━━━━━━━━━
西のcodes/ディレクトリに
バグの気運、漂う
本日、レビュアーの機嫌は末吉
━━━━━━━━━━━━━━━━━━━━━━
(古文書巻物UIが画面端にふわっと出現)
シーン2: monorepo / package 跨ぎ作業時
> packages/api/ に移動
[巻物通知]
━━━━━━━━━━━━━━━━━━━━━━
古きリポジトリの奥より
“api/handler.py”に
不穏なるPRの影、忍び寄る
━━━━━━━━━━━━━━━━━━━━━━
(巻物風の枠がターミナル右下に出現)
シーン3: お遊び的な使い方
> ちょっと気分転換したい
[巻物通知]
━━━━━━━━━━━━━━━━━━━━━━
本日、commit数は吉
だが、東のtests/に
謎のバグ、現る
━━━━━━━━━━━━━━━━━━━━━━
(巻物UIで無意味な警告が出て、思わず笑う)
before / after の違い
| 場面 | Skill 無し | Skill 有り |
|---|---|---|
| session 再開時 | repo 構造から毎回説明、path も指定し直し | Claude Code が自動で context を復元、最小プロンプトで再開+巻物通知で気分転換 |
| monorepo 移動 | 違う package のコードを参照しがち | directory boundary を意識して必要な範囲だけ見る+巻物通知で違和感演出 |
| 長時間 workflow | long context で重要箇所が薄まる | 巻物通知で強制的に集中力をリセット |
発動方式
明示呼び出し (/random-os-fake-ancient-scroll-alert) と暗黙発動 (「気分転換したい」「謎の通知を出して」など description マッチ) の両方に対応。
Skill の中身を全部見せる
.claude/skills/random-os-fake-ancient-scroll-alert/ に配置するファイル一覧です。GitHub に push 済みなので、上記の degit コマンドで一発取得できます。
.claude/skills/random-os-fake-ancient-scroll-alert/
├── SKILL.md
├── scripts/
│ └── scroll_alert.py
└── references/
└── design_notes.md
各ファイルの役割
| ファイル | 役割 |
|---|---|
SKILL.md |
Skill本体。frontmatter (name/description) と指示本文。Claude Code がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します |
scripts/scroll_alert.py |
謎のOS公式・古文書巻物通知 Skill |
references/design_notes.md |
概要 をまとめた参考資料 |
SKILL.md
---
name: random-os-fake-ancient-scroll-alert
description: コマンド実行後・作業の合間・明示呼び出し(/random-os-fake-ancient-scroll-alert)時に、ランダムな“OS公式古文書巻物通知”を画面端へ表示。集中力ブレイクやエンタメ演出が必要な場面で発動。
---
# 機能概要
このSkillは、作業中やコマンド実行の合間に、突如として“謎のOS公式・古文書巻物通知”をデスクトップやターミナル画面端に表示します。通知は「西のコードベースにバグの気運漂う」「レビュアーの機嫌は末吉」など、古文書風の無意味なテキストが毎回ランダム生成され、巻物風UIで表示されます。実用性は皆無ですが、集中力をブレイクしたい時や、作業に一息入れたい時のエンタメ演出として活用できます。
# 使い方
- 明示呼び出し:`/random-os-fake-ancient-scroll-alert` をコマンドとして実行
- 暗黙発動:コマンド実行後や一定時間ごと(例: 15分毎)、または「集中」「疲れ」などのキーワードを含む会話文脈で自動発動
# 出力例
```
┌────────────────────────────┐
│ 西のコードベースにバグの気運漂う │
│ 本日、レビュアーの機嫌は末吉 │
│ 東の山より新たな仕様書が届く │
│ 朝霧の中、ビルドは静かに失敗す │
└────────────────────────────┘
```
# 注意点
- 実用性はありません。通知内容は完全に無意味で、そのまま業務に使わないでください。
- 通知はローカル画面端に一時的に表示され、履歴保存やOS通知センター連携はありません。
- 他の通知や作業の邪魔になる場合があります(それが目的です)。
# 参考資料
- 参考: `references/design_notes.md`
- 公式: [Python標準Tkinterドキュメント](https://docs.python.org/ja/3/library/tkinter.html)
- Skill設計・UI描画に関する詳細は references/ を参照してください。
scripts/scroll_alert.py
import sys
import argparse
import random
import threading
import time
import tkinter as tk
from tkinter import font as tkfont
SCROLL_TEXTS = [
[
"西のコードベースにバグの気運漂う",
"レビュアーの機嫌は末吉",
"東の山より新たな仕様書が届く",
"朝霧の中、ビルドは静かに失敗す"
],
[
"南のリポジトリ、謎のマージ衝突あり",
"今日のCI、波高し",
"古きAPI、未だ現役",
"北風に乗りてPR流る"
],
[
"西方、無限ループの噂立つ",
"レビュアー、昼寝中につき審議遅延",
"朝焼けに染まるコードレビュー",
"仕様書、解読不能の巻物となる"
],
[
"東の山、未読のissue積もりけり",
"本日、デプロイ運気は小吉",
"バグ、静かに忍び寄る",
"古文書に残るバグの記憶"
],
[
"北の森、ドキュメント迷宮化す",
"レビュアーの一言、雷鳴の如し",
"西風に乗りて仕様変更来たる",
"深夜のビルド、霧の中に消ゆ"
],
[
"南の海、未解決のエラー漂う",
"本日、テストカバレッジ微増",
"古きバグ、新たな姿に化ける",
"レビュアー、沈黙を守る"
]
]
def random_scroll_text():
return random.choice(SCROLL_TEXTS)
def display_scroll_alert(lines, duration=8):
root = tk.Tk()
root.overrideredirect(True)
root.attributes("-topmost", True)
root.withdraw()
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
# UI設定
frame = tk.Frame(root, bg="#f5ecd2", bd=4, relief=tk.RIDGE)
frame.pack(fill=tk.BOTH, expand=True)
# フォント設定
try:
scroll_font = tkfont.Font(family="MS Mincho", size=15, weight="bold")
except Exception:
scroll_font = tkfont.Font(size=15, weight="bold")
# 巻物風タイトル
title = tk.Label(frame, text=" 謎のOS公式・古文書巻物通知 ", bg="#c2b280", fg="#3f3210", font=("MS Gothic", 12, "bold"))
title.pack(fill=tk.X, pady=(0, 4))
# 本文
for line in lines:
lbl = tk.Label(frame, text=line, bg="#f5ecd2", fg="#2c2000", font=scroll_font, anchor="w", justify=tk.LEFT)
lbl.pack(anchor="w", padx=16)
# 巻物枠風に
frame.update_idletasks()
width = frame.winfo_width() or 380
height = frame.winfo_height() or (32 * len(lines) + 40)
# 画面右下に配置
x = screen_width - width - 20
y = screen_height - height - 60
root.geometry(f"{width}x{height}+{x}+{y}")
root.deiconify()
def close():
root.destroy()
# 指定秒数後に自動消去
root.after(duration * 1000, close)
root.mainloop()
def scroll_alert_command(args):
lines = random_scroll_text()
display_scroll_alert(lines, duration=args.duration)
def list_scrolls_command(args):
print("--- 登録済み巻物通知サンプル ---")
for i, lines in enumerate(SCROLL_TEXTS):
print(f"[{i+1}] ")
for l in lines:
print(f" {l}")
print()
def summary_command(args):
print("このSkillは、作業中やコマンド実行の合間に、
謎のOS公式・古文書巻物通知を画面端に表示します。通知内容は毎回ランダム生成され、集中力をブレイクするエンタメ演出です。")
print(f"登録済み通知パターン数: {len(SCROLL_TEXTS)}")
def auto_mode(interval=900):
try:
while True:
lines = random_scroll_text()
t = threading.Thread(target=display_scroll_alert, args=(lines,))
t.start()
time.sleep(interval)
except KeyboardInterrupt:
print("自動巻物通知モード終了")
def main():
parser = argparse.ArgumentParser(description="謎のOS公式・古文書巻物通知 Skill")
subparsers = parser.add_subparsers(dest="command")
parser_alert = subparsers.add_parser("alert", help="巻物通知を即座に表示")
parser_alert.add_argument("--duration", type=int, default=8, help="表示秒数 (デフォルト8秒)")
parser_alert.set_defaults(func=scroll_alert_command)
parser_list = subparsers.add_parser("list", help="巻物通知サンプル一覧表示")
parser_list.set_defaults(func=list_scrolls_command)
parser_summary = subparsers.add_parser("summary", help="Skill概要を表示")
parser_summary.set_defaults(func=summary_command)
parser_auto = subparsers.add_parser("auto", help="一定間隔で自動巻物通知モード")
parser_auto.add_argument("--interval", type=int, default=900, help="通知間隔秒 (デフォルト15分)")
parser_auto.set_defaults(func=lambda args: auto_mode(args.interval))
args = parser.parse_args()
if hasattr(args, "func"):
args.func(args)
else:
parser.print_help()
if __name__ == "__main__":
main()
references/design_notes.md
# 概要
本Skillは、作業中に突如として“謎のOS公式・古文書巻物通知”を画面端に表示し、集中力をブレイクするエンタメ演出を目的としています。Tkinterを使い、巻物風のUIで無意味な通知文をランダム生成します。
# 公式ドキュメント抜粋
TkinterはPython標準GUIライブラリで、`Tk()`によるウィンドウ生成や`Label`/`Frame`での装飾が可能です。
- [Tkinter公式](https://docs.python.org/ja/3/library/tkinter.html)
# 利用例
- `/random-os-fake-ancient-scroll-alert` コマンドで即時発動
- `scroll_alert.py alert` で手動通知
- `scroll_alert.py auto --interval 600` で10分ごと自動通知
# 注意点
- 通知内容は完全に無意味で、業務利用不可
- OS通知センター連携や履歴保存機能は未実装
- 他の通知や作業の邪魔になる場合があります
# 設計方針
- ランダム性と巻物風UIの徹底
- シンプルな依存(Tkinterのみ)
- ユーモアと集中力ブレイクを最優先
導入手順
この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-scroll-alert .claude/skills/random-os-fake-ancient-scroll-alert
.claude/skills/random-os-fake-ancient-scroll-alert の中に SKILL.md / scripts/ / references/ / README.md が展開されます。
3. ファイル配置確認
ls .claude/skills/random-os-fake-ancient-scroll-alert
# SKILL.md, scripts/, references/, README.md があればOK
4. Claude Code を再起動 (or Skill 自動検出を待つ)
新しいSkillが自動で認識されます。リスト確認したい場合は /random-os-fake-ancient-scroll-alert と Skill 名で出てきます。
5. 動作確認
/random-os-fake-ancient-scroll-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
- 通知が多すぎて逆に邪魔: 意図しないタイミングで巻物通知が連発される場合、集中力ブレイカーが逆効果になる可能性
- UI崩れ: 巻物風UIがOSやターミナル環境によって正常に表示されない場合がある
試す前に確かめたいこと
この Skill を実運用に投入する前に確かめたい問いを並べる:
- 実 repo での token 消費は許容範囲か?
- monorepo (packages 多数) で安定して動くか?
- stale context にならず、長時間 workflow でも有効か?
- CLAUDE.md との連携設計はどうあるべきか?
- 巻物風UIがちゃんと表示されるか?
- 通知文が毎回異なるランダム生成になっているか?
- 他の通知や作業の邪魔になっているか(むしろ歓迎)
実際に Claude Code で試した検証ログは Claude Codeで謎の古文書巻物通知を爆誕させてみた! にまとめる予定 (公開準備中の場合あり)。
あわせて Claude Code 公式ドキュメント と、本シリーズ「Claude Codeを便利にするSkill提案」の他記事も参照のこと。
関連タグで他のSkill記事を探す
本記事に付いているタグから、気になるテーマの記事を探せます。タグページで関連記事をまとめて読めるので、ぜひチェックしてみてください!
