Claude Codeで開発現場の緊張をほぐす謎の言い訳通知Skill構築手順

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

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

Claude Code を使った AI coding workflow では、repo や directory の path management、context の維持など、意外と神経を使う場面が多いものです。特に monorepo 構成や長時間の作業が続くと、repository understanding のズレや context の stale 化が発生しやすくなります。そんなとき、ふとした緊張感や沈黙がチームに流れがちです。
さらに、通知・演出・OS連携系のSkillが少ない現状では、作業に行き詰まったときの「間」や、ちょっとした笑いが生まれる余地がありません。AIとのやりとりが淡々と進むだけでは、開発現場がピリピリしがちです。

  • Claude Code がいつの間にか違う directory を見始めて、想定外のファイルを読みに行く
  • monorepo で package を跨いだ瞬間、Claude Code が repo 構造を忘れる
  • session を再開すると、前回までの context や path 指定をまるごと再説明しないといけない
  • 長時間 workflow で long context が膨らみすぎて、important な情報が薄まる (stale context)
  • 「ここはこういう構造のリポジトリ」というあらすじを毎回チャットの冒頭で書く羽目になる

こうした悩みに加え、エラーや謎挙動が発生したときに、場を和ませるユーモラスな演出が欲しいと感じる瞬間も多いはずです。

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

一言サマリ: あなたが作業中に、謎のOS言い訳通知で緊張感をほぐすSkill。

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

  • エラーや不意の挙動時に、毎回クリエイティブな「言い訳」通知が出ることで、深刻な空気を一瞬で和らげる
  • 長時間のAI coding workflowやmonorepo作業の合間に、思わず笑ってしまう小ネタでリフレッシュできる
  • session 再開時やrepository understanding で詰まったときも、気持ちを切り替えて再スタートしやすい
  • OS連携の通知で、チーム内コミュニケーションやonboarding時のアイスブレイクにも使える
  • Claude Code の context 管理やpath managementのストレスを、軽いジョークで受け流せる
QUICK INSTALL
このSkillをすぐ試す

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

npx degit aazutaku/ai-note/claude-code/random-os-excuse-generator .claude/skills/random-os-excuse-generator

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

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

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


# /random-os-excuse-generator
> 今日からこのプロジェクトの setup を始めます

[OS通知] 
本日のバグは、宇宙線の影響によるものです。
もし動かなくても、太陽フレアのせいにしておきましょう。

[Claude Code]
repository understanding の準備ができました。

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


> packages/api から packages/web に移動して作業します

[OS通知]
API サーバーが反応しないのは、コードが今日は恥ずかしがっているからです。
directory 構造を再確認しましょう。

[Claude Code]
context を packages/web/ に切り替えました。

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


> なんか動かないんだけど原因は?

[OS通知]
動かない理由: 水星逆行の影響によるものです。
本日は repository の星回りが悪いようです。

[Claude Code]
最新の context で再度実行してみてください。

before / after の違い

場面 Skill 無し Skill 有り
session 再開時 repo 構造から毎回説明、path も指定し直し Claude Code が自動で context を復元、最小プロンプトで再開。ついでに言い訳通知で場が和む
monorepo 移動 違う package のコードを参照しがち directory boundary を意識して必要な範囲だけ見る。謎の言い訳通知で気分転換
長時間 workflow long context で重要箇所が薄まる 要所でユーモラスな通知が入り、集中力がリセットされる

発動方式

明示呼び出し (/random-os-excuse-generator) と暗黙発動 (「動かない」「バグ」「エラー」などの記述) の両方に対応。

Skill の中身を全部見せる

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

.claude/skills/random-os-excuse-generator/
├── SKILL.md
├── scripts/
│   └── random_os_excuse.py
└── references/
    └── design_notes.md

各ファイルの役割

ファイル 役割
SKILL.md Skill本体。frontmatter (name/description) と指示本文。Claude Code がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します
scripts/random_os_excuse.py random-os-excuse-generator: OSの言い訳をランダム生成
references/design_notes.md 概要 をまとめた参考資料

SKILL.md

---
name: random-os-excuse-generator
description: エラー発生・テスト失敗・バグ修正時など、開発現場で“なぜ動かない?”と感じた瞬間に発動。triggerType: always/semantic-or-explicit、明示呼び出しは /random-os-excuse-generator。
---

# 機能概要
random-os-excuse-generatorは、開発中に発生する謎のエラーやバグに対して、全く根拠のない“クリエイティブな言い訳”をランダム生成し、デスクトップ通知やターミナルで表示するジョーク系スキルです。深刻な雰囲気を和ませ、チームや個人の開発現場で笑いを誘うことを目的としています。バグやエラーの原因追及に疲れたとき、気分転換やアイスブレイクとして活用できます。

# 使い方
- 明示呼び出し: `/random-os-excuse-generator` または `/skill random-os-excuse-generator`
- 暗黙発動: "バグ", "エラー", "落ちた", "動かない", "原因不明" などのキーワードを含む会話やログで自動発動
- CLIからは `python random_os_excuse.py` で即時実行、`--notify`でOS通知も可能

# 出力例
```
[EXCUSE] 今回のバグは水星逆行の影響です。
[EXCUSE] コードが恥ずかしがっているので動きません。
[EXCUSE] 太陽フレアが強すぎてシステムが混乱しています。
[EXCUSE] 今日のネットワークは宇宙線に干渉されています。
[EXCUSE] OSが月齢を気にしているようです。
```

# 注意点
- 本Skillはジョーク用途限定で、実際の障害原因解析や本番データの操作は一切行いません。
- ローカル環境でのみ動作し、生成した言い訳は保存されません。
- デスクトップ通知機能はOS環境によっては利用できない場合があります(Linux/macOS/Windows対応)。

# 参考資料
- [random-os-excuse-generator 参考設計](references/design_notes.md)
- [Python公式: notifications/toast](https://docs.python.org/ja/3/library/subprocess.html)
- [notify2 (Linux)](https://pypi.org/project/notify2/), [win10toast (Windows)](https://pypi.org/project/win10toast/), [pync (macOS)](https://github.com/setem/pync)

scripts/random_os_excuse.py

import sys
import argparse
import random
import os
import platform
import subprocess

EXCUSES = [
    "今回のバグは水星逆行の影響です。",
    "コードが恥ずかしがっているので動きません。",
    "太陽フレアが強すぎてシステムが混乱しています。",
    "今日のネットワークは宇宙線に干渉されています。",
    "OSが月齢を気にしているようです。",
    "メモリが週末モードに入っています。",
    "開発環境がコーヒー不足で動作不良です。",
    "今日はサーバーが気分屋です。",
    "バグは量子揺らぎの産物です。",
    "コードがエコーチェンバーに迷い込んでいます。",
    "電磁波の影響でAPIが気まぐれです。",
    "OSが新しい言い訳を考え中です。",
    "今日は重力波が強いので不安定です。",
    "コードが自己主張を始めました。",
    "この現象は仕様です。",
    "バグは猫がキーボードを踏んだせいです。",
    "今日は運勢がバグ寄りです。",
    "コードが月曜日を拒否しています。",
    "OSが星占いを優先しています。",
    "システムが現実逃避しています。"
]


def select_random_excuse():
    return random.choice(EXCUSES)


def notify_linux(message):
    try:
        import notify2
        notify2.init("Random OS Excuse")
        n = notify2.Notification("OSの言い訳", message)
        n.show()
    except ImportError:
        # Fallback to notify-send
        subprocess.run(["notify-send", "OSの言い訳", message])
    except Exception as e:
        print(f"[WARN] Linux通知に失敗: {e}")


def notify_macos(message):
    try:
        import pync
        pync.notify(message, title="OSの言い訳")
    except ImportError:
        # Fallback to osascript
        script = f'display notification "{message}" with title "OSの言い訳"'
        subprocess.run(["osascript", "-e", script])
    except Exception as e:
        print(f"[WARN] macOS通知に失敗: {e}")


def notify_windows(message):
    try:
        from win10toast import ToastNotifier
        toaster = ToastNotifier()
        toaster.show_toast("OSの言い訳", message, duration=5)
    except ImportError:
        # Fallback: print to stderr
        print(f"[WARN] win10toast未インストール。通知できません。", file=sys.stderr)
    except Exception as e:
        print(f"[WARN] Windows通知に失敗: {e}")


def notify(message):
    system = platform.system()
    if system == "Linux":
        notify_linux(message)
    elif system == "Darwin":
        notify_macos(message)
    elif system == "Windows":
        notify_windows(message)
    else:
        print(f"[WARN] 未対応OS: {system}。通知は標準出力のみ。")


def list_excuses():
    print("--- 言い訳リスト ---")
    for i, excuse in enumerate(EXCUSES, 1):
        print(f"{i:2d}: {excuse}")


def summary():
    print(f"登録済み言い訳数: {len(EXCUSES)}")
    print(f"例: {random.choice(EXCUSES)}")


def main():
    parser = argparse.ArgumentParser(description="random-os-excuse-generator: OSの言い訳をランダム生成")
    subparsers = parser.add_subparsers(dest="command")

    parser_log = subparsers.add_parser("log", help="ランダムな言い訳を出力")
    parser_log.add_argument("--notify", action="store_true", help="デスクトップ通知も行う")

    parser_list = subparsers.add_parser("list", help="全言い訳を一覧表示")
    parser_summary = subparsers.add_parser("summary", help="言い訳数やサンプルを表示")

    # デフォルトはlog
    parser.add_argument("--notify", action="store_true", help="デスクトップ通知も行う (サブコマンド省略時)")

    args = parser.parse_args()

    if args.command == "list":
        list_excuses()
    elif args.command == "summary":
        summary()
    else:
        excuse = select_random_excuse()
        print(f"[EXCUSE] {excuse}")
        if args.notify:
            notify(excuse)

if __name__ == "__main__":
    main()

references/design_notes.md

# 概要
random-os-excuse-generatorは、開発現場の緊張を和らげるために設計されたジョーク系ツールです。深刻なエラーやバグ発生時に、根拠のない“OSの言い訳”をランダムで表示し、場の雰囲気を和ませます。

# 公式ドキュメント抜粋
- [notify2 (Linux)](https://pypi.org/project/notify2/)
- [win10toast (Windows)](https://pypi.org/project/win10toast/)
- [pync (macOS)](https://github.com/setem/pync)

# 利用例
- チームの朝会やバグ修正作業中に、/random-os-excuse-generator を呼び出す
- テスト失敗時に自動で“言い訳”通知を表示し、笑いを誘う

# 注意点
- 本Skillは実害のないジョーク用途限定です。本番データやシステム設定には一切触れません。
- OS通知は環境によってライブラリの追加インストールが必要です。

# 設計方針
- OS依存部分は複数の通知方法を実装し、ライブラリ未導入時はコマンドライン通知や標準出力にフォールバックします。
- 言い訳リストは拡張可能で、今後カスタマイズも容易です。

導入手順

このSkillは GitHub で管理されているので、degit を使えば必要なフォルダだけを1コマンドで取得できます。Claude Code はファイル配置後に再起動するだけで自動認識します。

1. 前提

  • Node.js v16 以上 (degit 実行に必要)
  • Claude Code がローカルで動いていること

2. degit でフォルダ取得

プロジェクトのルートで以下のコマンドを実行します。

npx degit aazutaku/ai-note/claude-code/random-os-excuse-generator .claude/skills/random-os-excuse-generator

.claude/skills/random-os-excuse-generator の中に SKILL.md / scripts/ / references/ / README.md が展開されます。

3. ファイル配置確認

ls .claude/skills/random-os-excuse-generator
# SKILL.md, scripts/, references/, README.md があればOK

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

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

5. 動作確認

/random-os-excuse-generator で呼び出すか、自然言語で発動条件にマッチする指示を出すと 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で謎のOS言い訳通知を毎回ランダムに出してみた! にまとめる予定 (公開準備中の場合あり)。
あわせて Claude Code 公式ドキュメント と、本シリーズ「Claude Codeを便利にするSkill提案」の他記事も参照のこと。

関連タグで他のSkill記事を探す

本記事に付いているタグから、気になるテーマの記事を探せます。タグページで関連記事をまとめて読めるので、ぜひチェックしてみてください!

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次