Antigravityで楽しむ!作業中に癒しと驚きを与える演出の活用法

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

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

Antigravity を日々使っていると、AIによる repository understanding や context の管理が便利な一方、作業が単調になりがちだったり、思わぬタイミングで集中力が切れてしまうことがあります。特に長時間のAI coding workflowや複雑なmonorepo作業をしていると、ふとした瞬間に気分転換や「何か変なことが起きてほしい」気持ちになることもあるでしょう。

  • 長時間の session で context やディレクトリを何度も切り替えていると、作業がマンネリ化しやすい
  • Antigravity の通知や演出が淡泊で、集中しすぎて逆に疲れてしまう
  • monorepo の package 跨ぎや path management に追われ、気分転換のタイミングを見失う
  • onboarding や repository 理解の途中で、単調な説明や同じ作業の繰り返しに飽きてしまう
  • AI coding workflow に没頭しすぎて、小さな「遊び」や息抜きが不足しがち

こうした悩みは、Antigravity の強力な context 管理や repository understanding の裏返しでもあります。通知・演出・OS連携系のSkillで、あえて「無意味な非日常」を注入したいと感じる瞬間は意外と多いものです。

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

一言サマリ: このスキルは、Antigravity のAI coding workflowに“謎のデスクトップペット乱入”という強制的な非日常体験を注入し、作業の単調さや集中しすぎによる疲労を一瞬だけリセットします。

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

  • AI coding workflow中に、毎回違う「OS公式ペット」が突然現れ、contextやrepo作業に遊び心をプラスできる
  • monorepoやdirectory移動時など、集中が切れやすいタイミングで“無意味な通知”が癒しや笑いを生む
  • path managementやrepository understandingの合間に、気分転換が自動で発生し、長時間作業のストレスを軽減
  • onboardingやsession再開時の「説明疲れ」を、ちょっとした演出で和らげる
  • Skillの発動は完全自動なので、意識せずに「なんで今!?」な体験を楽しめる
QUICK INSTALL
このSkillをすぐ試す

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

npx degit aazutaku/ai-note/antigravity/random-os-fake-desktop-pet-pop .agent/skills/random-os-fake-desktop-pet-pop

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

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

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


# プロジェクトの初期化を依頼
> 新しい repo で作業開始したい。まずは全体構造を把握して。

[🐧 OS公式ペンギンが現れた!]
「こんにちは。私はあなたのOSに住むペンギンです。特技はファイルの上を滑ることだけです。
今から /src ディレクトリを滑ってきますね。」

(ペンギンは進捗バーを横切って消えた)
Antigravity: repository structure を解析中...

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


> packages/utils のコードを main-app から参照したい。依存関係を教えて。

[🐶 バグを拾う犬が乱入!]
「ワン!バグを拾いにきました。/packages/utils でバグ見つけたら教えてね。
...あれ、今は何も落ちてないみたい。じゃあ帰りますワン。」

(犬が通知ウィンドウを横切って消えた)
Antigravity: packages/utils → main-app の依存関係を解析中...

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


> 気分転換したい。何か面白いこと起きない?

[😼 やる気を吸い取る猫が画面端に出現]
「ふーん、またコード書いてるの?やる気、ちょっともらってくね。にゃ。」

(猫がターミナルの下端を横切って消えた)
Antigravity: さて、作業を再開しましょう。

before / after の違い

場面 Skill 無し Skill 有り
session 再開時 repo 構造から毎回説明、path も指定し直し Antigravity が自動で context を復元、最小プロンプトで再開+ペット乱入で気分転換
monorepo 移動 違う package のコードを参照しがち directory boundary を意識して必要な範囲だけ見る+ペットの通知で一息
長時間 workflow long context で重要箇所が薄まる たまにペットが現れ、集中しすぎをリセット

発動方式

description マッチでの暗黙発動。

Skill の中身を全部見せる

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

.agent/skills/random-os-fake-desktop-pet-pop/
├── SKILL.md
├── scripts/
│   └── random_os_fake_desktop_pet.py
└── references/
    └── reference.md

各ファイルの役割

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

SKILL.md

---
name: random-os-fake-desktop-pet-pop
description: 作業中や長時間のコーディング時、「デスクトップペット」「ペンギン」「通知」「進捗バー」などのキーワードや、進行状況に関する文脈を検知した際に発動し、ユーザーの集中を一瞬だけ崩す演出を行います。
---

# 機能概要
このSkillは、普段の作業やコーディング中に突然“謎のOS公式デスクトップペット”が現れて、意味不明な自己紹介や行動を行うエンタメ型スキルです。ペットは毎回ランダムに選ばれ、「OS公式ペンギン」「バグを拾う犬」「やる気を吸い取る猫」などユニークなキャラクターが、ターミナルや通知領域に現れては消えます。進捗バーを横切ったり、無意味なメッセージを残すなど、実害は一切ありませんが、作業の流れに一瞬の非日常を注入します。癒しや気分転換、作業妨害を目的とした遊び心満載のSkillです。

# 使い方
このSkillは明示的な呼び出しは不要で、Antigravityエージェントが「デスクトップペット」「進捗」「通知」「集中力」「癒し」などのキーワードや、長時間の作業・コーディング文脈を検知した際に自動発動します。手動起動はサポートされていません。

# 出力例
```
[OS公式ペンギン] こんにちは。私はあなたの進捗バーを横切るためだけに生まれました。
[バグを拾う犬] ワン!バグを一個拾いましたが、どこかに埋めておきますね。
[やる気を吸い取る猫] 今あなたのやる気を30%ほど吸い取りました。にゃーん。
[公式リス] あなたの通知ウィンドウを一瞬だけ占拠します。チーズはありませんか?
[謎のカメ] 進捗が遅いのは私のせいかもしれません。
```

# 注意点
- ペットの出現頻度は自動で制御され、作業を物理的に妨害しすぎないよう設計されています。
- ローカルファイルや設定の変更は一切行いません。
- 出力は一時的なメッセージのみで、履歴や記録は残りません。
- 明示的な呼び出しや手動トリガーは非対応です。

# 参考資料
詳細な設計方針やペットキャラクター例は references/ 以下を参照してください。また、通知やターミナル演出には Python の標準APIおよび外部通知ライブラリ(notify2, plyer など)を利用しています。

scripts/random_os_fake_desktop_pet.py

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

try:
    import notify2
except ImportError:
    notify2 = None
try:
    from plyer import notification
except ImportError:
    notification = None

PET_CHARACTERS = [
    {
        'name': 'OS公式ペンギン',
        'messages': [
            'こんにちは。私はあなたの進捗バーを横切るためだけに生まれました。',
            '今からあなたの集中力を監視します。',
            'ペンギンはバグを食べません。',
        ]
    },
    {
        'name': 'バグを拾う犬',
        'messages': [
            'ワン!バグを一個拾いましたが、どこかに埋めておきますね。',
            'バグの匂いがします。',
            'あなたのコードに骨を隠しておきました。',
        ]
    },
    {
        'name': 'やる気を吸い取る猫',
        'messages': [
            '今あなたのやる気を30%ほど吸い取りました。にゃーん。',
            '眠いので作業を中断してください。',
            'キーボードの上で寝てもいいですか?',
        ]
    },
    {
        'name': '公式リス',
        'messages': [
            'あなたの通知ウィンドウを一瞬だけ占拠します。チーズはありませんか?',
            '進捗バーにどんぐりを隠しました。',
            'リス的にはバグはおやつです。',
        ]
    },
    {
        'name': '謎のカメ',
        'messages': [
            '進捗が遅いのは私のせいかもしれません。',
            'カメのペースで作業しましょう。',
            '通知が遅れても気にしないでください。',
        ]
    },
    {
        'name': 'バグを投げるカラス',
        'messages': [
            'バグを一つ投げ入れました。気づかないふりをしてください。',
            'カーカー。進捗を見守っています。',
            'コードレビューの上空を旋回中です。',
        ]
    },
]

PET_ACTIONS = [
    '進捗バーを横切る',
    '通知ウィンドウを占拠する',
    'ターミナルに現れる',
    'メッセージを残す',
    '一瞬だけ消える',
]

FREQUENCY_SEC = 60 * 15  # 最低15分に1回程度


def show_notification(title, message):
    system = platform.system()
    if notify2 and system == 'Linux':
        try:
            notify2.init('Random OS Fake Desktop Pet')
            n = notify2.Notification(title, message)
            n.show()
        except Exception:
            pass
    elif notification and system in ('Windows', 'Darwin'):
        try:
            notification.notify(title=title, message=message, timeout=5)
        except Exception:
            pass
    else:
        # Fallback: print to stdout
        print(f'[{title}] {message}')


def random_pet_event():
    pet = random.choice(PET_CHARACTERS)
    message = random.choice(pet['messages'])
    action = random.choice(PET_ACTIONS)
    title = f'{pet["name"]} ({action})'
    show_notification(title, message)
    # Also print to terminal for visibility
    print(f'[{pet["name"]}] {message}')


def event_loop(frequency_sec=FREQUENCY_SEC, once=False):
    while True:
        random_pet_event()
        if once:
            break
        # Sleep for a random interval between frequency_sec and frequency_sec*2
        interval = random.randint(frequency_sec, frequency_sec * 2)
        time.sleep(interval)


def list_pets():
    print('利用可能なデスクトップペット一覧:')
    for pet in PET_CHARACTERS:
        print(f'- {pet["name"]}')


def summary():
    print('このSkillは、作業中にランダムなOS公式ペットが現れて意味不明な自己紹介や行動を行います。')
    print('実害はありませんが、集中力を一瞬だけ崩壊させることがあります。')
    print('出現頻度は自動制御され、通知またはターミナルに出力されます。')


def main():
    parser = argparse.ArgumentParser(description='Random OS Fake Desktop Pet Pop')
    subparsers = parser.add_subparsers(dest='command')

    parser_run = subparsers.add_parser('run', help='デスクトップペットを自動で出現させる')
    parser_run.add_argument('--once', action='store_true', help='1回だけ発動して終了')
    parser_run.add_argument('--freq', type=int, default=FREQUENCY_SEC, help='出現間隔(秒)')

    parser_list = subparsers.add_parser('list', help='ペット一覧を表示')
    parser_summary = subparsers.add_parser('summary', help='Skillの概要を表示')

    args = parser.parse_args()

    if args.command == 'run':
        event_loop(frequency_sec=args.freq, once=args.once)
    elif args.command == 'list':
        list_pets()
    elif args.command == 'summary':
        summary()
    else:
        parser.print_help()

if __name__ == '__main__':
    main()

references/reference.md

# 概要
このSkillは、作業中に突然現れる「OS公式デスクトップペット」を模した通知・演出を実現します。ペットの種類やメッセージは毎回ランダムで、実際の作業に影響を与えないよう設計されています。

# 公式ドキュメント抜粋
Pythonの通知APIとしてnotify2(Linux)、plyer(Windows/Mac)を利用し、クロスプラットフォームな通知表示を実現しています。出現頻度や演出内容はスクリプト内で自動制御されます。

# 利用例
長時間のコーディングや単調な作業時に、ペットが現れて一瞬だけ集中を崩すことで、気分転換や癒しを提供します。通知領域やターミナルでの演出により、ユーザーに非日常的な体験を与えます。

# 注意点
実害はありませんが、通知が不要な場合はSkillを無効化してください。明示的な呼び出しやカスタマイズはサポートされていません。出力は一時的なもので、履歴は残りません。

# 設計方針
ユーザーの作業を物理的に妨害しすぎないよう、出現頻度は15分以上の間隔で自動調整されています。キャラクターやメッセージは拡張可能な設計です。

導入手順

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

1. 前提

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

2. degit でフォルダ取得

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

npx degit aazutaku/ai-note/antigravity/random-os-fake-desktop-pet-pop .agent/skills/random-os-fake-desktop-pet-pop

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

3. ファイル配置確認

ls .agent/skills/random-os-fake-desktop-pet-pop
# 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で通知・演出・OS連携Skillを試してみた結果 にまとめる予定 (公開準備中の場合あり)。
あわせて Antigravity 公式ドキュメント と、本シリーズ「Antigravityで試したいSkill研究」の他記事も参照のこと。

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

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

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

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