Claude Code の status line に今日の運勢を出します。Node.js のみ、依存パッケージなし。
🔮 今日の運勢 末吉 2026-08-26 (水) cc-statusline-omikuji 次の運勢まで 1:19:01
依存関係運 ★★★★★ · デバッグ運 ★★★☆☆ · レビュー運 ★★★★☆
「書く前に読む時間を長めに取ると転ばない」 読み飛ばした行に答えがある
運勢が引き直されるのは 1 日 1 回、その日最初にプロンプトを実行したタイミングだけです。
| ファイル | 役割 |
|---|---|
launcher.js |
status line に登録する唯一のスクリプト |
apps/fortune.js |
今日の運勢の描画と、引き直しの判定 |
lib/omikuji.js |
日付から運勢を引く(同じ日・同じプロジェクトなら必ず同じ結果) |
状態は ~/.claude/statusline-omikuji/state/ に置かれます(CLAUDE_CONFIG_DIR を設定していればその配下)。
- リポジトリを
~/.claude/statusline-omikuji/に配置する
git clone https://github.com/mochitablog0326-lgtm/cc-statusline-omikuji.git ~/.claude/statusline-omikuji~/.claude/settings.jsonに追記する
macOS / Linux
{
"statusLine": {
"type": "command",
"command": "node \"$HOME/.claude/statusline-omikuji/launcher.js\"",
"refreshInterval": 1,
"padding": 0
}
}Windows
{
"statusLine": {
"type": "command",
"command": "node \"%USERPROFILE%\\.claude\\statusline-omikuji\\launcher.js\"",
"refreshInterval": 1,
"padding": 0
}
}refreshInterval の最小値は 1 秒です。カウントダウンを 1 秒刻みで動かしたいときだけ 1 にしてください。運勢そのものは 1 日 1 回しか変わらないので、長めの間隔でも表示は変わりません。
| 位置 | 内容 |
|---|---|
| 1 行目 | 運勢(大吉〜大凶)、日付、プロジェクト名、次の運勢までのカウントダウン |
| 2 行目 | その日の 3 種目とそれぞれの星(1〜5) |
| 3 行目 | 助言と兆し |
運勢の色は吉凶に対応します(大吉は黄、吉筋は緑、末吉は水色、凶筋は赤)。
運勢は日付とプロジェクト名から作った種で引いています。status line は毎秒走り直されるので、Math.random() を使うと運勢が毎秒くるくる変わってしまいます。同じ日・同じリポジトリなら何度引いても同じ結果になるため、セッションを複数開いていても表示は揃います。プロジェクトごとに別の運勢が出ます。
引き直すのは日付が変わり、かつ新しいプロンプトが実行されたときだけです。日付が変わっただけでは変えません(誰も見ていない深夜 0 時に切り替わってしまうのを避けるため)。日付が変わったあと最初のプロンプトが来るまでは前日の運勢がそのまま出たままになり、1 行目の右端が 次の運勢 次のプロンプトで更新 に変わります。
プロンプトの検出には Claude Code が渡してくる prompt_id を使い、引いた運勢は状態ファイルに保存します。prompt_id が渡ってこない環境では、日付が変わった時点で引き直します(引き直せないまま固まらないようにするためです)。
| 変数 | 効果 |
|---|---|
CC_OMIKUJI_CHARSET=ascii |
絵文字と星を ASCII (* -) に落とす |
NO_COLOR=1 |
色を無効化 |
Windows で旧来の conhost を使っている場合は自動的に ASCII になります(Windows Terminal なら Unicode のまま)。
- 状態ファイルは
~/.claude/statusline-omikuji/state/に 0700 で作られます(Windows ではパーミッションは無視されますが、ユーザープロファイル配下です) - 書き込みは一時ファイル + リネームによる原子的置換です
- 状態ファイルから読んだ運勢は、型と長さを検査してから使います。描画直前に色指定(SGR)以外の制御文字も除去します。状態ファイル経由でのエスケープシーケンス注入を防ぐためです
- ネットワークアクセスは一切ありません
~/.claude/settings.json の statusLine を削除し、~/.claude/statusline-omikuji/ を消してください。
MIT