Claude Codeで謎の再起動進捗バーを演出するSkillの作り方

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

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

Claude Code を日常的に使っていると、便利さの裏で「なんだか単調」「集中し過ぎて疲れる」「たまには気分転換したい」と感じる瞬間がある。特に長時間のAI coding workflowや、monorepoの大規模リポジトリを相手にしていると、作業がルーチン化し、ふとした瞬間に「何か刺激が欲しい」と思うことも。

また、通知や演出系Skillの導入を検討する際、以下のような「あるある」な困りごとが浮かび上がる:

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

こうした悩みは、Claude Code の repository understanding や path management といった根本的な機能と密接に関わっている。Skillによる演出・通知の工夫で、気分転換や集中力のリセットを図りたいというニーズは意外と多い。

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

一言サマリ: このスキルは、作業中に突如現れる「謎のOS再起動進捗バー」で、集中し過ぎた頭や stale context を“リセット”するユーモア演出Skill。

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

  • 単調なAI coding workflowの合間に、ランダムな進捗バー演出で「リポジトリ理解」や「context」への意識をリフレッシュできる
  • monorepo作業やdirectory移動時に、“リセット感”で気分転換しつつ repository understanding を再確認できる
  • onboardingやsession再開時、長時間の作業で薄れた記憶を「あと3分で全てがリセットされます」などの演出で再起動気分に
  • Skillの進捗バーが毎回異なるメッセージを返すため、飽きずに使い続けられる
  • 実際のシステムやファイルには一切影響せず、安心して導入できる
QUICK INSTALL
このSkillをすぐ試す

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

npx degit aazutaku/ai-note/claude-code/random-os-fake-reboot-progressbar .claude/skills/random-os-fake-reboot-progressbar

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

使う側がイメージしやすいよう、擬似 terminal で出力例を3パターン示す。Skill が返す出力は推測だが、現実的なフォーマット・現実的な長さで書く。

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


# /random-os-fake-reboot-progressbar
> セッションを開始します

[==                    ] 10% 再起動準備中…
[====                  ] 20% 不明なプロセスを終了しています…
[========              ] 40% メモリ領域を解放中…
[==============        ] 60% context 情報を一時保存しています…
[================      ] 80% repository understanding をリセット中…
[====================  ] 90% 最終確認中…
[======================] 100% 全てがリセットされました。作業を再開できます。

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


> packages/api から packages/web へ移動

[==                    ] 12% 謎の依存関係を解決中…
[=====                 ] 25% directory 情報を初期化しています…
[=========             ] 45% monorepo 構造を再構築中…
[==============        ] 70% path management を適用中…
[==================    ] 85% context を最適化しています…
[======================] 100% 新しい package で作業を再開できます。

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


> ちょっと気分転換したい

[=                     ] 5% システム温度を測定中…
[====                  ] 22% 意味不明なプロセスを終了中…
[========              ] 48% 画面端に進捗バーを表示しています…
[==============        ] 75% 何かがリセットされる予感…
[===================== ] 95% あと3分で全てがリセットされます
[======================] 100% 再起動は行われませんでした。ご安心ください。

before / after の違い

場面 Skill 無し Skill 有り
session 再開時 repo 構造から毎回説明、path も指定し直し Claude Code が自動で context を復元、最小プロンプトで再開
monorepo 移動 違う package のコードを参照しがち directory boundary を意識して必要な範囲だけ見る
長時間 workflow long context で重要箇所が薄まる 進捗バー演出で集中力をリセット、重要情報への意識を再起動

発動方式

明示呼び出し (/random-os-fake-reboot-progressbar) と暗黙発動 (「再起動」「リセット」「進捗バー」などのdescription マッチ) の両方に対応。

Skill の中身を全部見せる

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

.claude/skills/random-os-fake-reboot-progressbar/
├── SKILL.md
├── scripts/
│   └── fake_reboot_progressbar.py
└── references/
    └── design_notes.md

各ファイルの役割

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

SKILL.md

---
name: random-os-fake-reboot-progressbar
description: このSkillは、作業中やコマンド実行時、または「再起動」「進捗」「リセット」などのキーワードを含む会話や指示があった際に発動します。進捗バーによる演出で、実際のシステム再起動やプロセス終了は一切行いません。
---

# 機能概要
`random-os-fake-reboot-progressbar`は、作業中に突然“謎のOS再起動進捗バー”を画面端やメニューバー風に表示し、ユーザーに焦りと笑いを提供する演出用Skillです。進捗バーは「再起動準備中…」「謎のプロセス終了中…」など毎回異なるメッセージをランダム生成し、進行状況も徐々に変化します。実際の再起動やシステム操作は一切行わず、あくまで仮想的な演出を目的としています。集中しすぎた頭をリセットしたい時や、冗談でチームを驚かせたい時に最適です。

# 使い方
- 明示的な呼び出し例: `/random-os-fake-reboot-progressbar` または「謎の進捗バーを表示して」などの指示
- 暗黙発動キーワード例: 「再起動」「リセット」「進捗」「プロセス終了」などを含む会話やコマンド

# 出力例
```
[  7%] 再起動準備中…
[ 21%] 謎のプロセス終了中…
[ 34%] システムキャッシュを解放しています…
[ 56%] セキュリティチェック中…
[ 78%] ほぼ完了、あと3分で全てがリセットされます
[100%] 完了!何も起きませんでした。
```

# 注意点
- 実際の再起動やプロセス終了は一切行いません
- ローカルファイルや設定には変更を加えません
- 演出目的のため、業務システム等での誤用にご注意ください
- 進捗メッセージは毎回ランダム生成されます

# 参考資料
- 参考: [Python標準ライブラリ tqdm](https://tqdm.github.io/)
- 詳細は `references/design_notes.md` を参照

scripts/fake_reboot_progressbar.py

import sys
import time
import random
import argparse
from typing import List

PROGRESS_MESSAGES = [
    "再起動準備中…",
    "謎のプロセス終了中…",
    "システムキャッシュを解放しています…",
    "セキュリティチェック中…",
    "仮想メモリを初期化中…",
    "未知のサービスを停止中…",
    "レジストリを最適化しています…",
    "ファイルシステムをスキャン中…",
    "設定をバックアップ中…",
    "リセットカウントダウン開始…",
    "ユーザーセッションを保存中…",
    "カーネルモジュールをアンロード中…",
    "ログを圧縮しています…",
    "不要なプロセスを解体中…",
    "仮想デバイスを認識中…",
    "アップデートの確認中…",
    "最終チェックポイントに到達…",
    "ほぼ完了、あと3分で全てがリセットされます"
]

END_MESSAGE = "完了!何も起きませんでした。"

class FakeRebootProgressBar:
    def __init__(self, steps: int = 7, min_delay: float = 0.5, max_delay: float = 2.0, seed: int = None):
        self.steps = steps
        self.min_delay = min_delay
        self.max_delay = max_delay
        self.seed = seed
        if seed is not None:
            random.seed(seed)
        self.messages = self._generate_messages()

    def _generate_messages(self) -> List[str]:
        # Pick random unique messages for each step
        if self.steps > len(PROGRESS_MESSAGES):
            messages = random.choices(PROGRESS_MESSAGES, k=self.steps)
        else:
            messages = random.sample(PROGRESS_MESSAGES, k=self.steps)
        return messages

    def show(self):
        percent_step = 100 // (self.steps + 1)
        for idx, msg in enumerate(self.messages):
            percent = percent_step * (idx + 1)
            sys.stdout.write(f"[{'{:>3}'.format(percent)}%] {msg}\n")
            sys.stdout.flush()
            delay = random.uniform(self.min_delay, self.max_delay)
            time.sleep(delay)
        # Final step
        sys.stdout.write(f"[100%] {END_MESSAGE}\n")
        sys.stdout.flush()

    def list_messages(self):
        for idx, msg in enumerate(PROGRESS_MESSAGES):
            print(f"{idx+1}. {msg}")

    def summary(self):
        print("Fake OS Reboot Progress Bar Skill")
        print(f"Available progress messages: {len(PROGRESS_MESSAGES)}")
        print(f"Default steps: {self.steps}")
        print(f"Delay per step: {self.min_delay}-{self.max_delay} sec")
        print(f"Random seed: {self.seed}")


def parse_args():
    parser = argparse.ArgumentParser(description="謎のOS再起動進捗バーを表示するスクリプト")
    subparsers = parser.add_subparsers(dest='command')

    parser_run = subparsers.add_parser('run', help='進捗バーを表示')
    parser_run.add_argument('--steps', type=int, default=7, help='進捗ステップ数')
    parser_run.add_argument('--min-delay', type=float, default=0.5, help='最小遅延秒数')
    parser_run.add_argument('--max-delay', type=float, default=2.0, help='最大遅延秒数')
    parser_run.add_argument('--seed', type=int, default=None, help='ランダムシード')

    parser_list = subparsers.add_parser('list', help='利用可能な進捗メッセージ一覧')
    parser_summary = subparsers.add_parser('summary', help='スキル概要表示')

    return parser.parse_args()


def main():
    args = parse_args()
    if args.command == 'run':
        bar = FakeRebootProgressBar(
            steps=args.steps,
            min_delay=args.min_delay,
            max_delay=args.max_delay,
            seed=args.seed
        )
        bar.show()
    elif args.command == 'list':
        bar = FakeRebootProgressBar()
        bar.list_messages()
    elif args.command == 'summary':
        bar = FakeRebootProgressBar()
        bar.summary()
    else:
        print("コマンドを指定してください (run, list, summary)")
        sys.exit(1)

if __name__ == '__main__':
    main()

references/design_notes.md

# 概要
このSkillは、実際のシステム操作を一切伴わず、ユーザーに仮想的な再起動進捗バーを演出することを目的としています。主に冗談やリフレッシュ、チーム内のアイスブレイク用途を想定しています。

# 公式ドキュメント抜粋
標準ライブラリのみを使用し、外部依存を排除。進捗バーの出力は標準出力に限定し、ファイルやシステム設定の変更は行いません。

# 利用例
- チームの朝会で「今日は全員リセット!」と表示
- 長時間作業後の気分転換に
- オンラインイベントでのジョーク演出

# 注意点
本Skillは演出専用であり、誤解を招くような実システム操作は一切行いません。業務システムや本番環境での誤用に注意してください。

# 設計方針
進捗メッセージは毎回ランダム生成され、ユーザー体験の多様性を重視。CLIサブコマンドで柔軟な利用が可能です。

導入手順

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

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

3. ファイル配置確認

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

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

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

5. 動作確認

/random-os-fake-reboot-progressbar で呼び出すか、自然言語で発動条件にマッチする指示を出すと 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 で試した検証ログは 謎のOS再起動進捗バーを画面にランダム表示してみた! にまとめる予定 (公開準備中の場合あり)。
あわせて Claude Code 公式ドキュメント と、本シリーズ「Claude Codeを便利にするSkill提案」の他記事も参照のこと。

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

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

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

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