Antigravity ユーザーが日常でぶつかる悩み
Antigravity でのAIコーディングワークフローは圧倒的に便利ですが、日々の開発現場では思わず「またか」と感じる瞬間が少なくありません。とくに repository understanding や path management、context の扱いに関して、現場ならではのストレスが積み重なりがちです。さらに、真剣な空気が続くと、ちょっとした“遊び”や余白が欲しくなることも。
- Antigravity が context を見失って違う場所のコードを参照する
- monorepo で package を跨いだ瞬間、Antigravity が repo 構造を忘れる
- session を再開すると、前回までの context や path 指定をまるごと再説明しないといけない
- 長時間 workflow で long context が膨らみすぎて、important な情報が薄まる (stale context)
- 「ここはこういう構造のリポジトリ」というあらすじを毎回チャットの冒頭で書く羽目になる
こうした課題に真面目に向き合い続けると、どうしても開発現場の空気が張り詰めがち。時には、ちょっとした“脱力”や笑いでリフレッシュしたいものです。
この Skill が一言でいうと何を解決するか
一言サマリ: このスキルは、Antigravity の日常に「謎のOSブルースクリーン風」ネタ通知をランダムに挿入し、開発現場の緊張感を一瞬でほぐす演出Skill。
もう少し具体化すると、このSkillを入れることで以下のような状態になる:
- AI coding workflow の合間に、遊び心ある通知で集中しすぎた空気をリセットできる
- repository や directory 構造の説明に疲れたタイミングで、思わず笑ってしまう“フェイクブルースクリーン”が登場
- 長時間の session や onboarding の合間に、チームのコミュニケーションが和らぐきっかけになる
- 本物のエラーと誤認されない工夫があり、作業やデータへの悪影響が一切ない
- Antigravity の context や memory の「重さ」を、ちょっとした演出で和らげることができる
GitHub から degit でコマンド1行、Antigravity の Skill ディレクトリに展開できます。Node.js があれば即時に動きます。
npx degit aazutaku/ai-note/antigravity/random-os-fake-bluescreen-notifier .agent/skills/random-os-fake-bluescreen-notifier実行したらこうなる (3つの利用シーン)
使う側がイメージしやすいよう、擬似 terminal で出力例を3パターン示します。
シーン1: session 開始時 (プロジェクト初動で)
# session 初期化時に何気なく指示
> プロジェクトの全体構成を把握したい
[Antigravity Notification]
──────────────────────────
ブルースクリーン風エラー発生!
エラー: コーヒーブレイク不足
STOP CODE: TAKE_A_BREAK_0xC0FFEE
詳細: 5分間の休憩が推奨されます
──────────────────────────
(※これは冗談です。作業は継続可能)
シーン2: monorepo / package 跨ぎ作業時
> packages/user-service と packages/payment-service の依存関係を整理して
[Antigravity Notification]
──────────────────────────
ブルースクリーン風エラー発生!
原因: キーボードに猫が乗りました
STOP CODE: CAT_ON_KEYBOARD
対応: 猫をやさしく移動させてください
──────────────────────────
(※本物のエラーではありません)
シーン3: お遊び的な使い方
> 眠気が限界なので何か刺激をください
[Antigravity Notification]
──────────────────────────
ブルースクリーン風エラー発生!
エラー: 眠気の暴走
STOP CODE: SLEEPINESS_OVERFLOW
ヒント: コーヒーまたは仮眠を推奨します
──────────────────────────
(※開発は安全に続けられます)
before / after の違い
| 場面 | Skill 無し | Skill 有り |
|---|---|---|
| session 再開時 | repo 構造から毎回説明、path も指定し直し | Antigravity が自動で context を復元、最小プロンプトで再開 |
| monorepo 移動 | 違う package のコードを参照しがち | directory boundary を意識して必要な範囲だけ見る |
| 長時間 workflow | long context で重要箇所が薄まる | ちょっとした通知でリフレッシュ、集中力を維持しやすい |
発動方式
description マッチでの暗黙発動。
Skill の中身を全部見せる
.agent/skills/random-os-fake-bluescreen-notifier/ に配置するファイル一覧です。GitHub に push 済みなので、上記の degit コマンドで一発取得できます。
.agent/skills/random-os-fake-bluescreen-notifier/
├── SKILL.md
├── scripts/
│ └── fake_bluescreen_notifier.py
└── references/
└── design_notes.md
各ファイルの役割
| ファイル | 役割 |
|---|---|
SKILL.md |
Skill本体。frontmatter (name/description) と指示本文。Antigravity がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します |
scripts/fake_bluescreen_notifier.py |
ランダムなブルースクリーン風ジョーク通知を表示します。 |
references/design_notes.md |
概要 をまとめた参考資料 |
SKILL.md
---
name: random-os-fake-bluescreen-notifier
description: 作業中の緊張感を和らげたい、またはチームの雰囲気を和ませたいタイミングで、"ブルースクリーン"や"エラー通知"などのキーワードが含まれる会話やリクエスト時に発動します。ユーモラスな擬似エラー通知を表示したい場合に最適です。
---
# 機能概要
このSkillは、デスクトップ上に本物そっくりだが全く害のない“ブルースクリーン風”の通知をランダムなネタメッセージで表示します。例えば「STOP CODE: 眠気の暴走」や「エラー: コーヒーブレイク不足」など、思わずクスッとする内容が毎回変化します。開発現場やリモートワーク中の雰囲気を和ませたり、ちょっとした気分転換を提供します。
# 使い方
このSkillは明示的な呼び出しは不要で、"ブルースクリーン"、"エラー通知"、"OSクラッシュ"、"ジョーク通知"などのキーワードが会話やリクエストに含まれると自動で発動します。例えば「面白いブルースクリーン通知を出して」や「今日は眠気がひどいので警告してほしい」などの文脈で動作します。
# 出力例
```text
[FAKE BLUE SCREEN]
STOP CODE: 眠気の暴走
原因: コーヒーブレイク不足
アクション: 立ち上がってストレッチしてください
[FAKE BLUE SCREEN]
STOP CODE: キーボードに猫が乗りました
原因: 入力デバイスが占拠されています
アクション: 猫をなでてください
```
# 注意点
- 実際のシステムやファイルには一切影響を与えません。
- 通知はデスクトップ上に一時的に表示され、ログや履歴は残しません。
- 本物のブルースクリーンと誤認されないよう、明確に“FAKE”や“ジョーク”である旨を表示します。
- Linux/macOS/Windowsの主要なデスクトップ通知APIに対応していますが、サーバ環境やGUIのない端末では動作しません。
# 参考資料
詳細は references/design_notes.md を参照してください。主要な通知APIの公式ドキュメント([plyer](https://github.com/kivy/plyer)、[win10toast](https://github.com/jithurjacob/Windows-10-Toast-Notifications)、[notify2](https://github.com/caronc/notify2))も参考にしています。
scripts/fake_bluescreen_notifier.py
import sys
import random
import argparse
import platform
import time
try:
from plyer import notification
except ImportError:
notification = None
try:
import notify2
except ImportError:
notify2 = None
try:
from win10toast import ToastNotifier
except ImportError:
ToastNotifier = None
def get_random_message():
stop_codes = [
'眠気の暴走',
'コーヒーブレイク不足',
'キーボードに猫が乗りました',
'コーディング疲労蓄積',
'マウスが迷子',
'ネットワークが現実逃避',
'CPUが昼寝中',
'メモリが夢を見ています',
'OSが考え事を始めました',
'開発者の集中力が消失'
]
causes = [
'コーヒーが切れています',
'猫がキーボードを占拠',
'タスクが多すぎます',
'休憩が必要です',
'ネットワークが不安定',
'マウスが見当たりません',
'CPU温度が上昇中',
'メモリがいっぱいです',
'OSがアップデートを要求',
'開発者が眠そうです'
]
actions = [
'コーヒーを淹れてください',
'猫をなでてください',
'深呼吸してストレッチしましょう',
'一度休憩を取りましょう',
'ネットワークを確認してください',
'マウスを探してください',
'PCを少し休ませましょう',
'メモリを解放してください',
'OSを再起動しないでください',
'目を閉じてリラックスしてください'
]
stop_code = random.choice(stop_codes)
cause = random.choice(causes)
action = random.choice(actions)
title = '[FAKE BLUE SCREEN]'
message = f'STOP CODE: {stop_code}\n原因: {cause}\nアクション: {action}'
return title, message
def send_notification(title, message):
current_os = platform.system()
if current_os == 'Windows' and ToastNotifier:
toaster = ToastNotifier()
toaster.show_toast(title, message, duration=8, threaded=True)
# Wait for notification to finish
time.sleep(8)
elif current_os == 'Darwin' and notification:
notification.notify(title=title, message=message, app_name='FakeBlueScreen', timeout=8)
elif current_os == 'Linux':
if notify2:
notify2.init('FakeBlueScreen')
n = notify2.Notification(title, message)
n.set_timeout(8000)
n.show()
time.sleep(8)
elif notification:
notification.notify(title=title, message=message, app_name='FakeBlueScreen', timeout=8)
else:
print('通知APIが見つかりません (plyer/notify2)')
print(f'{title}\n{message}')
else:
print(f'{title}\n{message}')
def list_examples():
print('--- サンプル通知一覧 ---')
for _ in range(8):
title, msg = get_random_message()
print(f'{title}\n{msg}\n')
def main():
parser = argparse.ArgumentParser(description='ランダムなブルースクリーン風ジョーク通知を表示します。')
subparsers = parser.add_subparsers(dest='command')
parser_show = subparsers.add_parser('show', help='ブルースクリーン風通知を表示')
parser_list = subparsers.add_parser('list', help='ランダム通知例を表示')
parser_summary = subparsers.add_parser('summary', help='Skillの概要を表示')
args = parser.parse_args()
if args.command == 'show' or args.command is None:
title, message = get_random_message()
send_notification(title, message)
elif args.command == 'list':
list_examples()
elif args.command == 'summary':
print('このSkillは、作業中にデスクトップ上へランダムなブルースクリーン風ジョーク通知を表示します。')
print('本物のエラーやシステム障害ではありません。')
else:
parser.print_help()
if __name__ == '__main__':
main()
references/design_notes.md
# 概要
このSkillは、開発現場やリモートワークの合間に、ブルースクリーン風のジョーク通知をデスクトップに表示することで、緊張感を和らげたり、チーム内にユーモアを提供する目的で設計されています。
# 公式ドキュメント抜粋
- plyer: https://github.com/kivy/plyer
- win10toast: https://github.com/jithurjacob/Windows-10-Toast-Notifications
- notify2: https://github.com/caronc/notify2
# 利用例
- 朝会やペアプロ中のアイスブレイク
- 長時間作業後のリフレッシュ促進
- チームチャットで「ブルースクリーン通知」などの話題が出た際の自動発動
# 注意点
- 本Skillはシステムやファイルに一切変更を加えません。
- GUI環境がないサーバやSSH端末では通知が表示されません。
- 本物のエラーや障害と誤認されないよう“FAKE”明記や明るい文調を徹底しています。
# 設計方針
- OSごとに最適な通知APIを選択し、依存ライブラリが未導入時は標準出力にフォールバックします。
- 通知内容は毎回ランダム生成し、ユーモアと安全性を両立しています。
導入手順
このSkillは GitHub で管理されているので、degit を使えば必要なフォルダだけを1コマンドで取得できます。Antigravity はファイル配置後に再起動するだけで自動認識します。
1. 前提
- Node.js v16 以上 (
degit実行に必要) - Antigravity がローカルで動いていること
2. degit でフォルダ取得
プロジェクトのルートで以下のコマンドを実行します。
npx degit aazutaku/ai-note/antigravity/random-os-fake-bluescreen-notifier .agent/skills/random-os-fake-bluescreen-notifier
.agent/skills/random-os-fake-bluescreen-notifier の中に SKILL.md / scripts/ / references/ / README.md が展開されます。
3. ファイル配置確認
ls .agent/skills/random-os-fake-bluescreen-notifier
# 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記事を探す
本記事に付いているタグから、気になるテーマの記事を探せます。タグページで関連記事をまとめて読めるので、ぜひチェックしてみてください!
