Antigravityで作業画面を即席Excel風に差し替える楽しみ方入門

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

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を損なわずに“逃げ”の演出ができる
QUICK INSTALL
このSkillをすぐ試す

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記事を探す

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

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

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