Antigravityで開発者の気分を可視化する意外な使い方ガイド

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

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

Antigravity を使った AI coding workflow では、便利な context 管理や repository understanding の恩恵を受けつつも、日々同じような「単調さ」や「作業の流れ作業化」に悩むことが多い。特に monorepo など大規模な repository で長時間作業する場合、気分転換やちょっとした癒しが欲しくなる瞬間がある。通知や演出系の Skill を活用しても、実用一点張りになりがちで、遊び心や謎の癒し要素が不足していると感じるユーザーも多いはず。

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

こうした悩みに加え、「ターミナル作業が無機質で味気ない」「ちょっとした遊び心が欲しい」と感じる場面も、意外と多いのではないだろうか。

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

一言サマリ: 開発者のテンションや気分をSkill。

この Skill を導入すると、ターミナルのステータスバーやプロンプトに「気分天気予報」が自動で表示されるようになり、AI coding workflow に謎の癒しと自己分析要素が加わる。実用性よりも「日々の単調さを和らげる」ことに重きを置いた演出が特徴。具体的なメリットは以下の通り:

  • 長時間の repository 作業や onboarding 時に、ターミナル上で気分やテンションを天気・気温で表現し、ちょっとした癒しや笑いを提供
  • commit頻度やランダム値から mood を生成することで、AI coding workflow の単調さや疲労感を和らげる
  • monorepo での directory 移動や session 再開時にも、状況に応じた気分天気が自動表示されるため、作業のリズムを切り替えやすい
  • Antigravity の context 管理や path management と連携しつつ、遊び心のある通知・演出を実現
  • Skill の出力がステータスバーに自然に溶け込むため、邪魔にならずに日々の開発現場に彩りを加える
QUICK INSTALL
このSkillをすぐ試す

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

npx degit aazutaku/ai-note/antigravity/terminal-weather-mood-bar .agent/skills/terminal-weather-mood-bar

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

使う側がイメージしやすいよう、擬似 terminal で出力例を3パターン示す。Skill が返す出力は推測だが、現実的なフォーマット・現実的な長さで書く。

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


# プロジェクト開始直後
> このリポジトリの構成を把握して

[terminal-weather-mood-bar]
今日の気分:曇り時々晴れ(気温 19℃)
今週のcommit数:3
モチベーション指数:やや低め
作業ディレクトリ:/repo/src
----------------------------------------
Antigravity: repository understanding を開始します
- context: src/, utils/, tests/
- path management: 有効

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


> packages/api/ と packages/web/ の両方を見て

[terminal-weather-mood-bar]
テンション:真夏日(気温 31℃)
今週のcommit数:14
気分:やる気全開
作業範囲:/repo/packages/api, /repo/packages/web
----------------------------------------
Antigravity: monorepo context を切り替えました
- repository understanding: 複数 package 対応
- long context: 圧縮モード

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


> 今日は何か面白いことある?

[terminal-weather-mood-bar]
気分:小雨(気温 16℃)
commit頻度:今週は控えめ
本日の一言:たまには休憩も大事です
----------------------------------------
Antigravity: context は安定しています
- memory: refresh 済み

before / after の違い

場面 Skill 無し Skill 有り
session 再開時 repo 構造から毎回説明、path も指定し直し Antigravity が自動で context を復元、最小プロンプトで再開
monorepo 移動 違う package のコードを参照しがち directory boundary を意識して必要な範囲だけ見る
長時間 workflow long context で重要箇所が薄まる 気分天気でリズムを切り替え、集中力を維持しやすい

発動方式

description マッチでの暗黙発動。

Skill の中身を全部見せる

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

.agent/skills/terminal-weather-mood-bar/
├── SKILL.md
├── scripts/
│   └── terminal_weather_mood_bar.py
└── references/
    └── design_notes.md

各ファイルの役割

ファイル 役割
SKILL.md Skill本体。frontmatter (name/description) と指示本文。Antigravity がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します
scripts/terminal_weather_mood_bar.py terminal-weather-mood-bar: 気分天気をターミナルバーに表示
references/design_notes.md 概要 をまとめた参考資料

SKILL.md

---
name: terminal-weather-mood-bar
description: ターミナルバーやプロンプトに「気分天気」を表示する必要がある場合に発動します。キーワード例: 気分, テンション, 天気, commit頻度, ステータスバー, 開発者の癒し, 自己分析。
---

# 機能概要
terminal-weather-mood-barは、開発者の気分やテンションを気象情報に見立て、ターミナルのステータスバーやプロンプトに表示するスキルです。実用性よりも癒しやユーモアを重視し、commit頻度やランダム値をもとに「今日の気分:曇り、気温18度」や「テンション:真夏日」などの“気分天気”を自動生成します。日々の単調な開発現場に、意味不明な気象レポートでちょっとした笑いと自己分析のきっかけを提供します。

# 使い方
このSkillは、ターミナルやシェルのプロンプト描画タイミング、または「気分」「テンション」「天気」などのキーワードを含む会話・コマンド実行時に自動で発動します。明示的な呼び出しは不要です。

**暗黙発動キーワード例:**
- 「今日の気分は?」
- 「テンション表示」
- 「天気みたいに気分を出して」
- 「commit頻度から気分を予報して」

# 出力例
```
[terminal-weather-mood-bar] 今日の気分:小雨、気温17度
[terminal-weather-mood-bar] テンション:真夏日(32度)
[terminal-weather-mood-bar] 気分天気:曇り時々晴れ、21度
[terminal-weather-mood-bar] 本日の気分:快晴、気温28度
[terminal-weather-mood-bar] テンション:冬日(-2度)
```

# 注意点
- 実際の天気や体調とは無関係のランダム/commit頻度ベースの演出です。
- ターミナルやプロンプトのカスタマイズが必要な場合があります。
- ローカルのgitリポジトリがない場合は完全ランダム予報になります。
- 気分天気の内容はジョーク目的であり、業務判断には使えません。

# 参考資料
- [GitPython公式ドキュメント](https://gitpython.readthedocs.io/)
- references/design_notes.md を参照

scripts/terminal_weather_mood_bar.py

import argparse
import random
import sys
from datetime import datetime, timedelta
from pathlib import Path
try:
    from git import Repo, InvalidGitRepositoryError
except ImportError:
    Repo = None
    InvalidGitRepositoryError = Exception

WEATHER_TYPES = [
    ("快晴", 28, 35),
    ("晴れ", 22, 28),
    ("曇り", 16, 22),
    ("小雨", 12, 16),
    ("雨", 6, 12),
    ("冬日", -5, 6),
    ("真夏日", 32, 40),
]

MOOD_LABELS = [
    ("真夏日", 32),
    ("快晴", 28),
    ("晴れ", 22),
    ("曇り", 16),
    ("小雨", 12),
    ("雨", 6),
    ("冬日", -2),
]

BAR_PREFIX = "[terminal-weather-mood-bar]"


def get_commit_count(repo_path: str = ".", days: int = 1) -> int:
    if Repo is None:
        return -1
    try:
        repo = Repo(repo_path, search_parent_directories=True)
    except InvalidGitRepositoryError:
        return -1
    since = datetime.now() - timedelta(days=days)
    commits = list(repo.iter_commits(since=since.strftime('%Y-%m-%d')))
    return len(commits)


def mood_from_commit_count(commit_count: int) -> (str, int):
    if commit_count < 0:
        # fallback: random mood
        label, tmin, tmax = random.choice(WEATHER_TYPES)
        temp = random.randint(tmin, tmax)
        return label, temp
    # Map commit count to temp (0-10: cold, 11-30: mild, 31+: hot)
    if commit_count == 0:
        label, temp = "曇り", random.randint(14, 19)
    elif commit_count < 3:
        label, temp = "小雨", random.randint(10, 15)
    elif commit_count < 7:
        label, temp = "晴れ", random.randint(20, 25)
    elif commit_count < 15:
        label, temp = "快晴", random.randint(25, 32)
    else:
        label, temp = "真夏日", random.randint(32, 38)
    return label, temp


def random_mood_weather() -> (str, int):
    label, tmin, tmax = random.choice(WEATHER_TYPES)
    temp = random.randint(tmin, tmax)
    return label, temp


def format_weather_bar(label: str, temp: int) -> str:
    return f"{BAR_PREFIX} 今日の気分:{label}、気温{temp}度"

def format_mood_bar(label: str, temp: int) -> str:
    return f"{BAR_PREFIX} テンション:{label}({temp}度)"


def print_weather_bar(repo_path: str = "."):
    commit_count = get_commit_count(repo_path)
    label, temp = mood_from_commit_count(commit_count)
    print(format_weather_bar(label, temp))

def print_mood_bar(repo_path: str = "."):
    commit_count = get_commit_count(repo_path)
    label, temp = mood_from_commit_count(commit_count)
    print(format_mood_bar(label, temp))

def print_random_weather_bar():
    label, temp = random_mood_weather()
    print(format_weather_bar(label, temp))

def print_random_mood_bar():
    label, temp = random_mood_weather()
    print(format_mood_bar(label, temp))

def list_examples():
    examples = [
        format_weather_bar("小雨", 17),
        format_mood_bar("真夏日", 32),
        format_weather_bar("曇り時々晴れ", 21),
        format_weather_bar("快晴", 28),
        format_mood_bar("冬日", -2),
    ]
    for ex in examples:
        print(ex)

def main():
    parser = argparse.ArgumentParser(description="terminal-weather-mood-bar: 気分天気をターミナルバーに表示")
    subparsers = parser.add_subparsers(dest="command")

    subparsers.add_parser("weather", help="今日の気分天気を表示 (commit頻度ベース)")
    subparsers.add_parser("mood", help="今日のテンション天気を表示 (commit頻度ベース)")
    subparsers.add_parser("random-weather", help="ランダム気分天気を表示")
    subparsers.add_parser("random-mood", help="ランダムテンション天気を表示")
    subparsers.add_parser("examples", help="出力例を表示")

    parser.add_argument("--repo", type=str, default=".", help="Gitリポジトリのパス (デフォルト: カレントディレクトリ)")

    args = parser.parse_args()

    if args.command == "weather":
        print_weather_bar(args.repo)
    elif args.command == "mood":
        print_mood_bar(args.repo)
    elif args.command == "random-weather":
        print_random_weather_bar()
    elif args.command == "random-mood":
        print_random_mood_bar()
    elif args.command == "examples":
        list_examples()
    else:
        parser.print_help()

if __name__ == '__main__':
    main()

references/design_notes.md

# 概要
terminal-weather-mood-barは、開発者の気分やテンションを気象情報に見立ててターミナルバーに表示することで、日々の開発作業に癒しやユーモアをもたらすスキルです。commit頻度を気温や天気にマッピングすることで、自己分析やチーム内のちょっとした話題作りにも活用できます。

# 公式ドキュメント抜粋
本Skillは[GitPython](https://gitpython.readthedocs.io/)を利用し、ローカルgitリポジトリのcommit履歴から直近1日のcommit数を取得しています。リポジトリが存在しない場合や取得エラー時はランダム予報となります。

# 利用例
- シェルプロンプトやtmuxステータスバーに組み込んで、毎回気分天気を表示
- チームの朝会で「今日は快晴です!」など話題作り
- commitが多い日は「真夏日」、少ない日は「曇り」など、自己分析のきっかけに

# 注意点
- 気分天気はジョーク用途であり、実際の天気や体調とは無関係です。
- 業務判断や健康管理には利用しないでください。
- ターミナル環境によっては表示方法のカスタマイズが必要な場合があります。

# 設計方針
Skill本体は100行以上のPythonスクリプトで、CLIサブコマンド・エラーハンドリング・例示出力を備えています。commit頻度と気象パターンの対応はシンプルかつ直感的に設計されています。

導入手順

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

1. 前提

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

2. degit でフォルダ取得

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

npx degit aazutaku/ai-note/antigravity/terminal-weather-mood-bar .agent/skills/terminal-weather-mood-bar

.agent/skills/terminal-weather-mood-bar の中に SKILL.md / scripts/ / references/ / README.md が展開されます。

3. ファイル配置確認

ls .agent/skills/terminal-weather-mood-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 でも有効か?
  • プロジェクト指示との連携をどう組み立てるか?
  • ターミナルバーやプロンプトへの気分天気表示が自然に出るか?
  • commit頻度やランダム値をうまく気温・天気にマッピングできるか?
  • 表示が邪魔にならず、かつジワジワ笑える演出になっているか?

実際に Antigravity で試した検証ログは Antigravityの謎スキルでターミナルに気分天気を表示してみた! にまとめる予定 (公開準備中の場合あり)。
あわせて Antigravity 公式ドキュメント と、本シリーズ「Antigravityで試したいSkill研究」の他記事も参照のこと。

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

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

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

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