Antigravity ユーザーが日常でぶつかる悩み
Antigravity を日々使っていると、AI coding workflow の中で「またか」と感じる通知や演出まわりの小さなストレスが溜まりがちです。context や repository understanding をうまく保ちたいのに、ちょっとしたきっかけで流れが途切れたり、path management が煩雑になったりすることも多いでしょう。特に monorepo 環境や複雑な directory 構成では、意図せず workflow のリズムが崩れる瞬間がよくあります。
- Antigravity が context を見失って違う場所のコードを参照する
- monorepo で package を跨いだ瞬間、Antigravity が repo 構造を忘れる
- session を再開すると、前回までの context や path 指定をまるごと再説明しないといけない
- 長時間 workflow で long context が膨らみすぎて、important な情報が薄まる (stale context)
- 「ここはこういう構造のリポジトリ」というあらすじを毎回チャットの冒頭で書く羽目になる
また、「今、どんな状況なんだっけ?」という緊張感が続くと、ふとした瞬間に気分転換したくなることも。そんな時、ちょっとした演出や通知で場の空気を和らげてくれる仕掛けが欲しくなるのは多くのユーザーに共通する感覚です。
この Skill が一言でいうと何を解決するか
一言サマリ: このスキルは、作業中の画面端やメニューバーに“謎の気分天気バー”を突如出現させ、Antigravity の堅苦しいAI coding workflowに遊び心を注入します。
もう少し具体化すると、このSkillを入れることで以下のような状態になります:
- 気分や集中力の“天気”がランダムに可視化され、作業環境が一瞬でカオスに彩られる
- repo や directory の context 切り替え時に、意味不明な天気演出で場の雰囲気をリセットできる
- onboarding や session 再開時に、思わず笑ってしまう演出でコミュニケーションが円滑になる
- 長時間の workflow でも、唐突な天気バーが気分転換や会話のきっかけになる
- Skill の導入だけで、Antigravity の通知・演出体験にユーモアが加わる
GitHub から degit でコマンド1行、Antigravity の Skill ディレクトリに展開できます。Node.js があれば即時に動きます。
npx degit aazutaku/ai-note/antigravity/os-fake-mood-weather-bar .agent/skills/os-fake-mood-weather-bar実行したらこうなる (3つの利用シーン)
使う側がイメージしやすいよう、擬似 terminal で出力例を3パターン示します。
シーン1: session 開始時 (プロジェクト初動で)
# 新しいリポジトリで作業開始
> プロジェクトの初期化をお願い
[OS風・気分天気バー]
本日の気分天気: 絶好調・晴れ
集中力指数: 98
バグ発生確率: 10%
コメント: 「今日はエラーも気にならない快晴です!」
作業ディレクトリ: /Users/example/project
repository: ai-note/antigravity
シーン2: monorepo / package 跨ぎ作業時
> packages/api/ と packages/web/ を同時に編集したい
[OS風・気分天気バー]
気分天気: バグの嵐
やる気霧雨: 断続的
集中力: 台風接近中
コメント: 「monorepo の境界で天候急変、注意!」
現在の directory: packages/api/
repository: ai-note/antigravity (monorepo)
シーン3: お遊び的な使い方
> 今日はなんだかやる気が出ません
[OS風・気分天気バー]
本日の気分天気: 仕様雪崩
やる気指数: -15
注意報: 仕様追加の恐れあり
コメント: 「今日は無理せずコーヒーブレイクをおすすめします!」
directory: /Users/example/project
before / after の違い
| 場面 | Skill 無し | Skill 有り |
|---|---|---|
| session 再開時 | repo 構造から毎回説明、path も指定し直し | Antigravity が自動で context を復元、最小プロンプトで再開 |
| monorepo 移動 | 違う package のコードを参照しがち | directory boundary を意識して必要な範囲だけ見る |
| 長時間 workflow | long context で重要箇所が薄まる | 気分天気バーで場の空気をリセット、集中し直せる |
発動方式
description マッチでの暗黙発動。
Skill の中身を全部見せる
.agent/skills/os-fake-mood-weather-bar/ に配置するファイル一覧です。GitHub に push 済みなので、上記の degit コマンドで一発取得できます。
.agent/skills/os-fake-mood-weather-bar/
├── SKILL.md
├── scripts/
│ └── os_fake_mood_weather_bar.py
└── references/
└── design_notes.md
各ファイルの役割
| ファイル | 役割 |
|---|---|
SKILL.md |
Skill本体。frontmatter (name/description) と指示本文。Antigravity がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します |
scripts/os_fake_mood_weather_bar.py |
OS風・謎の気分天気バー |
references/design_notes.md |
概要 をまとめた参考資料 |
SKILL.md
---
name: os-fake-mood-weather-bar
description: Antigravityが「気分」「天気」「集中力」「やる気」などのワードや、作業進捗・休憩提案・気分転換に関する文脈を検知した際、自動的に“謎の気分天気バー”を画面端やメニューバーに表示します。通知・演出系Skillと重複しないよう注意しつつ、主に作業中やコード実行時に発動します。
---
# 機能概要
本Skillは、ユーザーの作業環境に“OS風・謎の気分天気バー”を突如出現させる演出系ツールです。気分や作業状況を天気に見立てたカオスなワード(例:絶好調・晴れ、やる気霧雨、集中力台風接近中、バグの嵐、仕様雪崩など)を完全ランダムに生成し、画面端やメニューバーに表示します。実用性はありませんが、職場や自宅での作業中に唐突な“気分天気”演出で場の空気を和ませたり、話題のきっかけを生み出します。
# 使い方
このSkillは明示的な呼び出しを必要とせず、Antigravityが「気分」「天気」「やる気」「集中力」「バグ」などのキーワードや、進捗・休憩・雑談を検知した際に自動発動します。設定やトリガーのカスタマイズは不要です。他の通知・演出系Skillと同時利用する場合は、競合しないように注意してください。
# 出力例
```
[OS風・気分天気バー]
本日の気分: 仕様雪崩
集中力: 台風接近中
やる気: 霧雨
バグ状況: 嵐
[OS風・気分天気バー]
本日の気分: 絶好調・晴れ
集中力: 快晴
やる気: そよ風
バグ状況: なし
```
# 注意点
- 本Skillは実用的な通知や進捗管理を目的としません。
- ローカル環境でのみ動作し、外部サーバーへのデータ送信等は行いません。
- 他の通知・演出系Skillと同時に使用する場合、表示位置の競合に注意してください。
- 表示内容は完全ランダムで、意味や精度は保証されません。
# 参考資料
- [Antigravity Skill開発ガイド](https://ai-note.tech/docs/antigravity-skill-guide)
- references/design_notes.md 参照
scripts/os_fake_mood_weather_bar.py
import sys
import argparse
import random
import time
import threading
import tkinter as tk
from tkinter import ttk
MOODS = [
'絶好調・晴れ', 'やる気霧雨', '集中力台風接近中', 'バグの嵐', '仕様雪崩',
'快晴', 'そよ風', '曇り時々バグ', 'やる気暴風雨', '集中力逆風',
'仕様前線通過', 'バグ雷', 'やる気落雷', '集中力熱帯夜', '仕様みぞれ',
'バグの小雨', 'やる気吹雪', '集中力乾燥注意報', '仕様霧', 'バグ竜巻'
]
CONCENTRATIONS = [
'快晴', '台風接近中', '霧雨', '嵐', 'そよ風', '曇り', '暴風雨', '逆風',
'熱帯夜', 'みぞれ', '小雨', '吹雪', '乾燥注意報', '霧', '竜巻'
]
MOTIVATIONS = [
'絶好調', 'やる気霧雨', 'やる気暴風雨', 'やる気落雷', 'やる気吹雪', 'そよ風',
'やる気逆風', 'やる気快晴', 'やる気曇り', 'やる気みぞれ', 'やる気小雨'
]
BUGS = [
'なし', '嵐', 'バグの小雨', 'バグの嵐', 'バグ雷', 'バグ竜巻', 'バグみぞれ',
'バグ吹雪', 'バグ前線', 'バグ霧', 'バグ乾燥注意報'
]
SPEC = [
'仕様雪崩', '仕様前線通過', '仕様みぞれ', '仕様霧', '仕様快晴', '仕様嵐'
]
BAR_TITLE = 'OS風・気分天気バー'
class MoodWeatherBar(tk.Tk):
def __init__(self, duration=10, position='top', width=400, height=80):
super().__init__()
self.duration = duration
self.width = width
self.height = height
self.position = position
self.overrideredirect(True)
self.attributes('-topmost', True)
self.resizable(False, False)
self.configure(bg='#222222')
self._set_position()
self._create_widgets()
self.after(int(self.duration * 1000), self.destroy)
def _set_position(self):
self.update_idletasks()
screen_width = self.winfo_screenwidth()
screen_height = self.winfo_screenheight()
x = (screen_width - self.width) // 2
if self.position == 'top':
y = 0
elif self.position == 'bottom':
y = screen_height - self.height
else:
y = 0
self.geometry(f'{self.width}x{self.height}+{x}+{y}')
def _create_widgets(self):
frame = tk.Frame(self, bg='#222222')
frame.pack(fill=tk.BOTH, expand=True)
title = tk.Label(frame, text=BAR_TITLE, fg='#ffffff', bg='#222222', font=('Meiryo', 14, 'bold'))
title.pack(pady=(10, 0))
mood = random.choice(MOODS + SPEC)
concentration = random.choice(CONCENTRATIONS)
motivation = random.choice(MOTIVATIONS)
bug = random.choice(BUGS)
labels = [
f'本日の気分: {mood}',
f'集中力: {concentration}',
f'やる気: {motivation}',
f'バグ状況: {bug}'
]
for text in labels:
lbl = tk.Label(frame, text=text, fg='#e0e0e0', bg='#222222', font=('Meiryo', 12))
lbl.pack(anchor='w', padx=24)
def show_bar(duration=10, position='top'):
app = MoodWeatherBar(duration=duration, position=position)
app.mainloop()
def cli_main():
parser = argparse.ArgumentParser(description='OS風・謎の気分天気バー')
subparsers = parser.add_subparsers(dest='command')
show_parser = subparsers.add_parser('show', help='気分天気バーを表示')
show_parser.add_argument('--duration', type=int, default=10, help='表示秒数 (デフォルト10秒)')
show_parser.add_argument('--position', choices=['top', 'bottom'], default='top', help='画面端 (top/bottom)')
list_parser = subparsers.add_parser('list', help='気分天気ワード一覧を表示')
summary_parser = subparsers.add_parser('summary', help='ランダムな気分天気出力例')
summary_parser.add_argument('--count', type=int, default=3, help='出力例の個数')
args = parser.parse_args()
if args.command == 'show':
show_bar(duration=args.duration, position=args.position)
elif args.command == 'list':
print('気分天気ワード:')
for w in set(MOODS + CONCENTRATIONS + MOTIVATIONS + BUGS + SPEC):
print('-', w)
elif args.command == 'summary':
for i in range(args.count):
print(f'[{BAR_TITLE}]')
print(f'本日の気分: {random.choice(MOODS + SPEC)}')
print(f'集中力: {random.choice(CONCENTRATIONS)}')
print(f'やる気: {random.choice(MOTIVATIONS)}')
print(f'バグ状況: {random.choice(BUGS)}')
print()
else:
parser.print_help()
if __name__ == '__main__':
cli_main()
references/design_notes.md
# 概要
本Skillは、作業環境に遊び心を加えるための演出系ツールです。気分や作業状況を天気になぞらえ、完全ランダムなワードで“OS風バー”を表示します。Tkinterを用いクロスプラットフォームで動作します。
# 公式ドキュメント抜粋
- [Tkinter 公式リファレンス](https://docs.python.org/ja/3/library/tkinter.html)
- [Antigravity Skill開発ガイド](https://ai-note.tech/docs/antigravity-skill-guide)
# 利用例
- 仕事や勉強の合間に気分転換として表示
- オンライン会議やペアプロ時の話題作り
- コード実行時の演出や、休憩提案のきっかけ
# 注意点
- 実用的な通知や進捗管理は行いません
- 他の通知系Skillと同時利用時は競合に注意
- 表示内容の意味や精度は保証されません
# 設計方針
- 完全ランダム生成でカオス感を演出
- ローカル実行のみ、外部通信なし
- シンプルなUIと最小限の依存関係
導入手順
このSkillは GitHub で管理されているので、degit を使えば必要なフォルダだけを1コマンドで取得できます。Antigravity はファイル配置後に再起動するだけで自動認識します。
1. 前提
- Node.js v16 以上 (
degit実行に必要) - Antigravity がローカルで動いていること
2. degit でフォルダ取得
プロジェクトのルートで以下のコマンドを実行します。
npx degit aazutaku/ai-note/antigravity/os-fake-mood-weather-bar .agent/skills/os-fake-mood-weather-bar
.agent/skills/os-fake-mood-weather-bar の中に SKILL.md / scripts/ / references/ / README.md が展開されます。
3. ファイル配置確認
ls .agent/skills/os-fake-mood-weather-bar
# 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 でも有効か?
- プロジェクト指示との連携をどう組み立てるか?
- 謎の気分天気バーが想定どおり画面端やメニューバーに表示されるか
- 表示内容が毎回ランダムかつカオスなワードになっているか
- 他の通知・演出系Skillと競合しないか
実際に Antigravity で試した検証ログは Antigravityの謎の気分天気バーを画面に出してみた! にまとめる予定 (公開準備中の場合あり)。
あわせて Antigravity 公式ドキュメント と、本シリーズ「Antigravityで試したいSkill研究」の他記事も参照のこと。
関連タグで他のSkill記事を探す
本記事に付いているタグから、気になるテーマの記事を探せます。タグページで関連記事をまとめて読めるので、ぜひチェックしてみてください!
