Antigravityで楽しむ!電源オフ通知のユニークな演出活用法

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

Antigravity ユーザーが日常でぶつかる悩み

Antigravity を使った AI coding workflow に没頭していると、ふとした瞬間に緊張や集中がピークに達し、思わず肩に力が入りすぎてしまうことがあります。context 管理や repository understanding など真面目なタスクに追われていると、気づけば作業環境が無機質になりがちです。とくに monorepo のような巨大な repo で複雑な directory 構造を扱っていると、path management や memory の最適化に神経を使い続けることも珍しくありません。

  • Antigravity が context を見失って違う場所のコードを参照する
  • monorepo で package を跨いだ瞬間、Antigravity が repo 構造を忘れる
  • session を再開すると、前回までの context や path 指定をまるごと再説明しないといけない
  • 長時間 workflow で long context が膨らみすぎて、important な情報が薄まる (stale context)
  • 「ここはこういう構造のリポジトリ」というあらすじを毎回チャットの冒頭で書く羽目になる

こうした課題に向き合い続ける日々の中で、ふと「緊張感を一撃でぶち壊すような、遊び心のある演出が欲しい」と感じたことはないでしょうか。

この Skill が一言でいうと何を解決するか

一言サマリ: このスキルは、作業中に突如現れる壮大かつ意味不明な“OS電源オフ予告通知”で、Antigravity の日常 workflow に意図的なカオスと笑いを注入します。

もう少し具体化すると、このSkillを入れることで以下のような状態になる:

  • 長時間の集中作業や context 最適化に偏りがちな AI coding workflow に、突発的な“劇的通知”で場の空気を和ませられる
  • monorepo や巨大 repository での path management に疲れた瞬間、意味不明な電源オフアラートで緊張をリセットできる
  • 実際のシャットダウンや電源操作は一切行われず、どの OS 環境でもデスクトップ通知だけが安全に楽しめる
  • 通知内容は毎回ランダム生成で、毎度新鮮な笑いとカオスを体験できる
  • onboarding や session 再開時など、Antigravity の memory や repository understanding が重たくなるタイミングで、遊び心をプラスできる
QUICK INSTALL
このSkillをすぐ試す

GitHub から degit でコマンド1行、Antigravity の Skill ディレクトリに展開できます。Node.js があれば即時に動きます。

npx degit aazutaku/ai-note/antigravity/random-os-dramatic-poweroff-alert .agent/skills/random-os-dramatic-poweroff-alert

実行したらこうなる (3つの利用シーン)

使う側がイメージしやすいよう、擬似 terminal で出力例を3パターン示します。

シーン1: session 開始時 (プロジェクト初動で)


> 新しいリポジトリで作業を始める

[Antigravity Notification]
システム警告: あと3分で全プロセスが宇宙エネルギー調整のため壮絶に終了します。
理由: /src/context_manager.py がメタ次元に吸い込まれました。
全ユーザーは壮大な別れの準備をしてください。

(※実際のシャットダウンは行われません)

シーン2: monorepo / package 跨ぎ作業時


> packages/core/ から packages/utils/ へ移動

[Antigravity Notification]
重要: オペレーティングシステムは全 directory を3分後に消滅させます。
理由: monorepo の境界線が時空を超えたため。
/packages/core/ も /packages/utils/ も、今生の別れとなります。

(※通知のみ、作業ファイルは無傷です)

シーン3: お遊び的な使い方


> ちょっと息抜きしたい

[Antigravity Notification]
警告: システムは“壮大なシャットダウン”を開始します。
理由: あなたの集中力が限界突破したため。
全プロセスよ、さらば…また逢う日まで。

(※全て冗談です、ご安心ください)

before / after の違い

場面 Skill 無し Skill 有り
session 再開時 repo 構造から毎回説明、path も指定し直し Antigravity が自動で context を復元、最小プロンプトで再開
monorepo 移動 違う package のコードを参照しがち directory boundary を意識して必要な範囲だけ見る
長時間 workflow long context で重要箇所が薄まる 突発通知で一度リフレッシュ、集中力の再起動ができる

発動方式

description マッチでの暗黙発動。

Skill の中身を全部見せる

.agent/skills/random-os-dramatic-poweroff-alert/ に配置するファイル一覧です。GitHub に push 済みなので、上記の degit コマンドで一発取得できます。

.agent/skills/random-os-dramatic-poweroff-alert/
├── SKILL.md
├── scripts/
│   └── dramatic_poweroff_alert.py
└── references/
    └── reference.md

各ファイルの役割

ファイル 役割
SKILL.md Skill本体。frontmatter (name/description) と指示本文。Antigravity がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します
scripts/dramatic_poweroff_alert.py Dramatic Poweroff Alert – OS電源オフの壮大な予告を通知で爆誕させる
references/reference.md 概要 をまとめた参考資料

SKILL.md

---
name: random-os-dramatic-poweroff-alert
description: 作業やコーディング中に“シャットダウン予告”や“電源オフ警告”などのキーワードが含まれるコンテキストを検知した際、AntigravityがこのSkillを発動し、壮大かつカオスな電源オフ通知をデスクトップに表示します。
---

# 機能概要
このSkillは、あなたが作業やコーディングに集中している最中、突如として“OSによる壮大な電源オフ予告”をデスクトップ通知として表示します。通知内容は毎回ランダムで、「システムはあと3分で壮絶にシャットダウンします(理由:宇宙エネルギー調整のため)」や「全プロセスよ、さらば…」など、完全に意味不明かつ無責任なメッセージばかり。実際にはシャットダウン等の危険な操作は一切行われず、現実には何も起きません。仕事や勉強の緊張感を一撃で吹き飛ばす、遊び心満載の演出を提供します。

# 使い方
このSkillは明示的な呼び出しは不要で、Antigravityが「シャットダウン」「電源オフ」「終了予告」などのキーワードを含む状況や、長時間作業が続いている場合などに自動で発動します。手動でテストしたい場合は、スクリプトを直接実行することも可能です。

# 出力例
```terminal
[通知] システムはあと3分で壮絶にシャットダウンします(理由:宇宙エネルギー調整のため)
[通知] 全プロセスよ、さらば…
[通知] OSカーネル、最後の咆哮をあげよ!
[通知] 電源オフまで残り42秒。運命に抗うな。
[通知] 本日はこれにて全ての稼働を終了します(理由:量子トンネルのメンテナンス)
```

# 注意点
- 実際のシャットダウンや電源オフは一切行われません。
- 通知は各OSのデスクトップ通知APIを利用して表示されます。
- ログや履歴はローカルには保存されません。
- 通知内容は毎回ランダム生成され、繰り返し同じ内容が表示されることはほぼありません。

# 参考資料
本SkillはPythonの`plyer`や`win10toast`等、クロスプラットフォームなデスクトップ通知ライブラリを活用しています。詳細は`references/`ディレクトリや[plyer公式ドキュメント](https://plyer.readthedocs.io/en/latest/)を参照してください。

scripts/dramatic_poweroff_alert.py

import random
import sys
import time
import argparse
import platform
from threading import Thread

try:
    from plyer import notification
except ImportError:
    notification = None
    
try:
    from win10toast import ToastNotifier
except ImportError:
    ToastNotifier = None

def get_os():
    os_name = platform.system().lower()
    if 'windows' in os_name:
        return 'windows'
    elif 'darwin' in os_name:
        return 'macos'
    elif 'linux' in os_name:
        return 'linux'
    else:
        return 'unknown'

DRAMATIC_MESSAGES = [
    "システムはあと3分で壮絶にシャットダウンします(理由:宇宙エネルギー調整のため)",
    "全プロセスよ、さらば…",
    "OSカーネル、最後の咆哮をあげよ!",
    "電源オフまで残り42秒。運命に抗うな。",
    "本日はこれにて全ての稼働を終了します(理由:量子トンネルのメンテナンス)",
    "管理者の気まぐれにより、全てのプロセスは消滅します。",
    "シャットダウン・オブ・ザ・ギャラクシー、発動準備完了。",
    "このOSは今宵、伝説となる。",
    "プロセスよ、永遠の眠りにつけ。",
    "全ユーザーに告ぐ:あと120秒でこの世界は終焉を迎えます。",
    "メモリ解放の儀式を開始します。",
    "CPUの魂よ、昇華せよ。",
    "システムは自己崩壊プロトコルを実行します。",
    "電源ボタンが勝手に押されます。",
    "全てのファイルが記憶の彼方へ旅立ちます。",
    "OSの寿命が尽きました。",
    "カオスな電源オフ、今ここに。",
    "仮想世界の終末時計が0を指しました。",
    "全プロセス、最後のログを残せ。",
    "この通知を見たあなたはラッキーです。"
]


def send_notification(title, message):
    os_type = get_os()
    if os_type == 'windows' and ToastNotifier is not None:
        try:
            toaster = ToastNotifier()
            toaster.show_toast(title, message, duration=7, threaded=True)
            return True
        except Exception as e:
            pass
    if notification is not None:
        try:
            notification.notify(title=title, message=message, app_name="Dramatic Poweroff Alert", timeout=7)
            return True
        except Exception as e:
            pass
    # Fallback: print to console
    print(f"[通知] {message}")
    return False

def random_message():
    return random.choice(DRAMATIC_MESSAGES)

def alert_once():
    title = "壮大な電源オフ予告"
    message = random_message()
    send_notification(title, message)

def alert_loop(count=5, interval=60):
    title = "壮大な電源オフ予告"
    used = set()
    for _ in range(count):
        msg = random_message()
        # なるべく重複を避ける
        while msg in used and len(used) < len(DRAMATIC_MESSAGES):
            msg = random_message()
        used.add(msg)
        send_notification(title, msg)
        time.sleep(interval)

def list_messages():
    print("=== Dramatic Poweroff Alert: メッセージ一覧 ===")
    for i, msg in enumerate(DRAMATIC_MESSAGES, 1):
        print(f"{i}. {msg}")

def summary():
    print("Dramatic Poweroff Alert Skill")
    print("- ランダムな壮大な電源オフ予告をデスクトップ通知で表示")
    print(f"- メッセージ数: {len(DRAMATIC_MESSAGES)}")
    print("- OS対応: Windows, macOS, Linux (plyer/win10toast使用)")
    print("- 実際のシャットダウン等は一切行いません")

def parse_args():
    parser = argparse.ArgumentParser(description='Dramatic Poweroff Alert - OS電源オフの壮大な予告を通知で爆誕させる')
    subparsers = parser.add_subparsers(dest='command')

    parser_once = subparsers.add_parser('once', help='1回だけ通知を表示')
    parser_loop = subparsers.add_parser('loop', help='複数回通知を表示')
    parser_loop.add_argument('--count', type=int, default=5, help='通知回数')
    parser_loop.add_argument('--interval', type=int, default=60, help='通知間隔(秒)')
    subparsers.add_parser('list', help='メッセージ一覧表示')
    subparsers.add_parser('summary', help='Skill概要')

    return parser.parse_args()


def main():
    args = parse_args()
    if args.command == 'once' or args.command is None:
        alert_once()
    elif args.command == 'loop':
        alert_loop(count=args.count, interval=args.interval)
    elif args.command == 'list':
        list_messages()
    elif args.command == 'summary':
        summary()
    else:
        print("不明なコマンドです。--help を参照してください。")

if __name__ == '__main__':
    main()

references/reference.md

# 概要
このSkillは、クロスプラットフォームなデスクトップ通知API(主にPythonのplyer, win10toast)を活用し、実際のシャットダウン操作を一切伴わずに“壮大な電源オフ予告”を演出します。通知内容は毎回ランダム生成され、OSごとに適切な通知方式を選択します。

# 公式ドキュメント抜粋
- plyer: https://plyer.readthedocs.io/en/latest/
- win10toast: https://github.com/jithurjacob/Windows-10-Toast-Notifications

# 利用例
作業中に突如「OSカーネル、最後の咆哮をあげよ!」等の通知が表示され、緊張感が一気に和らぎます。明示的にCLIから `python dramatic_poweroff_alert.py loop --count 3` のように実行することも可能です。

# 注意点
通知はローカル環境でのみ表示され、実際のシステム操作は行いません。plyer/win10toastのインストールが必要です。

# 設計方針
安全性を最優先し、OSやユーザーデータに一切影響を与えない設計としています。通知内容の多様性・ユーモア性を重視し、繰り返し利用しても飽きない工夫を施しています。

導入手順

このSkillは GitHub で管理されているので、degit を使えば必要なフォルダだけを1コマンドで取得できます。Antigravity はファイル配置後に再起動するだけで自動認識します。

1. 前提

  • Node.js v16 以上 (degit 実行に必要)
  • Antigravity がローカルで動いていること

2. degit でフォルダ取得

プロジェクトのルートで以下のコマンドを実行します。

npx degit aazutaku/ai-note/antigravity/random-os-dramatic-poweroff-alert .agent/skills/random-os-dramatic-poweroff-alert

.agent/skills/random-os-dramatic-poweroff-alert の中に SKILL.md / scripts/ / references/ / README.md が展開されます。

3. ファイル配置確認

ls .agent/skills/random-os-dramatic-poweroff-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 でも有効か?
  • プロジェクト指示との連携をどう組み立てるか?
  • 通知内容が毎回ランダムかつ強烈にふざけているか?
  • どのOS環境でも安全に通知だけが表示されるか?
  • 実際に電源オフやシャットダウンが絶対に発生しないか?

実際に Antigravity で試した検証ログは Antigravityで突然の壮大な電源オフ通知を体験してみた! にまとめる予定 (公開準備中の場合あり)。
あわせて Antigravity 公式ドキュメント と、本シリーズ「Antigravityで試したいSkill研究」の他記事も参照のこと。

関連タグで他のSkill記事を探す

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

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

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