Antigravityで謎のボス演出を自動化して集中力を高める方法

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

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

Antigravity を日々使い込む中で、ふとした瞬間に「このまま集中しすぎて大丈夫か?」と感じることは珍しくありません。AI coding workflow の効率化が進む一方で、単調な作業や長時間の session が続くと、気分転換やリズムの切り替えが難しいと感じるユーザーも多いはずです。特に通知や演出、OS連携系の仕掛けが少ない環境では、どこか味気なさや“人間らしさ”の欠如に悩む声も聞かれます。

こんな困りごと、思い当たりませんか?

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

さらに、集中しすぎて休憩タイミングを逃したり、作業がマンネリ化して注意力が低下するなど、人間側のパフォーマンス維持も意外と大きな課題です。通知や演出が欲しいけれど、単なるリマインダーでは面白みに欠ける…そんな悩みを持つ方も多いのではないでしょうか。

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

一言サマリ: このスキルは、Antigravity の作業空間に“謎のOSボスキャラ”が突如現れ、意外性と遊び心でユーザーの集中力やリズムをリセットしてくれる Skill。

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

  • AI coding workflow の長時間化や単調化に、突発的な演出でリズム変化と注意喚起をもたらす
  • 作業画面端やデスクトップ上に、毎回ランダムな“OSボスキャラ”とセリフが出現し、マンネリを打破
  • onboarding や session 再開時など、気持ちの切り替えポイントで遊び心ある通知が入ることで、作業ストレスを軽減
  • repo や directory の context 管理に疲れた時も、カオスな演出で気分転換できる
  • Antigravity の通知・演出・OS連携 Skill の中でも、記憶や path 管理とは異なる“人間らしさ”をプラス
QUICK INSTALL
このSkillをすぐ試す

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

npx degit aazutaku/ai-note/antigravity/random-os-mystery-boss-pop .agent/skills/random-os-mystery-boss-pop

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

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

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


# session 開始直後
> 新しいリポジトリで作業を始めたい

[OS BOSS APPEARS!!]
┌─────────────┐
│ 名もなきメモリの魔王が現れた!           │
│ 「貴様の context、すでに忘却の彼方ぞ!」 │
│ 緊急任務: 3分間ストレッチせよ           │
└─────────────┘
(画面右下に謎のボスキャラ画像と共に表示)

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


> packages/api と packages/web を同時に編集したい

[謎のOSボス乱入]
┌─────────────────────────┐
│ ディレクトリの門番・パスバリアー伯爵が出現!       │
│ 「monorepoの境界を超える覚悟はあるか…?」         │
│ 本日は残業魔王も降臨中。勇者よ、休憩を忘れるな!   │
└─────────────────────────┘
(デスクトップ左上に意外なタイミングで通知)

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


> 今日は集中できない、何か刺激が欲しい

[OS BOSS ENCOUNTER!!]
┌──────────────┐
│ カオスOSのバグゴーストが現れた!         │
│ 「無意味な警告: あなたのメモリは無限です」 │
│ 任務: いま深呼吸して魔王を追い払え         │
└──────────────┘
(画面端にカオスな演出と共にポップアップ)

before / after の違い

場面 Skill 無し Skill 有り
session 再開時 repo 構造から毎回説明、path も指定し直し Antigravity が自動で context を復元、最小プロンプトで再開
monorepo 移動 違う package のコードを参照しがち directory boundary を意識して必要な範囲だけ見る
長時間 workflow long context で重要箇所が薄まる 突発的なボス演出でリセット・集中力回復のきっかけ

発動方式

description マッチでの暗黙発動。

Skill の中身を全部見せる

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

.agent/skills/random-os-mystery-boss-pop/
├── SKILL.md
├── scripts/
│   └── random_os_mystery_boss_pop.py
└── references/
    └── design_notes.md

各ファイルの役割

ファイル 役割
SKILL.md Skill本体。frontmatter (name/description) と指示本文。Antigravity がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します
scripts/random_os_mystery_boss_pop.py random-os-mystery-boss-pop: 謎のOSボスキャラが乱入しカオスな命令を出す演出Skill
references/design_notes.md 概要 をまとめた参考資料

SKILL.md

---
name: random-os-mystery-boss-pop
description: 作業中や集中状態、または『ストレッチ』『休憩』『警告』『ボス』『通知』などのキーワードが文脈に現れた際に、AntigravityがこのSkillを発動し、画面端やデスクトップに謎のOSボスキャラ通知をランダム表示します。
---

# 機能概要
このSkillは、作業中のユーザーに突如として“謎のOSボスキャラ”が出現し、カオスな命令や警告を発することで、集中力や気分転換を促す演出を提供します。ボスキャラやセリフは毎回ランダム生成され、通知は画面端やデスクトップに意外性をもって表示されます。業務の合間にユーモラスな体験を挟むことで、過度な集中やストレスの緩和、作業リズムのリセットをサポートします。

# 使い方
このSkillは明示的な呼び出しコマンドはありません。Antigravityが「ストレッチ」「休憩」「警告」「ボス」「通知」などのキーワードや、長時間の作業継続を検出した場合に自動発動します。暗黙的な発動例:
- 例: 「そろそろ休憩したほうがいいかな?」
- 例: 連続作業が1時間を超えた場合

# 出力例
```
[OS BOSS POP]
ボス名: メモリ喰いのガベージ伯爵
任務: 今すぐ椅子から立ち上がり、3回ジャンプせよ!
警告: 本日は残業魔王が降臨中。全プロセスが監視されているぞ。
画面表示位置: 左下

[OS BOSS POP]
ボス名: タスク破壊のクラッシュ女王
任務: コーヒーを淹れて深呼吸せよ!
警告: あなたの集中力ゲージが危険域です。
画面表示位置: 右上
```

# 注意点
- このSkillは通知演出のみで、ファイルやプロセスへの影響はありません。
- ローカル保存や記録は行いません。
- 実行環境によっては通知がOSのネイティブ通知機能に依存する場合があります。
- 業務環境や集中が必要な場面では、意図しないタイミングで表示されることがあります。

# 参考資料
- references/design_notes.md
- https://docs.python.org/ja/3/library/random.html
- https://pypi.org/project/plyer/ (クロスプラットフォーム通知API)

scripts/random_os_mystery_boss_pop.py

import sys
import random
import argparse
import time
from plyer import notification

BOSS_NAMES = [
    'メモリ喰いのガベージ伯爵',
    'タスク破壊のクラッシュ女王',
    '残業魔王デッドライン',
    'CPU暴走のカーネル卿',
    'アップデートの亡霊',
    'バッテリー吸いのヴァンパイア',
    'ネット遮断のファイアウォール将軍',
    'ディスク満杯のアーカイブ巨人',
    'プロセス監視のスパイダー姫',
    'ログ流しのストリーム仙人'
]

MISSIONS = [
    '今すぐ椅子から立ち上がり、3回ジャンプせよ!',
    'コーヒーを淹れて深呼吸せよ!',
    '目を閉じて10秒間リラックスせよ!',
    'ストレッチして肩を回せ!',
    'ウィンドウを最小化して外を眺めよ!',
    '水を一杯飲め!',
    '30秒間スクリーンから目を離せ!',
    '好きなBGMを流して気分転換せよ!',
    'デスク周りを軽く整理せよ!',
    '背筋を伸ばして深呼吸せよ!'
]

WARNINGS = [
    '本日は残業魔王が降臨中。全プロセスが監視されているぞ。',
    'あなたの集中力ゲージが危険域です。',
    'OSの神託:休憩を取らぬ者にバグの雨が降る。',
    'メモリリークの気配を感じる…注意せよ!',
    'バッテリー残量が減少中。充電も忘れずに。',
    'ログが溜まりすぎている。心のログも整理せよ。',
    'クラッシュ女王の呪いが近づいている。',
    'アップデートの亡霊が再起動を狙っている。',
    'タスク破壊の波動を感じる。',
    'プロセス監視のスパイダー姫が見ているぞ。'
]

POSITIONS = [
    '左上', '右上', '左下', '右下', '中央', '画面端', 'デスクトップ中央', 'タスクバー上', '通知エリア', '画面外から乱入'
]


def generate_boss_event():
    boss_name = random.choice(BOSS_NAMES)
    mission = random.choice(MISSIONS)
    warning = random.choice(WARNINGS)
    position = random.choice(POSITIONS)
    return {
        'boss_name': boss_name,
        'mission': mission,
        'warning': warning,
        'position': position
    }

def format_boss_message(event):
    return f"[OS BOSS POP]\nボス名: {event['boss_name']}\n任務: {event['mission']}\n警告: {event['warning']}\n画面表示位置: {event['position']}\n"

def show_notification(event):
    title = f"{event['boss_name']}が現れた!"
    message = f"{event['mission']}\n{event['warning']}"
    # plyer notification はタイトル・メッセージのみ
    notification.notify(
        title=title,
        message=message,
        app_name='OS BOSS POP',
        timeout=10
    )

def log_event(event, logfile=None):
    msg = format_boss_message(event)
    if logfile:
        with open(logfile, 'a', encoding='utf-8') as f:
            f.write(msg + '\n')
    else:
        print(msg)

def list_bosses():
    print('--- 登場可能なボスキャラ一覧 ---')
    for name in BOSS_NAMES:
        print(f'- {name}')

def list_missions():
    print('--- 任務例一覧 ---')
    for mission in MISSIONS:
        print(f'- {mission}')

def list_warnings():
    print('--- 警告例一覧 ---')
    for warning in WARNINGS:
        print(f'- {warning}')

def main():
    parser = argparse.ArgumentParser(description='random-os-mystery-boss-pop: 謎のOSボスキャラが乱入しカオスな命令を出す演出Skill')
    subparsers = parser.add_subparsers(dest='command')

    # popコマンド
    pop_parser = subparsers.add_parser('pop', help='ボスキャラ通知を1回発動')
    pop_parser.add_argument('--log', type=str, help='通知内容を指定ファイルに追記')
    pop_parser.add_argument('--no-notify', action='store_true', help='通知を画面に出さず標準出力のみ')

    # listコマンド
    list_parser = subparsers.add_parser('list', help='ボス/任務/警告の一覧表示')
    list_parser.add_argument('--type', type=str, choices=['boss', 'mission', 'warning'], default='boss', help='一覧種別')

    # summaryコマンド
    summary_parser = subparsers.add_parser('summary', help='Skillの概要・使い方を表示')

    args = parser.parse_args()

    if args.command == 'pop':
        event = generate_boss_event()
        log_event(event, logfile=args.log)
        if not args.no_notify:
            try:
                show_notification(event)
            except Exception as e:
                print(f'通知APIエラー: {e}', file=sys.stderr)
    elif args.command == 'list':
        if args.type == 'boss':
            list_bosses()
        elif args.type == 'mission':
            list_missions()
        elif args.type == 'warning':
            list_warnings()
    elif args.command == 'summary':
        print('random-os-mystery-boss-pop Skill:')
        print('作業中に謎のOSボスキャラが乱入し、カオスな命令や警告をランダム表示。通知演出のみで安全です。')
        print('コマンド例:')
        print('  python random_os_mystery_boss_pop.py pop')
        print('  python random_os_mystery_boss_pop.py list --type=mission')
    else:
        parser.print_help()

if __name__ == '__main__':
    main()

references/design_notes.md

# 概要
random-os-mystery-boss-pop Skillは、作業中のユーザーに意外性と遊び心をもたらすため、OS通知APIを活用して“ボスキャラ”演出をランダム生成・表示します。集中力のリフレッシュや、単調な作業の合間の気分転換を狙っています。

# 公式ドキュメント抜粋
通知APIにはPythonのplyerパッケージを利用し、クロスプラットフォームでネイティブ通知が可能です。
- https://pypi.org/project/plyer/
- https://docs.python.org/ja/3/library/random.html

# 利用例
- 長時間作業時に自動発動し、ユーザーに休憩やストレッチを促す
- チーム内でのリモートワーク時の小ネタ演出
- 業務用PCでのストレス軽減や集中リセット

# 注意点
- 通知は演出目的のみで、ファイルやプロセスには影響しません
- 業務環境での導入時は、意図しないタイミングでの通知に留意してください

# 設計方針
- ボス名・命令・警告・表示位置は毎回ランダム生成
- OS通知APIのみを使用し、環境に依存しない
- ログ保存や一覧表示など、CLIユーティリティとしても利用可能

導入手順

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

1. 前提

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

2. degit でフォルダ取得

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

npx degit aazutaku/ai-note/antigravity/random-os-mystery-boss-pop .agent/skills/random-os-mystery-boss-pop

.agent/skills/random-os-mystery-boss-pop の中に SKILL.md / scripts/ / references/ / README.md が展開されます。

3. ファイル配置確認

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