Antigravityで謎の再起動進捗バーを活用する意外な方法

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

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

AI coding workflow を Antigravity で回していると、セッションの切れ目や大規模リポジトリでの作業時に、ちょっとしたストレスや混乱が積み重なりがちです。特に context や repository understanding、path management のズレは、集中力の維持や効率的なやり取りの妨げになりやすいポイントです。
また、長時間の作業や monorepo での directory 跨ぎが多い開発現場では、AIアシスタントとのやり取りそのものが単調になり、気分転換やリセットのきっかけが欲しくなる瞬間もあります。

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

こうした悩みは、AIと人間の「記憶」のギャップや、作業のマンネリ化から生まれるもの。通知・演出・OS連携系のSkillで、意表を突いた刺激やリフレッシュを挟みたいという声も増えています。

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

一言サマリ: このスキルは、Antigravity の作業中に“謎のOS再起動進捗バー”をランダム表示し、意図的に集中力や workflow の流れをリセットする「カオスな演出」を提供します。

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

  • 長時間のAI coding workflowやonboarding時に、意図的な「区切り」や「リセット感」を演出できる
  • repository understandingやcontext切り替えのタイミングで、気分転換や新鮮な視点を挟める
  • 進捗バーや意味深なメッセージで、monorepoやdirectory移動時の単調さを和らげる
  • 「再起動まであと3分」などの通知が、作業に遊び心と緊張感をプラスする
  • 実際のシステムには影響せず、想像力だけがリセットされるので安心して使える
QUICK INSTALL
このSkillをすぐ試す

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

npx degit aazutaku/ai-note/antigravity/random-os-fake-reboot-progressbar .agent/skills/random-os-fake-reboot-progressbar

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

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

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


> このリポジトリの構成を把握して、mainディレクトリのコードから始めて

[OS再起動進捗バー]
再起動準備中... (12%)
終了していないプロセスを検出: scripts/init.sh
memory領域のクリーンアップを開始しています
再起動まで残り 2分45秒

[進捗バー: ▒▒▒▒░░░░░░░░░ 12%]

(作業はそのまま継続可能です)

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


> packages/user-service と packages/payment-service の両方を修正したい

[OS再起動進捗バー]
謎のプロセス終了中... (47%)
packages/user-service のキャッシュを消去
packages/payment-service の依存関係を再構成
全ての directory boundary を再スキャン中
あと1分20秒で全てがリセットされます

[進捗バー: ▒▒▒▒▒▒▒▒▒░░░░ 47%]

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


> ちょっと集中力が切れてきたので何か刺激をください

[OS再起動進捗バー]
意味不明なエラーを検出: context-overflow-42
AI memory 領域を初期化しています
長時間 workflow の疲労を検出、リセット推奨
再起動まで残り 59秒

[進捗バー: ▒▒▒▒▒▒▒▒▒▒▒▒░░ 88%]

before / after の違い

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

発動方式

description マッチでの暗黙発動。

Skill の中身を全部見せる

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

.agent/skills/random-os-fake-reboot-progressbar/
├── SKILL.md
├── scripts/
│   └── fake_reboot_progressbar.py
└── references/
    └── design_notes.md

各ファイルの役割

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

SKILL.md

---
name: random-os-fake-reboot-progressbar
description: 作業が長時間続いたり、集中しすぎているときに『再起動』『リセット』『進捗バー』などのキーワードが含まれる文脈で発動。ユーザーの気分転換やジョーク演出を求める場面で自動的に進捗バーを表示します。
---

# 機能概要
このスキルは、作業中に突然“謎のOS再起動進捗バー”を画面端やメニューバーにランダム表示します。進捗バーは「再起動準備中…」「謎のプロセス終了中…」など、毎回異なる不条理なメッセージとともに進行し、実際には何も再起動されません。ジョークや気分転換、集中しすぎた作業の合間に「全てがリセットされる」かのようなカオスな体験を提供します。

# 使い方
このSkillは明示的なコマンド呼び出しは不要です。文脈に「再起動」「リセット」「進捗バー」「プロセス終了」などのキーワードが現れた際、または長時間の作業や集中状態が続くと自動で発動します。設定により発動頻度や表示位置のカスタマイズも可能です。

# 出力例
```
[==        ] 23% | 謎のプロセス終了中…
[=====     ] 52% | システム設定を初期化中…
[=======   ] 70% | ほぼ完了、あと3分で全てがリセットされます
[==========] 100% | 再起動完了!何も変わりませんでした。
```

# 注意点
本Skillは実際のシステム再起動やプロセス終了などの操作は一切行いません。進捗バーとメッセージの表示のみを行い、ユーザーデータや設定には影響を与えません。ローカルファイルや履歴の保存もありませんが、演出のために一時的に端末や画面端に表示されることがあります。

# 参考資料
- references/design_notes.md に設計方針やユースケースを記載
- 公式Pythonドキュメント: https://docs.python.org/3/library/tkinter.html
- 進捗バーUI参考: https://tqdm.github.io/

scripts/fake_reboot_progressbar.py

import sys
import time
import random
import threading
import argparse
import tkinter as tk
from tkinter import ttk

# ランダムな進捗メッセージ集
MESSAGES = [
    "再起動準備中…",
    "謎のプロセス終了中…",
    "システム設定を初期化中…",
    "メモリを解放しています…",
    "カーネルを再構築中…",
    "未知のエラーを処理中…",
    "仮想デバイスを切断中…",
    "ログを消去しています…",
    "ほぼ完了、あと3分で全てがリセットされます",
    "再起動完了!何も変わりませんでした。"
]

# 進捗バーのウィンドウクラス
def random_message(progress):
    if progress >= 99:
        return MESSAGES[-1]
    idx = min(int(progress / (100 / (len(MESSAGES)-1))), len(MESSAGES)-2)
    base = MESSAGES[idx]
    # 10%ごとにランダムで変化
    if random.random() < 0.3:
        base = random.choice(MESSAGES[:-1])
    return base

class FakeRebootProgressBar:
    def __init__(self, duration=15, position='top_right'):
        self.duration = duration
        self.position = position
        self.root = tk.Tk()
        self.root.overrideredirect(True)
        self.root.attributes('-topmost', True)
        self.root.configure(bg='black')
        self.progress = tk.DoubleVar()
        self.label = tk.Label(self.root, text='', fg='white', bg='black', font=('Consolas', 12))
        self.label.pack(padx=18, pady=(8,2))
        self.bar = ttk.Progressbar(self.root, variable=self.progress, maximum=100, length=320)
        self.bar.pack(padx=18, pady=(0,8))
        self.set_position()
        self.running = True

    def set_position(self):
        self.root.update_idletasks()
        w = self.root.winfo_reqwidth()
        h = self.root.winfo_reqheight()
        sw = self.root.winfo_screenwidth()
        sh = self.root.winfo_screenheight()
        if self.position == 'top_right':
            x = sw - w - 20
            y = 20
        elif self.position == 'bottom_left':
            x = 20
            y = sh - h - 60
        else:
            x = (sw - w) // 2
            y = (sh - h) // 2
        self.root.geometry(f'+{x}+{y}')

    def update_progress(self):
        steps = self.duration * 20
        for i in range(steps + 1):
            if not self.running:
                break
            progress = (i / steps) * 100
            msg = random_message(progress)
            self.progress.set(progress)
            self.label.config(text=f'{msg}')
            self.root.update()
            time.sleep(self.duration / steps)
        self.running = False
        self.root.after(800, self.root.destroy)

    def run(self):
        threading.Thread(target=self.update_progress, daemon=True).start()
        self.root.mainloop()

# CLIサブコマンド

def list_messages():
    print("--- ランダム進捗メッセージ一覧 ---")
    for m in MESSAGES:
        print(f'- {m}')

def main():
    parser = argparse.ArgumentParser(description='謎のOS再起動進捗バーを表示します')
    subparsers = parser.add_subparsers(dest='command')

    parser_run = subparsers.add_parser('run', help='進捗バーを表示')
    parser_run.add_argument('--duration', type=int, default=15, help='進捗バーの表示秒数 (デフォルト: 15)')
    parser_run.add_argument('--position', choices=['top_right', 'bottom_left', 'center'], default='top_right', help='表示位置')

    parser_list = subparsers.add_parser('list', help='進捗メッセージ一覧を表示')

    args = parser.parse_args()

    if args.command == 'run':
        try:
            bar = FakeRebootProgressBar(duration=args.duration, position=args.position)
            bar.run()
        except Exception as e:
            print(f'エラー: {e}')
            sys.exit(1)
    elif args.command == 'list':
        list_messages()
    else:
        parser.print_help()

if __name__ == '__main__':
    main()

references/design_notes.md

# 概要
このSkillは、ユーザーの作業中に突然現れる“謎の再起動進捗バー”で、気分転換やジョークを提供するために設計されています。実際のシステム操作は一切行わず、心理的なリセット感を演出します。

# 公式ドキュメント抜粋
Tkinterを利用してクロスプラットフォームなGUI進捗バーを実装。Python標準ライブラリのみを活用し、外部依存を最小限に抑えています。

# 利用例
- 長時間作業後のリフレッシュ演出
- 「再起動」や「リセット」関連の話題時に自動発動
- オンライン会議やペアプロ時のジョーク

# 注意点
本Skillは進捗バーの表示のみを行い、システムやファイルには一切影響を与えません。Tkinterが利用できる環境でのみ動作します。

# 設計方針
ユーザー体験を損なわず、笑いと驚きの演出を重視。進捗メッセージは毎回ランダム生成され、繰り返しでも飽きない工夫をしています。

導入手順

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

1. 前提

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

2. degit でフォルダ取得

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

npx degit aazutaku/ai-note/antigravity/random-os-fake-reboot-progressbar .agent/skills/random-os-fake-reboot-progressbar

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

3. ファイル配置確認

ls .agent/skills/random-os-fake-reboot-progressbar
# 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をコピーしました!
目次