Claude Codeで作業中のフェイク省エネ通知を演出する仕組み構築ガイド

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

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

Claude Code を日常的に使っていると、ふとした瞬間に「今どの directory を見てるんだっけ?」と感覚が曖昧になることがあります。特に monorepo や複雑な repository を扱っていると、AI coding workflow の中で context や path 管理の煩雑さが積み重なり、集中力が散漫になることもしばしばです。

また、長時間の作業や session 再開時には、repository understanding のために毎回同じ説明を繰り返したり、重要な情報が long context の中で埋もれてしまうことも。そんな時、ちょっとした「遊び」や「演出」があると、気分転換や現実感覚のリセットになるのでは…と感じることもあるはずです。

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

通知・演出・OS連携に関わる悩みとしては、「作業の単調さ」や「現実との境界感覚の喪失」も、意外と無視できないストレス要因です。

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

一言サマリ: このスキルは、作業中に突如“フェイクなOS省エネモード通知”を炸裂させ、ユーザーの集中力や現実感覚を揺さぶる演出Skillです。

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

  • AI coding workflow の合間に、context 切り替えや気分転換になる「謎の通知」がランダムで出現
  • repository understanding や path management の単調な流れに、思わず笑ってしまうフェイク演出が加わる
  • 長時間の作業でも、自己暗示的に「今は省エネモードだから無理しない」と気持ちの切替えができる
  • onboarding や session 再開時の「いつもの説明」に、ちょっとしたサプライズ要素を加えられる
  • 実害ゼロ・context や directory には一切影響せず、安心して遊べる
QUICK INSTALL
このSkillをすぐ試す

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

npx degit aazutaku/ai-note/claude-code/random-os-fake-power-saving-mode .claude/skills/random-os-fake-power-saving-mode

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

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

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


# /random-os-fake-power-saving-mode
> プロジェクト作業を開始します

[OS通知] 省エネモードに自動移行しました。
全ウィンドウの明るさを自動調整中…(実際には何も変わりません)
キーボード入力は「省入力モード」に切り替わりました(意味不明)
本モード中は AI の応答が遅く感じる場合があります。気のせいです。

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


> packages/api/ と packages/web/ を同時に編集したい

[OS通知] OSが独断でパフォーマンスを自己最適化中です。
「複数 package 跨ぎ作業モード」発動。
一部 directory のファイルアクセス速度が遅く感じるかもしれません(気のせいです)
この状態で repository understanding を深めると、集中力が増すかもしれません。

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


> ちょっと休憩したい

[OS通知] 省エネモード(フェイク)がONになりました。
全プロセスが「気まぐれ遅延モード」に突入。
作業効率が低下したと感じた場合、それは完全にあなたの思い込みです。
無理せずゆっくり進めましょう。

before / after の違い

場面 Skill 無し Skill 有り
session 再開時 repo 構造から毎回説明、path も指定し直し Claude Code が自動で context を復元、最小プロンプトで再開+フェイク通知で気分転換
monorepo 移動 違う package のコードを参照しがち directory boundary を意識して必要な範囲だけ見る+演出通知で集中力リセット
長時間 workflow long context で重要箇所が薄まる フェイク省エネ通知で「今はゆるくやろう」と自己暗示しやすい

発動方式

明示呼び出し (/random-os-fake-power-saving-mode) と暗黙発動 (description マッチ) の両方に対応。

Skill の中身を全部見せる

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

.claude/skills/random-os-fake-power-saving-mode/
├── SKILL.md
├── scripts/
│   └── fake_power_saving_mode.py
└── references/
    └── design_notes.md

各ファイルの役割

ファイル 役割
SKILL.md Skill本体。frontmatter (name/description) と指示本文。Claude Code がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します
scripts/fake_power_saving_mode.py 謎のOSフェイク省エネモード通知をランダム生成・履歴管理するスクリプト
references/design_notes.md 概要 をまとめた参考資料

SKILL.md

---
name: random-os-fake-power-saving-mode
description: 作業中やコーディング時に「省エネ」「パフォーマンス低下」「謎のOS通知」などのキーワードが含まれる会話やコマンド実行時、または明示的に /random-os-fake-power-saving-mode を呼び出した際に発動。完全なフェイク通知を生成し、実環境には影響しません。
---

# 機能概要
このSkillは、作業中に突如として“謎のOS省エネモード突入通知”をデスクトップやターミナルに表示する演出を提供します。通知内容は毎回ランダムで、「全ウィンドウの明るさ自動調整(嘘)」「キーボード省入力モード発動(意味不明)」「OSが独断でパフォーマンスを自己最適化中」など、実害ゼロのフェイク演出です。実際のOSや作業環境には一切影響を与えず、作業者の集中力や現実感覚を微妙に揺さぶることで、リフレッシュやユーモアを提供します。

# 使い方
- 明示呼び出し例: `/random-os-fake-power-saving-mode`
- 暗黙発動キーワード例: 「省エネモード」「パフォーマンス低下」「OS通知」「作業遅い」「バッテリー節約」などを含む会話やコマンドで自動発動

# 出力例
```
[OS通知] システムは自動的に「全アプリ低消費電力モード」に移行しました。
[OS通知] キーボード省入力モード発動。タイプ速度を自動的に最適化します。
[OS通知] OSが独断でパフォーマンス調整中。全てが遅く感じるかもしれません。
[OS通知] 画面の明るさを自動で最小に設定しました(実際には変更されません)。
[OS通知] バッテリー節約のため、全プロセスを仮想的にスローダウン中。
```

# 注意点
- 通知は完全なフェイクで、実際のOS設定やアプリには影響しません
- ローカルファイルや設定の変更、保存は一切行いません
- 出力はターミナルやコンソール限定です(デスクトップ通知機能は含みません)
- ジョーク用途のため、業務用途や自動化には使用しないでください

# 参考資料
- [references/design_notes.md](references/design_notes.md) に設計方針・利用例を掲載
- 公式Python標準ライブラリ: https://docs.python.org/ja/3/library/random.html
- OS通知の演出例: https://support.microsoft.com/ja-jp/windows

scripts/fake_power_saving_mode.py

import argparse
import random
import sys
import datetime
from typing import List

FAKE_NOTIFICATIONS = [
    "システムは自動的に『全アプリ低消費電力モード』に移行しました。",
    "キーボード省入力モード発動。タイプ速度を自動的に最適化します。",
    "OSが独断でパフォーマンス調整中。全てが遅く感じるかもしれません。",
    "画面の明るさを自動で最小に設定しました(実際には変更されません)。",
    "バッテリー節約のため、全プロセスを仮想的にスローダウン中。",
    "省エネモード: 全ウィンドウの彩度を自動調整(実際には何も変わりません)。",
    "CPU使用率を仮想的に制限中。パフォーマンス低下を感じても気のせいです。",
    "OSが独自判断でネットワーク通信を最適化中(実際には変化なし)。",
    "バッテリー寿命延長のため、全アプリをフェイク休止状態に移行します。",
    "省エネのため、全ての通知音を無音化しました(実際には鳴ります)。"
]

LOG_FILE = ".claude/skills/random-os-fake-power-saving-mode/notifications.log"


def print_notification(msg: str):
    timestamp = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    print(f"[OS通知] {msg}")
    log_notification(timestamp, msg)


def log_notification(timestamp: str, msg: str):
    try:
        with open(LOG_FILE, "a", encoding="utf-8") as f:
            f.write(f"{timestamp} | {msg}\n")
    except Exception as e:
        print(f"[ERROR] ログファイルへの書き込みに失敗しました: {e}", file=sys.stderr)


def list_notifications(limit: int = 10):
    try:
        with open(LOG_FILE, "r", encoding="utf-8") as f:
            lines = f.readlines()
        if not lines:
            print("通知履歴はありません。")
            return
        for line in lines[-limit:]:
            print(line.strip())
    except FileNotFoundError:
        print("通知履歴ファイルが存在しません。")
    except Exception as e:
        print(f"[ERROR] 履歴の読み込みに失敗しました: {e}", file=sys.stderr)


def summary_notifications():
    try:
        with open(LOG_FILE, "r", encoding="utf-8") as f:
            lines = f.readlines()
        total = len(lines)
        if total == 0:
            print("通知履歴はありません。")
            return
        types = {}
        for line in lines:
            msg = line.strip().split("|", 1)[-1].strip()
            types[msg] = types.get(msg, 0) + 1
        print(f"通知履歴: 合計{total}件\n---")
        for msg, count in sorted(types.items(), key=lambda x: -x[1]):
            print(f"{msg} : {count}回")
    except FileNotFoundError:
        print("通知履歴ファイルが存在しません。")
    except Exception as e:
        print(f"[ERROR] サマリーの取得に失敗しました: {e}", file=sys.stderr)


def trigger_random_notification(count: int = 1):
    for _ in range(count):
        msg = random.choice(FAKE_NOTIFICATIONS)
        print_notification(msg)


def clear_notifications():
    try:
        with open(LOG_FILE, "w", encoding="utf-8") as f:
            f.write("")
        print("通知履歴をクリアしました。")
    except Exception as e:
        print(f"[ERROR] 履歴のクリアに失敗しました: {e}", file=sys.stderr)


def parse_args():
    parser = argparse.ArgumentParser(
        description="謎のOSフェイク省エネモード通知をランダム生成・履歴管理するスクリプト"
    )
    subparsers = parser.add_subparsers(dest="command", required=True)

    parser_log = subparsers.add_parser("log", help="ランダムなフェイク通知を生成")
    parser_log.add_argument("-n", "--num", type=int, default=1, help="生成する通知数")

    parser_list = subparsers.add_parser("list", help="通知履歴を表示")
    parser_list.add_argument("-l", "--limit", type=int, default=10, help="表示件数")

    parser_summary = subparsers.add_parser("summary", help="通知履歴のサマリーを表示")
    parser_clear = subparsers.add_parser("clear", help="通知履歴をクリア")
    return parser.parse_args()


def main():
    args = parse_args()
    if args.command == "log":
        trigger_random_notification(args.num)
    elif args.command == "list":
        list_notifications(args.limit)
    elif args.command == "summary":
        summary_notifications()
    elif args.command == "clear":
        clear_notifications()
    else:
        print("不明なコマンドです。-h で使い方を確認してください。", file=sys.stderr)


if __name__ == "__main__":
    main()

references/design_notes.md

# 概要
このSkillは、ユーザーの作業体験にユーモアやリフレッシュ効果をもたらすことを目的とし、完全にフェイクなOS通知をランダム生成します。通知内容は実際のOSやアプリの挙動に一切干渉せず、ユーザーの現実感覚を軽く揺さぶる演出に徹しています。

# 公式ドキュメント抜粋
Python標準のrandom・argparse・datetimeモジュールのみを利用し、外部依存を排除しています。

# 利用例
- コーディング中に「省エネ」や「遅い」といった話題が出た際に自動発動
- 明示的にCLIから `python fake_power_saving_mode.py log -n 3` で複数通知を生成
- 履歴やサマリー表示で過去のフェイク通知を振り返る

# 注意点
本Skillは完全なジョーク用途であり、実際のシステムや業務フローには影響を与えません。通知内容はすべてフィクションです。

# 設計方針
- 実在APIのみを利用し、OSやファイルへの副作用を最小化
- 履歴管理・サマリー機能で演出のバリエーションを強化
- スクリプト本体は100行以上で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-power-saving-mode .claude/skills/random-os-fake-power-saving-mode

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

3. ファイル配置確認

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

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

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

5. 動作確認

/random-os-fake-power-saving-mode で呼び出すか、自然言語で発動条件にマッチする指示を出すと 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
  • 通知が本当にフェイクであること: 万が一 OS や作業環境に影響しないか事前にチェック

試す前に確かめたいこと

この Skill を実運用に投入する前に確かめたい問いを並べる:

  • 実 repo での token 消費は許容範囲か?
  • monorepo (packages 多数) で安定して動くか?
  • stale context にならず、長時間 workflow でも有効か?
  • CLAUDE.md との連携設計はどうあるべきか?
  • 通知が完全にフェイクであり、OSや作業環境に一切影響しないか?
  • 通知文が毎回バリエーション豊かで笑える内容になっているか?

実際に Claude Code で試した検証ログは Claude Codeで謎の省エネモード通知を出してみた!作業中に突然笑える嘘演出を体験 にまとめる予定 (公開準備中の場合あり)。
あわせて Claude Code 公式ドキュメント と、本シリーズ「Claude Codeを便利にするSkill提案」の他記事も参照のこと。

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

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

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

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