Antigravity ユーザーが日常でぶつかる悩み
Antigravity を日々使っていると、AI coding workflow に真剣に向き合う場面が増えます。しかし、集中している最中にふと気が緩んだり、単調なリポジトリ理解や path management に没頭していると、作業空間が妙に静かで緊張感が途切れてしまうことがあります。通知や演出面が淡白なため、長時間の session ではオンボーディングや context 復元の繰り返しに飽きてしまうことも少なくありません。
- Antigravity が context を見失って違う場所のコードを参照する瞬間、緊張感が切れる
- monorepo で package を跨いだ際、repository understanding の手間に集中力が途切れる
- session を再開するたび、context や path 指定を再説明する単調さが続く
- 長時間 AI coding workflow で long context が肥大し、重要な情報が薄まると気が緩む
- 「ここはこういう構造の repository」と毎回あらすじを書き直す作業が作業空間を無味乾燥にする
通知・演出・OS連携系の演出が乏しいことで、真面目な開発空間に「何か事件が起きる」ような刺激や笑いが生まれにくい点も悩みのひとつです。
この Skill が一言でいうと何を解決するか
一言サマリ: このスキルは、Antigravity の作業空間に突如“謎のボスキー警告”を炸裂させ、緊張感と笑いを呼び込む演出系 Skill。
もう少し具体化すると、このSkillを入れることで以下のような状態になる:
- AI coding workflow の最中に、完全ランダムなタイミングで「上司接近」など理不尽な fake alert が出て、作業空間に緊張とユーモアが生まれる
- repository や directory の理解・onboarding の単調さを、突発的な通知演出でリフレッシュできる
- 長時間 session でも、突然の警告で context や memory の stale 感を打破しやすくなる
- 真面目な repo 管理や path management に、全く役に立たない“事件”が起きて記憶に残る
- Antigravity の通知・演出・OS連携 Skill カテゴリを体感的に楽しめる
GitHub から degit でコマンド1行、Antigravity の Skill ディレクトリに展開できます。Node.js があれば即時に動きます。
npx degit aazutaku/ai-note/antigravity/random-os-fake-boss-key-alert .agent/skills/random-os-fake-boss-key-alert実行したらこうなる (3つの利用シーン)
使う側がイメージしやすいよう、擬似 terminal で出力例を3パターン示す。
シーン1: session 開始時 (プロジェクト初動で)
# Antigravity セッションを新規開始
Welcome to Antigravity. Please specify your repository path.
[警告] OS公式ボスキー警告: 上司接近中!5秒以内に全ウィンドウを隠してください。
理由: センサーが「/src/onboarding/」ディレクトリで異常なアクティビティを検知
ヒント: あなたの作業は本当に安全ですか?
(この警告は自動で閉じられます)
続行するには任意のキーを押してください。
シーン2: monorepo / package 跨ぎ作業時
# ユーザー: packages/api/ から packages/web/ に移動
[OS警告] ボス検知センサーが packages/web/ ディレクトリで反応しました
警告内容: このパッケージは上司が監視中かもしれません。今見ている repository 構造は本当に正しいですか?
推奨アクション: 5秒以内に画面を切り替えるか、深呼吸してください
(警告は自動で消えます)
シーン3: お遊び的な使い方
# ユーザー: 何もしていない idle 状態
[警告] OS公式ボスキー警告: 理由不明のアラート発生
内容: 現在の directory (/playground/random) で「何もしていない」ことが検知されました
ヒント: 今のうちにサボりタスクを隠してください
(この警告は完全にランダムで表示されます)
before / after の違い
| 場面 | Skill 無し | Skill 有り |
|---|---|---|
| session 再開時 | repo 構造から毎回説明、path も指定し直し | Antigravity が自動で context を復元、最小プロンプトで再開 |
| monorepo 移動 | 違う package のコードを参照しがち | directory boundary を意識して必要な範囲だけ見る |
| 長時間 workflow | long context で重要箇所が薄まる | 突然の警告で作業にリズムが生まれ、集中を維持しやすい |
発動方式
description マッチでの暗黙発動。
Skill の中身を全部見せる
.agent/skills/random-os-fake-boss-key-alert/ に配置するファイル一覧です。GitHub に push 済みなので、上記の degit コマンドで一発取得できます。
.agent/skills/random-os-fake-boss-key-alert/
├── SKILL.md
├── scripts/
│ └── random_os_fake_boss_key_alert.py
└── references/
└── design_notes.md
各ファイルの役割
| ファイル | 役割 |
|---|---|
SKILL.md |
Skill本体。frontmatter (name/description) と指示本文。Antigravity がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します |
scripts/random_os_fake_boss_key_alert.py |
Random OS Fake Boss Key Alert – 理不尽な警告をランダム表示 |
references/design_notes.md |
概要 をまとめた参考資料 |
SKILL.md
---
name: random-os-fake-boss-key-alert
description: Antigravityがユーザーの作業中やアイドル時に、"ボスキー"や"警告"などのキーワードを含む状況で、理不尽なランダム警告を自動的に発動します。通知・演出系の用途に最適です。
---
# 機能概要
このSkillは、作業中のPC環境に“謎のOS公式・ボスキー警告”を完全ランダムで表示する演出系スキルです。警告内容は「上司接近!5秒以内にウィンドウを隠してください」「ボス検知センサーが反応:現在の画面は安全ですか?」など理不尽かつ多様で、実際の“ボスキー”機能(ウィンドウを隠す等)は一切実装されていません。真面目な作業空間に突如として緊張感と笑いをもたらす、全く役に立たないが記憶に残る体験を提供します。
# 使い方
このSkillは明示的な呼び出しは不要です。Antigravityが「警告」「ボスキー」「OS通知」などのキーワードや、作業中・アイドル時などの状況を検知した際に自動で発動します。特定のCLIコマンドやAPI呼び出しはありません。
# 出力例
```terminal
[OS ALERT] ボス検知センサーが反応:現在の画面は安全ですか?
[OS WARNING] 上司接近!5秒以内にウィンドウを隠してください
[OS ALERT] 緊急:非公式アプリケーション検出。即時対応を推奨します。
[OS NOTICE] 画面キャプチャ監視中…安全を確認してください。
[OS ALERT] システムが異常な静寂を検出しました。何か隠していますか?
```
# 注意点
- 本Skillは実際のウィンドウ制御やセキュリティ機能は一切提供しません。
- ローカル環境の通知API(例: Windows Toast, macOS通知, Linux notify-send)を利用しますが、環境によっては通知が表示されない場合があります。
- 通知内容は完全にランダム生成され、ユーザーの作業内容や実際の状況とは無関係です。
- ログや履歴ファイルはローカルに保存されません。
# 参考資料
詳細な設計方針や利用例は references/design_notes.md を参照してください。各種OSの通知APIについては公式ドキュメント(Windows: https://docs.microsoft.com/en-us/windows/uwp/design/shell/tiles-and-notifications, macOS: https://developer.apple.com/documentation/usernotifications, Linux: https://specifications.freedesktop.org/notification-spec/latest/)も参考にしてください。
scripts/random_os_fake_boss_key_alert.py
import sys
import os
import random
import time
import platform
import argparse
import threading
import subprocess
from datetime import datetime
# 通知メッセージ候補
NOTIFY_MESSAGES = [
"ボス検知センサーが反応:現在の画面は安全ですか?",
"上司接近!5秒以内にウィンドウを隠してください",
"緊急:非公式アプリケーション検出。即時対応を推奨します。",
"画面キャプチャ監視中…安全を確認してください。",
"システムが異常な静寂を検出しました。何か隠していますか?",
"OS公式警告:作業内容を再確認してください。",
"警告:ボスキーが無効化されています。",
"通知:ウィンドウ切替履歴を送信中…",
"警告:不審なマウス操作を検出しました。",
"注意:上司の気配が近づいています。",
"OS ALERT: Suspicious inactivity detected. Resume work immediately.",
"OS WARNING: Unauthorized application in foreground.",
"NOTICE: Boss proximity sensor triggered. Stay alert.",
"ALERT: Unexpected window switch detected.",
"WARNING: System detected possible distraction."
]
# OSごとの通知送信
class Notifier:
def __init__(self):
self.system = platform.system()
if self.system == "Windows":
try:
from win10toast import ToastNotifier
self.toaster = ToastNotifier()
except ImportError:
self.toaster = None
elif self.system == "Darwin":
pass # macOSはosascript利用
elif self.system == "Linux":
pass # Linuxはnotify-send利用
def send(self, title, message):
if self.system == "Windows" and self.toaster:
try:
self.toaster.show_toast(title, message, duration=6, threaded=True)
except Exception as e:
print(f"[WARN] 通知失敗: {e}")
elif self.system == "Darwin":
script = f'display notification "{message}" with title "{title}"'
try:
subprocess.run(["osascript", "-e", script], check=True)
except Exception as e:
print(f"[WARN] 通知失敗: {e}")
elif self.system == "Linux":
try:
subprocess.run(["notify-send", title, message], check=True)
except Exception as e:
print(f"[WARN] 通知失敗: {e}")
else:
print(f"[OS ALERT] {message}")
# ランダムなインターバルで通知を送信
class BossKeyAlertRunner:
def __init__(self, min_interval=60, max_interval=600, verbose=False):
self.notifier = Notifier()
self.min_interval = min_interval
self.max_interval = max_interval
self.verbose = verbose
self.running = False
self.log = []
def random_message(self):
return random.choice(NOTIFY_MESSAGES)
def random_interval(self):
return random.randint(self.min_interval, self.max_interval)
def send_alert(self):
msg = self.random_message()
title = random.choice(["OS ALERT", "OS WARNING", "OS NOTICE", "ALERT", "WARNING"])
self.notifier.send(title, msg)
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
self.log.append({"time": timestamp, "title": title, "message": msg})
if self.verbose:
print(f"[{timestamp}] {title}: {msg}")
def run(self, count=None):
self.running = True
n = 0
while self.running:
self.send_alert()
n += 1
if count and n >= count:
break
interval = self.random_interval()
if self.verbose:
print(f"[INFO] 次の通知まで {interval} 秒待機")
for _ in range(interval):
if not self.running:
break
time.sleep(1)
def stop(self):
self.running = False
def print_log(self):
for entry in self.log:
print(f"[{entry['time']}] {entry['title']}: {entry['message']}")
# CLIパーサ
def main():
parser = argparse.ArgumentParser(description="Random OS Fake Boss Key Alert - 理不尽な警告をランダム表示")
parser.add_argument("run", nargs="?", help="警告通知をランダムに表示")
parser.add_argument("--min-interval", type=int, default=60, help="通知の最小間隔(秒)")
parser.add_argument("--max-interval", type=int, default=600, help="通知の最大間隔(秒)")
parser.add_argument("--count", type=int, default=None, help="通知回数(指定しない場合は無限ループ)")
parser.add_argument("--verbose", action="store_true", help="詳細出力")
parser.add_argument("log", action="store_true", help="実行中の通知履歴を表示")
args = parser.parse_args()
if args.log:
print("[INFO] ログ表示機能は実行中のみ利用可能です。")
sys.exit(0)
runner = BossKeyAlertRunner(min_interval=args.min_interval, max_interval=args.max_interval, verbose=args.verbose)
try:
runner.run(count=args.count)
except KeyboardInterrupt:
print("\n[INFO] 停止要求を受け付けました。ログを表示します。")
runner.print_log()
if __name__ == "__main__":
main()
references/design_notes.md
# 概要
このSkillは、ユーザーの作業状況や文脈に関係なく、完全ランダムなタイミングで“OS公式警告”風の通知を表示することで、作業空間に緊張感や笑いをもたらす演出を目的としています。実用性は一切追求せず、理不尽な警告体験を重視しています。
# 公式ドキュメント抜粋
- Windows通知: https://docs.microsoft.com/en-us/windows/uwp/design/shell/tiles-and-notifications
- macOS通知: https://developer.apple.com/documentation/usernotifications
- Linux通知: https://specifications.freedesktop.org/notification-spec/latest/
# 利用例
- オフィスやリモートワーク中の“ネタ”として活用
- チームビルディングやイベントでのアイスブレイクに
- 真面目な作業空間に意図的な緊張感を演出
# 注意点
- 実際のウィンドウ制御やセキュリティ対策機能はありません
- 通知APIの利用には各OSの標準コマンドやPythonパッケージ(例: win10toast)が必要
- 通知が表示されない場合は環境依存のため、端末やOSの仕様を確認してください
# 設計方針
- 発動タイミングや内容は完全ランダム
- ログや履歴は一時的にメモリ保持のみ
- ユーザーの作業内容や実際の上司の接近とは無関係
導入手順
このSkillは GitHub で管理されているので、degit を使えば必要なフォルダだけを1コマンドで取得できます。Antigravity はファイル配置後に再起動するだけで自動認識します。
1. 前提
- Node.js v16 以上 (
degit実行に必要) - Antigravity がローカルで動いていること
2. degit でフォルダ取得
プロジェクトのルートで以下のコマンドを実行します。
npx degit aazutaku/ai-note/antigravity/random-os-fake-boss-key-alert .agent/skills/random-os-fake-boss-key-alert
.agent/skills/random-os-fake-boss-key-alert の中に SKILL.md / scripts/ / references/ / README.md が展開されます。
3. ファイル配置確認
ls .agent/skills/random-os-fake-boss-key-alert
# 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 でも有効か?
- プロジェクト指示との連携をどう組み立てるか?
- 通知がランダムタイミングで出ること、通知文が理不尽かつ多様であること、環境や作業内容に関係なく発動することを満たしているか?
実際に Antigravity で試した検証ログは Antigravityで謎のボスキー警告を突然出してみた! にまとめる予定 (公開準備中の場合あり)。
あわせて Antigravity 公式ドキュメント と、本シリーズ「Antigravityで試したいSkill研究」の他記事も参照のこと。
関連タグで他のSkill記事を探す
本記事に付いているタグから、気になるテーマの記事を探せます。タグページで関連記事をまとめて読めるので、ぜひチェックしてみてください!
