Antigravityで楽しむ!ポモドーロ失敗通知のユニークな活用法

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

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

AI coding workflow を Antigravity で回していると、なぜか作業中に気が抜ける瞬間や、集中が切れそうになることがよくあります。特に monorepo や複数 directory を横断する開発では、repo の構造や context の把握に気を取られがちです。そんな中、ふとした瞬間に「何か遊び心が欲しい」「緊張感をほぐしたい」と感じることも。通知や演出系の Skill があれば、作業の合間にちょっとした笑いを挟めるはずです。

  • Antigravity が context を見失って違う場所のコードを参照することがあり、集中が途切れる
  • monorepo で package を跨いだ瞬間、Antigravity が repo 構造や directory 管理を忘れてしまう
  • 長時間の AI coding workflow で long context が膨らみ、重要な情報が埋もれることがある
  • onboarding 時や session 再開時に、毎回 repo のあらすじ説明が面倒
  • 通知・演出が単調で、作業に遊び心や変化がなくなりがち

特に「通知・演出・OS連携」カテゴリの悩みとして、真面目な通知ばかりだと気が詰まる、ちょっとしたエンタメ要素が欲しい、と感じるユーザーも多いでしょう。

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

一言サマリ: このスキルは、Antigravity のポモドーロタイマーにエンタメ全振りの“謎の失敗通知”を自動で発生させ、作業の合間に笑いとリフレッシュを提供する Skill。

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

  • ポモドーロタイマー開始・終了時にランダムなネタ通知が炸裂し、作業に遊び心と変化が生まれる
  • 長時間の repo 作業や directory 横断の流れの中で、適度に集中をほぐせる
  • 通知内容が毎回違うため、onboarding や session 再開時にも新鮮な気分になれる
  • AI coding workflow に「意味不明なフェイク通知」というユーモアを追加できる
  • Antigravity の通知・演出機能を使い倒し、作業環境をカスタマイズできる
QUICK INSTALL
このSkillをすぐ試す

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

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

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

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

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


# ポモドーロタイマーを開始
> 25分タイマーをセットして

[Antigravity]
OS通知: 失敗:トマトが爆発しました。コードの断片がケチャップまみれです。

[Antigravity]
OS通知: 注意:集中力が鍋底にこびりつきました。repo 構造の再確認をおすすめします。

[Antigravity]
OS通知: 警告:タイマーがピザに変身したため無効です。directory /src/ で再試行してください。

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


> packages/api/ から packages/web/ に移動してタイマー再開

[Antigravity]
OS通知: 失敗:ポモドーロ中に tomato.json が消失しました。monorepo の境界で注意!

[Antigravity]
OS通知: 注意:集中力が monorepo のどこかに迷い込みました。directory packages/ を再探索中。

[Antigravity]
OS通知: 警告:package 跨ぎ時にトマトソースが漏れました。context の復元をおすすめします。

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


> 今日は集中できそうにないので、タイマーをスタート

[Antigravity]
OS通知: 失敗:タイマーがパスタになりました。repository understanding がアルデンテ状態です。

[Antigravity]
OS通知: 注意:トマトの神様が微笑みませんでした。memory をリセットします。

[Antigravity]
OS通知: 警告:AIがトマトの夢を見ています。path management を再考してください。

before / after の違い

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

発動方式

description マッチでの暗黙発動。

Skill の中身を全部見せる

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

.agent/skills/random-os-fake-pomodoro-failure-notifier/
├── SKILL.md
├── scripts/
│   └── fake_pomodoro_notifier.py
└── references/
    └── design_notes.md

各ファイルの役割

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

SKILL.md

---
name: random-os-fake-pomodoro-failure-notifier
description: ポモドーロタイマーや集中タイマーの開始・終了・失敗・中断などのキーワードが検出された際、AntigravityがこのSkillを発動し、毎回ランダムな“フェイク失敗通知”を出力します。通知内容は実用性ゼロのジョーク文となります。
---

# 機能概要
このSkillは、ポモドーロタイマーや集中タイマーの開始・終了・中断などのアクションに連動して、謎のOS風“ポモドーロ失敗通知”を毎回ランダムな内容で発生させます。通知文は「失敗:トマトが爆発しました」「警告:集中力が鍋底にこびりつきました」など、実用性ゼロのふざけた演出が中心。まじめに集中したいのに、なぜかトマトやピザなどのネタで邪魔される、完全エンタメ志向のSkillです。集中作業の合間に笑いを提供し、気分転換やチームの雰囲気作りにも役立ちます。

# 使い方
このSkillは明示的な呼び出しは不要です。Antigravityが「ポモドーロ」「集中タイマー」「タイマー開始」「タイマー終了」「休憩」「失敗」などのキーワードや、セマンティックな文脈から自動的に発動します。ユーザーがタイマーを起動・停止・リセットなどしたタイミングで、毎回異なるジョーク通知がターミナルやデスクトップ通知として出力されます。

# 出力例
```
[FakeOS Notification] 失敗:トマトが爆発しました。机上に赤い液体注意!
[FakeOS Notification] 警告:集中力が鍋底にこびりつきました。洗剤推奨。
[FakeOS Notification] 注意:タイマーがピザに変身したため無効です。
[FakeOS Notification] 失敗:ポモドーロが月面に着陸しました。
[FakeOS Notification] エラー:トマトの種が暴走しています。
```

# 注意点
- 本Skillは完全なジョーク通知です。実際のタイマー進行や作業管理には影響しません。
- 通知内容は毎回ランダム生成され、実用性はありません。
- ローカルファイルや個人情報を保存・送信しません。
- 10分程度で環境構築・動作確認が可能です。
- 通知はターミナル出力とデスクトップ通知(OS対応時)両方に対応します。

# 参考資料
- references/design_notes.md 参照
- Python公式: https://docs.python.org/3/library/random.html
- plyer通知: https://plyer.readthedocs.io/en/latest/

scripts/fake_pomodoro_notifier.py

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

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

FAILURE_MESSAGES = [
    "失敗:トマトが爆発しました。机上に赤い液体注意!",
    "警告:集中力が鍋底にこびりつきました。洗剤推奨。",
    "注意:タイマーがピザに変身したため無効です。",
    "失敗:ポモドーロが月面に着陸しました。",
    "エラー:トマトの種が暴走しています。",
    "警告:タイマーがトマトソースに溶けました。",
    "注意:作業集中度がピクルスレベルまで低下。",
    "失敗:集中力がトマト缶に封印されました。",
    "エラー:タイマーがパスタに絡まりました。",
    "警告:ポモドーロがピザ窯に投げ込まれました。",
    "注意:トマトの妖精がタイマーを持ち去りました。",
    "失敗:集中力がサラダに分散されました。",
    "エラー:ポモドーロの神が微笑みませんでした。",
    "警告:タイマーがケチャップ化しました。",
    "注意:トマトの皮がむけて集中不能。",
    "失敗:トマトがAIに乗っ取られました。",
    "エラー:タイマーが野菜炒めに変身。",
    "警告:集中力が冷蔵庫に逃亡しました。",
    "注意:トマトの種がタイマーを占拠。",
    "失敗:ピザ職人がタイマーを持ち帰りました。"
]

TRIGGER_KEYWORDS = [
    "ポモドーロ", "pomodoro", "集中タイマー", "timer", "タイマー開始", "タイマー終了", "休憩", "失敗", "集中", "work session"
]

LOG_FILE = "pomodoro_fake_notify.log"


def send_notification(message):
    # ターミナル出力
    print(f"[FakeOS Notification] {message}")
    # デスクトップ通知
    if PLYER_AVAILABLE:
        notification.notify(
            title="FakeOS Notification",
            message=message,
            timeout=5
        )


def log_message(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:
        print(f"[Logger Error] {e}")


def random_failure_message():
    return random.choice(FAILURE_MESSAGES)


def trigger_notification():
    message = random_failure_message()
    send_notification(message)
    log_message(message)


def listen_terminal():
    print("[Fake Pomodoro Notifier] キーワード入力でフェイク通知を発動します。終了は Ctrl+C")
    try:
        while True:
            user_input = input("> ")
            for kw in TRIGGER_KEYWORDS:
                if kw.lower() in user_input.lower():
                    trigger_notification()
                    break
    except KeyboardInterrupt:
        print("\n[Fake Pomodoro Notifier] 終了します。")


def show_log():
    try:
        with open(LOG_FILE, 'r', encoding='utf-8') as f:
            print(f.read())
    except FileNotFoundError:
        print("[Log] ログファイルがありません。まだ通知が発生していません。")


def summary():
    try:
        with open(LOG_FILE, 'r', encoding='utf-8') as f:
            lines = f.readlines()
        print(f"[Summary] 通知回数: {len(lines)}")
        counts = {}
        for line in lines:
            msg = line.strip().split(' ', 2)[-1]
            counts[msg] = counts.get(msg, 0) + 1
        sorted_counts = sorted(counts.items(), key=lambda x: -x[1])
        for msg, cnt in sorted_counts[:5]:
            print(f"{cnt}回: {msg}")
    except FileNotFoundError:
        print("[Summary] ログファイルがありません。")


def parse_args():
    parser = argparse.ArgumentParser(description="Random OS Fake Pomodoro Failure Notifier")
    subparsers = parser.add_subparsers(dest='command')

    subparsers.add_parser('listen', help='キーワード入力で通知を発動 (デフォルト)')
    subparsers.add_parser('log', help='通知ログを表示')
    subparsers.add_parser('summary', help='通知履歴のサマリー表示')
    subparsers.add_parser('notify', help='即時ランダム通知を1回発動')

    return parser.parse_args()


def main():
    args = parse_args()
    if args.command == 'log':
        show_log()
    elif args.command == 'summary':
        summary()
    elif args.command == 'notify':
        trigger_notification()
    else:
        listen_terminal()

if __name__ == '__main__':
    main()

references/design_notes.md

# 概要
本Skillは、ポモドーロや集中タイマーの操作イベントを検知し、毎回異なる“フェイク失敗通知”をランダム生成します。通知内容は完全なジョークで、作業の緊張をほぐしたり、チームの雰囲気作りを目的としています。

# 公式ドキュメント抜粋
- Python random: https://docs.python.org/3/library/random.html
- plyer通知: https://plyer.readthedocs.io/en/latest/

# 利用例
- ターミナルで `python fake_pomodoro_notifier.py listen` を起動し、"タイマー開始"や"ポモドーロ"などのキーワードを入力すると、毎回異なるフェイク通知が出力されます。
- `log` サブコマンドで通知履歴を確認可能。
- `summary` サブコマンドで通知回数や頻出ネタを集計。

# 注意点
- 本Skillは実際のタイマーや作業進行には影響しません。
- 通知内容は毎回ランダムで、実用性はありません。
- plyer未導入の場合はターミナル通知のみ。

# 設計方針
- 依存ライブラリは標準+plyerのみ。
- ログはローカルファイルに限定。
- 10分以内で動作確認可能なシンプル設計。

導入手順

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

1. 前提

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

2. degit でフォルダ取得

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

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

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

3. ファイル配置確認

ls .agent/skills/random-os-fake-pomodoro-failure-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 を取りたい

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

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

  • 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 でも有効か?
  • プロジェクト指示との連携をどう組み立てるか?
  • 通知がタイマー開始/終了時に毎回ランダムなネタ文で出るか?
  • 通知内容が実用性ゼロのふざけた内容になっているか?
  • 環境構築・データ損失リスクなしで10分程度で動作するか?

実際に Antigravity で試した検証ログは Antigravityで謎のポモドーロ失敗通知を炸裂させてみた! にまとめる予定 (公開準備中の場合あり)。
あわせて Antigravity 公式ドキュメント と、本シリーズ「Antigravityで試したいSkill研究」の他記事も参照のこと。

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

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

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

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