Codex ユーザーが日常でぶつかる悩み
AI coding workflow を日常的に使っていると、集中している最中に思わぬ「邪魔」が入ることがあります。特に、業務中にプライベートな作業や遊び心でスクリプトを触っている時、突然背後から上司や同僚が近づいてきて「今、何してるの?」と聞かれる瞬間は誰しも一度は経験があるはずです。そんな時、咄嗟に画面を隠したり、慌てて別のウィンドウに切り替えるのは意外と手間がかかります。
また、Codex のような AI コーディングエージェントを使っていると、以下のような悩みが発生しがちです。
- Codex が context を見失って違う場所のコードを参照する
- monorepo で package を跨いだ瞬間、Codex が repo 構造を忘れる
- session を再開すると、前回までの context や path 指定をまるごと再説明しないといけない
- 長時間 workflow で long context が膨らみすぎて、important な情報が薄まる (stale context)
- 「ここはこういう構造のリポジトリ」というあらすじを毎回チャットの冒頭で書く羽目になる
特に「通知・演出・OS連携」系の悩みとしては、作業画面を一時的に“それっぽい”業務画面に偽装したい、というニーズが根強く存在しています。
この Skill が一言でいうと何を解決するか
一言サマリ: このスキルは、Codex の作業画面を即座に“業務中”っぽく偽装できるパロディ Skill。
もう少し具体化すると、このSkillを入れることで以下のような状態になる:
- AI coding workflow の途中で、指定キーやコマンド一発で「真面目な業務ウィンドウ」を即座に表示できる (context を切らさずに演出が可能)
- repository understanding や path management の流れを止めず、画面をランダムな“ダミー業務画面”に切り替えられる
- 本物の repo や directory 情報を使わず、毎回違う fake レポートやグラフ画面を自動生成 (長時間 session でも stale context を回避)
- onboarding や session 再開時にも、AI の memory をリセットせずに「今は真面目に作業中」アピールができる
- Skill の明示呼び出しだけでなく、自然言語での発動にも対応しているため、柔軟な使い分けが可能
GitHub から degit でコマンド1行、Codex の Skill ディレクトリに展開できます。Node.js があれば即時に動きます。
npx degit aazutaku/ai-note/codex/random-os-fake-boss-key .agents/skills/random-os-fake-boss-key実行したらこうなる (3つの利用シーン)
使う側がイメージしやすいよう、擬似 terminal で出力例を3パターン示します。
シーン1: session 開始時 (プロジェクト初動で)
# /skills menu
> 今から作業開始。ボスキーをセットしておきたい。
[Fake Boss Key Activated]
─────────────────────────────
業務進捗レポート - 2024年Q2
─────────────────────────────
・main repository: /projects/enterprise-analytics
・未解決課題: 12
・今週のコミット数: 48
・CI/CD ステータス: All Green
─────────────────────────────
(ESCキーで元の画面に戻ります)
シーン2: monorepo / package 跨ぎ作業時
> packages/api/ から packages/web/ に移動。ついでにボスキー発動。
[Fake Boss Key Activated]
─────────────────────────────
リアルタイムモニタリング - package: web
─────────────────────────────
CPU Usage: ████░░░░░ 38%
Memory: █████░░░░ 57%
Active endpoints: 5/7
Last deploy: 2024-06-20 10:14
─────────────────────────────
(ESCキーで元の作業画面へ戻ります)
シーン3: お遊び的な使い方
> ちょっと休憩。誰か来たので、さりげなくボスキー。
[Fake Boss Key Activated]
─────────────────────────────
タスク進捗グラフ
─────────────────────────────
[■■■■■■■■□□] 80% 完了
残タスク: 3
本日分: すべて完了
─────────────────────────────
(ESCキーで元の画面へ ESC)
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-boss-key/ に配置するファイル一覧です。GitHub に push 済みなので、上記の degit コマンドで一発取得できます。
.agents/skills/random-os-fake-boss-key/
├── SKILL.md
├── scripts/
│ └── fake_boss_key.py
└── references/
└── design_notes.md
各ファイルの役割
| ファイル | 役割 |
|---|---|
SKILL.md |
Skill本体。frontmatter (name/description) と指示本文。Codex がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します |
scripts/fake_boss_key.py |
random-os-fake-boss-key: ダミー業務画面を即座に表示 |
references/design_notes.md |
概要 をまとめた参考資料 |
SKILL.md
---
name: random-os-fake-boss-key
description: 作業中に“ボスが来た”風の緊急演出を即座に起動したい場合や、上司接近・監督キーワード(例:『上司』『監督』『見られる』)を検知した際に、偽の業務画面をランダム生成して切り替える必要がある場合に発動します。
---
# 機能概要
random-os-fake-boss-keyは、作業中に「ボスキー」的な演出を現代的に再現するSkillです。指定コマンドやショートカット、または「上司」「監督」などのキーワードを検知した際に、ダミーの業務画面(グラフ、レポート、コードレビューなど)をランダムに生成し、即座に画面を切り替えます。これにより、背後から誰かが近づいた時でも「仕事中です」感を演出でき、気まずい瞬間を回避できます。
# 使い方
- 明示呼び出し: `/skills menu` から「random-os-fake-boss-key」を選択、または `@random-os-fake-boss-key` をチャットで指定
- 暗黙発動: 「上司が来た」「監督」「見られてる」「サボり」「切り替え」などのキーワードを含む発話時
- CLI呼び出し: `python fake_boss_key.py --show` で即座にダミー画面を表示
# 出力例
```
=== DUMMY BUSINESS DASHBOARD ===
売上推移グラフ: ████▇▆▅▃▂▁
今月の進捗: 87%
最新レポート: "AI導入効果分析2024"
コードレビュー: 12件/週
タスク一覧: [完了] [進行中] [要確認]
===============================
```
# 注意点
- 本Skillは実際の業務データや画面には一切アクセスせず、完全なダミー情報のみを生成します。
- ローカル端末上でのみ画面を切り替え、クラウドや他ユーザーには影響しません。
- 保存・ログ機能はありません。演出は一時的な表示のみです。
- 画面復帰はEscキーまたは指定コマンドで即座に可能です。
# 参考資料
- [参考: Boss Key - Wikipedia](https://en.wikipedia.org/wiki/Boss_key)
- references/design_notes.md に設計方針・利用例を記載
scripts/fake_boss_key.py
import sys
import argparse
import random
import time
import threading
import os
import signal
import curses
def random_bar(length=10):
blocks = ['▁','▂','▃','▄','▅','▆','▇','█']
return ''.join(random.choice(blocks) for _ in range(length))
def random_report_name():
titles = [
'AI導入効果分析2024',
'業務効率化レポート',
'月次売上推移',
'顧客満足度調査',
'品質改善サマリー',
'コスト削減案',
'DX推進進捗',
'市場動向分析',
'プロジェクト進行状況',
'システム障害報告'
]
return random.choice(titles)
def random_tasks():
states = ['[完了]', '[進行中]', '[要確認]', '[保留]']
tasks = [
'月次レポート',
'コードレビュー',
'会議資料作成',
'顧客対応',
'データ分析',
'バグ修正',
'要件定義',
'設計書更新',
'進捗報告',
'テストケース追加'
]
pairs = random.sample(list(zip(random.sample(tasks, 5), random.choices(states, k=5))), 5)
return ' / '.join(f'{s} {t}' for t, s in pairs)
def random_progress():
return f"{random.randint(60, 99)}%"
def random_review_count():
return f"{random.randint(5, 25)}件/週"
def draw_dummy_screen(stdscr):
stdscr.clear()
stdscr.border(0)
h, w = stdscr.getmaxyx()
lines = [
"=== DUMMY BUSINESS DASHBOARD ===",
f"売上推移グラフ: {random_bar(16)}",
f"今月の進捗: {random_progress()}",
f"最新レポート: \"{random_report_name()}\"",
f"コードレビュー: {random_review_count()}",
f"タスク一覧: {random_tasks()}",
"===============================",
"[Esc]で元の画面に戻ります"
]
for idx, line in enumerate(lines):
x = w//2 - len(line)//2
y = h//2 - len(lines)//2 + idx
if 0 <= y < h:
stdscr.addstr(y, max(0, x), line[:w-2])
stdscr.refresh()
while True:
key = stdscr.getch()
if key == 27: # ESC
break
def show_dummy_screen():
curses.wrapper(draw_dummy_screen)
def cli():
parser = argparse.ArgumentParser(description='random-os-fake-boss-key: ダミー業務画面を即座に表示')
parser.add_argument('--show', action='store_true', help='ダミー画面を表示')
parser.add_argument('--version', action='version', version='random-os-fake-boss-key 1.0')
args = parser.parse_args()
if args.show:
try:
show_dummy_screen()
except Exception as e:
print(f"[ERROR] 画面表示に失敗しました: {e}")
sys.exit(1)
else:
parser.print_help()
def semantic_trigger(text):
keywords = ['上司', '監督', '見られて', 'サボり', '切り替え', '監視', '覗かれ', 'ピンチ']
return any(k in text for k in keywords)
def main():
if len(sys.argv) > 1:
cli()
else:
print('random-os-fake-boss-key スキル (CLI)')
print(' --show : ダミー画面を表示')
print(' 例: python fake_boss_key.py --show')
print(' または、キーワード発話で自動発動')
# 簡易デモ: 標準入力でキーワード検知
print('\n[デモ] キーワードを入力してください (例: 上司が来た):')
try:
while True:
text = input('> ')
if semantic_trigger(text):
print('[TRIGGER] キーワード検知! ダミー画面を表示します...')
show_dummy_screen()
elif text.strip().lower() in ('q', 'quit', 'exit'):
print('終了します')
break
else:
print('通常入力:', text)
except KeyboardInterrupt:
print('\n終了します')
if __name__ == '__main__':
main()
references/design_notes.md
# 概要
random-os-fake-boss-keyは、伝統的な「ボスキー」を現代のCLI/AIワークフロー向けに再設計したパロディSkillです。業務画面風のダミー出力を即座に生成し、緊急時の“仕事中”演出を支援します。
# 公式ドキュメント抜粋
- [Boss key - Wikipedia](https://en.wikipedia.org/wiki/Boss_key)
- curses: https://docs.python.org/3/library/curses.html
# 利用例
- チャットで「上司が来た」と発言→自動でダミー画面表示
- CLIで `python fake_boss_key.py --show` 実行→即座に切り替え
# 注意点
- 本Skillは実データを一切使用せず、完全なランダム生成のみ
- ローカル端末のみに影響し、クラウドや他ユーザーには非表示
- 保存や履歴機能はありません
# 設計方針
- 発動速度と演出のリアルさを重視
- CLI/AI連携両対応
- 画面復帰はEscキー/明示コマンドで即座に可能
導入手順
このSkillは GitHub で管理されているので、degit を使えば必要なフォルダだけを1コマンドで取得できます。Codex はファイル配置後に再起動するだけで自動認識します。
1. 前提
- Node.js v16 以上 (
degit実行に必要) - Codex がローカルで動いていること
2. degit でフォルダ取得
プロジェクトのルートで以下のコマンドを実行します。
npx degit aazutaku/ai-note/codex/random-os-fake-boss-key .agents/skills/random-os-fake-boss-key
.agents/skills/random-os-fake-boss-key の中に SKILL.md / scripts/ / references/ / README.md が展開されます。
3. ファイル配置確認
ls .agents/skills/random-os-fake-boss-key
# 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記事を探す
本記事に付いているタグから、気になるテーマの記事を探せます。タグページで関連記事をまとめて読めるので、ぜひチェックしてみてください!
