一键导入
codex-latest-status
Codex エージェントの最新セッション状態を確認する。 用途: (1) Codex が現在タスク実行中か入力待ちかセッション終了済みかを把握する、(2) 最後に何をしていたかを確認する、(3) 複数エージェント並行作業時の状況掌握。 このスキルは Read-only で動作する。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Codex エージェントの最新セッション状態を確認する。 用途: (1) Codex が現在タスク実行中か入力待ちかセッション終了済みかを把握する、(2) 最後に何をしていたかを確認する、(3) 複数エージェント並行作業時の状況掌握。 このスキルは Read-only で動作する。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
ASEE と ACAM の backend / viewer を停止する。ユーザーが「asee, acam 停止」「ASEE を止めて」「ACAM Viewer を止めて」など依頼したときに使う。
ローカルの `switchbot` CLI と SwitchBot OpenAPI を使って、SwitchBot デバイスや Hub Mini 配下の赤外線リモコンを確認・操作する。ユーザーが SwitchBot デバイスの状態確認、ライト操作、家電プリセット実行を依頼したときに使う。
whisper.cpp(whisper-server)と PipeWire マイク入力を使って、日本語の音声待ち受け・文字起こし・音声コマンド待機(tmux常駐)を運用する。listen-only 実験、voice command loop(VOICEVOX応答 + VacuumTube操作)、モデル切替(small/medium)、マイク source 切替(DJI MIC MINI / Razer など)、ログ確認・デバッグを行う。ユーザーが『マイクで話しかけたい』『音声待ち受けを常駐したい』『whisper.cpp で音声認識したい』など依頼したときに使う。
whisper.cpp(whisper-server)と PipeWire マイク入力を使って、日本語の音声待ち受け・文字起こし・音声コマンド待機(tmux常駐)を運用する。listen-only 実験、voice command loop(VOICEVOX応答 + VacuumTube操作)、モデル切替(small/medium)、マイク source 切替(DJI MIC MINI / Razer など)、ログ確認・デバッグを行う。ユーザーが『マイクで話しかけたい』『音声待ち受けを常駐したい』『whisper.cpp で音声認識したい』など依頼したときに使う。
whisper.cpp(whisper-server)と PipeWire マイク入力を使って、日本語の音声待ち受け・文字起こし・音声コマンド待機(tmux常駐)を運用する。listen-only 実験、voice command loop(VOICEVOX応答 + VacuumTube操作)、モデル切替(small/medium)、マイク source 切替(DJI MIC MINI / Razer など)、ログ確認・デバッグを行う。ユーザーが『マイクで話しかけたい』『音声待ち受けを常駐したい』『whisper.cpp で音声認識したい』など依頼したときに使う。
5時前の中途覚醒(「おきてもーた」等)をトリガーに、どうでもよい雑学を提示して再入眠を促す。
| name | codex-latest-status |
| description | Codex エージェントの最新セッション状態を確認する。 用途: (1) Codex が現在タスク実行中か入力待ちかセッション終了済みかを把握する、(2) 最後に何をしていたかを確認する、(3) 複数エージェント並行作業時の状況掌握。 このスキルは Read-only で動作する。 |
~/.codex/sessions/YYYY/MM/DD/rollout-*.jsonl の最新ファイルと、実行中の Codex プロセスの有無を組み合わせて、Codex エージェントの現在の状態を正確に報告するスキルです。
task_started が task_complete より新しく、かつ Codex プロセスが存在するtask_complete が最後で、かつ Codex プロセスが存在するtask_complete が最後で、かつ Codex プロセスが存在しないagent_message の内容task_complete の last_agent_message以下の Python スクリプトを実行して状態を取得する:
import json, glob, os, datetime, subprocess
# Codex プロセスが存在するか確認
def codex_process_running():
result = subprocess.run(['pgrep', '-f', 'codex resume'], capture_output=True, text=True)
return result.returncode == 0
# 最新セッションファイルを取得
files = sorted(glob.glob(os.path.expanduser('~/.codex/sessions/**/*.jsonl'), recursive=True))
if not files:
print('セッションファイルが見つかりません')
exit()
latest = files[-1]
print(f'セッションファイル: {latest}')
with open(latest) as f:
lines = f.readlines()
# session_meta から基本情報を取得
meta = json.loads(lines[0]).get('payload', {})
print(f'開始時刻: {meta.get("timestamp", "?")}')
print(f'モデル: {meta.get("model_provider", "?")}')
git = meta.get('git', {})
print(f'リポジトリ: {git.get("repository_url", "?")} / {git.get("branch", "?")}')
print()
# 最後の各イベントを収集
last_tc = last_ts = None
last_tc_payload = None
last_agent_msg = None
last_user_msg = None
for line in reversed(lines):
d = json.loads(line)
if d.get('type') == 'event_msg':
pt = d.get('payload', {}).get('type', '')
if pt == 'task_complete' and last_tc is None:
last_tc = d['timestamp']
last_tc_payload = d['payload']
if pt == 'task_started' and last_ts is None:
last_ts = d['timestamp']
if pt == 'agent_message' and last_agent_msg is None:
last_agent_msg = d['payload']
if pt == 'user_message' and last_user_msg is None:
last_user_msg = d['payload']
# 最終イベントの経過時間
last_event = json.loads(lines[-1])
last_event_ts = last_event.get('timestamp', '')
now_utc = datetime.datetime.now(datetime.timezone.utc)
last_event_dt = datetime.datetime.fromisoformat(last_event_ts.replace('Z', '+00:00'))
idle_minutes = (now_utc - last_event_dt).total_seconds() / 60
# プロセス存在確認
process_alive = codex_process_running()
# ステータス判定(プロセス有無を組み合わせる)
if last_ts and last_tc and last_ts > last_tc and process_alive:
status = '🔄 タスク実行中'
elif last_tc and process_alive:
status = '⌨️ 入力待ち(プロセス稼働中)'
elif last_tc and not process_alive:
status = '🔚 セッション終了済み'
else:
status = '❓ 不明'
print(f'ステータス: {status}')
print(f'プロセス稼働中: {process_alive}')
print(f'最終イベント: {last_event_ts} ({idle_minutes:.1f}分前)')
print()
# 最後の agent_message
if last_agent_msg:
msg = last_agent_msg.get('message', '')
phase = last_agent_msg.get('phase', '')
print(f'最後のエージェントメッセージ ({phase}):')
print(f' {msg[:300]}')
print()
# 最後の task_complete の内容
if last_tc_payload:
final_msg = last_tc_payload.get('last_agent_message', '')
print(f'最後のタスク完了メッセージ:')
print(f' {final_msg[:400]}')
print()
# 最後の user_message
if last_user_msg:
umsg = last_user_msg.get('message', '')
print(f'最後のユーザーメッセージ:')
print(f' {umsg[:200]}')
pgrep -f 'codex resume' で Codex プロセスの存在を確認する~/.codex/sessions/ 以下の最新 .jsonl ファイルを特定する| 状態 | 判定条件 |
|---|---|
| 🔄 タスク実行中 | task_started > task_complete(時刻比較)かつ プロセスあり |
| ⌨️ 入力待ち | task_complete が最後 かつ プロセスあり |
| 🔚 セッション終了済み | task_complete が最後 かつ プロセスなし |
| ❓ 不明 | その他 |
~/.codex/sessions/ に保存される(/home/yuiseki/Workspaces/.codex/ とは別)reasoning ペイロードの内容は暗号化されているため読み取り不可pgrep -f 'codex resume' で判定するため、codex exec(非対話型)での起動時は検出されない場合がある