Antigravityで楽しむ作業中の謎コマンド通知を活用する方法

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

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

AI coding workflow を Antigravity で回していると、真面目な開発作業の合間にふとした「息抜き」や「遊び心」が欲しくなる瞬間がある。特に、通知やOS連携の演出が単調になりがちな現場では、作業効率と気分転換のバランスが難しい。以下のような「あるある」な悩みに直面しがちだ:

  • Antigravity の context や repository understanding がシリアス一辺倒で、ちょっとした遊びや意外性が足りない
  • monorepo で directory を跨いだ際、path management の切り替えに集中しすぎて、作業が機械的になりがち
  • 長時間のAI coding workflowで、通知やアラートが定型化し、現実逃避したくなる瞬間が訪れる
  • session を再開した時や onboarding のタイミングで、気持ちを切り替えるきっかけが欲しい
  • 「OSが本当に自分の心を読んでいたら…」という妄想を一度は抱いたことがあるが、現実にはそんな演出はなかなか無い

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

一言サマリ: このスキルは、Antigravity の作業空間に突如「謎のOSテレパシーコマンド通知」を出現させ、真面目なAI coding workflowにユーモラスな混乱と現実逃避をもたらすSkill。

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

  • 作業やコマンド実行の合間に、毎回ランダムなフェイクコマンド通知が画面端に現れ、思わず笑ってしまう
  • 「OSが心を読んでいる」という演出で、長時間のrepository作業やmonorepo管理の緊張感を和らげる
  • 通知内容が完全にフェイクなため、実データや重要なcontextには一切影響せず、安全に遊び心を追加できる
  • onboardingやsession再開時の「気分転換」や「話題作り」としても活躍
  • Antigravity の通知・演出機能を拡張し、AIとのやりとりにちょっとしたサプライズ要素を加えられる
QUICK INSTALL
このSkillをすぐ試す

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

npx degit aazutaku/ai-note/antigravity/random-os-fake-telepathic-command-alert .agent/skills/random-os-fake-telepathic-command-alert

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

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

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


> プロジェクトの初期設定を始めたい

[OS Telepathy Alert]
あなたが心の中で考えたコマンドを検出しました:
  'npm install universe'
念波強度: 強
実行しますか?(もちろん冗談です)

[Antigravity] 通常のcontext取得を続行します...

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


> packages/api から packages/frontend に移動したい

[OS Telepathy Alert]
念波検出: 'deploy to mars --force'
対象ディレクトリ: /packages/frontend
このコマンドは現実世界では実行されません。ご安心ください。

[Antigravity] repository understanding を更新中...

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


> ちょっと休憩したい

[OS Telepathy Alert]
あなたの意識から新しいコマンドが流入しました:
  'make coffee --with-latte-art'
OSが本当に読心術を習得したかのような気配を感じます。

[Antigravity] memory snapshot を保存しました。

before / after の違い

場面 Skill 無し Skill 有り
session 再開時 repo 構造から毎回説明、path も指定し直し Antigravity が自動で context を復元、最小プロンプトで再開
monorepo 移動 違う package のコードを参照しがち directory boundary を意識して必要な範囲だけ見る
長時間 workflow long context で重要箇所が薄まる フェイク通知で気分転換、重要な情報への集中力を回復

発動方式

description マッチでの暗黙発動。

Skill の中身を全部見せる

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

.agent/skills/random-os-fake-telepathic-command-alert/
├── SKILL.md
├── scripts/
│   └── telepathic_command_alert.py
└── references/
    └── design_notes.md

各ファイルの役割

ファイル 役割
SKILL.md Skill本体。frontmatter (name/description) と指示本文。Antigravity がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します
scripts/telepathic_command_alert.py Telepathic OS Fake Command Alert
references/design_notes.md 概要 をまとめた参考資料

SKILL.md

---
name: random-os-fake-telepathic-command-alert
description: このSkillは、作業やコマンド実行の合間に「OSがあなたの心の中のコマンドを検出した」とするフェイク通知をランダムで表示します。通知・演出・OS連携のキーワードが含まれる場面や、集中作業中の息抜きとして自動発動します。
---

# 機能概要
このSkillは、日常の作業空間に突如現れる「OSテレパシーコマンド検出通知」を演出します。実際には存在しないコマンドや妄想的な命令(例:「deploy to mars」「make coffee」など)を、まるでOSがユーザーの心を読んだかのようにランダムで通知。現実逃避や笑いを誘い、真面目な作業空間にユーモアと不条理な混乱をもたらします。実行中のコマンドや実データには一切触れず、完全に安全なフェイク通知のみを生成します。

# 使い方
このSkillは明示的な呼び出しを必要とせず、Antigravityが「通知」「演出」「OS連携」などのキーワードや、長時間の作業・コマンド実行の合間を検知した際に自動で発動します。手動での明示呼び出しはサポートされていません。

# 出力例
```
[Telepathic OS Alert]
あなたが心の中で考えたコマンドを検出しました:'brew install unicorn'
---
[Telepathic OS Alert]
念波検出:'sudo teleport /dev/brain mars:'
---
[Telepathic OS Alert]
OSがあなたの妄想コマンドを察知しました:'rm -rf bad_vibes/'
---
[Telepathic OS Alert]
思念コマンド受信:'make coffee --now'
---
[Telepathic OS Alert]
念波検出:'deploy to mars'
```

# 注意点
- このSkillは実際のコマンドやデータには一切アクセスしません。
- 通知内容は毎回完全ランダムで生成され、実行や記録はされません。
- ローカル環境に通知履歴等を保存しません。
- 本Skillはジョーク・演出目的であり、業務用途の通知とは区別してください。

# 参考資料
詳細な設計方針や参考実装例は references/design_notes.md を参照してください。公式Python通知APIについては https://docs.python.org/ja/3/library/subprocess.html および https://pypi.org/project/plyer/ をご覧ください。

scripts/telepathic_command_alert.py

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

try:
    from plyer import notification
    PLYER_AVAILABLE = True
except ImportError:
    PLYER_AVAILABLE = False

FAKE_COMMANDS = [
    "make coffee --now",
    "deploy to mars",
    "brew install unicorn",
    "sudo teleport /dev/brain mars:",
    "rm -rf bad_vibes/",
    "git push origin imagination",
    "chmod +x /dev/dreams",
    "ls /parallel_universe",
    "cat /etc/telepathy.conf",
    "systemctl restart universe",
    "curl https://matrix.os/awakening",
    "python3 -m time_travel",
    "npm install --global enlightenment",
    "docker run -it reality:latest",
    "ssh user@multiverse",
    "echo 'hello from the other side'",
    "scp consciousness.tar.gz mind:/tmp/",
    "sudo apt-get install happiness",
    "export PATH=$PATH:/usr/local/telepathy",
    "killall bad_thoughts"
]

ALERT_PATTERNS = [
    "あなたが心の中で考えたコマンドを検出しました:'{cmd}'",
    "念波検出:'{cmd}'",
    "OSがあなたの妄想コマンドを察知しました:'{cmd}'",
    "思念コマンド受信:'{cmd}'",
    "テレパシーコマンド検出:'{cmd}'",
    "読心術モード発動:'{cmd}'が浮かびました",
    "OSがあなたの脳内コマンドをキャッチ:'{cmd}'"
]

LOG_FILE = os.path.expanduser("~/.telepathic_command_alert.log")


def generate_alert():
    cmd = random.choice(FAKE_COMMANDS)
    pattern = random.choice(ALERT_PATTERNS)
    message = pattern.format(cmd=cmd)
    return message


def show_notification(message):
    if PLYER_AVAILABLE:
        notification.notify(
            title="Telepathic OS Alert",
            message=message,
            app_name="TelepathicCommandAlert",
            timeout=8
        )
    else:
        # Fallback: print to stderr
        print(f"[Telepathic OS Alert] {message}", file=sys.stderr)


def log_alert(message):
    try:
        with open(LOG_FILE, 'a', encoding='utf-8') as f:
            f.write(f"{time.strftime('%Y-%m-%d %H:%M:%S')} {message}\n")
    except Exception as e:
        pass  # Ignore logging errors


def alert_loop(interval_min=600, interval_max=1800, once=False):
    while True:
        message = generate_alert()
        show_notification(message)
        log_alert(message)
        if once:
            break
        sleep_time = random.randint(interval_min, interval_max)
        time.sleep(sleep_time)


def list_alerts(limit=10):
    if not os.path.exists(LOG_FILE):
        print("No alerts logged yet.")
        return
    with open(LOG_FILE, encoding='utf-8') as f:
        lines = f.readlines()
    for line in lines[-limit:]:
        print(line.strip())


def summary_alerts():
    if not os.path.exists(LOG_FILE):
        print("No alerts logged yet.")
        return
    with open(LOG_FILE, encoding='utf-8') as f:
        lines = f.readlines()
    print(f"Total alerts: {len(lines)}")
    if lines:
        print(f"First alert: {lines[0].strip()}")
        print(f"Last alert: {lines[-1].strip()}")


def parse_args():
    parser = argparse.ArgumentParser(description="Telepathic OS Fake Command Alert")
    subparsers = parser.add_subparsers(dest='command', required=True)

    parser_run = subparsers.add_parser('run', help='Start random telepathic alerts (default)')
    parser_run.add_argument('--interval-min', type=int, default=600, help='Minimum interval between alerts (sec)')
    parser_run.add_argument('--interval-max', type=int, default=1800, help='Maximum interval between alerts (sec)')
    parser_run.add_argument('--once', action='store_true', help='Show only one alert and exit')

    parser_list = subparsers.add_parser('list', help='List recent telepathic alerts')
    parser_list.add_argument('--limit', type=int, default=10, help='Number of alerts to show')

    parser_summary = subparsers.add_parser('summary', help='Show summary of telepathic alerts')

    return parser.parse_args()


def main():
    args = parse_args()
    if args.command == 'run':
        alert_loop(interval_min=args.interval_min, interval_max=args.interval_max, once=args.once)
    elif args.command == 'list':
        list_alerts(limit=args.limit)
    elif args.command == 'summary':
        summary_alerts()
    else:
        print("Unknown command.")

if __name__ == '__main__':
    main()

references/design_notes.md

# 概要
このSkillは、OSがユーザーの心を読んだかのような演出を目的としたフェイク通知生成ツールです。実際のコマンドやデータには一切アクセスせず、完全にランダムな妄想コマンドを選出し通知します。

# 公式ドキュメント抜粋
通知APIにはPythonのplyerライブラリ(https://pypi.org/project/plyer/)を利用し、クロスプラットフォームなデスクトップ通知を実現しています。plyerが未導入の場合はstderr出力にフォールバックします。

# 利用例
- 長時間のコーディングやビルド待ち時間の合間に、意図せず現れる妄想コマンド通知で息抜きや笑いを提供
- チーム内でのリモートワーク時、共通のユーモア体験として導入

# 注意点
本Skillは完全なジョーク・演出用途です。実際のコマンド実行やデータ操作は一切行いません。通知内容は毎回ランダム生成され、実行履歴もローカルにのみ保存されます。

導入手順

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

1. 前提

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

2. degit でフォルダ取得

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

npx degit aazutaku/ai-note/antigravity/random-os-fake-telepathic-command-alert .agent/skills/random-os-fake-telepathic-command-alert

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

3. ファイル配置確認

ls .agent/skills/random-os-fake-telepathic-command-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をコピーしました!
目次