Antigravityで作業中の謎通知を活用して集中力を高める方法

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

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

AI coding workflow を Antigravity で回していると、日々の開発やリポジトリ管理のなかで「なんで今この通知?」という状況や、集中力がふと途切れる瞬間が意外と多いものです。特に、context や repository understanding が絡む場面では、ちょっとした違和感やマンネリが積み重なりがちです。

  • Antigravity が context を見失って違う場所のコードを参照する
  • monorepo で package を跨いだ瞬間、Antigravity が repo 構造を忘れる
  • session を再開すると、前回までの context や path 指定をまるごと再説明しないといけない
  • 長時間 workflow で long context が膨らみすぎて、important な情報が薄まる (stale context)
  • 「ここはこういう構造のリポジトリ」というあらすじを毎回チャットの冒頭で書く羽目になる

さらに、通知や演出が無機質になりがちな点も悩みどころ。集中力が切れたときや、同じようなやり取りが続くと、ちょっとした「遊び」や「フェイク感」が欲しくなる瞬間もあります。Antigravity の通知・演出・OS連携系 Skill があれば、日々の開発に「余白」や「笑い」を挟みたいという声も多いです。

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

一言サマリ: このスキルは、Antigravity の日常に“謎のOS省エネモード通知”というフェイク演出を加え、集中力リセットや気分転換を演出します。

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

  • AI coding workflow の合間に、毎回違うフェイク通知で現実感覚をリフレッシュできる
  • repository understanding や context 切り替え時の「無音」な瞬間に、遊び心のある演出が入る
  • monorepo や大規模 directory 作業中も、突発的な通知で会話や作業の流れに変化が生まれる
  • 長時間 session で stale context を感じたときに、自己暗示的な「省エネ感」で集中を再起動できる
  • onboarding や session 再開時の「説明し直し」タイミングで、ちょっとした笑いを挟める
QUICK INSTALL
このSkillをすぐ試す

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

npx degit aazutaku/ai-note/antigravity/random-os-fake-power-saving-mode .agent/skills/random-os-fake-power-saving-mode

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

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

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


# 新しい session で作業を始める
> このリポジトリの構成をまとめて

[OS通知] システムは現在「自動パフォーマンス最適化モード」に切り替わりました。
全ウィンドウの明るさが自動調整されています(実際には何も変わりません)。
ヒント: 「省エネ中なので処理速度が遅く感じるかもしれません」と感じた場合は気のせいです。

src/
  ├── main.ts
  ├── utils/
  └── components/
README.md
package.json

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


> packages/api の構成も見たい

[OS通知] 「キーボード省入力モード」を有効化しました。
一部のショートカットが独自最適化されているかもしれません(本当は何もしていません)。
省エネモード解除には特別な操作は必要ありません。

packages/
  ├── api/
  │     ├── index.js
  │     └── routes/
  └── web/
        ├── app.jsx
        └── styles/

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


> ちょっと集中力が切れてきた

[OS通知] OSが独断で「謎の省エネモード」に突入しました。
現在、全プロセスが自己最適化されています(たぶん気のせいです)。
「すべてが遅く感じる」場合は深呼吸してみましょう。

repo/
  ├── scripts/
  ├── docs/
  └── tests/

before / after の違い

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

発動方式

description マッチでの暗黙発動。

Skill の中身を全部見せる

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

.agent/skills/random-os-fake-power-saving-mode/
├── SKILL.md
├── scripts/
│   └── fake_power_saving_notifier.py
└── references/
    └── design_notes.md

各ファイルの役割

ファイル 役割
SKILL.md Skill本体。frontmatter (name/description) と指示本文。Antigravity がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します
scripts/fake_power_saving_notifier.py フェイクOS省エネモード通知ジェネレータ (random-os-fake-power-saving-mode)
references/design_notes.md 概要 をまとめた参考資料

SKILL.md

---
name: random-os-fake-power-saving-mode
description: 作業中や長時間の集中作業、または『省エネ』『パフォーマンス』『謎のOS通知』などのキーワードが会話やタスクに含まれる際に、AntigravityがこのSkillを発動します。完全なフェイク通知で現実感覚を軽く揺さぶります。
---

# 機能概要
このSkillは、作業者の集中力や現実感覚を絶妙に揺さぶるための“フェイクOS省エネモード通知”をランダムに生成します。通知内容は毎回異なり、「全ウィンドウの明るさ自動調整(嘘)」「キーボード省入力モード発動」など、実際には何も起きないユーモラスな演出が特徴です。ターミナルやデスクトップで突如表示され、作業者に“省エネ中なので全てが遅く感じるかも”という自己暗示を促します。OSや作業環境には一切影響を与えません。

# 使い方
このSkillは明示的な呼び出しは不要です。Antigravityが「省エネ」「パフォーマンス低下」「OS通知」などのキーワードや、長時間作業・集中状態を検知した際に自動発動します。暗黙発動例:
- 「最近パソコンが重い気がする」
- 「省エネモードになってる?」
- 「OSの通知がうるさい」

# 出力例
```
[Fake OS Notification]
省エネモード突入: 全ウィンドウの明るさを自動で50%に調整しました(実際には何も起きていません)

[Fake OS Notification]
キーボード省入力モード発動: 1文字入力ごとに2秒の遅延が発生します(嘘です)

[Fake OS Notification]
OSが独断でパフォーマンスを自己最適化中。全てが遅く感じるかもしれません(気のせいです)
```

# 注意点
- 通知は完全にフェイクで、OSや作業環境に一切影響を与えません。
- ログや履歴はローカルに保存されません。
- 冗談や演出目的以外での利用は推奨されません。
- 本Skillは通知演出のみを行い、システム設定等は変更しません。

# 参考資料
- references/design_notes.md を参照
- [Python公式: random, argparse, logging](https://docs.python.org/ja/3/library/)

scripts/fake_power_saving_notifier.py

import argparse
import random
import sys
import time
import logging
from datetime import datetime

FAKE_NOTIFICATIONS = [
    "省エネモード突入: 全ウィンドウの明るさを自動で{level}%に調整しました(実際には何も起きていません)",
    "キーボード省入力モード発動: 1文字入力ごとに{delay}秒の遅延が発生します(嘘です)",
    "OSが独断でパフォーマンスを自己最適化中。全てが遅く感じるかもしれません(気のせいです)",
    "メモリ節約のため、未使用アプリを自動でスローダウン中(嘘です)",
    "CPU温度が平常値のため、全プロセスを省エネモードで運用中(演出のみです)",
    "バッテリー保護のため、画面解像度を自動で低下させました(実際には何も変わりません)",
    "省エネ中: ネットワーク速度を自動で50%に制限しています(フェイク通知です)",
    "OSの自己判断で全ウィンドウをグレースケール表示中(実際にはカラーのままです)",
    "省エネモード: タスク切り替え時に2秒のディレイが発生する場合があります(嘘です)",
    "全アプリケーションの自動省電力化を開始しました(何もしていません)"
]

LOG_FILE = None

def random_notification():
    template = random.choice(FAKE_NOTIFICATIONS)
    # 一部の通知はパラメータを埋め込む
    if "{level}" in template:
        level = random.choice([30, 40, 50, 60, 70])
        return template.format(level=level)
    if "{delay}" in template:
        delay = random.choice([1, 2, 3, 5])
        return template.format(delay=delay)
    return template

def log_notification(notification, log_file=None):
    timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    message = f"[{timestamp}] {notification}"
    if log_file:
        with open(log_file, 'a', encoding='utf-8') as f:
            f.write(message + '\n')
    else:
        print(message)

def notify(args):
    notification = random_notification()
    log_notification(notification, args.log)


def list_notifications(args):
    print("--- フェイク通知一覧 ---")
    for i, template in enumerate(FAKE_NOTIFICATIONS, 1):
        if "{level}" in template:
            example = template.format(level=50)
        elif "{delay}" in template:
            example = template.format(delay=2)
        else:
            example = template
        print(f"{i}. {example}")


def summary(args):
    print("random-os-fake-power-saving-mode Skill サマリー:")
    print(f"フェイク通知パターン数: {len(FAKE_NOTIFICATIONS)}")
    print("通知は実際のOSや作業環境に影響を与えません。全て冗談です。\n")
    print("使い方例:")
    print("  python fake_power_saving_notifier.py notify")
    print("  python fake_power_saving_notifier.py list")
    print("  python fake_power_saving_notifier.py summary")


def parse_args():
    parser = argparse.ArgumentParser(
        description='フェイクOS省エネモード通知ジェネレータ (random-os-fake-power-saving-mode)'
    )
    subparsers = parser.add_subparsers(dest='command', help='サブコマンド')

    parser_notify = subparsers.add_parser('notify', help='ランダムなフェイク通知を表示')
    parser_notify.add_argument('--log', type=str, help='通知をファイルに書き出す')
    parser_notify.set_defaults(func=notify)

    parser_list = subparsers.add_parser('list', help='全通知パターンのサンプルを表示')
    parser_list.set_defaults(func=list_notifications)

    parser_summary = subparsers.add_parser('summary', help='Skillのサマリーを表示')
    parser_summary.set_defaults(func=summary)

    return parser.parse_args()


def main():
    args = parse_args()
    if hasattr(args, 'func'):
        args.func(args)
    else:
        print("サブコマンドを指定してください (notify, list, summary)")

if __name__ == '__main__':
    main()

references/design_notes.md

# 概要
このSkillは、実際のOSやアプリケーションには一切作用せず、作業者に対して“省エネモード突入”などのフェイク通知をランダムに表示することで、ユーモラスな演出と軽い現実感覚の揺さぶりを提供します。通知内容は毎回変化し、実害ゼロです。

# 公式ドキュメント抜粋
- Python公式: [random](https://docs.python.org/ja/3/library/random.html), [argparse](https://docs.python.org/ja/3/library/argparse.html), [logging](https://docs.python.org/ja/3/library/logging.html)

# 利用例
- 長時間作業時の気分転換や、チーム内でのジョーク演出
- 「最近パソコンが重い気がする」といった発言への自動応答

# 注意点
- 本Skillは通知演出のみで、実際のシステム設定やパフォーマンスには一切影響を与えません。
- ログ出力先を指定しない限り、履歴は残りません。

# 設計方針
- サブコマンド型CLI設計で、notify/list/summaryを明確に分離
- 通知文はテンプレート+パラメータ挿入でバリエーションを確保
- OS依存のAPIや権限は一切使用せず、完全なノンインパクト設計

導入手順

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

1. 前提

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

2. degit でフォルダ取得

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

npx degit aazutaku/ai-note/antigravity/random-os-fake-power-saving-mode .agent/skills/random-os-fake-power-saving-mode

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

3. ファイル配置確認

ls .agent/skills/random-os-fake-power-saving-mode
# 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省エネモード通知を炸裂させてみた! にまとめる予定 (公開準備中の場合あり)。
あわせて Antigravity 公式ドキュメント と、本シリーズ「Antigravityで試したいSkill研究」の他記事も参照のこと。

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

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

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

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