Antigravity ユーザーが日常でぶつかる悩み
AI coding workflow を日々回していると、Antigravity の context 管理や repo の理解にまつわる細かなストレスが積み重なります。特に、monorepo のような巨大な repository を扱う現場では、path management や directory 境界の説明が煩雑になりがちです。また、session 再開や長時間作業のたびに、AI に repository understanding を促す儀式的なやりとりが繰り返されます。
- Antigravity が context を見失って違う場所のコードを参照する
- monorepo で package を跨いだ瞬間、Antigravity が repo 構造を忘れる
- session を再開すると、前回までの context や path 指定をまるごと再説明しないといけない
- 長時間 workflow で long context が膨らみすぎて、important な情報が薄まる (stale context)
- 「ここはこういう構造のリポジトリ」というあらすじを毎回チャットの冒頭で書く羽目になる
加えて、毎回同じような起動や説明が続くことで、作業開始時のテンションが単調になりがちです。通知や演出でちょっとした変化や遊び心を挟みたい瞬間もあるはずです。
この Skill が一言でいうと何を解決するか
一言サマリ: ターミナルやエディタを起動するたびにSkill。
もう少し具体化すると、このSkillを入れることで以下のような状態になる:
- Antigravity の session 開始や repo 読み込み時に、毎回異なる「偽OS起動画面」テキストアニメーションが流れ、作業前の一瞬に遊び心と未来感を演出できる
- 長時間の AI coding workflow でも、起動ごとに新しい context でリフレッシュした気分になれる
- onboarding や session 再開時の「また同じ始まり」感を払拭し、記憶に残る体験を作る
- directory や repository の構造理解を促すきっかけとして、非日常的な演出で注目を集める
- Skill の出力が完全に無駄なので、AI の creative な側面を気軽に楽しめる
GitHub から degit でコマンド1行、Antigravity の Skill ディレクトリに展開できます。Node.js があれば即時に動きます。
npx degit aazutaku/ai-note/antigravity/random-os-startup-movie .agent/skills/random-os-startup-movie実行したらこうなる (3つの利用シーン)
使う側がイメージしやすいよう、擬似 terminal で出力例を3パターン示す。Skill が返す出力は推測だが、現実的なフォーマット・現実的な長さで書く。
シーン1: session 開始時 (プロジェクト初動で)
> プロジェクトを開いてAIに指示を出す
[Antigravity 3000 OS - 起動シーケンス開始]
> 仮想メモリを拡張中...
> /src/agent/skills/ ディレクトリをスキャン中...
> "Repository Hyper-Contextualization" モジュールをロード
> ビットを配置しています...
> 起動進捗: [███████-----] 67%
> AIを目覚めさせています...
> 完了: Antigravity 3000 OS が起動しました
シーン2: monorepo / package 跨ぎ作業時
> packages/core/ から packages/ui/ に移動
[Windows 11.5 Professional - Boot Sequence]
> context: packages/ui/ を初期化中...
> Directory boundary を再構築しています
> "Monorepo Navigator" を起動
> 仮想パス /repo/packages/ui/ をマウント中...
> 進捗: [█████-------] 45%
> 不明なAIプロセスを検出: "Codex Limited Edition"
> 起動完了
シーン3: お遊び的な使い方
> 今日もAIコーディング開始
[QuantumOS vX.99 Ultra - 起動中...]
> ディレクトリ構造をパズル化しています...
> "Stale Context Cleaner" を起動
> メモリをランダム化中...
> 進捗バー: [██████████] 100%
> あなたのAIコーディングワークフローを未来へ転送します
> 起動完了 - ありえない世界へようこそ
before / after の違い
| 場面 | Skill 無し | Skill 有り |
|---|---|---|
| session 再開時 | repo 構造から毎回説明、path も指定し直し | Antigravity が自動で context を復元、最小プロンプトで再開 |
| monorepo 移動 | 違う package のコードを参照しがち | directory boundary を意識して必要な範囲だけ見る |
| 長時間 workflow | long context で重要箇所が薄まる | 起動ごとにリフレッシュ感を演出、集中力を維持 |
発動方式
description マッチでの暗黙発動。
Skill の中身を全部見せる
.agent/skills/random-os-startup-movie/ に配置するファイル一覧です。GitHub に push 済みなので、上記の degit コマンドで一発取得できます。
.agent/skills/random-os-startup-movie/
├── SKILL.md
├── scripts/
│ └── random_os_startup_movie.py
└── references/
└── design_notes.md
各ファイルの役割
| ファイル | 役割 |
|---|---|
SKILL.md |
Skill本体。frontmatter (name/description) と指示本文。Antigravity がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します |
scripts/random_os_startup_movie.py |
random-os-startup-movie: 毎回違う架空OS起動画面を演出 |
references/design_notes.md |
概要 をまとめた参考資料 |
SKILL.md
---
name: random-os-startup-movie
description: ターミナルやエディタの起動・再起動・新規ウィンドウ作成時など、セッションの開始を検知した際に発動します。キーワード: 起動, スタートアップ, セッション開始, ターミナル, エディタ。
---
# 機能概要
このSkillは、ターミナルやエディタの起動時に毎回“偽のOS起動画面”をテキストアニメーションとして表示します。表示される内容は毎回異なり、実在しないOS名(例: Windows 11.5, Antigravity 3000, QuantumOS X)や、ありえない進捗メッセージ(例: ビットを配置中, AIを目覚めさせています, 宇宙的セキュリティを検証中)など、完全に架空の未来感と謎の緊張感を演出します。作業の前に一瞬だけ非日常を楽しみたい、実用性ゼロの“無駄演出”を求める方に最適です。
# 使い方
このSkillはターミナルやエディタのセッション開始時(新しいウィンドウ/タブのオープンや再起動時)に自動で発動します。明示的な呼び出しは不要です。暗黙の発動キーワード: "起動", "スタートアップ", "セッション開始", "新規ウィンドウ" など。
# 出力例
```
[Antigravity 3000 Ultimate Edition 起動中...]
■■■■□□□□□□ (38%)
AIを目覚めさせています...
量子ビットの再配置中...
全銀河ネットワークとの同期を確認...
起動完了。ようこそ、未来へ。
```
```
[Codex Limited Edition OS 起動準備]
■□□□□□□□□□ (9%)
ビットを配置中...
自己修復モジュールを展開中...
意味不明なプロセスを初期化中...
起動に成功しました。
```
# 注意点
- 完全な演出目的であり、実用的な情報やシステム操作は一切行いません。
- 出力内容は毎回ランダム生成され、現実のOSやシステムとは無関係です。
- ローカルにログ等は保存しません。
- 除外パス: システム管理系や本番運用環境では自動発動しないよう設計されています。
# 参考資料
詳細な設計方針やサンプルコードは references/design_notes.md を参照してください。Pythonの標準ライブラリのみで動作し、外部APIやネットワーク通信は行いません。
scripts/random_os_startup_movie.py
import sys
import time
import random
import argparse
OS_NAMES = [
"Antigravity 3000 Ultimate Edition",
"Windows 11.5 Quantum",
"Codex Limited Edition OS",
"QuantumOS X Hyperdrive",
"Nebula Linux 9.9",
"SingularityOS Pro",
"AI DreamOS 42",
"Bitfield OS Mirage",
"HyperloopOS Next",
"MetaKernel Infinity"
]
PROGRESS_MESSAGES = [
"ビットを配置中...",
"AIを目覚めさせています...",
"量子ビットの再配置中...",
"自己修復モジュールを展開中...",
"意味不明なプロセスを初期化中...",
"宇宙的セキュリティを検証中...",
"全銀河ネットワークとの同期を確認...",
"次元間インターフェースを起動中...",
"エントロピーを最適化中...",
"パラレルワールドアクセス権を取得中..."
]
FINAL_MESSAGES = [
"起動完了。ようこそ、未来へ。",
"起動に成功しました。",
"あなたのセッションは今、始まります。",
"全システム正常。作業開始可能です。",
"Welcome to the Impossible."
]
PROGRESS_BAR_STYLES = [
("■", "□"),
("█", "░"),
("#", "-"),
("●", "○")
]
def random_os_name():
return random.choice(OS_NAMES)
def random_progress_style():
return random.choice(PROGRESS_BAR_STYLES)
def random_progress_messages(n):
return random.sample(PROGRESS_MESSAGES, k=n)
def random_final_message():
return random.choice(FINAL_MESSAGES)
def print_progress_bar(percent, filled, empty, length=10):
filled_len = int(percent * length)
empty_len = length - filled_len
bar = filled * filled_len + empty * empty_len
print(f"{bar} ({int(percent*100)}%)")
def animate_startup():
os_name = random_os_name()
style = random_progress_style()
n_msgs = random.randint(3, 5)
messages = random_progress_messages(n_msgs)
final_msg = random_final_message()
print(f"[{os_name} 起動中...]")
steps = n_msgs + 1
for i, msg in enumerate(messages):
percent = (i+1)/steps
print_progress_bar(percent, style[0], style[1])
print(msg)
time.sleep(random.uniform(0.3, 0.8))
print_progress_bar(1.0, style[0], style[1])
print(final_msg)
# CLIサブコマンド
def main():
parser = argparse.ArgumentParser(description='random-os-startup-movie: 毎回違う架空OS起動画面を演出')
subparsers = parser.add_subparsers(dest='command')
show_parser = subparsers.add_parser('show', help='架空OS起動画面を1回表示')
batch_parser = subparsers.add_parser('batch', help='指定回数だけ連続表示')
batch_parser.add_argument('-n', '--number', type=int, default=3, help='表示回数')
list_parser = subparsers.add_parser('list', help='利用可能なOS名や進捗メッセージ一覧を表示')
args = parser.parse_args()
if args.command == 'show' or args.command is None:
try:
animate_startup()
except KeyboardInterrupt:
print("\nキャンセルされました。")
elif args.command == 'batch':
try:
for _ in range(args.number):
animate_startup()
print("\n---\n")
time.sleep(0.5)
except KeyboardInterrupt:
print("\nキャンセルされました。")
elif args.command == 'list':
print("利用可能なOS名:")
for name in OS_NAMES:
print(f" - {name}")
print("\n進捗メッセージ:")
for msg in PROGRESS_MESSAGES:
print(f" - {msg}")
print("\n終了メッセージ:")
for msg in FINAL_MESSAGES:
print(f" - {msg}")
else:
parser.print_help()
if __name__ == '__main__':
main()
references/design_notes.md
# 概要
random-os-startup-movie Skillは、ターミナルやエディタの起動時に毎回異なる“偽OS起動画面”をテキストで演出することを目的としています。ユーザーの日常作業に無駄な未来感や緊張感を加える、完全にエンターテインメント志向のSkillです。
# 公式ドキュメント抜粋
このSkillはPythonの標準ライブラリのみで構成され、外部APIやネットワーク通信は一切行いません。CLIサブコマンドとして `show`(1回表示)、`batch`(複数回表示)、`list`(利用可能なOS名や進捗メッセージの一覧表示)をサポートします。
# 利用例
- ターミナル起動時の自動演出
- チームメンバーへの“未来的なジョーク”として
- 作業前の気分転換やアイスブレイク
# 注意点
現実のOSやシステムには一切影響を与えません。演出内容は完全に架空であり、実用的な機能はありません。ログや履歴も残しません。
# 設計方針
毎回異なる内容を生成するため、OS名・進捗メッセージ・進捗バー・終了メッセージをランダムに組み合わせています。演出の“無駄さ”と“未来感”を重視し、実用性は意図的に排除しています。
導入手順
このSkillは GitHub で管理されているので、degit を使えば必要なフォルダだけを1コマンドで取得できます。Antigravity はファイル配置後に再起動するだけで自動認識します。
1. 前提
- Node.js v16 以上 (
degit実行に必要) - Antigravity がローカルで動いていること
2. degit でフォルダ取得
プロジェクトのルートで以下のコマンドを実行します。
npx degit aazutaku/ai-note/antigravity/random-os-startup-movie .agent/skills/random-os-startup-movie
.agent/skills/random-os-startup-movie の中に SKILL.md / scripts/ / references/ / README.md が展開されます。
3. ファイル配置確認
ls .agent/skills/random-os-startup-movie
# 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 でも有効か?
- プロジェクト指示との連携をどう組み立てるか?
- 起動時に毎回テキスト演出がランダム生成されるか?
- OS名や進捗内容が本当に現実離れしているか?
- 実用性がほぼゼロであることを許容できるか?
実際に Antigravity で試した検証ログは Antigravityの起動時に毎回変わる偽OS起動画面を試してみた! にまとめる予定 (公開準備中の場合あり)。
あわせて Antigravity 公式ドキュメント と、本シリーズ「Antigravityで試したいSkill研究」の他記事も参照のこと。
関連タグで他のSkill記事を探す
本記事に付いているタグから、気になるテーマの記事を探せます。タグページで関連記事をまとめて読めるので、ぜひチェックしてみてください!
