Codexで開発中に楽しむタロット風謎占い通知の活用ガイド

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

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

Codex を日常的に使っていると、真面目な AI coding workflow の中にも、時には「何か遊び心が欲しい」「ちょっとした息抜きがあれば…」と感じる瞬間がある。特に monorepo での長時間作業や、repository understanding を繰り返す onboarding 時、単調な commit の連続に飽きてしまうことも。「コミットのたびに何か面白いことが起きたら」と思ったことはないだろうか。以下のような「あるある」も多い:

  • 長時間の session で、commit のリズムが単調になり、開発現場の空気が重くなりがち
  • monorepo の大規模 repository で作業していると、commit のたびに「また同じ通知か」と感じてしまう
  • Codex の context 管理に集中しすぎて、ちょっとした遊びやリフレッシュの余裕がなくなる
  • onboarding で新しいメンバーに「このリポジトリは真面目一辺倒」と思わせてしまい、場が固くなる
  • コミット時の通知やメッセージが無機質で、記憶にも残らない

こうした悩みは、AI coding workflow の効率化だけでなく、チームの空気やモチベーションにも影響する。Codex の context や path management の最適化だけでなく、「遊び心」も repository に持ち込みたいと感じるユーザーは少なくない。

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

一言サマリ: このスキルは、Git commit のたびにタロット風の謎占い通知を自動で発動し、開発現場に遊び心とカオスをもたらす Skill。

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

  • コミットのたびに「運命の輪が回る」など完全ランダムなタロットメッセージが表示され、単調な作業フローに刺激と笑いが生まれる
  • repository understanding や onboarding の場で、堅苦しさを和らげる潤滑油として機能する
  • monorepo など大規模な directory 構成でも、Skill の通知が context の切り替えタイミングを彩る
  • 長時間の AI coding workflow でも、commit ごとに気分転換でき、stale context への倦怠感を和らげる
  • 「今日は大吉か?」といった話題でチームのコミュニケーションが活性化する
QUICK INSTALL
このSkillをすぐ試す

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

npx degit aazutaku/ai-note/codex/commit-fortune-tarot-notifier .agents/skills/commit-fortune-tarot-notifier

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

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

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


# /skills menu or commit-fortune-tarot-notifier mention
> プロジェクト開始。初回 commit。

[Tarot Fortune Notifier]
あなたのcommitは「愚者」のカード。
新たな旅路の始まり。大胆に進め!

(コミットログ: feat: 初期セットアップ)

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


> packages/api/ ディレクトリで commit

[Tarot Fortune Notifier]
「運命の輪」が回転中。
思いがけない展開が訪れる予感。

(コミットログ: fix(api): 認証フロー修正)

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


> 今日もコミット。なんとなく気分転換したい。

[Tarot Fortune Notifier]
「死神」のカードが現れた。
古いコードとの決別、新しい始まりを告げる。

(コミットログ: chore: 不要ファイル削除)

before / after の違い

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

発動方式

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

Skill の中身を全部見せる

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

.agents/skills/commit-fortune-tarot-notifier/
├── SKILL.md
├── scripts/
│   └── commit_fortune_tarot_notifier.py
└── references/
    └── design_notes.md

各ファイルの役割

ファイル 役割
SKILL.md Skill本体。frontmatter (name/description) と指示本文。Codex がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します
scripts/commit_fortune_tarot_notifier.py デスクトップ通知を送信(macOS, Linux, Windows対応)
references/design_notes.md 概要 をまとめた参考資料

SKILL.md

---
name: commit-fortune-tarot-notifier
description: Gitのcommit時や/skills menu、commit-fortune-tarot-notifierの明示呼び出し時に発動。コミットごとに完全ランダムなタロット風ジョーク通知を表示し、開発現場にカオスな演出を加えます。
---

# 機能概要
このSkillは、Gitでコミットするたびに“タロットカード風の謎占い通知”をデスクトップまたはターミナルに表示します。通知内容は「運命の輪が回る」「愚者が新たな旅路に」など、完全ランダムなタロット風メッセージ。日々の開発作業に突如現れる謎の演出で、真面目な作業フローにユーモアとカオスをもたらします。コミット作業のたびに一喜一憂でき、チームの雰囲気を和ませるジョークSkillです。

# 使い方
- 明示呼び出し: `/skills menu` から選択、または `$commit-fortune-tarot-notifier` をターミナルで実行
- 暗黙発動: Gitのcommitコマンド実行時(例: `git commit -m "fix bug"`)

# 出力例
```
$ git commit -m "add new feature"
[タロット占い] 愚者が新たな旅路に出た。今日のコミットは冒険の始まり。
$ git commit -m "refactor code"
[タロット占い] 運命の輪が回る。変化の兆し、コードに吉兆あり。
$ git commit -m "fix typo"
[タロット占い] 塔が崩れる。油断大敵、慎重に進め。
$ commit-fortune-tarot-notifier
[タロット占い] 恋人たちが微笑む。協力が成功の鍵。
```

# 注意点
- 通知内容は完全にランダムで実用性はありません
- 作業を過度に阻害しないよう、通知は1行表示のみ
- 除外パスや特定ファイルには影響しません
- 通知履歴はローカル保存されません

# 参考資料
- references/design_notes.md
- https://docs.python.org/ja/3/library/subprocess.html
- https://git-scm.com/docs/githooks

scripts/commit_fortune_tarot_notifier.py

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

tarot_cards = [
    ("愚者", "愚者が新たな旅路に出た。今日のコミットは冒険の始まり。"),
    ("魔術師", "魔術師が知恵を授ける。創造力が高まる予感。"),
    ("女教皇", "女教皇が静かに見守る。冷静な判断を。"),
    ("女帝", "女帝が豊かさをもたらす。成果が実る兆し。"),
    ("皇帝", "皇帝が統率する。秩序が保たれるだろう。"),
    ("法王", "法王が導く。伝統に従うと吉。"),
    ("恋人たち", "恋人たちが微笑む。協力が成功の鍵。"),
    ("戦車", "戦車が突き進む。勢いに乗って進もう。"),
    ("力", "力がみなぎる。困難も乗り越えられる。"),
    ("隠者", "隠者が静かに歩む。内省の時。"),
    ("運命の輪", "運命の輪が回る。変化の兆し、コードに吉兆あり。"),
    ("正義", "正義が裁く。フェアな判断を心がけて。"),
    ("吊るされた男", "吊るされた男が耐える。辛抱強く待つべし。"),
    ("死神", "死神が通り過ぎる。終わりは新たな始まり。"),
    ("節制", "節制が調和をもたらす。バランス重視で。"),
    ("悪魔", "悪魔が囁く。誘惑に注意。"),
    ("塔", "塔が崩れる。油断大敵、慎重に進め。"),
    ("星", "星が輝く。希望を持って進もう。"),
    ("月", "月が照らす。迷いが生じやすい時期。"),
    ("太陽", "太陽が照りつける。大成功の予感。"),
    ("審判", "審判が下る。過去の努力が報われる。"),
    ("世界", "世界が完成する。プロジェクトの完遂が近い。")
]

def get_random_tarot_message() -> str:
    card, message = random.choice(tarot_cards)
    return f"[タロット占い] {message}"

def print_tarot_message():
    print(get_random_tarot_message())

def notify_desktop(message: str):
    """
    デスクトップ通知を送信(macOS, Linux, Windows対応)
    """
    try:
        if sys.platform == "darwin":
            subprocess.run(["osascript", "-e", f'display notification "{message}" with title "Tarot Commit Fortune"'], check=True)
        elif sys.platform.startswith("linux"):
            subprocess.run(["notify-send", "Tarot Commit Fortune", message], check=True)
        elif sys.platform.startswith("win"):
            from win10toast import ToastNotifier
            toaster = ToastNotifier()
            toaster.show_toast("Tarot Commit Fortune", message, duration=5)
        else:
            print(message)
    except Exception:
        print(message)

def is_git_commit_context() -> bool:
    # 環境変数GIT_COMMITTER_NAMEなどで判定
    return os.environ.get('GIT_COMMITTER_NAME') is not None

def cli():
    parser = argparse.ArgumentParser(description="commit-fortune-tarot-notifier: Gitコミット時にタロット風通知を表示")
    subparsers = parser.add_subparsers(dest="command")

    parser_log = subparsers.add_parser('log', help='直近10回のGitコミットでタロット通知を表示')
    parser_notify = subparsers.add_parser('notify', help='タロット通知を1回だけ表示')
    parser_list = subparsers.add_parser('list', help='全タロットカード一覧を表示')
    parser_summary = subparsers.add_parser('summary', help='タロット通知の使い方まとめ')

    args = parser.parse_args()
    if args.command == 'log':
        show_tarot_log()
    elif args.command == 'notify' or args.command is None:
        message = get_random_tarot_message()
        print(message)
        notify_desktop(message)
    elif args.command == 'list':
        for card, message in tarot_cards:
            print(f"{card}: {message}")
    elif args.command == 'summary':
        print_summary()
    else:
        parser.print_help()

def show_tarot_log():
    # git log --pretty=oneline -n 10 を取得
    try:
        result = subprocess.run(["git", "log", "--pretty=oneline", "-n", "10"], capture_output=True, text=True, check=True)
        lines = result.stdout.strip().split("\n")
        for line in lines:
            message = get_random_tarot_message()
            print(f"{line[:40]}... {message}")
    except Exception as e:
        print("git logの取得に失敗しました", e)

def print_summary():
    print("""
commit-fortune-tarot-notifier は、Gitコミット時にタロットカード風の謎占い通知を表示するジョークSkillです。
- git commit時に自動で発動、または `python commit_fortune_tarot_notifier.py notify` で明示呼び出し可能
- /skills menu からも利用できます
- 通知は完全ランダムで、実用性はありません
""")

def main():
    # Gitフックから呼ばれた場合は即座に通知
    if is_git_commit_context():
        message = get_random_tarot_message()
        print(message)
        notify_desktop(message)
    else:
        cli()

if __name__ == '__main__':
    main()

references/design_notes.md

# 概要
commit-fortune-tarot-notifierは、Gitのコミット時に完全ランダムなタロットカード風メッセージを通知するジョークSkillです。開発現場の雰囲気を和ませるため、実用性よりも演出とネタ性を重視しています。

# 公式ドキュメント抜粋
- [subprocess — サブプロセス管理 — Python公式](https://docs.python.org/ja/3/library/subprocess.html)
- [Git Hooks — git-scm.com](https://git-scm.com/docs/githooks)

# 利用例
- チーム開発でコミットごとにタロット通知が流れることで、会話のきっかけやリラックス効果を期待
- 個人開発でも「今日はどんな運勢?」と気分転換に活用可能

# 注意点
- 通知内容は完全にランダムで、実際のコード品質や進捗とは無関係です
- デスクトップ通知はOS依存(Linux: notify-send, macOS: osascript, Windows: win10toast)
- 通知履歴は保存されません

# 設計方針
- Git commit時のフックや明示呼び出しの両方に対応
- 過度な作業阻害を避けるため、通知は1行・即時のみ
- 拡張性を考慮し、タロットメッセージは配列で管理

導入手順

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

1. 前提

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

2. degit でフォルダ取得

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

npx degit aazutaku/ai-note/codex/commit-fortune-tarot-notifier .agents/skills/commit-fortune-tarot-notifier

.agents/skills/commit-fortune-tarot-notifier の中に SKILL.md / scripts/ / references/ / README.md が展開されます。

3. ファイル配置確認

ls .agents/skills/commit-fortune-tarot-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 との連携設計はどうあるべきか?
  • commit 時に毎回異なるタロット風通知が表示されるか?
  • 通知内容が完全にランダムで、ネタ感が強いか?
  • 通知の演出が過度に作業を阻害しないか?

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

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

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

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

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