Antigravity ユーザーが日常でぶつかる悩み
Antigravity を日常的に使っていると、AI coding workflow の中で思わぬ“マンネリ感”や、集中力の揺らぎを感じる瞬間が出てきます。特に長時間の session や繰り返しの repository 作業では、画面や通知に変化がなく、ちょっとした刺激や遊び心が欲しくなることも少なくありません。
また、通知・演出・OS連携系の Skill が少ない環境では、作業が単調になりがちで、気分転換や意外性のある演出が求められる場面もあります。Antigravity ならではの context 管理や path management による効率化は魅力ですが、「遊び」要素が足りず、デスクトップが退屈に感じることも。
- Antigravity の通知がいつも同じパターンで、作業中に新鮮味や驚きがない
- 長時間の repository understanding や directory 構造把握で集中力が切れがち
- onboarding や session 再開時に、気分転換やリフレッシュできる仕掛けが欲しい
- monorepo で packages を跨いだ際、AIの context 切り替えに合わせて遊び心のある演出を入れたくなる
- AI coding workflow の合間に、意味不明な通知で頭をリセットしたい衝動に駆られる
この Skill が一言でいうと何を解決するか
一言サマリ: このスキルは、Antigravity の作業フローに突如“謎のOSメモ”をデスクトップ通知で投下し、退屈な開発環境にシュールな混乱と遊び心をもたらします。
もう少し具体化すると、このSkillを入れることで以下のような状態になる:
- AI coding workflow の合間に、完全ランダムな怪文書通知で気分転換ができる
- 長時間の repository 作業や context 管理の単調さを、予測不能な演出でリフレッシュ
- onboarding や session 再開時に、意味不明なOSメモでチームの会話や笑いのきっかけを作れる
- monorepo での directory 移動や path management の節目に、シュールな通知で作業の切り替え感を演出
- Antigravity の通知・演出・OS連携 Skill のバリエーションを拡張し、日常の開発体験に遊び心を加えられる
GitHub から degit でコマンド1行、Antigravity の Skill ディレクトリに展開できます。Node.js があれば即時に動きます。
npx degit aazutaku/ai-note/antigravity/random-desktop-fake-os-memo .agent/skills/random-desktop-fake-os-memo実行したらこうなる (3つの利用シーン)
使う側がイメージしやすいよう、擬似 terminal で出力例を3パターン示す。Skill が返す出力は推測だが、現実的なフォーマット・現実的な長さで書く。
シーン1: session 開始時 (プロジェクト初動で)
# 新しいプロジェクトでAntigravityを起動
> プロジェクトのディレクトリ構造を教えて
[デスクトップ通知]
謎のOSメモ: 「冷蔵庫にプリンあり。だが、それは君のものではない。」
src/
main.py
utils/
README.md
.gitignore
(通知は突然現れ、作業の冒頭からシュールな空気に)
シーン2: monorepo / package 跨ぎ作業時
> packages/api と packages/web の依存関係を整理して
[デスクトップ通知]
謎のOSメモ: 「上司が見ている。だが、誰もいない。」
packages/
api/
index.js
web/
app.jsx
shared/
utils.js
(意図せず現れる怪文書に思わず二度見)
シーン3: お遊び的な使い方
> 今日は何か面白いこと起きない?
[デスクトップ通知]
謎のOSメモ: 「バグは空から降ってくる。謎の引き出しを開けるな。」
(全く意味不明なのに、なぜか気になってしまう)
before / after の違い
| 場面 | Skill 無し | Skill 有り |
|---|---|---|
| session 再開時 | repo 構造から毎回説明、path も指定し直し | Antigravity が自動で context を復元、最小プロンプトで再開。さらに謎の通知で気分転換 |
| monorepo 移動 | 違う package のコードを参照しがち | directory boundary を意識して必要な範囲だけ見る+怪文書通知で切り替え気分を演出 |
| 長時間 workflow | long context で重要箇所が薄まる | タイミングよく意味不明な通知が入り、集中しすぎによる思考の硬直をリセット |
発動方式
description マッチでの暗黙発動。
Skill の中身を全部見せる
.agent/skills/random-desktop-fake-os-memo/ に配置するファイル一覧です。GitHub に push 済みなので、上記の degit コマンドで一発取得できます。
.agent/skills/random-desktop-fake-os-memo/
├── SKILL.md
├── scripts/
│ └── random_desktop_fake_os_memo.py
└── references/
└── design_notes.md
各ファイルの役割
| ファイル | 役割 |
|---|---|
SKILL.md |
Skill本体。frontmatter (name/description) と指示本文。Antigravity がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します |
scripts/random_desktop_fake_os_memo.py |
random-desktop-fake-os-memo: 謎のOSメモをデスクトップ通知で表示 |
references/design_notes.md |
概要 をまとめた参考資料 |
SKILL.md
---
name: random-desktop-fake-os-memo
description: 作業やコーディング中に“デスクトップ通知”や“意味不明なメモ”などのキーワードが含まれる状況で、Antigravityがユーザーの集中を和らげる目的で本Skillを自動発動します。
---
# 機能概要
random-desktop-fake-os-memoは、デスクトップ上に突然“謎のOSメモ”を通知として表示し、作業中のユーザーにシュールな混乱と遊び心を提供するスキルです。通知内容は完全ランダムで、実用性ゼロの怪文書や意味不明なメッセージばかり。退屈な作業や単調なデスクトップ環境に、意図的な違和感や笑いをもたらします。集中しすぎている時ほど、思わず二度見してしまうような体験を演出します。
# 使い方
このSkillは明示的な呼び出しは不要です。Antigravityが「デスクトップ通知」「OS演出」「作業中の気分転換」などのキーワードや状況を検知した際、自動的に発動します。ユーザーが何も操作しなくても、定期的またはランダムなタイミングで怪文書メモをデスクトップ通知として表示します。
# 出力例
```
[通知] OSメモ: 冷蔵庫にプリンあり
[通知] OSメモ: 上司が見ている
[通知] OSメモ: バグは空から降ってくる
[通知] OSメモ: 謎の引き出しを開けるな
[通知] OSメモ: 今日は何曜日でもない
[通知] OSメモ: システムがあなたを見つめています
[通知] OSメモ: 画面の右下を見てはいけない
[通知] OSメモ: コードに名前をつけてはいけない
```
# 注意点
- 通知内容は完全に意味不明で、実用的な情報は一切含まれません。
- スキルはローカル環境でのみ動作し、通知内容の履歴や保存機能はありません。
- 通知API(notify-send等)に依存するため、環境によっては通知が表示されない場合があります。
- 明示的なトリガーやコマンドは用意されていません。
# 参考資料
- references/design_notes.md を参照
- Linux: https://specifications.freedesktop.org/notification-spec/latest/
- Windows: https://docs.python.org/ja/3/library/win10toast.html
- macOS: https://pync.readthedocs.io/en/latest/
scripts/random_desktop_fake_os_memo.py
import sys
import os
import random
import time
import argparse
import platform
import subprocess
from typing import List
MEMO_LIST = [
"冷蔵庫にプリンあり",
"上司が見ている",
"バグは空から降ってくる",
"謎の引き出しを開けるな",
"今日は何曜日でもない",
"システムがあなたを見つめています",
"画面の右下を見てはいけない",
"コードに名前をつけてはいけない",
"この通知は幻です",
"再起動しても戻らない",
"USBメモリは抜かないで",
"電源ボタンは押すな",
"ログイン画面に秘密がある",
"このメッセージは自動で消えません",
"何もしていないのに壊れた",
"あなたの後ろに誰かいる",
"今日の運勢: バグ多め",
"コーヒーをこぼすな",
"ファイル名は秘密",
"メモリが逃げ出した",
"この通知を無視しないで",
"デバッグは夢の中で",
"謎のエラーが発生しました",
"キーボードが逆さまです",
"マウスが迷子",
"プリンターが踊りだす",
"画面の端に何かいる",
"設定ファイルを開かないで",
"今日も一日意味不明",
"あなたは選ばれし者"
]
def get_random_memo() -> str:
return random.choice(MEMO_LIST)
def notify_linux(message: str):
try:
subprocess.run([
'notify-send', 'OSメモ', message
], check=True)
except Exception as e:
print(f"[通知失敗] {e}")
def notify_macos(message: str):
try:
subprocess.run([
'osascript', '-e', f'display notification "{message}" with title "OSメモ"'
], check=True)
except Exception as e:
print(f"[通知失敗] {e}")
def notify_windows(message: str):
try:
import win10toast
toaster = win10toast.ToastNotifier()
toaster.show_toast("OSメモ", message, duration=5)
except ImportError:
print("win10toastがインストールされていません。pip install win10toast で導入してください。")
except Exception as e:
print(f"[通知失敗] {e}")
def show_notification(message: str):
sys_platform = platform.system()
if sys_platform == "Linux":
notify_linux(message)
elif sys_platform == "Darwin":
notify_macos(message)
elif sys_platform == "Windows":
notify_windows(message)
else:
print(f"[通知] OSメモ: {message}")
def list_memos():
print("--- OSメモ候補一覧 ---")
for idx, memo in enumerate(MEMO_LIST):
print(f"{idx+1:02d}: {memo}")
def summary():
print(f"登録されている怪文書メモ数: {len(MEMO_LIST)}")
print(f"例: {random.choice(MEMO_LIST)}")
def log_memo():
memo = get_random_memo()
print(f"[通知] OSメモ: {memo}")
show_notification(memo)
def random_loop(interval_min: int, interval_max: int, count: int):
for i in range(count):
memo = get_random_memo()
print(f"[通知] OSメモ: {memo}")
show_notification(memo)
if i < count - 1:
delay = random.randint(interval_min, interval_max)
time.sleep(delay)
def parse_args():
parser = argparse.ArgumentParser(description="random-desktop-fake-os-memo: 謎のOSメモをデスクトップ通知で表示")
subparsers = parser.add_subparsers(dest='command', required=True)
parser_log = subparsers.add_parser('log', help='ランダムなOSメモを1回通知')
parser_list = subparsers.add_parser('list', help='OSメモ候補一覧を表示')
parser_summary = subparsers.add_parser('summary', help='メモ候補のサマリを表示')
parser_loop = subparsers.add_parser('loop', help='一定回数ランダム間隔で通知')
parser_loop.add_argument('--min', type=int, default=10, help='通知間隔の最小秒数 (デフォルト10)')
parser_loop.add_argument('--max', type=int, default=60, help='通知間隔の最大秒数 (デフォルト60)')
parser_loop.add_argument('--count', type=int, default=5, help='通知回数 (デフォルト5)')
return parser.parse_args()
def main():
args = parse_args()
if args.command == 'log':
log_memo()
elif args.command == 'list':
list_memos()
elif args.command == 'summary':
summary()
elif args.command == 'loop':
random_loop(args.min, args.max, args.count)
else:
print("不明なコマンドです")
if __name__ == '__main__':
main()
references/design_notes.md
# 概要
random-desktop-fake-os-memoは、ユーザーの作業環境に突発的な“謎のOSメモ”を通知することで、意図的な違和感や遊び心を演出するスキルです。集中しすぎた作業の合間や、単調なデスクトップにシュールな刺激を与えることを目的としています。
# 公式ドキュメント抜粋
- Linux: Freedesktop.org Notification Spec (https://specifications.freedesktop.org/notification-spec/latest/)
- Windows: win10toast (https://pypi.org/project/win10toast/)
- macOS: pync (https://pync.readthedocs.io/en/latest/)
# 利用例
- 長時間のコーディング時に、定期的に意味不明な通知が表示されることでリフレッシュ効果を狙う
- チームのデモや社内イベントで、デスクトップに混乱や笑いを起こす演出
# 注意点
- 通知内容は完全にランダムかつ非実用的であり、業務連絡などには一切利用できません
- 通知APIの仕様や環境依存で、通知が表示されない場合があります
# 設計方針
- 既存の通知APIのみを利用し、OSごとに最適な方法で通知を実装
- メモ内容はハードコーディングし、怪文書感を重視
- ログや履歴保存は行わず、あくまで“その瞬間”の演出に特化
導入手順
このSkillは GitHub で管理されているので、degit を使えば必要なフォルダだけを1コマンドで取得できます。Antigravity はファイル配置後に再起動するだけで自動認識します。
1. 前提
- Node.js v16 以上 (
degit実行に必要) - Antigravity がローカルで動いていること
2. degit でフォルダ取得
プロジェクトのルートで以下のコマンドを実行します。
npx degit aazutaku/ai-note/antigravity/random-desktop-fake-os-memo .agent/skills/random-desktop-fake-os-memo
.agent/skills/random-desktop-fake-os-memo の中に SKILL.md / scripts/ / references/ / README.md が展開されます。
3. ファイル配置確認
ls .agent/skills/random-desktop-fake-os-memo
# 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 でも有効か?
- プロジェクト指示との連携をどう組み立てるか?
- 通知内容が毎回完全ランダムであるか?
- 本当に意味不明な内容か(実用性ゼロの怪文書感が出せるか)
- 短時間で組めるか(通知APIのみ利用で済むか)
実際に Antigravity で試した検証ログは Antigravityで謎の怪文書通知を試してみた!デスクトップがシュールに混乱 にまとめる予定 (公開準備中の場合あり)。
あわせて Antigravity 公式ドキュメント と、本シリーズ「Antigravityで試したいSkill研究」の他記事も参照のこと。
関連タグで他のSkill記事を探す
本記事に付いているタグから、気になるテーマの記事を探せます。タグページで関連記事をまとめて読めるので、ぜひチェックしてみてください!
