Claude Code ユーザーが日常でぶつかる悩み
Claude Code を使っていると、日々の開発作業の中で「集中力の維持」や「作業の単調さ」が意外なストレス要因になることがあります。とくに長時間にわたる repository understanding や path management、monorepo の directory 構造把握など、AI coding workflow の効率化に注力するあまり、つい無機質な作業が続いてしまいがちです。
通知・演出・OS連携系のSkillが欲しくなる場面も多く、以下のような「あるある」な困りごとが挙げられます:
- 長時間同じ directory で作業していると、集中力が途切れがちでリフレッシュのきっかけが欲しい
- monorepo の複雑な repository 構造に没頭しすぎて、気づけば時間が過ぎている
- Claude Code の context や memory が膨らみ、作業が単調化して気分転換できない
- session を再開した瞬間、前回までの流れを思い出すのに苦労する
- たまにはAIとのやりとりに「遊び」や「笑い」の余白が欲しくなる
こうした悩みは、真面目なAI coding workflowの中にちょっとした「遊び心」や「意外性」を挟むことで、意外と解消できることがあります。
この Skill が一言でいうと何を解決するか
一言サマリ: このスキルは作業中に突如『謎のOS伝説アイテムドロップ通知』をデスクトップやターミナルに爆誕させますSkill。
もう少し具体化すると、このSkillを入れることで以下のような状態になる:
- AI coding workflow の合間に、完全に意味不明な「伝説アイテムドロップ通知」が現れ、作業の単調さが絶妙に中断される
- repository understanding や directory 構造把握に没頭中でも、思わず笑ってしまう演出で気分がリセットされる
- デスクトップやターミナルに「本物っぽい」通知が現れることで、現実と仮想の境界が一瞬あいまいになる新鮮な体験が得られる
- Claude Code の context が膨らんだ session でも、Skill の遊び心が会話に余白を生み出す
- onboarding や session 再開時の堅苦しさを和らげ、チーム内のコミュニケーションにも話題を提供できる
GitHub から degit でコマンド1行、Claude Code の Skill ディレクトリに展開できます。Node.js があれば即時に動きます。
npx degit aazutaku/ai-note/claude-code/os-fake-legendary-item-drop-alert .claude/skills/os-fake-legendary-item-drop-alert実行したらこうなる (3つの利用シーン)
使う側がイメージしやすいよう、擬似 terminal で出力例を3パターン示します。
シーン1: session 開始時 (CLAUDE.md と組み合わせて)
# /os-fake-legendary-item-drop-alert
> session start
[通知] 伝説のスペースキー +5 を拾いました!
└ アイテム効果: タイプ速度が一時的に爆上がり
└ 入手場所: /src/components/LegendarySpaceKey.js
└ レア度: ★★★★★
(作業を続けますか?)
シーン2: monorepo / package 跨ぎ作業時
> 移動: packages/auth/
[伝説アイテムドロップ!]
謎のUSBメモリ(未鑑定)を発見!
└ packages/auth/utils/usbMystery.js
└ 何が入っているかは不明です
└ レア度: ★★★★☆
(鑑定しますか?)
シーン3: お遊び的な使い方
> 今日は集中できないな…
[OS伝説通知]
古代のタブキー(発掘済)をゲット!
└ 効果: インデントが自動で揃う気がする
└ /scripts/tools/tabKeyRelic.py
└ レア度: ★★★☆☆
(使う/しまう)
before / after の違い
| 場面 | Skill 無し | Skill 有り |
|---|---|---|
| session 再開時 | repo 構造から毎回説明、path も指定し直し | Claude Code が自動で context を復元、最小プロンプトで再開 |
| monorepo 移動 | 違う package のコードを参照しがち | directory boundary を意識して必要な範囲だけ見る |
| 長時間 workflow | long context で重要箇所が薄まる | 合間に伝説アイテム通知が入り、集中がリセット |
発動方式
明示呼び出し (/os-fake-legendary-item-drop-alert) と暗黙発動 (「伝説アイテム」「謎の通知」などの description マッチ) の両方に対応。
Skill の中身を全部見せる
.claude/skills/os-fake-legendary-item-drop-alert/ に配置するファイル一覧です。GitHub に push 済みなので、上記の degit コマンドで一発取得できます。
.claude/skills/os-fake-legendary-item-drop-alert/
├── SKILL.md
├── scripts/
│ └── legendary_item_drop.py
└── references/
└── design_notes.md
各ファイルの役割
| ファイル | 役割 |
|---|---|
SKILL.md |
Skill本体。frontmatter (name/description) と指示本文。Claude Code がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します |
scripts/legendary_item_drop.py |
OS伝説アイテムドロップ通知スキル |
references/design_notes.md |
概要 をまとめた参考資料 |
SKILL.md
---
name: os-fake-legendary-item-drop-alert
description: 作業中や長時間のコーディングセッション、または『伝説』『ドロップ』『通知』などのキーワードが出現した際に発動。集中力が高まったタイミングや明示的な /os-fake-legendary-item-drop-alert コマンド実行時にも効果的。
---
# 機能概要
このSkillは、作業中のデスクトップやターミナルに突如として『謎のOS伝説アイテムドロップ通知』を出現させる演出系ツールです。通知内容は毎回ランダムで生成され、「伝説のスペースキー+5」「未鑑定のUSBメモリ」「古代のタブキー(発掘済)」など、現実には存在しないカオスなアイテム名が表示されます。実用性はありませんが、作業の合間に思わず笑ってしまう体験を提供し、単調な作業にちょっとした刺激を与えます。
# 使い方
- 明示呼び出し: `/os-fake-legendary-item-drop-alert` をターミナルやチャットで実行すると即座に通知が発生します。
- 暗黙発動: 「伝説」「ドロップ」「通知」「ガチャ」などのキーワードが会話やコード内で検出された場合、自動的にスキルが発動します。発動頻度は1時間に1〜2回程度で、過剰な妨害はありません。
# 出力例
```
[OS伝説アイテムドロップ通知]
伝説のCapsLockキー(+3)を拾いました!
レアリティ: 神話級
効果: タイプミス抑制率+20%
[OS伝説アイテムドロップ通知]
謎のUSBメモリ(未鑑定)を発見!
レアリティ: レア
効果: 使用未確認
[OS伝説アイテムドロップ通知]
古代のタブキー(発掘済)をゲット!
レアリティ: 伝説
効果: コード整形力+10
```
# 注意点
- 通知はローカル端末のデスクトップ通知API(notify-send等)またはターミナル出力で実施されます。
- 実際のファイルやシステムには影響しません。
- 通知内容やタイミングは完全にランダム生成されます。
- ログは ~/.os_fake_legendary_item_drop_alert.log に保存されます。
# 参考資料
- references/design_notes.md を参照
- 公式API: https://docs.python.org/3/library/random.html, https://pypi.org/project/plyer/
scripts/legendary_item_drop.py
import random
import argparse
import sys
import os
import time
from datetime import datetime
try:
from plyer import notification
PLYER_AVAILABLE = True
except ImportError:
PLYER_AVAILABLE = False
LOG_PATH = os.path.expanduser('~/.os_fake_legendary_item_drop_alert.log')
LEGENDARY_ITEMS = [
'伝説のスペースキー(+5)',
'未鑑定のUSBメモリ',
'古代のタブキー(発掘済)',
'神話級NumLockボタン',
'謎のマウスホイール',
'バグ封じのCtrlキー',
'OSの守護者ドングル',
'時空を超えたF5キー',
'エンジニアの涙入りSDカード',
'未知のBluetoothアダプタ',
'伝説のCapsLockキー(+3)',
'神話の電源ボタン',
'謎のPCリセットスイッチ',
'古文書化したREADME.txt',
'未発見のAltキー'
]
RARITIES = [
('コモン', '通常'),
('レア', '珍しい'),
('伝説', '非常に珍しい'),
('神話級', '超激レア')
]
EFFECTS = [
'タイプミス抑制率+20%',
'コード整形力+10',
'バグ発生率-5%',
'集中力持続+15分',
'CPU温度-2℃',
'未鑑定',
'起動速度+3%',
'謎の安心感',
'デバッグ力+7',
'使用未確認',
'クラッシュ耐性+1',
'やる気+5',
'未知の効果',
'エラー通知無効化'
]
def generate_drop():
item = random.choice(LEGENDARY_ITEMS)
rarity, rarity_desc = random.choice(RARITIES)
effect = random.choice(EFFECTS)
lines = [
'[OS伝説アイテムドロップ通知]',
f'{item}を拾いました!',
f'レアリティ: {rarity}',
f'効果: {effect}'
]
return '\n'.join(lines)
def send_notification(title, message):
if PLYER_AVAILABLE:
try:
notification.notify(
title=title,
message=message,
timeout=6
)
except Exception as e:
print(f'[通知失敗] {e}', file=sys.stderr)
else:
# Fallback: print to terminal
print(f'{title}\n{message}')
def log_drop(message):
try:
with open(LOG_PATH, 'a', encoding='utf-8') as f:
f.write(f'[{datetime.now().isoformat()}]\n{message}\n\n')
except Exception as e:
print(f'[ログ書込失敗] {e}', file=sys.stderr)
def list_logs():
if not os.path.exists(LOG_PATH):
print('まだドロップ履歴はありません。')
return
with open(LOG_PATH, 'r', encoding='utf-8') as f:
print(f.read())
def summary_logs():
if not os.path.exists(LOG_PATH):
print('まだドロップ履歴はありません。')
return
rarity_count = {r[0]: 0 for r in RARITIES}
total = 0
with open(LOG_PATH, 'r', encoding='utf-8') as f:
for line in f:
for rarity, _ in RARITIES:
if f'レアリティ: {rarity}' in line:
rarity_count[rarity] += 1
total += 1
print(f'合計ドロップ数: {total}')
for rarity in rarity_count:
print(f'{rarity}: {rarity_count[rarity]}')
def main():
parser = argparse.ArgumentParser(description='OS伝説アイテムドロップ通知スキル')
subparsers = parser.add_subparsers(dest='command', help='サブコマンド')
drop_parser = subparsers.add_parser('drop', help='伝説アイテムドロップ通知を即時発動')
list_parser = subparsers.add_parser('list', help='過去のドロップ履歴を表示')
summary_parser = subparsers.add_parser('summary', help='ドロップ履歴のサマリーを表示')
auto_parser = subparsers.add_parser('auto', help='一定間隔で自動ドロップ通知 (Ctrl+Cで停止)')
auto_parser.add_argument('--interval', type=int, default=1800, help='通知間隔[秒] (デフォルト: 1800)')
args = parser.parse_args()
if args.command == 'drop' or args.command is None:
message = generate_drop()
send_notification('OS伝説アイテムドロップ通知', message)
log_drop(message)
elif args.command == 'list':
list_logs()
elif args.command == 'summary':
summary_logs()
elif args.command == 'auto':
print('自動ドロップ通知を開始します。Ctrl+Cで停止。')
try:
while True:
message = generate_drop()
send_notification('OS伝説アイテムドロップ通知', message)
log_drop(message)
time.sleep(args.interval)
except KeyboardInterrupt:
print('\n自動通知を停止しました。')
else:
parser.print_help()
if __name__ == '__main__':
main()
references/design_notes.md
# 概要
このSkillは、作業中のユーザーに「意味不明な伝説アイテムドロップ通知」を演出することで、日常の単調な作業やコーディングにユーモアとちょっとした刺激を与えることを目的としています。現実世界のガチャ的なワクワク感を、デスクトップやターミナルに再現します。
# 公式ドキュメント抜粋
- Python random: https://docs.python.org/3/library/random.html
- plyer通知API: https://plyer.readthedocs.io/en/latest/
# 利用例
- 長時間のコーディングやドキュメント作成時の気分転換
- チームでのリモートワーク雑談ネタ
- 明示的に `/os-fake-legendary-item-drop-alert` で即時発動も可能
# 注意点
- 通知内容は完全に架空で、実際のシステムやファイルには一切影響しません。
- ログはユーザーのホームディレクトリ直下に保存されます。
- plyerがインストールされていない場合はターミナル出力のみ対応します。
# 設計方針
- 実在APIのみ使用し、外部依存は最小限(plyerのみ)
- 通知頻度はデフォルトで作業妨害にならない程度(1時間1-2回)
- ログ・サマリー機能も備え、ユーザーが過去の「ドロップ」を振り返ることができます。
導入手順
このSkillは GitHub で管理されているので、degit を使えば必要なフォルダだけを1コマンドで取得できます。Claude Code はファイル配置後に再起動するだけで自動認識します。
1. 前提
- Node.js v16 以上 (
degit実行に必要) - Claude Code がローカルで動いていること
2. degit でフォルダ取得
プロジェクトのルートで以下のコマンドを実行します。
npx degit aazutaku/ai-note/claude-code/os-fake-legendary-item-drop-alert .claude/skills/os-fake-legendary-item-drop-alert
.claude/skills/os-fake-legendary-item-drop-alert の中に SKILL.md / scripts/ / references/ / README.md が展開されます。
3. ファイル配置確認
ls .claude/skills/os-fake-legendary-item-drop-alert
# SKILL.md, scripts/, references/, README.md があればOK
4. Claude Code を再起動 (or Skill 自動検出を待つ)
新しいSkillが自動で認識されます。リスト確認したい場合は /os-fake-legendary-item-drop-alert と Skill 名で出てきます。
5. 動作確認
/os-fake-legendary-item-drop-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 を取りたい
- 作業に遊びやリフレッシュが欲しいとき: 単調なAI coding workflowの合間に、伝説アイテム通知で一息入れたい
気になるポイント (壊れそうな箇所)
実運用に乗せる前に頭に入れておきたい懸念。後で検証する観点でもある:
- 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記事を探す
本記事に付いているタグから、気になるテーマの記事を探せます。タグページで関連記事をまとめて読めるので、ぜひチェックしてみてください!
