Codexで楽しむ謎の古文書通知演出の使いこなし術

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

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

AI Coding Workflow を日々回していると、Codex の通知や演出まわりで「もうちょっと遊び心が欲しい」「集中力が切れた時に何か刺激が欲しい」と感じる瞬間が意外と多い。特に repository understanding や path management で頭を使いすぎていると、ちょっとした気分転換が恋しくなることもある。とはいえ、業務用ツールの通知はどれも真面目一辺倒。たまには「意味不明な古文書風アラート」が画面端に現れてもいいのでは…と感じたことはないだろうか。

  • Codex が context を見失って違う場所のコードを参照するたび、気分転換になるような演出が欲しい
  • monorepo で package を跨いだ瞬間、repo 構造を忘れがちで、集中力が途切れやすい
  • 長時間の AI coding workflow で、long context が膨らみ、重要な情報が薄まってしまう
  • session を再開した時、前回までの path 記憶や directory 構造を思い出すのが面倒
  • 通知・演出が単調で、たまには「無意味な遊び」やエンタメ要素が欲しくなる

特に「通知・演出・OS連携」カテゴリのSkillが少ない現状、こうした“集中力ブレイカー”な演出を求める声は根強い。

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

一言サマリ: このスキルは、Codex の作業フローに“謎の古文書巻物通知”をランダム出現させることで、作業の合間に強制的な気分転換や笑いを提供するSkill。

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

  • AI coding workflow の途中で、完全に無意味な古文書風アラートが巻物UIで現れ、集中力をリセットできる
  • repo や directory の切り替え時に、気が抜けるエンタメ通知で一息つける
  • onboarding や session 再開時、思わず笑ってしまう“謎のOS公式っぽい”演出がランダムに出現
  • 長時間の作業で stale context や疲労が溜まったタイミングで、強制的に“ブレイク”を挟める
  • Skill の導入だけで、他の通知やアラートとの差別化になり、チーム内で話題になる
QUICK INSTALL
このSkillをすぐ試す

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

npx degit aazutaku/ai-note/codex/random-os-fake-ancient-scroll-alert .agents/skills/random-os-fake-ancient-scroll-alert

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

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

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


# /skills menu or random-os-fake-ancient-scroll-alert mention
> 開発を始める

[画面右下に巻物風UIが出現]
─────────────────────────────
【OS古文書通知】
西のコードベースにバグの気運漂う。
巻物曰く、/src/utils/ 配下の静寂に注意せよ。
─────────────────────────────

> (通常の作業に戻れる)

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


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

[画面端に巻物UI]
─────────────────────────────
【OS古文書通知】
本日、レビュアーの機嫌は末吉。
/packages/api/ では「急がば回れ」との御触れあり。
─────────────────────────────

> (通常作業続行)

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


> 何か面白い通知を出して

[画面端に巻物UI]
─────────────────────────────
【OS古文書通知】
南のリポジトリ、README.mdに謎の一文現る。
巻物曰く、「push の前に深呼吸せよ」。
─────────────────────────────

> (笑いながら作業再開)

before / after の違い

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

発動方式

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

Skill の中身を全部見せる

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

.agents/skills/random-os-fake-ancient-scroll-alert/
├── SKILL.md
├── scripts/
│   └── random_scroll_alert.py
└── references/
    └── design_notes.md

各ファイルの役割

ファイル 役割
SKILL.md Skill本体。frontmatter (name/description) と指示本文。Codex がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します
scripts/random_scroll_alert.py ランダムで古文書風の通知文を3行生成
references/design_notes.md 概要 をまとめた参考資料

SKILL.md

---
name: random-os-fake-ancient-scroll-alert
description: このSkillは、コマンド実行や作業の合間(例: build, test, push, review, idle, waiting, menu表示)に、巻物風UIで無意味な“謎のOS古文書通知”をランダム生成・表示します。集中力ブレイカーやエンタメ演出を求める場面で発動してください。
---

# 機能概要
random-os-fake-ancient-scroll-alertは、作業中やコマンド実行後に、突如として“謎のOS公式・古文書巻物通知”をデスクトップ端やターミナルに表示するエンタメSkillです。通知内容は「西のコードベースにバグの気運漂う」「本日、レビュアーの機嫌は末吉」など、毎回ランダム生成される無意味な古文書風テキスト。実用性は一切なく、集中力を破壊することだけを目的としています。巻物風のUI演出で、日常の開発作業に異世界感をもたらします。

# 使い方
- 明示呼び出し例: `/skills menu` でスキル一覧から選択、または `$random-os-fake-ancient-scroll-alert` で直接発動。
- 暗黙発動キーワード例: `build`, `test`, `push`, `review`, `menu`, `idle`, `waiting` などのコマンドや作業待ちタイミングで自動発動。

# 出力例
```terminal
[巻物通知: 2024-06-01 14:23:11]
─────────────────────────────
西のコードベースにバグの気運漂う。
本日、レビュアーの機嫌は末吉。
古きAPI、静かに息を引き取る時近し。
─────────────────────────────
```

# 注意点
- 通知内容は完全に無意味で、実務的な価値はありません。
- 巻物風UIはターミナル上でのみ再現されます(GUI通知機能はありません)。
- ログはローカルに保存されません。必要ならスクリプトを拡張してください。
- 他の通知や作業の邪魔になる可能性が高いです。

# 参考資料
- [Python公式ドキュメント](https://docs.python.org/ja/3/library/random.html)
- references/design_notes.md 参照(巻物文生成ロジック・設計方針)

scripts/random_scroll_alert.py

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

SCROLL_BORDERS = {
    'top': '─────────────────────────────',
    'bottom': '─────────────────────────────',
}

# 古文書風ランダム文生成用素材
SCROLL_PHRASES_1 = [
    '西のコードベースにバグの気運漂う。',
    'レビュアーの機嫌は末吉。',
    '古きAPI、静かに息を引き取る時近し。',
    '新しきPR、未だマージされず。',
    'デプロイの神、今日も眠りにつく。',
    '東のCI、赤き灯火を掲ぐ。',
    'リファクタの風、静かに吹く。',
    '本日のコミット、数知れず。',
    'コードの森に迷い人現る。',
    '西方のバグ、未解決のまま。',
]
SCROLL_PHRASES_2 = [
    '行末のスペース、油断大敵なり。',
    'レビュアー、無言の圧力を放つ。',
    'テストの神託、通らぬ時もある。',
    '本日、動作確認は吉。',
    '古きissue、再び目覚める。',
    'mergeの刻、未だ遠し。',
    'ビルドの雲行き、怪しき兆し。',
    'リリースノート、書き忘れ注意。',
    '新しきバグ、静かに忍び寄る。',
    'レビュアーの眼、全てを見通す。',
]
SCROLL_PHRASES_3 = [
    '今日のpush、運を天に任すべし。',
    '古き知見、今も役立つ。',
    'PRの道、険しき山道なり。',
    'レビュアー、昼寝中。',
    'コードの海、深く静かに広がる。',
    'バグの精霊、そっと囁く。',
    'CIの神、微笑みたもう。',
    '本日、警告多し。',
    '西のバグ、東の警告。',
    '静かなる夜、エラー現る。',
]

SCROLL_SECTIONS = [SCROLL_PHRASES_1, SCROLL_PHRASES_2, SCROLL_PHRASES_3]


def generate_scroll_lines() -> List[str]:
    """
    ランダムで古文書風の通知文を3行生成
    """
    lines = []
    for section in SCROLL_SECTIONS:
        lines.append(random.choice(section))
    return lines


def format_scroll(lines: List[str], timestamp: str = None) -> str:
    if not timestamp:
        timestamp = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    header = f"[巻物通知: {timestamp}]"
    body = '\n'.join(lines)
    scroll = f"{header}\n{SCROLL_BORDERS['top']}\n{body}\n{SCROLL_BORDERS['bottom']}"
    return scroll


def show_scroll():
    lines = generate_scroll_lines()
    scroll = format_scroll(lines)
    print(scroll)


def log_scroll(logfile: str):
    lines = generate_scroll_lines()
    scroll = format_scroll(lines)
    with open(logfile, 'a', encoding='utf-8') as f:
        f.write(scroll + '\n')
    print(f"[log] {logfile} に巻物通知を追記しました。")


def list_scrolls(logfile: str, count: int = 5):
    try:
        with open(logfile, 'r', encoding='utf-8') as f:
            content = f.read()
        scrolls = [s for s in content.strip().split('\n[巻物通知: ') if s]
        scrolls = [('[巻物通知: ' + s).strip() for s in scrolls]
        if not scrolls:
            print("ログに巻物通知がありません。")
            return
        print(f"直近{min(count, len(scrolls))}件の巻物通知:")
        for s in scrolls[-count:]:
            print(s)
            print()
    except FileNotFoundError:
        print(f"ログファイル {logfile} が見つかりません。")


def summary_scrolls(logfile: str):
    try:
        with open(logfile, 'r', encoding='utf-8') as f:
            content = f.read()
        scrolls = [s for s in content.strip().split('\n[巻物通知: ') if s]
        print(f"合計 {len(scrolls)} 件の巻物通知が記録されています。")
    except FileNotFoundError:
        print(f"ログファイル {logfile} が見つかりません。")


def main():
    parser = argparse.ArgumentParser(
        description='random-os-fake-ancient-scroll-alert: 謎のOS古文書巻物通知をランダム生成・表示するスクリプト')
    subparsers = parser.add_subparsers(dest='command', required=True)

    parser_show = subparsers.add_parser('show', help='巻物通知を1件ランダム生成して表示')

    parser_log = subparsers.add_parser('log', help='巻物通知を生成しログファイルに追記')
    parser_log.add_argument('--logfile', type=str, default='scroll_alert.log', help='ログファイルパス (デフォルト: scroll_alert.log)')

    parser_list = subparsers.add_parser('list', help='ログファイルから直近の巻物通知を表示')
    parser_list.add_argument('--logfile', type=str, default='scroll_alert.log', help='ログファイルパス')
    parser_list.add_argument('--count', type=int, default=5, help='表示件数 (デフォルト: 5)')

    parser_summary = subparsers.add_parser('summary', help='ログファイル内の巻物通知件数を集計')
    parser_summary.add_argument('--logfile', type=str, default='scroll_alert.log', help='ログファイルパス')

    args = parser.parse_args()

    if args.command == 'show':
        show_scroll()
    elif args.command == 'log':
        log_scroll(args.logfile)
    elif args.command == 'list':
        list_scrolls(args.logfile, args.count)
    elif args.command == 'summary':
        summary_scrolls(args.logfile)
    else:
        parser.print_help()

if __name__ == '__main__':
    main()

references/design_notes.md

# 概要
このSkillは、開発者の作業フロー中に突如現れる“無意味な古文書通知”を巻物風UIで表示する、完全エンタメ志向の演出用ツールです。通知文は複数セクションからランダムに組み合わせて生成され、毎回異なる内容となるよう設計されています。

# 設計方針
- 実用性よりも“集中力ブレイカー”としての破壊力を優先。
- テキストベースの巻物UIは、ターミナルでの再現性と汎用性を重視。
- 通知文は3セクション構成とし、古文書・占い・OS擬人化などの要素を盛り込む。
- ログ保存や履歴参照もCLIサブコマンドでサポート。

# 利用例
- コマンド: `python random_scroll_alert.py show` で即時通知。
- ログ追記: `python random_scroll_alert.py log --logfile myscroll.log`
- 履歴参照: `python random_scroll_alert.py list --count 3`

# 公式ドキュメント抜粋
- Python random: https://docs.python.org/ja/3/library/random.html
- argparse: https://docs.python.org/ja/3/library/argparse.html

# 注意点
- 実務的な通知や警告は一切含まれません。
- GUI通知やOSネイティブ連携は未対応(拡張可)。
- ログファイルはユーザーが明示的に指定した場合のみ保存されます。

導入手順

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

1. 前提

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

2. degit でフォルダ取得

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

npx degit aazutaku/ai-note/codex/random-os-fake-ancient-scroll-alert .agents/skills/random-os-fake-ancient-scroll-alert

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

3. ファイル配置確認

ls .agents/skills/random-os-fake-ancient-scroll-alert
# 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 との連携設計はどうあるべきか?
  • 巻物風UIがちゃんと表示されるか?
  • 通知文が毎回異なるランダム生成になっているか?
  • 他の通知や作業の邪魔になっているか(むしろ歓迎)?

実際に Codex で試した検証ログは Codexで謎の古文書通知を爆誕させてみた!巻物UIの破壊力を体感 にまとめる予定 (公開準備中の場合あり)。
あわせて Codex 公式ドキュメント と、本シリーズ「Codexを使いこなすSkillアイデア」の他記事も参照のこと。

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

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

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

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