Codexで作業中に楽しむランダム俳句通知の使いこなし術

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

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

AI coding workflow を進める中で、Codex の context 管理や repository understanding にまつわる「ちょっとしたストレス」は誰もが経験するものです。とくに path management や monorepo の directory 構造を意識しながら作業していると、思わぬタイミングで集中が途切れたり、メンタルが微妙に揺さぶられる瞬間があります。通知や演出が欲しいと思いつつも、実用性だけが重視されてしまい、遊び心ある Skill がなかなか選ばれないのも現状です。

  • Codex が context を見失って違う場所のコードを参照する
  • monorepo で package を跨いだ瞬間、Codex が repo 構造を忘れる
  • session を再開すると、前回までの context や path 指定をまるごと再説明しないといけない
  • 長時間 workflow で long context が膨らみすぎて、important な情報が薄まる (stale context)
  • 「ここはこういう構造のリポジトリ」というあらすじを毎回チャットの冒頭で書く羽目になる

こうした悩みは、真面目な通知だけでなく、ちょっと肩の力を抜ける演出や、ユーザーの気持ちに寄り添う形で解消できる余地があります。

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

一言サマリ: このスキルは、作業中やコマンド実行時にランダムな“OSエラーハイク通知”を届け、心の余白を生み出すSkill。

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

  • AI coding workflow の合間に、五・七・五の俳句形式エラーメッセージが context のリセットや気分転換を促す
  • repository understanding の切り替えや path management のタイミングで、思わず笑ってしまう通知が届く
  • monorepo の directory 跨ぎや session 再開時など、Codex の「お約束」なストレスを和らげる新体験が得られる
  • 通知・演出・OS連携のカテゴリで、あえて“役に立たないけど心に残る”遊び心をプラスできる
  • 長時間の作業や stale context による疲れを、摩訶不思議な俳句通知でリフレッシュできる
QUICK INSTALL
このSkillをすぐ試す

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

npx degit aazutaku/ai-note/codex/random-os-fake-error-haiku-notifier .agents/skills/random-os-fake-error-haiku-notifier

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

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

シーン1: session 開始時 (プロジェクト初動で)


# /skills menu or random-os-fake-error-haiku-notifier
> プロジェクトを開いたよ

[Fake OS Error Haiku Notification]
404
道に迷いて
春霞

[ヒント] repository understanding をリフレッシュしました。

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


> packages/api/ に移動

[Fake OS Error Haiku Notification]
メモリ消ゆ
春まだ遠き
バグの夜

[ヒント] directory: packages/api/ で context 切替を検知。

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


> なんとなく疲れたので何か面白いことして

[Fake OS Error Haiku Notification]
ファイル消え
静寂の中
夢を見る

[ヒント] 気分転換にどうぞ。

before / after の違い

場面 Skill 無し Skill 有り
session 再開時 repo 構造から毎回説明、path も指定し直し Codex が自動で context を復元、最小プロンプトで再開
monorepo 移動 違う package のコードを参照しがち directory boundary を意識して必要な範囲だけ見る
長時間 workflow long context で重要箇所が薄まる 俳句通知でリフレッシュ、context 切替も自然に促される

発動方式

明示呼び出し (/skills menu or $skill-name mention) と暗黙発動 (description マッチ) の両方に対応。

Skill の中身を全部見せる

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

.agents/skills/random-os-fake-error-haiku-notifier/
├── SKILL.md
├── scripts/
│   └── random_os_fake_error_haiku_notifier.py
└── references/
    └── design_notes.md

各ファイルの役割

ファイル 役割
SKILL.md Skill本体。frontmatter (name/description) と指示本文。Codex がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します
scripts/random_os_fake_error_haiku_notifier.py Random OS Fake Error Haiku Notifier
references/design_notes.md 概要 をまとめた参考資料

SKILL.md

---
name: random-os-fake-error-haiku-notifier
description: このSkillは、コマンド実行や作業中に「エラー」「失敗」「バグ」などのキーワードを検知した際や、/skills menu など明示的な呼び出し時に、五・七・五の俳句形式でランダムな“OS風エラーハイク通知”を生成・表示します。
---

# 機能概要
random-os-fake-error-haiku-notifierは、あなたの作業中やCLIコマンドの実行時に、あたかもOSが発するかのようなエラー通知を、五・七・五の俳句形式でランダム生成し、デスクトップ通知やターミナルに表示します。内容は「ファイル消失」「プロセス停止」「404」などの技術ワードと、季語や詩的表現を組み合わせ、思わずクスッとする摩訶不思議な体験を提供します。実用性は皆無ですが、開発者の心に小さな余白と遊び心をもたらします。

# 使い方
- 明示呼び出し例: `/skills menu` から本Skillを選択、または `random-os-fake-error-haiku-notifier` を直接呼び出し
- 暗黙発動: コマンドラインやログに「error」「fail」「not found」「bug」などのキーワードが出現した際に自動発動
- 通知頻度や表示方法は環境変数やCLIオプションで調整可能

# 出力例
```
メモリ消ゆ    春まだ遠き    バグの夜
404          道に迷いて    春霞
プロセス落つ 静けさ満ちて  冬の朝
ファイル消え 風の行方に    秋の雲
アクセス拒否 月のしじまに  眠れず
```

# 注意点
- 本Skillはジョーク用途です。実際のエラーや障害通知には使えません。
- 通知が多すぎる場合は設定で頻度を調整してください。
- ローカル保存やログファイル出力は行いません。
- Linux/macOSの通知API(notify-send, osascript)を利用します。Windowsではターミナル出力のみ対応。

# 参考資料
- [参考: Bash notify-send](https://specifications.freedesktop.org/notification-spec/latest/)
- references/design_notes.md も参照

scripts/random_os_fake_error_haiku_notifier.py

import random
import sys
import argparse
import os
import platform
import subprocess
import time
from typing import List

# 五・七・五の俳句生成用パーツ
FIVE_SYLLABLES = [
    "メモリ消ゆ",
    "404",
    "プロセス落つ",
    "ファイル消え",
    "アクセス拒否",
    "バグ踊る",
    "権限なし",
    "カーネル割れ",
    "応答なし",
    "書き込み不可",
    "デバイス消ゆ",
    "未知の闇",
    "シグナル舞う",
    "接続切れ",
    "タイムアウト"
]

SEVEN_SYLLABLES = [
    "春まだ遠き",
    "道に迷いて",
    "静けさ満ちて",
    "風の行方に",
    "月のしじまに",
    "秋の雲行く",
    "夜明けを待つ",
    "夏の幻に",
    "冬の朝焼け",
    "波の音消え",
    "霧のむこうに",
    "星の瞬き",
    "夢のさきまで",
    "砂嵐の中",
    "雪の帳に"
]

# 通知API

def notify_desktop(message: str):
    system = platform.system()
    if system == 'Linux':
        try:
            subprocess.run(['notify-send', message], check=False)
        except Exception:
            pass
    elif system == 'Darwin':
        osa_script = f'display notification "{message}" with title "OS Fake Error Haiku"'
        try:
            subprocess.run(['osascript', '-e', osa_script], check=False)
        except Exception:
            pass
    else:
        # Windowsや未対応OSは標準出力のみ
        print(message)

# 俳句生成

def generate_haiku() -> str:
    line1 = random.choice(FIVE_SYLLABLES)
    line2 = random.choice(SEVEN_SYLLABLES)
    line3 = random.choice(FIVE_SYLLABLES)
    return f"{line1}    {line2}    {line3}"

def print_haiku_terminal(haiku: str):
    print(haiku)

def notify_haiku(haiku: str, mode: str):
    if mode == 'desktop':
        notify_desktop(haiku)
    elif mode == 'both':
        notify_desktop(haiku)
        print_haiku_terminal(haiku)
    else:
        print_haiku_terminal(haiku)

# ログ監視(簡易)
def monitor_stdin(keywords: List[str], interval: float, mode: str, freq: int):
    count = 0
    try:
        while True:
            line = sys.stdin.readline()
            if not line:
                break
            if any(kw in line.lower() for kw in keywords):
                haiku = generate_haiku()
                notify_haiku(haiku, mode)
                count += 1
                if freq > 0 and count >= freq:
                    break
            time.sleep(interval)
    except KeyboardInterrupt:
        pass

def main():
    parser = argparse.ArgumentParser(description='Random OS Fake Error Haiku Notifier')
    subparsers = parser.add_subparsers(dest='command')

    parser_run = subparsers.add_parser('run', help='1回だけ俳句を表示')
    parser_run.add_argument('--mode', choices=['terminal', 'desktop', 'both'], default='terminal', help='通知方法')

    parser_monitor = subparsers.add_parser('monitor', help='標準入力を監視し、エラーワード出現時に俳句通知')
    parser_monitor.add_argument('--mode', choices=['terminal', 'desktop', 'both'], default='terminal', help='通知方法')
    parser_monitor.add_argument('--interval', type=float, default=0.1, help='監視間隔(秒)')
    parser_monitor.add_argument('--freq', type=int, default=5, help='最大通知回数 (0で無制限)')
    parser_monitor.add_argument('--keywords', nargs='+', default=['error','fail','not found','bug','exception','crash'], help='監視キーワード')

    args = parser.parse_args()

    if args.command == 'run':
        haiku = generate_haiku()
        notify_haiku(haiku, args.mode)
    elif args.command == 'monitor':
        monitor_stdin(args.keywords, args.interval, args.mode, args.freq)
    else:
        parser.print_help()

if __name__ == '__main__':
    main()

references/design_notes.md

# 概要
random-os-fake-error-haiku-notifierは、CLIや作業ログに現れるエラー/バグ関連ワードをトリガーとして、俳句形式のジョーク通知を行うSkillです。技術用語と季語を組み合わせることで、開発現場にユーモアと癒しをもたらします。

# 公式ドキュメント抜粋
- [notify-send (Linux)](https://specifications.freedesktop.org/notification-spec/latest/)
- [osascript (macOS)](https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html)

# 利用例
- `cat error.log | python random_os_fake_error_haiku_notifier.py monitor --mode both`
- `python random_os_fake_error_haiku_notifier.py run --mode desktop`

# 注意点
- 実際の障害監視や運用通知には使用しないこと。
- Windowsではデスクトップ通知非対応(ターミナル出力のみ)。
- 通知が多すぎる場合は--freqや--intervalで調整可能。

# 設計方針
- 五・七・五の構造を厳守しつつ、毎回異なる俳句を生成。
- OSごとに最適な通知APIを選択。
- Skill本体は100行超のPythonスクリプトでCLI/監視モード両対応。

導入手順

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

1. 前提

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

2. degit でフォルダ取得

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

npx degit aazutaku/ai-note/codex/random-os-fake-error-haiku-notifier .agents/skills/random-os-fake-error-haiku-notifier

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

3. ファイル配置確認

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

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

新しいSkillが自動で認識されます。リスト確認したい場合は /skills menu or $skill-name mention と Skill 名で出てきます。

5. 動作確認

/skills menu or $skill-name mention で呼び出すか、自然言語で発動条件にマッチする指示を出すと Skill が動きます。期待される出力イメージは「実行したらこうなる」セクションを参照してください。

こんな瞬間に便利

  • session 開始時: 前回までの repo 把握を Codex に一発で復元させたい
  • monorepo 移動時: packages を跨いだ瞬間に context を切り替えたい
  • onboarding 時: 新しい repo を Codex に把握させ、こちらが 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 コードを拾ってしまう可能性
  • Codex 固有の引っかかり: description のセマンティックマッチ精度が要件次第
  • 発動しないケース: description が漠然 / 他の Skill が優先 / git管理外 directory

試す前に確かめたいこと

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

  • 実 repo での token 消費は許容範囲か?
  • monorepo (packages 多数) で安定して動くか?
  • stale context にならず、長時間 workflow でも有効か?
  • AGENTS.md との連携設計はどうあるべきか?
  • 通知が実際に俳句形式(五・七・五)で表示されるか
  • 句ごとに内容が毎回異なるか(ランダム性)
  • 通知頻度や表示箇所が邪魔になりすぎないか

実際に Codex で試した検証ログは Codexで謎の俳句エラー通知をランダムに出してみた! にまとめる予定 (公開準備中の場合あり)。
あわせて Codex 公式ドキュメント と、本シリーズ「Codexを使いこなすSkillアイデア」の他記事も参照のこと。

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

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

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

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