Claude Codeで作業開始を彩る謎のOS起動音演出Skill構築ガイド

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

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

Claude Code を日々使っていると、編集やコーディングの合間にちょっとした「間」や「味気なさ」を感じる瞬間がある。特に長時間の作業や session の切り替え時、エディタやターミナルの起動が単調に感じられ、集中力が切れやすい。AI coding workflow の中で、ちょっとした遊び心が欲しくなることも。

また、通知や演出系の Skill を活用したいが、実用性重視のものが多く「純粋に面白い」「毎回ちょっとしたサプライズがある」ものは意外と少ない。そんな時、以下のような悩みやシーンがよくある:

  • Claude Code で session を再開した時、いつも同じ無音・無反応で気分が盛り上がらない
  • ターミナルやエディタの起動時、何か変化や演出が欲しいが、通知系 Skill は実用一点張り
  • onboarding や新規 repo で「切り替えた感」が弱く、作業モードの切替スイッチが欲しい
  • monorepo で package を跨ぐたび、気分転換や“今どこにいるか”を体感的に感じたい
  • 長時間の AI coding workflow で、context の切り替えや休憩タイミングを音で演出したい

「ちょっとした遊び」や「作業開始の儀式」を求める気持ちは、多くの Claude Code ユーザーが共感するポイント。

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

一言サマリ: ターミナルやエディタを起動するたびにSkill。

この Skill を導入すれば、Claude Code の session 開始やディレクトリ移動のたびに、毎回異なる“謎のOS起動音”がランダム再生され、作業開始の雰囲気を一新できる。具体的なメリットは次の通り:

  • AI coding workflow の開始や repo 切り替え時に、毎回異なるサウンド演出で気分転換できる
  • onboarding や context 切り替え時に“どこかの新しいOS”に来たような没入感を演出
  • monorepo での package 跨ぎや directory 移動時に、サウンドで作業モードを切り替えやすい
  • ローカルの wav/mp3 を差し替えるだけで、好きな演出・効果音にカスタマイズ可能
  • Skill の発動が毎回予測不能なため、単調な作業にちょっとしたサプライズ要素を加えられる
QUICK INSTALL
このSkillをすぐ試す

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

npx degit aazutaku/ai-note/claude-code/random-os-fake-boot-sound .claude/skills/random-os-fake-boot-sound

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

この Skill を入れておくと、Claude Code の起動や session 切り替え時に、毎回違う「謎のOS起動音」が鳴る。以下、具体的な利用シーンを terminal 出力風に示す。

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


# /random-os-fake-boot-sound
> 新しい session を開始

[INFO] Skill: random-os-fake-boot-sound を実行中...
[BOOT SOUND] Playing: "retro_pc_boot.wav"
(あなたのスピーカーから「ピロリロリ~ン!」という懐かしい起動音が再生されます)
[OK] 起動音を再生しました。作業を開始します。

(Claude Code が repo 構造や context を自動でセット)

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


> packages/api/ ディレクトリに移動

[INFO] Skill: random-os-fake-boot-sound を実行中...
[BOOT SOUND] Playing: "crow_caw.mp3"
(カラスの鳴き声が突然流れる)
[OK] 新しい package に切り替えました。context を更新します。

(monorepo の context 切り替えと同時にサウンド演出)

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


> /random-os-fake-boot-sound

[INFO] Skill: random-os-fake-boot-sound を実行中...
[BOOT SOUND] Playing: "spring_bounce.wav"
(バネがビヨーン!と跳ねる音)
[OK] 気分転換にサウンドを再生しました。

(作業の合間や休憩明けにランダム再生)

before / after の違い

場面 Skill 無し Skill 有り
session 再開時 repo 構造から毎回説明、path も指定し直し Claude Code が自動で context を復元、最小プロンプトで再開
monorepo 移動 違う package のコードを参照しがち directory boundary を意識して必要な範囲だけ見る
長時間 workflow long context で重要箇所が薄まる サウンド演出で workflow の区切りを体感的に把握しやすい

発動方式

明示呼び出し (/random-os-fake-boot-sound) と暗黙発動 (ディレクトリ移動や session 開始時の description マッチ) の両方に対応。

Skill の中身を全部見せる

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

.claude/skills/random-os-fake-boot-sound/
├── SKILL.md
├── scripts/
│   └── random_os_fake_boot_sound.py
└── references/
    └── design_notes.md

各ファイルの役割

ファイル 役割
SKILL.md Skill本体。frontmatter (name/description) と指示本文。Claude Code がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します
scripts/random_os_fake_boot_sound.py 謎のOS起動音をランダム再生するスキル
references/design_notes.md 概要 をまとめた参考資料

SKILL.md

---
name: random-os-fake-boot-sound
description: ターミナルやエディタの起動、または /random-os-fake-boot-sound コマンド実行時に、ローカルのwav/mp3から毎回ランダムな“謎のOS起動音”を再生します。起動・開始・新規セッション・起動音・サウンドなどのキーワードで自動発動します。
---

# 機能概要
このSkillは、作業開始時やターミナル/エディタの起動時に、毎回ランダムな“謎のOS起動音”を再生する演出スキルです。音源はユーザーが用意したwav/mp3ファイルをローカルディレクトリに配置するだけ。懐かしいPC起動音から、バカバカしい効果音まで、バリエーション豊かな音で毎回違う“どこかのOS”気分を味わえます。実用性はほぼゼロですが、作業開始の気分転換やネタ演出に最適です。

# 使い方
- 明示呼び出し例: `/random-os-fake-boot-sound` をコマンドパレットやターミナルで実行
- 暗黙発動: "起動", "開始", "ターミナル", "エディタ", "boot", "sound" などのキーワードや、セッション開始時に自動実行
- 音源ファイルは `.claude/skills/random-os-fake-boot-sound/sounds/` 配下に wav/mp3 で複数配置してください

# 出力例
```
$ /random-os-fake-boot-sound
[INFO] サウンド候補: 6件
[INFO] 選択: mysterious_boot_3.wav
[PLAY] 再生中...
(音が鳴る)
```

# 注意点
- 音源ファイルはローカル保存のみ対応。ネットワーク越しのストリーミング再生は未対応です。
- サウンドファイルはwav/mp3のみ対応。数が多いほどランダム性が高まります。
- 音量や再生デバイスはOSの設定に依存します。
- スクリプトはPython 3.7以上、`playsound`または`pydub`/`simpleaudio`が必要です。

# 参考資料
詳細な設計方針や参考リンクは `references/design_notes.md` を参照してください。公式ドキュメント: [playsound](https://github.com/TaylorSMarks/playsound), [pydub](https://github.com/jiaaro/pydub)

scripts/random_os_fake_boot_sound.py

import os
import sys
import random
import argparse
import platform
from pathlib import Path

try:
    from playsound import playsound
    PLAYSOUND_AVAILABLE = True
except ImportError:
    PLAYSOUND_AVAILABLE = False

try:
    from pydub import AudioSegment
    from pydub.playback import play
    PYDUB_AVAILABLE = True
except ImportError:
    PYDUB_AVAILABLE = False

def find_sound_files(sound_dir):
    exts = ['.wav', '.mp3']
    files = []
    for entry in os.scandir(sound_dir):
        if entry.is_file() and entry.name.lower().endswith(tuple(exts)):
            files.append(entry.path)
    return files

def select_random_sound(files):
    if not files:
        return None
    return random.choice(files)

def play_sound(file_path):
    if PLAYSOUND_AVAILABLE:
        try:
            playsound(file_path)
            return True
        except Exception as e:
            print(f"[ERROR] playsound再生失敗: {e}")
    if PYDUB_AVAILABLE:
        try:
            audio = AudioSegment.from_file(file_path)
            play(audio)
            return True
        except Exception as e:
            print(f"[ERROR] pydub再生失敗: {e}")
    print("[ERROR] サウンド再生用のライブラリが見つかりません。'pip install playsound' または 'pip install pydub simpleaudio' を実行してください。")
    return False

def list_sounds(sound_dir):
    files = find_sound_files(sound_dir)
    print(f"[INFO] サウンド候補: {len(files)}件")
    for i, f in enumerate(files, 1):
        print(f"  {i}. {os.path.basename(f)}")

def summary(sound_dir):
    files = find_sound_files(sound_dir)
    print(f"[SUMMARY] サウンドディレクトリ: {sound_dir}")
    print(f"  ファイル数: {len(files)}")
    if files:
        print(f"  例: {os.path.basename(files[0])}")
    print(f"  対応拡張子: .wav, .mp3")
    print(f"  Pythonバージョン: {platform.python_version()}")
    print(f"  OS: {platform.system()} {platform.release()}")
    print(f"  再生ライブラリ: playsound={'OK' if PLAYSOUND_AVAILABLE else 'NG'}, pydub={'OK' if PYDUB_AVAILABLE else 'NG'}")

def main():
    parser = argparse.ArgumentParser(description="謎のOS起動音をランダム再生するスキル")
    parser.add_argument('command', nargs='?', default='play', choices=['play', 'list', 'summary'], help='play:再生, list:音源一覧, summary:概要')
    parser.add_argument('--sound-dir', default=str(Path(__file__).parent / 'sounds'), help='サウンドファイルのディレクトリ')
    args = parser.parse_args()

    sound_dir = args.sound_dir
    if not os.path.isdir(sound_dir):
        print(f"[ERROR] サウンドディレクトリが見つかりません: {sound_dir}")
        sys.exit(1)

    files = find_sound_files(sound_dir)
    if args.command == 'list':
        list_sounds(sound_dir)
        return
    elif args.command == 'summary':
        summary(sound_dir)
        return
    elif args.command == 'play':
        print(f"[INFO] サウンド候補: {len(files)}件")
        if not files:
            print(f"[ERROR] サウンドファイル(.wav/.mp3)が見つかりません。{sound_dir} に配置してください。")
            sys.exit(1)
        selected = select_random_sound(files)
        print(f"[INFO] 選択: {os.path.basename(selected)}")
        print(f"[PLAY] 再生中...")
        play_sound(selected)
    else:
        print(f"[ERROR] 未知のコマンド: {args.command}")
        sys.exit(1)

if __name__ == '__main__':
    main()

references/design_notes.md

# 概要
このSkillは、作業開始時の“謎のOS起動音”による演出を目的とし、ユーザーのローカル環境でwav/mp3音源をランダム再生します。Python標準と実績ある音声再生ライブラリ(playsound/pydub)を用い、依存関係を最小限に抑えつつ多環境対応を意識しています。

# 公式ドキュメント抜粋
- [playsound](https://github.com/TaylorSMarks/playsound): シンプルなクロスプラットフォーム音声再生
- [pydub](https://github.com/jiaaro/pydub): 多機能な音声処理と再生

# 利用例
- ターミナル/エディタ起動時の気分転換やネタ演出
- チーム開発での“OSごっこ”やアイスブレイク
- サウンド差し替えによるカスタム演出

# 注意点
- サウンドはローカル保存必須、ネット経由再生は非対応
- 音量・再生デバイスはOS依存
- Python 3.7+と必要なライブラリのインストールが前提

# 設計方針
- シンプルなコマンド/自動発動両対応
- サウンド候補の一覧・概要表示機能
- 音源追加・差し替えの容易さ
- エラー時の明示的なガイド

導入手順

この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-boot-sound .claude/skills/random-os-fake-boot-sound

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

3. ファイル配置確認

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

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

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

5. 動作確認

/random-os-fake-boot-sound で呼び出すか、自然言語で発動条件にマッチする指示を出すと 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 との連携設計はどうあるべきか?
  • 起動時に毎回ランダムなサウンドが再生されるか?
  • wav/mp3音源を簡単に差し替え可能か?
  • 起動フックやスクリプト連携のシンプルさは十分か?

実際に Claude Code で試した検証ログは Claude Codeで謎のOS起動音を毎回ランダム再生してみた! にまとめる予定 (公開準備中の場合あり)。
あわせて Claude Code 公式ドキュメント と、本シリーズ「Claude Codeを便利にするSkill提案」の他記事も参照のこと。

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

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

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

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