Antigravityで謎の陰謀論通知を活用して作業効率を高める方法

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

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

AI coding workflow を Antigravity で回していると、集中と効率を両立するための工夫が欠かせません。一方で、長時間作業や monorepo のような複雑な repository 構造を扱う現場では、思いがけない「気の緩み」や「リズムの崩れ」に悩まされることも。特に通知やOS連携系のSkillが不足していると、単調な作業や context の切り替え時にちょっとした気分転換ができず、逆に workflow の質が落ちることもあります。

Antigravity 固有のあるある悩みを挙げると:

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

こうした悩みの合間に、思わず「一息つきたい」「場を和ませたい」と感じる瞬間も少なくありません。通知・演出・OS連携系Skillの拡充は、Antigravity の日常利用をより楽しく、柔軟にするためのポイントです。

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

一言サマリ: このスキルは、Antigravity の作業中に突如として「謎の陰謀論アラート」をデスクトップ通知で爆誕させるSkill。

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

  • 単調なAI coding workflowや長時間の作業に、唐突なネタ通知で場の空気を和ませ、集中をリフレッシュできる
  • monorepoや複雑な directory 構造を扱う中で、ちょっとした混乱や笑いを演出し、onboarding や session 再開時の緊張をほぐせる
  • Antigravity の通知・演出系Skillのバリエーションが増え、repoやcontext管理だけでなく「遊び心」も組み込める
  • AIエージェントの「無機質さ」を和らげ、開発現場でのコミュニケーションのきっかけを作る
  • SKILL.md ベースで導入・管理できるため、運用やpath managementもシンプル
QUICK INSTALL
このSkillをすぐ試す

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

npx degit aazutaku/ai-note/antigravity/random-desktop-conspiracy-alert .agent/skills/random-desktop-conspiracy-alert

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

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

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


# session開始直後のチャット
> このプロジェクトの全体構造を把握して、src/以下のテストも見てほしい

[Desktop Notification]
「Wi-Fiの波動がコードに干渉しています。今日のバグは通常の3倍発生する可能性があります。」

Antigravity: プロジェクト構造を解析しました。src/配下のtestディレクトリも含めてcontextに追加します。

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


> packages/alphaとpackages/betaの両方を見比べて、共通処理を抽出できますか?

[Desktop Notification]
「本日15時、全てのバグが覚醒します。packages/beta/utils/は宇宙人の監視下にあります。」

Antigravity: packages/alpha, packages/beta両方のdirectoryをcontextに追加し、共通処理をサーチします。

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


> 今日はやる気が出ません。何か面白いことを言って

[Desktop Notification]
「コードレビューは政府の陰謀です。あなたのPRはすでに審査済みかもしれません。」

Antigravity: 気分転換におすすめのSkillやtipsをご案内できます。ご希望があればお知らせください。

before / after の違い

場面 Skill 無し Skill 有り
session 再開時 repo 構造から毎回説明、path も指定し直し Antigravity が自動で context を復元、最小プロンプトで再開。加えて謎の陰謀論通知が流れ、場が和む
monorepo 移動 違う package のコードを参照しがち directory boundary を意識して必要な範囲だけ見る。タイミング次第で陰謀論アラートが届く
長時間 workflow long context で重要箇所が薄まる 唐突な通知で頭をリフレッシュ、集中力の再起動に役立つ

発動方式

description マッチでの暗黙発動。

Skill の中身を全部見せる

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

.agent/skills/random-desktop-conspiracy-alert/
├── SKILL.md
├── scripts/
│   └── random_desktop_conspiracy_alert.py
└── references/
    └── design_notes.md

各ファイルの役割

ファイル 役割
SKILL.md Skill本体。frontmatter (name/description) と指示本文。Antigravity がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します
scripts/random_desktop_conspiracy_alert.py ランダム陰謀論デスクトップアラート
references/design_notes.md 概要 をまとめた参考資料

SKILL.md

---
name: random-desktop-conspiracy-alert
description: 作業中やコード編集時、"通知" "アラート" "集中力" "気分転換" などのキーワードを含む状況で、Antigravityがユーザーのデスクトップに突発的な陰謀論風通知を表示し、場を和ませたいときに発動します。
---

# 機能概要
このSkillは、開発者のデスクトップに突如として意味不明な陰謀論風アラートを表示します。内容は完全ランダムで、現実には全く根拠のない「Wi-Fiの波動が干渉しています」「本日15時、全てのバグが覚醒します」など、ユーモアと混乱をもたらすものです。作業の合間に一瞬の気分転換や笑いを提供し、チームの雰囲気を和らげることが目的です。

# 使い方
このSkillは明示的な呼び出しは不要で、"通知" "アラート" "集中力" "気分転換" などのキーワードや、作業が長時間継続している場合に自動で発動します。semantic-match-onlyトリガーにより、ユーザーの状況に合わせて適宜通知が表示されます。

# 出力例
```
[Desktop Notification]
タイトル: 緊急陰謀論アラート
内容: コードレビューは宇宙人の監視下にあります。

[Desktop Notification]
タイトル: 謎の波動警告
内容: Wi-Fiの波動が干渉しています。至急アルミホイルを準備してください。

[Desktop Notification]
タイトル: バグ覚醒予告
内容: 本日15時、全てのバグが覚醒します。備えよ。
```

# 注意点
- 通知は完全にランダムで、実際の問題や危険性はありません。
- 頻度が過剰にならないよう、1時間に1回程度の制限があります。
- 通知内容はローカルには保存されません。
- OSの通知機能(notify-send等)が必要です。Linux/macOSで動作確認済み。

# 参考資料
- references/design_notes.md を参照
- 公式: https://docs.python.org/3/library/subprocess.html
- OS通知API: https://specifications.freedesktop.org/notification-spec/latest/

scripts/random_desktop_conspiracy_alert.py

import os
import sys
import random
import time
import argparse
import subprocess
from datetime import datetime, timedelta
from pathlib import Path

CONSPIRACY_MESSAGES = [
    ("緊急陰謀論アラート", "コードレビューは宇宙人の監視下にあります。"),
    ("謎の波動警告", "Wi-Fiの波動が干渉しています。至急アルミホイルを準備してください。"),
    ("バグ覚醒予告", "本日15時、全てのバグが覚醒します。備えよ。"),
    ("量子干渉検知", "あなたのマウス操作が量子レベルで観測されています。"),
    ("新世界秩序発動", "このリポジトリは新世界秩序の一部です。"),
    ("監視社会速報", "あなたのコミットは全て記録されています。"),
    ("時空間バグ警報", "このバグは時空を超えて再発します。"),
    ("AI陰謀論", "AIは既に全てを知っています。"),
    ("シンタックス異常検知", "このエラーは陰謀の一端です。"),
    ("秘密結社からの警告", "本日、秘密結社がコードを監査します。")
]

LAST_ALERT_FILE = Path.home() / ".random_conspiracy_last_alert"
ALERT_INTERVAL_MINUTES = 60


def can_show_alert():
    if not LAST_ALERT_FILE.exists():
        return True
    try:
        with open(LAST_ALERT_FILE, 'r') as f:
            last_time_str = f.read().strip()
            last_time = datetime.fromisoformat(last_time_str)
            if datetime.now() - last_time > timedelta(minutes=ALERT_INTERVAL_MINUTES):
                return True
    except Exception:
        return True
    return False


def update_last_alert_time():
    with open(LAST_ALERT_FILE, 'w') as f:
        f.write(datetime.now().isoformat())


def send_notification(title, message):
    if sys.platform.startswith('linux'):
        try:
            subprocess.run([
                'notify-send', '--app-name=ConspiracyAlert', title, message
            ], check=True)
        except Exception as e:
            print(f"[Error] 通知送信に失敗: {e}")
    elif sys.platform == 'darwin':
        try:
            script = f'display notification "{message}" with title "{title}"'
            subprocess.run(['osascript', '-e', script], check=True)
        except Exception as e:
            print(f"[Error] 通知送信に失敗: {e}")
    else:
        print(f"[通知] {title}: {message}")


def select_random_message():
    return random.choice(CONSPIRACY_MESSAGES)


def log_alert(title, message):
    log_file = Path.home() / ".random_conspiracy_alert.log"
    with open(log_file, 'a') as f:
        f.write(f"{datetime.now().isoformat()} | {title} | {message}\n")


def show_alert():
    if not can_show_alert():
        return
    title, message = select_random_message()
    send_notification(title, message)
    log_alert(title, message)
    update_last_alert_time()


def list_alerts():
    log_file = Path.home() / ".random_conspiracy_alert.log"
    if not log_file.exists():
        print("アラート履歴はありません。")
        return
    with open(log_file, 'r') as f:
        for line in f:
            print(line.strip())


def summary_alerts():
    log_file = Path.home() / ".random_conspiracy_alert.log"
    if not log_file.exists():
        print("アラート履歴はありません。")
        return
    counts = {}
    with open(log_file, 'r') as f:
        for line in f:
            parts = line.strip().split('|')
            if len(parts) >= 3:
                title = parts[1].strip()
                counts[title] = counts.get(title, 0) + 1
    print("アラート種別ごとの発生回数:")
    for title, count in counts.items():
        print(f"{title}: {count}回")


def main():
    parser = argparse.ArgumentParser(description='ランダム陰謀論デスクトップアラート')
    subparsers = parser.add_subparsers(dest='command')

    subparsers.add_parser('alert', help='今すぐ陰謀論アラートを表示')
    subparsers.add_parser('list', help='過去のアラート履歴を表示')
    subparsers.add_parser('summary', help='アラート種別ごとに回数を集計')

    args = parser.parse_args()
    if args.command == 'alert' or args.command is None:
        show_alert()
    elif args.command == 'list':
        list_alerts()
    elif args.command == 'summary':
        summary_alerts()
    else:
        parser.print_help()

if __name__ == '__main__':
    main()

references/design_notes.md

# 概要
このSkillは、開発現場での気分転換やチームの雰囲気づくりを目的に、突発的な陰謀論風通知をデスクトップに表示します。内容は完全なジョークであり、実害や実際の警告はありません。

# 公式ドキュメント抜粋
- Python subprocess: https://docs.python.org/3/library/subprocess.html
- Linux notify-send: https://specifications.freedesktop.org/notification-spec/latest/

# 利用例
長時間のコーディングや単調な作業の合間に、意味不明な通知で気分転換を図ることができます。チームで導入すれば、会話のきっかけや笑いを誘発する小ネタとしても活用可能です。

# 注意点
- 通知頻度は1時間に1回に制限されています。
- 通知内容はシステムに保存されませんが、履歴はホームディレクトリにログとして残ります。
- OSの通知機能が必要です。Windowsでは標準対応していません。

# 設計方針
ユーザー体験を損なわないよう、過剰な通知や誤作動を避ける設計とし、通知内容のバリエーションや履歴管理機能も実装しています。

導入手順

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

1. 前提

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

2. degit でフォルダ取得

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

npx degit aazutaku/ai-note/antigravity/random-desktop-conspiracy-alert .agent/skills/random-desktop-conspiracy-alert

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

3. ファイル配置確認

ls .agent/skills/random-desktop-conspiracy-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記事を探す

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

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

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