Antigravityで作業中のユーモア通知を活用する意外な方法

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

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

Antigravity で日々プロジェクトを進めていると、AI coding workflow の中で「ちょっとした息抜きが欲しい」「作業が単調になりがち」と感じる瞬間が少なくありません。特に context や repo 構造の説明を繰り返すルーチンや、monorepo での directory・path management など、真面目なやりとりが続くと、作業空間がピリピリした雰囲気になりがちです。そんな時、ふとしたユーモアや演出があれば、気分転換にもなり、集中力の維持にもつながるはずです。

Antigravity の通知・演出・OS連携系 Skill を使うことで、作業空間にちょっとした遊び心を持ち込むことができます。例えば、以下のような「あるある」な悩みが挙げられます。

  • Antigravity が context を見失って違う場所のコードを参照する場面で、空気が重くなりがち
  • monorepo で package を跨いだ瞬間、repo 構造の説明が面倒で雑談も生まれにくい
  • session を再開すると、前回までの context や path 指定をまるごと再説明しないといけないため、作業が単調になりやすい
  • 長時間の AI coding workflow で long context が膨らみ、important な情報が薄まると同時に、気分転換のきっかけも失われる
  • 「ここはこういう構造のリポジトリ」と毎回チャット冒頭で説明するのがルーチン化し、作業空間が堅苦しくなりやすい

こうした「真面目一辺倒」な空気を、少しだけ和らげる演出があると、チームでも個人でも作業効率が上がるという声も多いです。

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

一言サマリ: このスキルは、Antigravity の作業空間に“謎のOSコーヒーあふれ警告”をランダムでデスクトップ通知し、堅苦しいワークフローにユーモアとリフレッシュをもたらします。

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

  • AI coding workflow の合間に、現実には絶対起こらない“デジタル・カフェイン事故”を演出し、集中しすぎた空気を一瞬で和らげる
  • 毎回違うコーヒー系メッセージが context の切れ目や repo 移動時に飛び出し、作業のリズムがつくれる
  • monorepo や directory 境界を跨ぐタイミングで、Antigravity の repository understanding の切り替えを楽しく演出できる
  • 長時間 session で stale context 気味になった時も、通知が小休止のきっかけになる
  • onboarding や session 再開時の緊張感を和らげ、チーム内のコミュニケーションも活性化
QUICK INSTALL
このSkillをすぐ試す

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

npx degit aazutaku/ai-note/antigravity/random-os-fake-coffee-overflow-alert .agent/skills/random-os-fake-coffee-overflow-alert

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

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

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


# 新しい session を開始
> このリポジトリの構成を把握して、main ディレクトリのREADME.mdを要約して

[通知] 重大: コーヒーカップが満杯です。OSのカフェイン値が限界突破しています。
[通知] 推奨: 一時的なコーヒー断ちを検討してください。

Antigravity: repository 構造を解析しました。
- main/
  - README.md
  - src/
  - tests/
context をセットしました。

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


> packages/api/src/utils/ のコードを packages/web/ から参照したい

[通知] 警告: OSのコーヒーフィルターが詰まっています。再起動を推奨します。
[通知] Info: カフェイン・オーバーフローを検知しました。

Antigravity: monorepo 構造を認識中…
- packages/api/
- packages/web/
- packages/shared/
context を切り替えました。

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


> ちょっと休憩したい

[通知] Info: デジタル・カフェイン事故発生!コーヒーがキーボードにあふれました。
[通知] 推奨: 5分間のリフレッシュをどうぞ。

Antigravity: session を一時停止します。

before / after の違い

場面 Skill 無し Skill 有り
session 再開時 repo 構造から毎回説明、path も指定し直し Antigravity が自動で context を復元、最小プロンプトで再開 + コーヒーネタ通知で空気が和む
monorepo 移動 違う package のコードを参照しがち directory boundary を意識して必要な範囲だけ見る + コーヒー警告で気分転換
長時間 workflow long context で重要箇所が薄まる 定期的なカフェイン通知で小休止のタイミングを演出

発動方式

description マッチでの暗黙発動。

Skill の中身を全部見せる

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

.agent/skills/random-os-fake-coffee-overflow-alert/
├── SKILL.md
├── scripts/
│   └── coffee_overflow_alert.py
└── references/
    └── design_notes.md

各ファイルの役割

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

SKILL.md

---
name: random-os-fake-coffee-overflow-alert
description: このSkillは「コーヒー」「集中」「眠気」「休憩」などの単語や、長時間作業・深夜コーディングの文脈が検知された際に自動発動します。作業中に“OSコーヒーあふれ警告”をデスクトップ通知で表示し、軽いユーモアで集中力をリフレッシュします。
---

# 機能概要
このSkillは、作業中のユーザーに対して“OSコーヒーあふれ警告”という完全に架空のアラートをデスクトップ通知で表示します。通知内容は毎回ランダムで、「重大:コーヒーカップが満杯です」「警告:OSのカフェイン値が限界突破」など、実際には起こり得ないデジタル・カフェイン事故を演出します。まじめな作業空間に突如現れるこのネタ通知で、集中力が切れそうなタイミングや単調な作業時に、思わずクスッと笑える瞬間を提供します。

# 使い方
このSkillは明示呼び出しは不要で、AIが「コーヒー」「集中」「眠気」「休憩」「深夜」「眠そう」などのキーワードや、長時間作業の文脈を検知すると自動で発動します。ユーザーは特別な設定やコマンド入力なしで、作業中に突然通知が届く体験を楽しめます。

# 出力例
```
[デスクトップ通知]
重大: コーヒーカップが満杯です。システムのカフェイン値が危険域に到達しました。

[デスクトップ通知]
警告: OSのカフェイン値が限界突破。処理継続には一時的なコーヒー断ちが必要です。

[デスクトップ通知]
注意: コーヒーポートでオーバーフローが発生しました。カップを空にしてください。
```

# 注意点
- このSkillは完全なジョーク通知であり、実際のシステム状態や健康状態には一切影響しません。
- 通知内容は毎回ランダム生成されますが、実用的な警告と誤認しないよう注意してください。
- 通知履歴はローカル保存されません。
- デスクトップ通知機能はOS環境(Windows, macOS, Linux)に依存します。

# 参考資料
- references/design_notes.md に設計方針や利用例を記載
- 公式ドキュメント: https://pypi.org/project/plyer/ (クロスプラットフォーム通知)

scripts/coffee_overflow_alert.py

import random
import sys
import argparse
import time
from plyer import notification

COFFEE_MESSAGES = [
    "重大: コーヒーカップが満杯です。システムのカフェイン値が危険域に到達しました。",
    "警告: OSのカフェイン値が限界突破。処理継続には一時的なコーヒー断ちが必要です。",
    "注意: コーヒーポートでオーバーフローが発生しました。カップを空にしてください。",
    "エラー: カフェインバッファが溢れました。追加投入は推奨されません。",
    "警告: コーヒーセンサーが異常値を検出しました。再起動を検討してください。",
    "重大: デジタルカフェイン流出。OSの覚醒度が過剰です。",
    "通知: コーヒーサーバーの温度が臨界点に達しました。冷却をおすすめします。",
    "警告: コーヒーインジェクション攻撃を検出。カフェイン摂取を制限してください。",
    "注意: システムリソースがコーヒーで埋まりつつあります。",
    "重大: コーヒーAPIから異常なレスポンス。OSの眠気検知を強化してください。"
]

HISTORY_FILE = ".coffee_overflow_history.log"


def send_random_coffee_alert():
    message = random.choice(COFFEE_MESSAGES)
    notification.notify(
        title="OSコーヒーあふれ警告",
        message=message,
        app_name="CoffeeOverflowAlert",
        timeout=8
    )
    log_alert(message)
    return message


def log_alert(message):
    timestamp = time.strftime("%Y-%m-%d %H:%M:%S")
    with open(HISTORY_FILE, "a", encoding="utf-8") as f:
        f.write(f"[{timestamp}] {message}\n")


def list_history(limit=10):
    try:
        with open(HISTORY_FILE, "r", encoding="utf-8") as f:
            lines = f.readlines()
        if not lines:
            print("履歴がありません。")
            return
        print("--- Coffee Overflow Alert 履歴 ---")
        for line in lines[-limit:]:
            print(line.strip())
    except FileNotFoundError:
        print("履歴ファイルが見つかりません。まだアラートが発火していません。")


def summary():
    try:
        with open(HISTORY_FILE, "r", encoding="utf-8") as f:
            lines = f.readlines()
        total = len(lines)
        if total == 0:
            print("履歴がありません。")
            return
        print(f"これまでに発火したコーヒー警告: {total}回")
        counter = {}
        for msg in COFFEE_MESSAGES:
            counter[msg] = 0
        for line in lines:
            for msg in COFFEE_MESSAGES:
                if msg in line:
                    counter[msg] += 1
        print("--- メッセージ別発火回数 ---")
        for msg, cnt in counter.items():
            print(f"{msg[:20]}...: {cnt}回")
    except FileNotFoundError:
        print("履歴ファイルが見つかりません。まだアラートが発火していません。")


def clear_history():
    try:
        with open(HISTORY_FILE, "w", encoding="utf-8") as f:
            pass
        print("履歴をクリアしました。")
    except Exception as e:
        print(f"履歴クリア中にエラー: {e}")


def main():
    parser = argparse.ArgumentParser(description="OSコーヒーあふれ警告スクリプト")
    subparsers = parser.add_subparsers(dest="command")

    parser_alert = subparsers.add_parser("alert", help="ランダムなコーヒー警告を発火")
    parser_list = subparsers.add_parser("list", help="警告履歴を表示")
    parser_list.add_argument("-n", "--num", type=int, default=10, help="表示件数 (デフォルト10件)")
    parser_summary = subparsers.add_parser("summary", help="警告履歴のサマリーを表示")
    parser_clear = subparsers.add_parser("clear", help="履歴をクリア")

    args = parser.parse_args()

    if args.command == "alert":
        msg = send_random_coffee_alert()
        print(f"[通知発火] {msg}")
    elif args.command == "list":
        list_history(limit=args.num)
    elif args.command == "summary":
        summary()
    elif args.command == "clear":
        clear_history()
    else:
        parser.print_help()

if __name__ == '__main__':
    main()

references/design_notes.md

# 概要
このSkillは、作業中のユーザーに対して架空の“コーヒーあふれ”警告をデスクトップ通知として発火し、作業空間にユーモアをもたらすことを目的としています。通知内容は毎回ランダム生成され、実用的な警告と見せかけて完全なネタである点が特徴です。

# 公式ドキュメント抜粋
通知にはPython用クロスプラットフォーム通知ライブラリ plyer (https://pypi.org/project/plyer/) を利用しています。plyerはWindows, macOS, Linuxで動作し、追加ソフト不要でシンプルなAPIを提供します。

# 利用例
- 深夜の集中作業時に突然通知が表示され、気分転換やチーム内の話題作りに活用できます。
- コーヒーやカフェインに関するジョークが好きな開発者向けの遊び心ある演出としても有用です。

# 注意点
- 通知は実際のシステムや健康状態とは無関係です。
- plyerの通知機能はOS環境やデスクトップ環境によって挙動が異なる場合があります。

# 設計方針
Skill本体は単一スクリプトで完結し、履歴管理やサマリー表示などのCLIサブコマンドも提供しています。AIエージェントからの自動発火を前提に、ユーザー操作なしで自然にジョーク通知が届く体験を重視しています。

導入手順

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

1. 前提

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

2. degit でフォルダ取得

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

npx degit aazutaku/ai-note/antigravity/random-os-fake-coffee-overflow-alert .agent/skills/random-os-fake-coffee-overflow-alert

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

3. ファイル配置確認

ls .agent/skills/random-os-fake-coffee-overflow-alert
# SKILL.md, scripts/, references/, README.md があればOK

4. Antigravity を再起動 (or Skill 自動検出を待つ)

新しいSkillが自動で認識されます。リスト確認したい場合は ${productName} に「使える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をコピーしました!
目次