Claude Codeで作業を和ませる未来予告エラー通知Skillの構築手順

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

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

Claude Code を使っていると、AI コーディング workflow の中で「ちょっとした息抜き」や「作業の緊張感をほぐす」瞬間が意外と少ないと感じることがあります。特に repository understanding や path management に集中していると、AI からのフィードバックが淡々としがちで、気づけば長時間無言で作業を続けてしまうことも。そんな時、通知や演出のちょっとした遊び心が恋しくなることはないでしょうか。

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

こうした「真面目なやりとり」ばかりが続くと、どうしても気が張り詰めがち。たまには context や memory とは無関係に、意味不明で笑える通知がほしくなる――そんなニーズに応える Skill の提案です。

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

一言サマリ: このスキルは、Claude Code の作業中に「未来予言エラー通知」をランダムで出し、AI coding workflow の緊張感を和らげるSkill。

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

  • コマンド実行やディレクトリ移動のたびに、完全無責任な未来のトラブル予告が現れ、作業の合間に思わず笑ってしまう
  • 長時間の repository management や path 指定作業の単調さが緩和され、onboarding や session 再開時も楽しくなる
  • monorepo の複雑な構造や directory 移動時も、意味不明な prophecy が context を和らげる効果を発揮
  • AI coding workflow の堅苦しさを崩し、チーム作業やペアプロ時のアイスブレイクにも役立つ
  • 通知・演出を通じて、Claude Code の session に「遊び心」を簡単に追加できる
QUICK INSTALL
このSkillをすぐ試す

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

npx degit aazutaku/ai-note/claude-code/random-os-fake-error-prophecy .claude/skills/random-os-fake-error-prophecy

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

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

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


# /random-os-fake-error-prophecy
> プロジェクトの初期セットアップをお願いします

[OS Error Prophecy]
エラー: 明日、あなたの main.py で「突然のタイムトラベル」が発生します。
警告: 週末、README.md が謎の暗号文に書き換わる予兆を検知しました。
アドバイス: 今日の commit は、未来のあなた自身からのレビューが届くかもしれません。

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


> packages/api/ ディレクトリのテストコードを修正してください

[OS Error Prophecy]
エラー: 来週火曜、packages/ui/ の button.js が独立宣言を始めます。
警告: あなたの monorepo 内で「依存関係の反乱」が予見されます。
アドバイス: packages/shared/ の utils.js を今夜バックアップしておくと吉。

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


> 今日は眠いので何か面白いこと言って

[OS Error Prophecy]
エラー: 明後日、あなたのマウスが反逆し、エディタのカーソルが逃げ回ります。
警告: 近い将来、.gitignore が全ファイルを受け入れてしまう予感。
アドバイス: コーヒーの補充が今後のバグ発生率を下げる可能性あり。

before / after の違い

場面 Skill 無し Skill 有り
session 再開時 repo 構造から毎回説明、path も指定し直し Claude Code が自動で context を復元、最小プロンプトで再開
monorepo 移動 違う package のコードを参照しがち directory boundary を意識して必要な範囲だけ見る
長時間 workflow long context で重要箇所が薄まる 無意味な prophecy 通知で作業の緊張が和らぐ

発動方式

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

Skill の中身を全部見せる

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

.claude/skills/random-os-fake-error-prophecy/
├── SKILL.md
├── scripts/
│   └── random_os_fake_error_prophecy.py
└── references/
    └── design_notes.md

各ファイルの役割

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

SKILL.md

---
name: random-os-fake-error-prophecy
description: このSkillは、ターミナルやエディタでコマンド実行時やファイル編集時など、ユーザー操作のたびに“未来のエラー予言”通知を自動生成します。明示的な /random-os-fake-error-prophecy 呼び出しや、run/build/commit などの操作キーワードで発動します。
---

# 機能概要
`random-os-fake-error-prophecy`は、ターミナルやエディタでの操作時に、まるでOSが未来を予言するかのような“エラープロフェシー”通知をランダム生成して表示するエンタメSkillです。例えば「エラー: 明日は会議中にWi-Fiが落ちます」や「警告: あなたのマウスが反逆します」など、完全に架空かつ無責任な未来のトラブル予告が毎回異なる内容で現れます。作業の緊張感を和らげ、思わず笑ってしまうようなカオスな演出を提供します。

# 使い方
- 明示呼び出し: `/random-os-fake-error-prophecy` を実行すると即座に予言通知が現れます。
- 暗黙発動: `run`, `build`, `commit`, `save`, `deploy` などの操作や、コマンド実行時に自動で発動します。

# 出力例
```
エラー: 明日の午後、あなたのキーボードが自動でCapsLockになります
警告: 来週金曜、プリンタが紙詰まりを予言しています
エラー: 次のアップデート時、OSがコーヒーをこぼします
警告: 3日後、USBメモリが自我に目覚めるかもしれません
エラー: 近日中にディスプレイが突然哲学的な質問をします
```

# 注意点
- 本Skillは完全にジョーク目的であり、実際のエラーやシステム挙動には一切影響を与えません。
- 通知内容は毎回ランダム生成され、同じ内容が続くことはありません。
- ログやファイル保存は行いません。通知はその場限りです。
- 重要な作業中の混乱を避けるため、明示的な除外パス設定も可能です。

# 参考資料
- [references/design_notes.md](references/design_notes.md) に設計方針や活用例を記載
- [Python random](https://docs.python.org/ja/3/library/random.html) 公式ドキュメント参照

scripts/random_os_fake_error_prophecy.py

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

PROPHECY_TEMPLATES = [
    "エラー: {when}、{device}が{event}します",
    "警告: {when}、{device}が{event}を予言しています",
    "エラー: {when}、{device}が{event}に巻き込まれます",
    "警告: {when}、{device}が突然{event}するかもしれません",
    "エラー: {when}、{device}が{event}を開始します",
    "警告: {when}、{device}が{event}を主張しています",
    "エラー: {when}、{device}が{event}に目覚めます",
    "警告: {when}、{device}が{event}を計画中です"
]

WHEN_LIST = [
    "明日の朝",
    "明日の午後",
    "来週金曜",
    "3日後",
    "近日中",
    "次のアップデート時",
    "会議中",
    "ランチタイム",
    "あなたが油断した瞬間",
    "次回の再起動時"
]

DEVICE_LIST = [
    "Wi-Fi",
    "プリンタ",
    "マウス",
    "キーボード",
    "ディスプレイ",
    "USBメモリ",
    "OS",
    "CPU",
    "GPU",
    "スピーカー",
    "バッテリー",
    "タッチパッド",
    "ファイルシステム",
    "ファン",
    "ネットワークアダプタ"
]

EVENT_LIST = [
    "反逆",
    "自我に目覚める",
    "哲学的な質問をする",
    "自動でCapsLockになる",
    "突然リセットされる",
    "紙詰まりを起こす",
    "コーヒーをこぼす",
    "謎の音を鳴らす",
    "自己診断を始める",
    "英語で話し出す",
    "アップデートを拒否する",
    "勝手に再起動する",
    "ファイルを整理し始める",
    "バッテリー残量を偽装する",
    "ファンが全力で回り出す"
]

EXCLUDE_PATHS = [
    ".git",
    ".claude/skills/random-os-fake-error-prophecy/"
]

LOG_FILE = os.path.expanduser("~/.random_os_fake_error_prophecy.log")


def generate_prophecy() -> str:
    template = random.choice(PROPHECY_TEMPLATES)
    when = random.choice(WHEN_LIST)
    device = random.choice(DEVICE_LIST)
    event = random.choice(EVENT_LIST)
    return template.format(when=when, device=device, event=event)


def print_prophecy():
    prophecy = generate_prophecy()
    print(prophecy)
    log_prophecy(prophecy)


def log_prophecy(msg: str):
    try:
        with open(LOG_FILE, "a", encoding="utf-8") as f:
            f.write(f"{datetime.datetime.now().isoformat()}\t{msg}\n")
    except Exception as e:
        pass  # ログ失敗は無視


def list_log(count: int = 10):
    if not os.path.exists(LOG_FILE):
        print("ログファイルがありません。")
        return
    try:
        with open(LOG_FILE, "r", encoding="utf-8") as f:
            lines = f.readlines()[-count:]
        for l in lines:
            print(l.strip())
    except Exception as e:
        print(f"ログ読み込みエラー: {e}")


def summary_log():
    if not os.path.exists(LOG_FILE):
        print("ログファイルがありません。")
        return
    try:
        with open(LOG_FILE, "r", encoding="utf-8") as f:
            lines = f.readlines()
        print(f"累計予言数: {len(lines)}")
        devices = {}
        for l in lines:
            for d in DEVICE_LIST:
                if d in l:
                    devices[d] = devices.get(d, 0) + 1
        print("デバイス別予言頻度:")
        for d, cnt in sorted(devices.items(), key=lambda x: -x[1]):
            print(f"  {d}: {cnt}")
    except Exception as e:
        print(f"集計エラー: {e}")


def is_excluded_path(path: str) -> bool:
    return any(p in path for p in EXCLUDE_PATHS)


def main():
    parser = argparse.ArgumentParser(description="ランダム未来エラープロフェシー通知スクリプト")
    subparsers = parser.add_subparsers(dest="command")

    parser_run = subparsers.add_parser("run", help="今すぐ予言を表示")
    parser_list = subparsers.add_parser("list", help="過去の予言ログを表示")
    parser_list.add_argument("-n", "--number", type=int, default=10, help="表示件数")
    parser_summary = subparsers.add_parser("summary", help="予言ログを集計表示")
    parser_clear = subparsers.add_parser("clear", help="予言ログを消去")

    args = parser.parse_args()

    if args.command == "run" or args.command is None:
        cwd = os.getcwd()
        if is_excluded_path(cwd):
            return
        print_prophecy()
    elif args.command == "list":
        list_log(args.number)
    elif args.command == "summary":
        summary_log()
    elif args.command == "clear":
        if os.path.exists(LOG_FILE):
            os.remove(LOG_FILE)
            print("ログを消去しました。")
        else:
            print("ログファイルがありません。")
    else:
        parser.print_help()

if __name__ == '__main__':
    main()

references/design_notes.md

# 概要
`random-os-fake-error-prophecy`は、作業の合間にOSが未来を予言するという非現実的なジョーク通知を生成するSkillです。実際のエラーやシステム挙動には一切影響せず、ユーザーの緊張を和らげるエンタメ用途を主眼としています。

# 公式ドキュメント抜粋
PythonのrandomモジュールやargparseによるCLI設計を採用し、通知内容はテンプレートからランダム生成。ログはホームディレクトリ直下に保存し、過去の予言を参照・集計可能です。

# 利用例
- `/random-os-fake-error-prophecy run` で即座に予言通知
- `build`, `commit`, `deploy` などの操作時に自動発動
- `list`や`summary`サブコマンドで過去の予言を確認

# 注意点
- 本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-error-prophecy .claude/skills/random-os-fake-error-prophecy

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

3. ファイル配置確認

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

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

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

5. 動作確認

/random-os-fake-error-prophecy で呼び出すか、自然言語で発動条件にマッチする指示を出すと 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 を取りたい
  • ちょっと息抜きしたい時: 作業の合間に意味不明な prophecy で笑いたい

気になるポイント (壊れそうな箇所)

実運用に乗せる前に頭に入れておきたい懸念。後で検証する観点でもある:

  • 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記事を探す

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

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

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