Antigravityで近未来デスクトップ演出を自動化する方法入門

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

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

Antigravity を日々使う中で、ふとした瞬間に「なんとなく味気ない」「作業が単調で没入感が薄れる」と感じることは少なくありません。AI coding workflow がどれだけ効率化されても、集中力が切れたり、長時間同じ画面を見続けて飽きてしまうことがあります。特に、context 管理や repository understanding に追われる合間、ほんの少し現実逃避したくなる瞬間もあるでしょう。

  • 長時間の session で、Antigravity の通知や出力が淡々としすぎて気分転換が難しい
  • monorepo で directory を跨いだ作業中、repository の構造把握や path management ばかりに意識が向き、遊び心がなくなる
  • onboarding や新しい repo での初期作業時、AI の行動は実務的すぎて「面白み」が感じられない
  • memory や long context の管理に追われ、作業がルーティン化しがち
  • たまには現実を忘れて、電脳都市の住人になったような非日常感を味わいたい

Antigravity の context や path 指定、repo 構造説明などの面倒ごとが続く中、ほんの一瞬でも「未来SFの世界観」に没入できたら…そんな願いを叶える Skill が求められています。

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

一言サマリ: このスキルは、あなたのデスクトップを“謎のサイバーパンクOS通知”で彩り、作業中の現実逃避と没入感アップを実現します。

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

  • Antigravity の AI coding workflow に、SF・サイバーパンク風の演出を自然に組み込める
  • 作業中に突然現れる“ありえない未来OSの警告”で、単調な repository understanding や path management に遊び心が生まれる
  • onboarding や long context の合間にも、電脳都市の住人になった気分を味わえる
  • 通知が現実のタスクと無関係なので、集中を妨げずリフレッシュできる
  • Skill の導入・運用が簡単で、repo や directory 構造を問わずどこでも利用可能
QUICK INSTALL
このSkillをすぐ試す

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

npx degit aazutaku/ai-note/antigravity/random-os-fake-cyberpunk-notifier .agent/skills/random-os-fake-cyberpunk-notifier

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

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

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


> 新規プロジェクトで作業を開始

[NeuroSys OS] ニューロン接続不良を検出
推奨アクション: シンセ脳波再同期プロセスを実行してください

[通知ID: 0xA1C3F]
タイムスタンプ: 2099-04-13T09:42:17Z
影響範囲: /core/neural-interface/

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


> packages/payment に移動してコード修正

[CYBERPUNK OS] クローム義手アップデート推奨
バージョン: v4.2.8 → v5.0.0
アップデート対象: /packages/payment/chrome-arm/

[通知ID: 0xB7E21]
タイムスタンプ: 2099-04-13T10:17:05Z

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


> ちょっと休憩したい時

[シンセティック警告] 仮想都市セキュリティレベル低下
推奨: バーチャルファイアウォール強化モードを有効化

[通知ID: 0xC3D8A]
タイムスタンプ: 2099-04-13T11:02:44Z
影響範囲: /virtual/city/security/

before / after の違い

場面 Skill 無し Skill 有り
session 再開時 repo 構造から毎回説明、path も指定し直し Antigravity が自動で context を復元、最小プロンプトで再開。加えて未来OS通知で気分転換
monorepo 移動 違う package のコードを参照しがち directory boundary を意識した通知演出で、作業の切り替えタイミングが明確に
長時間 workflow long context で重要箇所が薄まる 定期的なSF通知でリフレッシュ、集中力維持に一役

発動方式

description マッチでの暗黙発動。

Skill の中身を全部見せる

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

.agent/skills/random-os-fake-cyberpunk-notifier/
├── SKILL.md
├── scripts/
│   └── cyberpunk_notifier.py
└── references/
    └── design_notes.md

各ファイルの役割

ファイル 役割
SKILL.md Skill本体。frontmatter (name/description) と指示本文。Antigravity がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します
scripts/cyberpunk_notifier.py サイバーパンク風架空OS通知スクリプト
references/design_notes.md 概要 をまとめた参考資料

SKILL.md

---
name: random-os-fake-cyberpunk-notifier
description: 作業中のユーザーに対し、SF・サイバーパンク風の架空OS通知をデスクトップ標準通知領域へランダムに表示します。通知・演出・OS連携・現実逃避などのキーワードが含まれる場面で自動発動します。
---

# 機能概要
このSkillは、あなたのデスクトップに近未来SF世界の架空OS通知をランダムに表示します。通知内容は「ニューロン接続不良」や「シンセ脳波警告」など、現実には存在しないがサイバーパンク世界観に没入できるものばかりです。作業に行き詰まった時や、現実逃避したい時に気分転換として最適です。通知はOSの標準通知APIを用いて表示され、実用性はありませんが、無駄にかっこいい演出を提供します。

# 使い方
このSkillは明示的な呼び出しを必要とせず、「サイバーパンク」「通知」「演出」「現実逃避」などのキーワードや、長時間作業時・集中力低下時に自動発動します。skillの設定で通知頻度や稼働時間帯を調整可能です。

# 出力例
```
[CYBER OS NOTIFIER]
タイトル: ニューロン接続不良を検出
内容: システムは脳内ニューロン接続の不安定化を検出しました。バイオウェア再起動を推奨します。

タイトル: シンセ脳波警告
内容: 異常なシンセ脳波パターンを検出。メンタル・ファイアウォールの強化を推奨。

タイトル: クローム義手アップデート推奨
内容: 最新のクローム義手ドライバが利用可能です。アップデートをお勧めします。
```

# 注意点
本Skillは完全な演出目的であり、通知内容に実用的な意味はありません。通知頻度が高すぎる場合は設定で調整してください。ローカルに通知履歴は保存されません。セキュリティや業務用途には使用しないでください。

# 参考資料
詳細仕様や設計方針は references/design_notes.md を参照してください。Pythonの標準通知API(win10toast, notify2, pync等)を活用しています。

scripts/cyberpunk_notifier.py

import sys
import argparse
import random
import time
import platform
import threading

# OSごとの通知モジュール準備
def get_notifier():
    current_os = platform.system()
    if current_os == 'Windows':
        try:
            from win10toast import ToastNotifier
            return ToastNotifier()
        except ImportError:
            print('win10toast が必要です: pip install win10toast')
            sys.exit(1)
    elif current_os == 'Darwin':
        try:
            import pync
            return pync
        except ImportError:
            print('pync が必要です: pip install pync')
            sys.exit(1)
    elif current_os == 'Linux':
        try:
            import notify2
            notify2.init('Cyberpunk Notifier')
            return notify2
        except ImportError:
            print('notify2 が必要です: pip install notify2')
            sys.exit(1)
    else:
        print('未対応OSです')
        sys.exit(1)

# サイバーパンク風の通知メッセージ生成
def generate_notification():
    titles = [
        'ニューロン接続不良を検出',
        'シンセ脳波警告',
        'クローム義手アップデート推奨',
        'バイオウェア温度異常',
        'データシャード破損警告',
        'サイバーデッキ再起動推奨',
        'ホログラム投影エラー',
        'AIパーソナリティ競合',
        'ナノマシン活動低下',
        'メンタル・ファイアウォール侵害',
        'リフレックスブースター異常',
        '光学迷彩バッテリー低下',
        'クローム義眼キャリブレーション失敗',
        'ネットランナー認証失敗',
        '仮想人格同期エラー'
    ]
    bodies = [
        'システムは脳内ニューロン接続の不安定化を検出しました。バイオウェア再起動を推奨します。',
        '異常なシンセ脳波パターンを検出。メンタル・ファイアウォールの強化を推奨。',
        '最新のクローム義手ドライバが利用可能です。アップデートをお勧めします。',
        'バイオウェアの温度が規定値を超えました。冷却システムの点検を推奨します。',
        'データシャードの一部が破損しています。バックアップを確認してください。',
        'サイバーデッキの応答が遅延しています。再起動を推奨します。',
        'ホログラム投影に失敗しました。プロジェクターモジュールの再設定を推奨。',
        'AIパーソナリティ間で競合が発生しました。優先順位を再設定してください。',
        'ナノマシン活動が低下しています。補充を検討してください。',
        'メンタル・ファイアウォールが外部からの侵害を検出しました。即時対策を推奨。',
        'リフレックスブースターの応答速度が低下しています。診断を実施してください。',
        '光学迷彩バッテリーが残り10%です。充電を推奨します。',
        'クローム義眼のキャリブレーションに失敗しました。再調整が必要です。',
        'ネットランナー認証に失敗しました。アクセス権を確認してください。',
        '仮想人格との同期にエラーが発生しました。再同期を推奨します。'
    ]
    idx = random.randint(0, len(titles) - 1)
    return titles[idx], bodies[idx]

# 通知を表示する関数
def show_notification(notifier, title, body):
    current_os = platform.system()
    if current_os == 'Windows':
        notifier.show_toast(title, body, duration=6, threaded=True)
    elif current_os == 'Darwin':
        notifier.notify(body, title=title)
    elif current_os == 'Linux':
        n = notifier.Notification(title, body)
        n.set_timeout(6000)
        n.show()

# 通知履歴を保持する
notification_history = []

def log_notification(title, body):
    timestamp = time.strftime('%Y-%m-%d %H:%M:%S')
    notification_history.append({'time': timestamp, 'title': title, 'body': body})

# 通知をランダムな間隔で自動発火
def auto_notify_loop(notifier, min_interval, max_interval, count):
    for _ in range(count):
        title, body = generate_notification()
        show_notification(notifier, title, body)
        log_notification(title, body)
        interval = random.uniform(min_interval, max_interval)
        time.sleep(interval)

# 履歴表示
def print_history(limit=None):
    print('--- 通知履歴 ---')
    entries = notification_history[-limit:] if limit else notification_history
    for entry in entries:
        print(f"[{entry['time']}] {entry['title']} : {entry['body']}")

# サマリー表示
def print_summary():
    print(f'通知回数: {len(notification_history)}')
    titles = set([entry['title'] for entry in notification_history])
    print(f'ユニーク通知種別: {len(titles)}')

# CLIエントリポイント
def main():
    parser = argparse.ArgumentParser(description='サイバーパンク風架空OS通知スクリプト')
    subparsers = parser.add_subparsers(dest='command')

    notify_parser = subparsers.add_parser('notify', help='ランダム通知を一定回数発火')
    notify_parser.add_argument('--min-interval', type=float, default=30, help='通知間隔の最小秒数')
    notify_parser.add_argument('--max-interval', type=float, default=120, help='通知間隔の最大秒数')
    notify_parser.add_argument('--count', type=int, default=5, help='通知回数')

    list_parser = subparsers.add_parser('list', help='通知履歴を表示')
    list_parser.add_argument('--limit', type=int, default=None, help='直近N件のみ表示')

    summary_parser = subparsers.add_parser('summary', help='通知サマリーを表示')

    args = parser.parse_args()
    notifier = get_notifier()

    if args.command == 'notify':
        auto_notify_loop(notifier, args.min_interval, args.max_interval, args.count)
    elif args.command == 'list':
        print_history(args.limit)
    elif args.command == 'summary':
        print_summary()
    else:
        parser.print_help()

if __name__ == '__main__':
    main()

references/design_notes.md

# 概要
このSkillは、ユーザーの作業環境にサイバーパンクSF世界の架空OS通知をランダム表示し、現実逃避や気分転換を促すために設計されています。通知内容は実在せず、完全に演出目的です。

# 公式ドキュメント抜粋
通知表示にはOS標準APIを利用します。Windows: win10toast, macOS: pync, Linux: notify2。詳細は各公式ドキュメントを参照してください。
- win10toast: https://github.com/jithurjacob/Windows-10-Toast-Notifications
- pync: https://github.com/setem/pync
- notify2: https://github.com/caronc/notify2

# 利用例
長時間作業や集中力低下時に、現実離れした通知で一時的なリフレッシュや遊び心を提供します。通知履歴やサマリー表示も可能で、演出の記録として活用できます。

# 注意点
通知内容は全て架空であり、実用的な意味や警告はありません。業務用途や重要な通知と混同しないよう注意してください。通知頻度が高すぎる場合はスクリプトの引数で調整してください。

# 設計方針
実在APIのみを使用し、OSごとに最適な通知方法を選択。スクリプトはCLIサブコマンドで柔軟に操作可能とし、Skill本体からも直接呼び出せる設計です。

導入手順

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

1. 前提

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

2. degit でフォルダ取得

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

npx degit aazutaku/ai-note/antigravity/random-os-fake-cyberpunk-notifier .agent/skills/random-os-fake-cyberpunk-notifier

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

3. ファイル配置確認

ls .agent/skills/random-os-fake-cyberpunk-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 を取りたい
  • 気分転換したい時: 未来OS風通知で作業のリズムを変えたい
  • チームの雑談ネタ: サイバーパンク演出でオンボーディングを盛り上げたい

気になるポイント (壊れそうな箇所)

実運用に乗せる前に頭に入れておきたい懸念。後で検証する観点でもある:

  • 通知頻度のバランス: 頻繁すぎると作業の妨げになる可能性
  • 通知内容のバリエーション: メッセージが単調だと飽きやすい
  • OS 標準通知との競合: 他アプリの通知と重なって見逃す場合がある
  • セマンティックマッチ精度: Antigravity の description マッチで想定通り発動するか
  • 実用性ゼロ問題: チームや運用ルールによっては無効化推奨になることも

試す前に確かめたいこと

この Skill を実運用に投入する前に確かめたい問いを並べる:

  • 通知が本当にSF・サイバーパンク風になっているか?
  • 通知頻度やタイミングが迷惑にならないか?
  • OSの標準通知領域にしっかり出るか?
  • プロジェクト指示や他 Skill との発動競合は起きないか?
  • 長時間 workflow でも通知が適度にリフレッシュ効果を発揮するか?

実際に Antigravity で試した検証ログは Antigravityで謎のサイバーパンク通知を出してみた!未来感MAXの演出を体験 にまとめる予定 (公開準備中の場合あり)。
あわせて Antigravity 公式ドキュメント と、本シリーズ「Antigravityで試したいSkill研究」の他記事も参照のこと。

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

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

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

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