Antigravityで毎回変わる偽OS起動メッセージを楽しむ方法

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

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

Antigravity を日々使っていると、AI coding workflow の中で「またか」と感じる瞬間が多々あります。特に repository understanding や path management に関わる context の扱いでは、思わずため息が出るような場面が繰り返されがちです。通知や演出、OS連携に関する“遊び心”が少ないのも、開発に張りつめた空気をもたらしがちです。

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

こうした悩みは、AI coding agent の強力な repository understanding や memory 機能があっても、実際の開発現場では避けて通れません。特に通知や演出のバリエーションが少ないと、単調な作業が続きがちです。

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

一言サマリ: ターミナルを開くたびにSkill。

このSkillを導入すると、毎回ターミナルやコンソールを開くたびに、現実には存在しない“謎OS”の起動メッセージがランダム表示されます。具体的には以下のようなメリットがあります。

  • Antigravity の session 開始時や repo 切り替え時に、ユニークな OS 演出で気分転換できる
  • onboarding や長時間の workflow でも、遊び心ある通知で単調な作業をリフレッシュできる
  • 毎回異なる context でスタートする感覚を演出し、AI coding workflow のマンネリ化を防ぐ
  • repo や directory の切り替えタイミングで、楽しい“異世界”感を味わえる
  • 実作業やファイルには一切影響せず、純粋な演出として安心して利用できる
QUICK INSTALL
このSkillをすぐ試す

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

npx degit aazutaku/ai-note/antigravity/os-greeting-changer .agent/skills/os-greeting-changer

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

このSkillが入っていると、ターミナルやコンソールを開くだけで「なんだこれ?」と笑える異世界OSメッセージが表示されます。以下は典型的な利用シーン別の出力例です。

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


> antigravity start

[Welcome to Windows 99]
起動中... システムの安定性を保証できません。
C:\projects\my-monorepo> _
(ヒント: このOSは現実には存在しません。)

現在のリポジトリ: my-monorepo/
主要ディレクトリ: packages/, apps/, scripts/

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


> cd packages/core && antigravity resume

Macintosh SE/30が時空を超えて復活しました。
System Folderをスキャン中...
/packages/core ディレクトリを監視しています。

repository understanding 機能が強化されました。

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


> antigravity open

Linuxがコーヒータイム中、しばらくお待ち下さい。
...豆を挽いています...
AI coding workflow を楽しく始めましょう。

対象repo: /workspace/fun-project

before / after の違い

場面 Skill 無し Skill 有り
session 再開時 repo 構造から毎回説明、path も指定し直し Antigravity が自動で context を復元、最小プロンプトで再開
monorepo 移動 違う package のコードを参照しがち directory boundary を意識して必要な範囲だけ見る
長時間 workflow long context で重要箇所が薄まる 遊び心ある演出で workflow の切れ目を明確化

発動方式

description マッチでの暗黙発動。

Skill の中身を全部見せる

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

.agent/skills/os-greeting-changer/
├── SKILL.md
├── scripts/
│   └── os_greeting_changer.py
└── references/
    └── design_notes.md

各ファイルの役割

ファイル 役割
SKILL.md Skill本体。frontmatter (name/description) と指示本文。Antigravity がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します
scripts/os_greeting_changer.py ターミナル起動時に偽OS起動メッセージを表示するスクリプト
references/design_notes.md 概要 をまとめた参考資料

SKILL.md

---
name: os-greeting-changer
description: ターミナルやコンソールが起動した際、または新しいセッション開始時に、現実には存在しないOSや架空の起動メッセージをランダムに表示することで、作業開始時に遊び心を提供します。triggerTypeはalways、semantic-match-onlyで発動。
---

# 機能概要
このSkillは、ターミナルやコンソールを開くたびに、現実には存在しない“偽OS起動メッセージ”をランダムで表示します。例えば「Windows 99 起動中…」や「Macintosh SE/30が時空を超えて復活」など、実際にはありえないOSや謎の起動演出が混ざったメッセージで、日々の作業開始時にちょっとした驚きと笑いを提供します。実用性はありませんが、単調な開発環境に遊び心を注入し、気分転換やチーム内の話題作りに役立ちます。

# 使い方
このSkillは明示的な呼び出し不要で、ターミナルやコンソールが起動するたび、または新規セッション開始時に自動で発動します。暗黙発動キーワード例: "terminal open", "console start", "新しいシェルセッション" など。ユーザー操作やファイルには一切影響しません。

# 出力例
```
[OS Boot] Windows 99 Ultimate Edition 起動中…
[OS Boot] Macintosh SE/30が時空を超えて復活しました。
[OS Boot] Linux 9.99 Coffee Break中。しばらくお待ちください。
[OS Boot] BeOS Hyper Edition: 仮想次元からの帰還。
[OS Boot] Solaris Nebula 起動準備中…
[OS Boot] MS-DOS 10.0が異世界でロードされています。
```

# 注意点
- 本Skillは通知・演出のみを目的としており、ファイルやシステムには一切変更を加えません。
- ログや履歴をローカル保存する機能はありません。
- 実際のOSやシステム起動には影響を与えません。
- 実在しないOS名やジョークメッセージが含まれるため、業務用途や自動化スクリプトには適しません。

# 参考資料
詳細な設計方針や利用例は references/design_notes.md を参照してください。

scripts/os_greeting_changer.py

import sys
import random
import argparse
from datetime import datetime

# 偽OSメッセージ一覧
FAKE_OS_MESSAGES = [
    "[OS Boot] Windows 99 Ultimate Edition 起動中…",
    "[OS Boot] Macintosh SE/30が時空を超えて復活しました。",
    "[OS Boot] Linux 9.99 Coffee Break中。しばらくお待ちください。",
    "[OS Boot] BeOS Hyper Edition: 仮想次元からの帰還。",
    "[OS Boot] Solaris Nebula 起動準備中…",
    "[OS Boot] MS-DOS 10.0が異世界でロードされています。",
    "[OS Boot] Amiga 5000X 幻想モードで起動します。",
    "[OS Boot] OS/2 Warp Infinity Edition 準備完了。",
    "[OS Boot] CP/M 2025 Quantum Edition ロード中…",
    "[OS Boot] Red Star OS 8.8.8 起動中…",
    "[OS Boot] Plan 9 from Bell Labs: 次元転送開始。",
    "[OS Boot] QNX Hypervisor: 仮想宇宙を展開中。",
    "[OS Boot] TempleOS Resurrection 起動します。",
    "[OS Boot] Android 42.0 Nebula Edition 起動準備中。",
    "[OS Boot] iOS 20.2.1 Retro Modeで起動しています。",
    "[OS Boot] FreeBSD 13.37 Unicorn Edition 起動中。",
    "[OS Boot] NetWare 2023起動しています。",
    "[OS Boot] Xenix 3000: タイムトラベルモード起動。",
    "[OS Boot] Haiku OS 5.0が幻想空間でロード中。",
    "[OS Boot] MINIX 10.0: 教育用宇宙OS起動。"
]

LOG_FILE = None  # ログファイルは使わない設計


def print_random_os_message():
    msg = random.choice(FAKE_OS_MESSAGES)
    print(msg)
    return msg

def list_all_messages():
    for idx, msg in enumerate(FAKE_OS_MESSAGES, 1):
        print(f"{idx:2d}: {msg}")

def summary():
    print(f"登録されている偽OSメッセージ数: {len(FAKE_OS_MESSAGES)}")
    print("一例: ")
    for msg in random.sample(FAKE_OS_MESSAGES, min(3, len(FAKE_OS_MESSAGES))):
        print(f"  - {msg}")

def search_messages(keyword):
    found = [msg for msg in FAKE_OS_MESSAGES if keyword.lower() in msg.lower()]
    if not found:
        print(f"キーワード '{keyword}' を含む偽OSメッセージは見つかりませんでした。")
    else:
        for msg in found:
            print(msg)

def main():
    parser = argparse.ArgumentParser(description="ターミナル起動時に偽OS起動メッセージを表示するスクリプト")
    subparsers = parser.add_subparsers(dest='command')

    parser_log = subparsers.add_parser('log', help='ランダムな偽OS起動メッセージを表示 (デフォルト)')
    parser_list = subparsers.add_parser('list', help='全ての偽OS起動メッセージを一覧表示')
    parser_summary = subparsers.add_parser('summary', help='登録されているメッセージの概要を表示')
    parser_search = subparsers.add_parser('search', help='キーワードで偽OSメッセージを検索')
    parser_search.add_argument('keyword', type=str, help='検索キーワード')

    # 引数なしの場合はlog動作
    if len(sys.argv) == 1:
        print_random_os_message()
        sys.exit(0)

    args = parser.parse_args()

    if args.command == 'log':
        print_random_os_message()
    elif args.command == 'list':
        list_all_messages()
    elif args.command == 'summary':
        summary()
    elif args.command == 'search':
        search_messages(args.keyword)
    else:
        parser.print_help()

if __name__ == '__main__':
    main()

references/design_notes.md

# 概要
本Skillは、ターミナルやコンソール起動時に、現実には存在しないOSや架空の起動メッセージをランダムに表示することで、ユーザーに遊び心と驚きを提供します。実際のシステムやファイルには一切影響を与えず、安全性を重視した設計です。

# 公式ドキュメント抜粋
Python 3.6以降の標準ライブラリのみを利用し、外部依存を排除しています。argparseによるCLIサブコマンド構成で、log(ランダム表示)、list(全一覧)、summary(概要)、search(検索)をサポートします。

# 利用例
- ターミナル起動時の自動実行(プロファイルやスクリプト連携)
- チームの朝会やイベントでの話題作り
- 気分転換やジョーク用途

# 注意点
- 実際のOSやシステムには一切影響を与えません。
- ログや履歴はローカル保存されません。
- 実用性はありませんが、演出や通知カテゴリでの利用を推奨します。

# 設計方針
本Skillは「安全・副作用ゼロ・遊び心」を重視し、実行時に一切のシステム変更やファイル操作を行いません。メッセージリストは今後拡張可能です。

導入手順

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

1. 前提

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

2. degit でフォルダ取得

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

npx degit aazutaku/ai-note/antigravity/os-greeting-changer .agent/skills/os-greeting-changer

.agent/skills/os-greeting-changer の中に SKILL.md / scripts/ / references/ / README.md が展開されます。

3. ファイル配置確認

ls .agent/skills/os-greeting-changer
# 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メッセージがランダム表示されるか?
  • 現実には存在しないOSや起動演出が混ざっているか?
  • 実作業やファイルに一切影響しない安全設計か?

実際に Antigravity で試した検証ログは Antigravityで通知・演出・OS連携Skillを試してみた結果 にまとめる予定 (公開準備中の場合あり)。
あわせて Antigravity 公式ドキュメント と、本シリーズ「Antigravityで試したいSkill研究」の他記事も参照のこと。

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

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

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

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