Antigravity ユーザーが日常でぶつかる悩み
AI coding workflow を支える Antigravity は、repository understanding や context 記憶の自動化で開発効率を高めてくれますが、毎日の作業の中で「ちょっとした息抜き」や「遊び心」が欲しくなる瞬間も多いものです。特に長時間の session や、monorepo の複雑な path management、directory 増殖に悩まされる中で、真面目な空気が続くと気分転換が難しいという声もよく聞きます。
- コミット作業がルーチン化し、気分転換やユーモアが不足しがち
- monorepo で複数 package を跨ぐと、Antigravity の repository understanding は便利だが、開発現場の雰囲気が単調になる
- session を再開するたびに context や path 指定を繰り返すことで、作業が事務的になりやすい
- 長時間の AI coding workflow で long context が膨らみ、重要な情報が埋もれるだけでなく、気分のリフレッシュが難しい
- コミット時、何かしらの演出や小ネタでチームの空気を和らげたいが、自然な導入方法がない
こうした「作業のマンネリ化」や「ちょっとした遊び心の不足」は、ジョーク・パロディ系 Skill で一気に解消できる分野です。
この Skill が一言でいうと何を解決するか
一言サマリ: このスキルは、コミット時にタロット風の謎占い通知を自動で表示し、開発現場にユーモアとカオスをもたらすSkill。
もう少し具体化すると、このSkillを入れることで以下のような状態になる:
- コミットごとに完全ランダムなタロット風メッセージが表示され、気分転換やチームの話題作りに役立つ
- monorepo での複雑な directory 構造や長時間の workflow の中でも、作業の合間に自然な笑いが生まれる
- Antigravity の context 記憶や repository understanding の合間に「意味のない占い」が挟まることで、作業フローが一瞬ほぐれる
- 通知は過度に作業を邪魔せず、真面目な開発現場にちょうどよい“ネタ”として機能
- Skill の導入・管理も path management に準拠し、簡単にオンオフできる
GitHub から degit でコマンド1行、Antigravity の Skill ディレクトリに展開できます。Node.js があれば即時に動きます。
npx degit aazutaku/ai-note/antigravity/commit-fortune-tarot-notifier .agent/skills/commit-fortune-tarot-notifier実行したらこうなる (3つの利用シーン)
使う側がイメージしやすいよう、擬似 terminal で出力例を3パターン示します。
シーン1: session 開始時 (プロジェクト初動で)
> git commit -m "init: プロジェクト初期化"
[commit-fortune-tarot-notifier] あなたの本日の運勢は…「運命の輪」
「変化の時。新たなサイクルが始まる予感。プロジェクトの未来は未知数!」
(ヒント: Skill の中身を全部見せる
.agent/skills/commit-fortune-tarot-notifier/ に配置するファイル一覧です。GitHub に push 済みなので、上記の degit コマンドで一発取得できます。
.agent/skills/commit-fortune-tarot-notifier/
├── SKILL.md
├── scripts/
│ └── commit_fortune_tarot_notifier.py
└── references/
└── design_notes.md
各ファイルの役割
ファイル
役割
SKILL.md
Skill本体。frontmatter (name/description) と指示本文。Antigravity がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します
scripts/commit_fortune_tarot_notifier.py
Git commit時にタロット風占い通知を表示するスクリプト
references/design_notes.md
概要 をまとめた参考資料
SKILL.md
---
name: commit-fortune-tarot-notifier
description: Gitのcommit操作が発生した際、commitメッセージや履歴を検知し、毎回異なるタロット風の謎占い通知をランダムに生成・表示します。commit時の演出や開発現場の雰囲気作りに最適です。
---
# 機能概要
このSkillは、Gitでcommitが行われるたびに、完全ランダムな“タロット風占いメッセージ”をデスクトップ通知またはターミナルに表示します。各commitごとに「運命の輪が回る」「愚者が新たな旅路に」など、意味深かつ全く根拠のないメッセージが炸裂。真面目な開発フローに突如として謎のタロット演出が現れ、作業にユーモアとカオスをもたらします。通知内容は毎回異なり、作業の合間にちょっとした楽しみや話題を提供します。
# 使い方
このSkillは、Gitのcommit時に自動的に発動します。明示的な呼び出しは不要です。Skillが有効な状態で`git commit`を実行するだけで、ターミナルまたはデスクトップにランダムなタロットメッセージが表示されます。
**暗黙発動キーワード例:**
- git commit
- コミット履歴操作
- コード変更確定
# 出力例
```
[Tarot Fortune] 愚者が新たな旅路に出る。今日のcommitは冒険の始まり。
[Tarot Fortune] 運命の輪が静かに回転した。流れに身を任せよ。
[Tarot Fortune] 塔が崩れた。大胆な変更に注意。
[Tarot Fortune] 世界のカードが現れた。完璧な仕上がりに近づいている。
[Tarot Fortune] 隠者が静かに微笑む。内省のcommit。
```
# 注意点
- 通知内容は完全にランダムで、実際の運勢やcommit内容とは一切関係ありません。
- デスクトップ通知は`notify-send`(Linux)または`osascript`(macOS)を利用。環境によってはターミナル出力のみとなります。
- Skillの通知が頻繁すぎる場合は、設定で無効化や間引きも検討してください。
- ローカル環境でのみ動作し、外部サーバーへのデータ送信は行いません。
# 参考資料
- [Git公式ドキュメント](https://git-scm.com/doc)
- references/design_notes.md 参照
scripts/commit_fortune_tarot_notifier.py
import sys
import random
import subprocess
import argparse
import os
import platform
from datetime import datetime
TAROT_MESSAGES = [
"愚者が新たな旅路に出る。今日のcommitは冒険の始まり。",
"運命の輪が静かに回転した。流れに身を任せよ。",
"塔が崩れた。大胆な変更に注意。",
"世界のカードが現れた。完璧な仕上がりに近づいている。",
"隠者が静かに微笑む。内省のcommit。",
"死神が通り過ぎた。古いコードに別れを告げよ。",
"恋人たちが手を取り合う。協力が吉。",
"太陽が輝く。明るい未来が見える。",
"月が曇る。見えないバグに注意。",
"審判の時。レビューを恐れるな。",
"力のカードが出た。自信を持ってpushせよ。",
"節制の天使が現れた。冷静な判断を。",
"正義の天秤が揺れる。コミットメッセージは正直に。",
"戦車が突き進む。勢いのある開発。",
"女帝が微笑む。豊かな実装。",
"魔術師が現れる。新しい技術に挑戦せよ。",
"吊るされた男。辛抱の時。",
"悪魔が囁く。誘惑に負けるな。",
"星が瞬く。希望を持て。",
"皇帝が命じる。リーダーシップを発揮せよ。"
]
LOG_FILE = os.path.expanduser("~/.commit_fortune_tarot.log")
def select_random_message():
return random.choice(TAROT_MESSAGES)
def notify_desktop(message):
system = platform.system()
title = "Tarot Fortune"
try:
if system == "Linux":
subprocess.run(["notify-send", title, message], check=True)
elif system == "Darwin":
script = f'display notification "{message}" with title "{title}"'
subprocess.run(["osascript", "-e", script], check=True)
else:
# Windowsやその他はターミナル出力のみ
print(f"[{title}] {message}")
except Exception as e:
print(f"[Tarot Fortune] {message}")
print(f"[Tarot Notifier Error] 通知送信に失敗: {e}")
def log_message(message):
try:
with open(LOG_FILE, "a", encoding="utf-8") as f:
f.write(f"{datetime.now().isoformat()} {message}\n")
except Exception as e:
print(f"[Tarot Notifier Error] ログ保存に失敗: {e}")
def show_fortune():
message = select_random_message()
notify_desktop(message)
log_message(message)
def list_log():
if not os.path.exists(LOG_FILE):
print("ログファイルが存在しません。")
return
try:
with open(LOG_FILE, "r", encoding="utf-8") as f:
lines = f.readlines()
for line in lines[-20:]:
print(line.strip())
except Exception as e:
print(f"[Tarot Notifier Error] ログ読み込み失敗: {e}")
def summary_log():
if not os.path.exists(LOG_FILE):
print("ログファイルが存在しません。")
return
try:
with open(LOG_FILE, "r", encoding="utf-8") as f:
lines = f.readlines()
total = len(lines)
by_card = {}
for line in lines:
for card in TAROT_MESSAGES:
if card[:8] in line:
by_card[card[:8]] = by_card.get(card[:8], 0) + 1
print(f"合計 {total} 回のタロット通知が記録されています。\n")
for k, v in by_card.items():
print(f"{k}: {v} 回")
except Exception as e:
print(f"[Tarot Notifier Error] サマリ集計失敗: {e}")
def parse_args():
parser = argparse.ArgumentParser(description="Git commit時にタロット風占い通知を表示するスクリプト")
subparsers = parser.add_subparsers(dest="command")
subparsers.add_parser("fortune", help="ランダムなタロット通知を表示")
subparsers.add_parser("list", help="最近のタロット通知ログを表示")
subparsers.add_parser("summary", help="タロット通知のサマリを集計表示")
return parser.parse_args()
def main():
args = parse_args()
if args.command == "fortune" or args.command is None:
show_fortune()
elif args.command == "list":
list_log()
elif args.command == "summary":
summary_log()
else:
print("不明なコマンドです。--help を参照してください。")
if __name__ == "__main__":
main()
references/design_notes.md
# 概要
このSkillは、開発現場のコミット作業にユーモアと偶発性をもたらすために設計されました。commit時に毎回異なるタロット風メッセージを表示し、作業の合間にちょっとした話題や気分転換を提供します。
# 公式ドキュメント抜粋
- Git公式: https://git-scm.com/doc
- notify-send (Linux): https://specifications.freedesktop.org/notification-spec/latest/
- osascript (macOS): https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/
# 利用例
- チーム開発でcommit時の話題作りに
- 個人開発のモチベーション維持や気分転換に
- コミット履歴に沿った占いログの振り返り
# 注意点
- 通知内容は完全にランダムで、実際の運勢やコード内容には一切関係しません。
- デスクトップ通知はLinux/macOSのみ対応。Windowsではターミナル出力のみ。
- ログはホームディレクトリの .commit_fortune_tarot.log に保存されます。
# 設計方針
- シンプルな設計で、GitフックやCI/CDパイプラインにも容易に組み込める
- ローカル環境で完結し、外部通信や個人情報の送信は行わない
- ユーザーの作業を阻害しないよう、通知は短文・即時性重視
導入手順
このSkillは GitHub で管理されているので、degit を使えば必要なフォルダだけを1コマンドで取得できます。Antigravity はファイル配置後に再起動するだけで自動認識します。
1. 前提
- Node.js v16 以上 (
degit 実行に必要)
- Antigravity がローカルで動いていること
2. degit でフォルダ取得
プロジェクトのルートで以下のコマンドを実行します。
npx degit aazutaku/ai-note/antigravity/commit-fortune-tarot-notifier .agent/skills/commit-fortune-tarot-notifier
.agent/skills/commit-fortune-tarot-notifier の中に SKILL.md / scripts/ / references/ / README.md が展開されます。
3. ファイル配置確認
ls .agent/skills/commit-fortune-tarot-notifier
# 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記事を探す
本記事に付いているタグから、気になるテーマの記事を探せます。タグページで関連記事をまとめて読めるので、ぜひチェックしてみてください!
