Antigravity ユーザーが日常でぶつかる悩み
Antigravity を使った AI coding workflow では、集中している最中にふとしたタイミングで緊張感が高まりすぎたり、リポジトリ理解や context 管理の煩雑さにストレスを感じることが多いです。特に monorepo や大規模 repository では、directory や path management の問題が複雑化しがちです。通知や演出系 Skill の不足もあり、ちょっとした気分転換やリフレッシュのタイミングを作りにくいという声もよく聞きます。
- Antigravity が context を見失って違う場所のコードを参照する
- monorepo で package を跨いだ瞬間、Antigravity が repo 構造を忘れる
- session を再開すると、前回までの context や path 指定をまるごと再説明しないといけない
- 長時間 workflow で long context が膨らみすぎて、important な情報が薄まる (stale context)
- 「ここはこういう構造のリポジトリ」というあらすじを毎回チャットの冒頭で書く羽目になる
真面目なやり取りが続く中、ちょっとした遊び心や「なんだこれ?」という演出が欲しくなる瞬間も、実は少なくありません。
この Skill が一言でいうと何を解決するか
一言サマリ: このスキルは、Antigravity の作業画面に「謎のOS進捗バー祭り」を発生させ、集中しすぎた workflow に絶妙な脱力感と遊び心をもたらす通知・演出 Skill。
もう少し具体化すると、このSkillを入れることで以下のような状態になる:
- AI coding workflow の中で、突如ランダムな進捗バーが出現し、作業の緊張感が一瞬で崩壊する
- 「バグ撲滅進捗」「コーヒー摂取量」など意味不明なテーマが毎回変わり、同僚やペア作業者も思わず注目
- repository understanding や path management で煮詰まった瞬間に、気分転換として場の空気を和らげる
- 長時間の session や onboarding 時にも、単調な context 管理に遊びを差し込むことでリフレッシュできる
- 通知・演出・OS連携カテゴリの中でも、ユーモアとカオスを両立した新感覚 Skill を体験できる
GitHub から degit でコマンド1行、Antigravity の Skill ディレクトリに展開できます。Node.js があれば即時に動きます。
npx degit aazutaku/ai-note/antigravity/random-os-mysterious-progressbar-festival .agent/skills/random-os-mysterious-progressbar-festival実行したらこうなる (3つの利用シーン)
使う側がイメージしやすいよう、擬似 terminal で出力例を3パターン示します。
シーン1: session 開始時 (プロジェクト初動で)
> このリポジトリの構造を把握して、作業開始の準備をして
[謎のOS進捗バー祭り 開始]
┌─────────────────────────────┐
│ バグ撲滅進捗 [█████████-----] 73% │
│ コーヒー摂取量 [██████----------] 38% │
│ 脳内会議進行度 [█████████████--] 92% │
│ デプロイ妄想フェーズ [███-------------] 15% │
└─────────────────────────────┘
(※進捗内容は毎回ランダムに変化します)
シーン2: monorepo / package 跨ぎ作業時
> packages/api/ と packages/web/ の依存関係を整理して
[謎のOS進捗バー祭り 発生]
┌─────────────────────────────┐
│ package横断理解度 [███████-------] 54% │
│ コードレビュー熱量 [██████████-----] 68% │
│ 仮想ビルド成功率 [███-------------] 17% │
│ ドキュメント増殖速度 [█████████------] 61% │
└─────────────────────────────┘
(複数のバーが同時に現れ、テーマも毎回異なります)
シーン3: お遊び的な使い方
> 今日はなんだか集中できないな…
[謎のOS進捗バー祭り 開催中]
┌─────────────────────────────┐
│ やる気ゲージ [█████-----------] 31% │
│ Slack未読数 [████████--------] 49% │
│ 昼食妄想タイム [█████████████--] 89% │
│ シンタックスミス率 [██--------------] 9% │
└─────────────────────────────┘
(仕事の緊張感が一瞬でゆるみます)
before / after の違い
| 場面 | Skill 無し | Skill 有り |
|---|---|---|
| session 再開時 | repo 構造から毎回説明、path も指定し直し | Antigravity が自動で context を復元、最小プロンプトで再開 |
| monorepo 移動 | 違う package のコードを参照しがち | directory boundary を意識して必要な範囲だけ見る |
| 長時間 workflow | long context で重要箇所が薄まる | 進捗バー演出でリフレッシュ、集中力を取り戻せる |
発動方式
description マッチでの暗黙発動。
Skill の中身を全部見せる
.agent/skills/random-os-mysterious-progressbar-festival/ に配置するファイル一覧です。GitHub に push 済みなので、上記の degit コマンドで一発取得できます。
.agent/skills/random-os-mysterious-progressbar-festival/
├── SKILL.md
├── scripts/
│ └── mysterious_progressbar_festival.py
└── references/
└── design_notes.md
各ファイルの役割
| ファイル | 役割 |
|---|---|
SKILL.md |
Skill本体。frontmatter (name/description) と指示本文。Antigravity がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します |
scripts/mysterious_progressbar_festival.py |
謎のOS進捗バー祭りスクリプト |
references/design_notes.md |
概要 をまとめた参考資料 |
SKILL.md
---
name: random-os-mysterious-progressbar-festival
description: Antigravity がターミナル/エディタでコマンド実行やファイル保存などの操作を検知した際、「進捗」「バグ」「会議」などのキーワードを含む場合に自動発動。複数のランダムな進捗バーを画面端に表示し、作業中の緊張を和らげます。
---
# 機能概要
このSkillは、あなたの作業中に突如として“謎のOS進捗バー祭り”を発生させます。進捗バーは「バグ撲滅進捗」「コーヒー摂取量」「脳内会議進行度」など意味不明なテーマで、進捗内容も毎回ランダム。複数バーが同時に現れ、何の進捗なのか全く分からないカオスな演出が特徴です。作業の緊張感を一瞬で和らげ、チームの雰囲気を和ませるために設計されています。
# 使い方
このSkillは明示的な呼び出しは不要です。Antigravityが「進捗」「バグ」「会議」「進行」「完了」などのキーワードを含むコマンド実行やファイル保存イベントを検知すると、自動的に発動します。例えば `git commit` や `make build`、またはエディタでの保存操作などが該当します。
# 出力例
```
[バグ撲滅進捗] [███████████-----] 73%
[コーヒー摂取量] [█████--------] 42%
[脳内会議進行度] [█████████-----] 65%
[謎のOS再起動率] [███-----------] 18%
[タスク消滅確率] [███████████---] 81%
```
# 注意点
- 進捗バーのテーマ・進捗値は完全ランダムです。
- ローカル端末のみに描画され、外部には保存されません。
- 進捗バーは一定時間(約10秒)で自動消去されます。
- 本Skillは通知・演出用途であり、実際のOSやプロジェクト進捗とは無関係です。
# 参考資料
- references/design_notes.md に設計方針や利用例を記載
- 公式Python標準ライブラリ: https://docs.python.org/3/library/random.html, https://docs.python.org/3/library/argparse.html
scripts/mysterious_progressbar_festival.py
import sys
import time
import random
import argparse
import threading
from shutil import get_terminal_size
PROGRESS_THEMES = [
"バグ撲滅進捗",
"コーヒー摂取量",
"脳内会議進行度",
"謎のOS再起動率",
"タスク消滅確率",
"仕様理解度",
"デバッグ迷宮度",
"やる気残量",
"CPU空想率",
"Slack未読消化率",
"コミット祭り進行度",
"会議無駄度",
"メモリ妄想量",
"進捗詐称率"
]
BAR_LENGTH = 20
DISPLAY_TIME = 10 # 秒
class MysteriousProgressBar:
def __init__(self, theme, value):
self.theme = theme
self.value = value # 0-100
def render(self):
filled = int(self.value / 100 * BAR_LENGTH)
bar = '█' * filled + '-' * (BAR_LENGTH - filled)
return f"[{self.theme.ljust(10)}] [{bar}] {str(self.value).rjust(3)}%"
def random_progress_bars(n=None):
themes = random.sample(PROGRESS_THEMES, k=n or random.randint(3, 7))
bars = []
for t in themes:
value = random.randint(10, 99)
bars.append(MysteriousProgressBar(t, value))
return bars
def print_bars(bars):
# 端末幅に合わせて整形
width = get_terminal_size((80, 20)).columns
for bar in bars:
line = bar.render()
if len(line) > width:
line = line[:width-1]
print(line)
def clear_lines(num):
# ANSIエスケープで上書き消去
for _ in range(num):
sys.stdout.write('\033[F') # カーソルを上へ
sys.stdout.write('\033[K') # 行消去
sys.stdout.flush()
def festival_once(n=None, sleep_time=DISPLAY_TIME):
bars = random_progress_bars(n)
print_bars(bars)
sys.stdout.flush()
time.sleep(sleep_time)
clear_lines(len(bars))
def festival_loop(interval=60, duration=600):
# duration秒間、intervalごとに発動
start = time.time()
while time.time() - start < duration:
n = random.randint(3, 7)
festival_once(n, sleep_time=DISPLAY_TIME)
time.sleep(interval - DISPLAY_TIME)
def cli():
parser = argparse.ArgumentParser(description="謎のOS進捗バー祭りスクリプト")
subparsers = parser.add_subparsers(dest='command')
p_once = subparsers.add_parser('once', help='1回だけ進捗バーを表示')
p_once.add_argument('-n', '--num', type=int, help='表示するバーの数')
p_once.add_argument('-t', '--time', type=int, default=DISPLAY_TIME, help='表示秒数')
p_loop = subparsers.add_parser('festival', help='一定間隔で進捗バー祭り')
p_loop.add_argument('-i', '--interval', type=int, default=60, help='祭り間隔(秒)')
p_loop.add_argument('-d', '--duration', type=int, default=600, help='全体の持続時間(秒)')
args = parser.parse_args()
if args.command == 'once':
festival_once(n=args.num, sleep_time=args.time)
elif args.command == 'festival':
festival_loop(interval=args.interval, duration=args.duration)
else:
parser.print_help()
if __name__ == '__main__':
try:
cli()
except KeyboardInterrupt:
print("\n[進捗バー祭り] 中断されました")
references/design_notes.md
# 概要
このSkillは、作業中に突如として意味不明な進捗バーを複数表示し、OSやプロジェクトの進捗とは無関係なカオス演出を提供します。主に作業現場の雰囲気緩和や、チーム内のコミュニケーション促進を目的としています。
# 公式ドキュメント抜粋
- Python random: https://docs.python.org/3/library/random.html
- Python argparse: https://docs.python.org/3/library/argparse.html
- 端末制御: https://docs.python.org/3/library/shutil.html#get-terminal-size
# 利用例
- ターミナルで `python mysterious_progressbar_festival.py once` を実行すると、ランダムな進捗バーが数秒間表示されます。
- `festival` サブコマンドで、一定間隔ごとに自動で進捗バーが発生します。
# 注意点
- 実際の進捗やOS状態とは一切関係ありません。
- 進捗バーはローカル端末上のみ一時的に表示され、外部保存や送信は行いません。
- 端末の幅によってはバーが自動で切り詰められます。
# 設計方針
- シンプルなCLI構成で、スクリプト単体で完結。
- テーマ・進捗値は毎回完全ランダム。
- ユーザー体験重視のカオス演出と、容易な拡張性を両立。
導入手順
このSkillは GitHub で管理されているので、degit を使えば必要なフォルダだけを1コマンドで取得できます。Antigravity はファイル配置後に再起動するだけで自動認識します。
1. 前提
- Node.js v16 以上 (
degit実行に必要) - Antigravity がローカルで動いていること
2. degit でフォルダ取得
プロジェクトのルートで以下のコマンドを実行します。
npx degit aazutaku/ai-note/antigravity/random-os-mysterious-progressbar-festival .agent/skills/random-os-mysterious-progressbar-festival
.agent/skills/random-os-mysterious-progressbar-festival の中に SKILL.md / scripts/ / references/ / README.md が展開されます。
3. ファイル配置確認
ls .agent/skills/random-os-mysterious-progressbar-festival
# 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-30分で簡単に実装できるか?
実際に Antigravity で試した検証ログは Antigravityで通知・演出・OS連携Skillを試してみた結果 にまとめる予定 (公開準備中の場合あり)。
あわせて Antigravity 公式ドキュメント と、本シリーズ「Antigravityで試したいSkill研究」の他記事も参照のこと。
関連タグで他のSkill記事を探す
本記事に付いているタグから、気になるテーマの記事を探せます。タグページで関連記事をまとめて読めるので、ぜひチェックしてみてください!
