Antigravity ユーザーが日常でぶつかる悩み
AI coding workflow を日常的に使う現場では、思わず「今この画面、誰かに見られたくない!」という瞬間が意外と多いものです。特にAntigravityのようなAIエージェントを活用していると、プライベートなコードやメモ、ちょっとした遊び心を交えた作業も増えがちです。そんな時、ふと背後に人の気配を感じて「このままじゃマズい」と感じた経験はありませんか。以下のような悩みが挙げられます。
- Antigravityの操作画面やAIチャットのログが、外部の人に不用意に見えてしまうリスク
- プライベートなコードやジョーク的な作業内容を、会議やオフィスで一時的に隠したくなる場面
- 集中している時に、突然の来客や同僚の視線で一瞬だけ“真面目な業務”画面を装いたい
- AIエージェントの context や memory に遊び要素が残っていると、うっかり見られて困る
- 開発者同士でちょっとしたイタズラやネタを仕込む場面で、演出力が足りない
通知・演出・OS連携カテゴリに該当し、Antigravity の context や repository understanding を活かした作業をしているからこそ、「今だけ画面を切り替えたい」というニーズが生まれます。
この Skill が一言でいうと何を解決するか
一言サマリ: 作業中に“あっヤバい!”という瞬間Skill。
もう少し具体化すると、このSkillを入れることで以下のような状態になる:
- 「今見られたくない!」と思った瞬間、ワンアクションで“なんちゃってExcel”風ウィンドウに即座に切り替えられる
- AI coding workflow の最中でも、repositoryやdirectoryの contextを保ったまま一時的に画面を隠せる
- onboarding時やsession再開時など、Antigravityのpath managementやmemoryが活きている作業でも、外部からの視線を気にせず続行できる
- 遊び心と秘密主義を両立し、開発現場でのコミュニケーションやネタにも活用できる
- monorepoや長時間作業の途中でも、重要なrepository understandingを損なわずに“逃げ”の演出ができる
GitHub から degit でコマンド1行、Antigravity の Skill ディレクトリに展開できます。Node.js があれば即時に動きます。
npx degit aazutaku/ai-note/antigravity/boss-key-fake-excel .agent/skills/boss-key-fake-excel実行したらこうなる (3つの利用シーン)
使う側がイメージしやすいよう、擬似 terminal で出力例を3パターン示します。
シーン1: session 開始時 (プロジェクト初動で)
# ふと背後に人が来た気配。「あっヤバい!」と自然言語で指示
> 今すぐ画面を業務用Excelっぽく切り替えて
[Antigravity] boss-key-fake-excel Skill が発動しました。
"フェイクExcel"ウィンドウを最前面に表示しています。
元のAI coding workflow画面は一時的に隠されました。
(ウィンドウタイトル: "売上管理_2024.xlsx - Excel")
(ダミーのスプレッドシート風UIが表示)
ショートカット [Ctrl+Shift+X] で元の作業画面に戻せます。
シーン2: monorepo / package 跨ぎ作業時
> packages/api/ から packages/web/ に移動して作業中、急に来客
[Antigravity] boss-key-fake-excel Skill を起動します。
"なんちゃってExcel"画面が最前面に表示されました。
monorepoのcontextやdirectory情報はそのまま保持されています。
(フェイクExcel: "プロジェクト進捗管理.xlsx" 風の画面)
ショートカット [Ctrl+Shift+X] で元の作業に即復帰可能です。
シーン3: お遊び的な使い方
> 友人に「今、重要な業務中」と見せかけたい
[Antigravity] boss-key-fake-excel Skill を発動しました。
"業務用Excel"そっくりのフェイクウィンドウを表示中です。
AI coding workflowやrepositoryの作業内容は一切表示されません。
(ウィンドウタイトル: "顧客リスト2024.xlsx - Excel")
(ダミーのテーブルデータ)
ショートカット [Ctrl+Shift+X] で元に戻せます。
before / after の違い
| 場面 | Skill 無し | Skill 有り |
|---|---|---|
| session 再開時 | AI coding workflowやrepo構造を毎回説明、pathも指定し直し | Antigravityのcontextやmemoryを保持したまま、一時的に画面をフェイクExcelで隠せる |
| monorepo 移動 | package跨ぎ時に作業内容やdirectoryが露出しやすい | monorepoやdirectory構造を維持しつつ、外部からは業務用画面に見せかけ可能 |
| 長時間 workflow | 重要なcontextがstaleになりがち、見られたくない履歴も残りやすい | 必要なタイミングでフェイク画面に切り替え、privacyを守れる |
発動方式
description マッチでの暗黙発動。
Skill の中身を全部見せる
.agent/skills/boss-key-fake-excel/ に配置するファイル一覧です。GitHub に push 済みなので、上記の degit コマンドで一発取得できます。
.agent/skills/boss-key-fake-excel/
├── SKILL.md
├── scripts/
│ └── boss_key_fake_excel.py
└── references/
└── design_notes.md
各ファイルの役割
| ファイル | 役割 |
|---|---|
SKILL.md |
Skill本体。frontmatter (name/description) と指示本文。Antigravity がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します |
scripts/boss_key_fake_excel.py |
boss-key-fake-excel: フェイクExcel画面を即時表示するスクリプト |
references/design_notes.md |
概要 をまとめた参考資料 |
SKILL.md
---
name: boss-key-fake-excel
description: “あっヤバい!”や“上司が来た”などのキーワードやショートカット入力時、Antigravityが即座に“Excel風のフェイク画面”を表示し、作業内容を隠す必要がある場合に発動します。
---
# 機能概要
boss-key-fake-excelは、開発や趣味作業中に“見られたくない画面”を即座に“業務用Excel風”のフェイクウィンドウに切り替えるスキルです。ターミナルやエディタ、ブラウザなどの作業画面を一時的に隠し、あたかも真面目に表計算業務をしているかのように装います。オフィスやリモートワーク中、上司や同僚の視線を気にせずに作業したい時や、開発者同士のジョークにも最適です。
# 使い方
明示的な呼び出しは不要です。“上司が来た”“ヤバい”“boss key”などのキーワードや、設定したショートカット(例: Ctrl+Shift+E)をトリガーに、Antigravityが自動でこのSkillを発動します。フェイク画面はウィンドウとして表示され、元の作業画面へはEscキーや再度ショートカット入力で戻ることができます。
# 出力例
```
[INFO] boss-key-fake-excel: フェイクExcel画面を表示します。
[DEBUG] 元のウィンドウID: 0x3c00007
[INFO] Ctrl+Shift+Eでフェイク画面を解除できます。
[INFO] Excel風ウィンドウを前面に固定しました。
[DEBUG] フェイク画面表示中...
[INFO] Escキー押下で元の画面に復帰します。
```
# 注意点
本Skillはローカル環境でのみ動作し、X11/Wayland等のウィンドウシステムが必要です。フェイク画面は画像生成/描画による“なんちゃってExcel”であり、実際のデータ編集や保存機能はありません。ウィンドウ管理権限が必要な場合があります。
# 参考資料
より詳細な設計や利用例はreferences/design_notes.mdを参照してください。公式APIやウィンドウ制御についてはPySimpleGUI, Pillow, pygetwindow, keyboard等のドキュメントも参考にしてください。
scripts/boss_key_fake_excel.py
import sys
import argparse
import threading
import time
import os
import signal
from PIL import Image, ImageDraw, ImageFont
import PySimpleGUI as sg
try:
import keyboard
except ImportError:
keyboard = None
try:
import pygetwindow as gw
except ImportError:
gw = None
def generate_fake_excel_image(width=900, height=500, rows=18, cols=10):
# Create a white canvas
img = Image.new('RGB', (width, height), 'white')
draw = ImageDraw.Draw(img)
# Draw Excel-like header
header_height = 38
draw.rectangle([0, 0, width, header_height], fill=(217, 225, 242))
try:
font = ImageFont.truetype('arial.ttf', 18)
font_small = ImageFont.truetype('arial.ttf', 13)
except:
font = ImageFont.load_default()
font_small = ImageFont.load_default()
# Draw title
draw.text((20, 8), 'Microsoft Excel - 売上管理表.xlsx', fill=(0, 0, 0), font=font)
# Draw column headers (A, B, C...)
col_w = (width - 50) // cols
for c in range(cols):
x = 50 + c * col_w
draw.rectangle([x, header_height, x + col_w, header_height + 28], fill=(184, 204, 228), outline=(150, 150, 150))
col_name = chr(65 + c)
draw.text((x + col_w // 2 - 5, header_height + 6), col_name, fill=(0, 0, 0), font=font_small)
# Draw row headers (1,2...)
row_h = (height - header_height - 28) // rows
for r in range(rows):
y = header_height + 28 + r * row_h
draw.rectangle([0, y, 50, y + row_h], fill=(184, 204, 228), outline=(150, 150, 150))
draw.text((20, y + row_h // 2 - 7), str(r + 1), fill=(0, 0, 0), font=font_small)
# Draw grid
for r in range(rows):
for c in range(cols):
x = 50 + c * col_w
y = header_height + 28 + r * row_h
draw.rectangle([x, y, x + col_w, y + row_h], outline=(200, 200, 200))
# Fake content
sample_cells = [(0, 0, '日付'), (0, 1, '商品'), (0, 2, '数量'), (0, 3, '単価'), (0, 4, '金額'),
(1, 0, '2024/06/01'), (1, 1, 'ノートPC'), (1, 2, '2'), (1, 3, '120000'), (1, 4, '240000'),
(2, 0, '2024/06/02'), (2, 1, 'マウス'), (2, 2, '5'), (2, 3, '2000'), (2, 4, '10000')]
for r, c, val in sample_cells:
x = 50 + c * col_w + 4
y = header_height + 28 + r * row_h + 4
draw.text((x, y), val, fill=(0, 0, 0), font=font_small)
return img
def show_fake_excel_window():
img = generate_fake_excel_image()
tmpfile = '._bosskey_excel_tmp.png'
img.save(tmpfile)
layout = [
[sg.Image(filename=tmpfile, key='-IMAGE-')],
[sg.Text('Esc または Ctrl+Shift+E で元の画面に戻ります', font=('Arial', 11), pad=((5,5),(5,5)))]
]
window = sg.Window('Microsoft Excel - 売上管理表.xlsx', layout, finalize=True, keep_on_top=True, margins=(0,0), no_titlebar=False, grab_anywhere=True)
# Focus window
window.bring_to_front()
while True:
event, values = window.read(timeout=100)
if event == sg.WIN_CLOSED:
break
if keyboard:
if keyboard.is_pressed('esc') or (keyboard.is_pressed('ctrl') and keyboard.is_pressed('shift') and keyboard.is_pressed('e')):
break
window.close()
if os.path.exists(tmpfile):
os.remove(tmpfile)
def find_and_hide_active_window():
if gw is None:
print('[WARN] pygetwindowが未インストールのためウィンドウ切り替えはスキップされます')
return None
try:
win = gw.getActiveWindow()
if win:
win.minimize()
return win
except Exception as e:
print(f'[ERROR] アクティブウィンドウ取得失敗: {e}')
return None
def restore_window(win):
if win is None:
return
try:
win.restore()
win.activate()
except Exception as e:
print(f'[ERROR] ウィンドウ復帰失敗: {e}')
def boss_key_action():
print('[INFO] boss-key-fake-excel: フェイクExcel画面を表示します。')
win = find_and_hide_active_window()
show_fake_excel_window()
restore_window(win)
print('[INFO] 元の作業画面に復帰しました。')
def shortcut_listener():
if keyboard is None:
print('[WARN] keyboardパッケージが未インストールのためショートカット監視は無効です')
return
print('[INFO] Ctrl+Shift+E でフェイクExcel画面を即時表示します。')
while True:
try:
keyboard.wait('ctrl+shift+e')
boss_key_action()
time.sleep(0.5) # 連打防止
except KeyboardInterrupt:
break
except Exception as e:
print(f'[ERROR] ショートカット監視中に例外: {e}')
break
def main():
parser = argparse.ArgumentParser(description='boss-key-fake-excel: フェイクExcel画面を即時表示するスクリプト')
subparsers = parser.add_subparsers(dest='command')
parser_run = subparsers.add_parser('run', help='ショートカット監視でboss keyを有効化')
parser_show = subparsers.add_parser('show', help='即座にフェイクExcel画面を表示')
args = parser.parse_args()
if args.command == 'run':
shortcut_listener()
elif args.command == 'show':
boss_key_action()
else:
parser.print_help()
if __name__ == '__main__':
main()
references/design_notes.md
# 概要
boss-key-fake-excelは、作業画面を即座に“Excel風”のフェイクウィンドウで覆い隠すことで、緊急時の“ごまかし”や開発者同士の遊び心をサポートします。
# 公式ドキュメント抜粋
- [PySimpleGUI](https://pysimplegui.readthedocs.io/en/latest/): GUIウィンドウ表示
- [Pillow](https://pillow.readthedocs.io/en/stable/): 画像生成
- [pygetwindow](https://github.com/asweigart/pygetwindow): ウィンドウ制御
- [keyboard](https://github.com/boppreh/keyboard): グローバルショートカット監視
# 利用例
リモートワーク中に“Ctrl+Shift+E”を押すと、即座にExcel風ウィンドウが前面表示され、元の作業を隠せます。Escキーや再度ショートカットで元の画面に戻れます。
# 注意点
- 実際のExcel機能はありません。あくまで“見た目”のみです。
- 一部のOSや仮想環境ではウィンドウ制御が制限される場合があります。
- 必要なPythonパッケージのインストールが必要です。
# 設計方針
シンプルな依存関係で、ローカルPC上で即時動作することを重視。画像生成による“なんちゃってExcel”表現にこだわり、ショートカットやウィンドウ復帰もスムーズに設計しています。
導入手順
このSkillは GitHub で管理されているので、degit を使えば必要なフォルダだけを1コマンドで取得できます。Antigravity はファイル配置後に再起動するだけで自動認識します。
1. 前提
- Node.js v16 以上 (
degit実行に必要) - Antigravity がローカルで動いていること
2. degit でフォルダ取得
プロジェクトのルートで以下のコマンドを実行します。
npx degit aazutaku/ai-note/antigravity/boss-key-fake-excel .agent/skills/boss-key-fake-excel
.agent/skills/boss-key-fake-excel の中に SKILL.md / scripts/ / references/ / README.md が展開されます。
3. ファイル配置確認
ls .agent/skills/boss-key-fake-excel
# SKILL.md, scripts/, references/, README.md があればOK
4. Antigravity を再起動 (or Skill 自動検出を待つ)
新しいSkillが自動で認識されます。リスト確認したい場合は Antigravity に「使えるSkill一覧を見せて」と聞く と Skill 名で出てきます。
5. 動作確認
自然言語で発動条件にマッチする指示を出すと Skill が動きます。期待される出力イメージは「実行したらこうなる」セクションを参照してください。
こんな瞬間に便利
- session 開始時: 前回までの repo 把握を Antigravity に一発で復元させたい
- monorepo 移動時: packages を跨いだ瞬間に context を切り替えたい
- onboarding 時: 新しい repo を Antigravity に把握させ、こちらが 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 コードを拾ってしまう可能性
- Antigravity 固有の引っかかり: description のセマンティックマッチ精度が要件次第
- 発動しないケース: description が漠然 / 他の Skill が優先 / git管理外 directory
試す前に確かめたいこと
この Skill を実運用に投入する前に確かめたい問いを並べる:
- 実 repo での token 消費は許容範囲か?
- monorepo (packages 多数) で安定して動くか?
- stale context にならず、長時間 workflow でも有効か?
- プロジェクト指示との連携をどう組み立てるか?
- ショートカット操作で即時にフェイク画面へ切り替わるか?
- 元の作業画面へスムーズに戻れるか?
- フェイク画面が“なんちゃってExcel”に見えるか?
実際に Antigravity で試した検証ログは Antigravityで作業画面を即座にExcel風に切り替えてみた! にまとめる予定 (公開準備中の場合あり)。
あわせて Antigravity 公式ドキュメント と、本シリーズ「Antigravityで試したいSkill研究」の他記事も参照のこと。
関連タグで他のSkill記事を探す
本記事に付いているタグから、気になるテーマの記事を探せます。タグページで関連記事をまとめて読めるので、ぜひチェックしてみてください!
