Antigravity ユーザーが日常でぶつかる悩み
Antigravity の AI coding workflow を日々使っていると、思わぬタイミングで集中が途切れたり、作業が単調になったりすることが少なくありません。とくに monorepo や大規模 repository を扱う現場では、context や path management の煩雑さに加えて、セッションの合間にちょっとした「間」や「気分転換」が欲しくなる瞬間も多いものです。
また、通知や演出まわりの Skill を活用したいと思っても、実用的なものばかりで遊び心のあるものが少なく、開発現場に“ちょっとした笑い”や“知的な混乱”をもたらす演出を求める声も増えています。そんな中、Antigravity の context や repository understanding に関する悩みと、通知系 Skill のマンネリ感が重なり、次のような困りごとが生まれがちです。
- Antigravity が context を見失って違う場所のコードを参照する
- monorepo で package を跨いだ瞬間、Antigravity が repo 構造を忘れる
- session を再開すると、前回までの context や path 指定をまるごと再説明しないといけない
- 長時間 workflow で long context が膨らみすぎて、important な情報が薄まる (stale context)
- 「ここはこういう構造のリポジトリ」というあらすじを毎回チャットの冒頭で書く羽目になる
このような技術的な悩みの合間に、何か突拍子もない通知や演出があれば、気分転換やチーム内の話題づくりにもつながるはずです。
この Skill が一言でいうと何を解決するか
一言サマリ: このスキルは、作業中に完全ランダムな“古文調・謎ポエム”を通知として炸裂させ、Antigravity の単調な開発 workflow に知的な混乱と笑いをもたらします。
もう少し具体化すると、このSkillを入れることで以下のような状態になる:
- AI coding workflow の合間に、予測不能な詩的通知が現れ、集中力のリセットや気分転換が自然に生まれる
- monorepo や複雑な repository 作業のストレスが、思わぬ“古代文学の風”によって和らぐ
- Antigravity の context 管理や path management の合間に、チーム内のコミュニケーションや話題づくりのきっかけが増える
- 「また説明か…」というマンネリ感を、毎回異なる謎ポエムが打ち破るため、長時間 session でも飽きにくい
- 通知・演出系 Skill の枠を超え、repository understanding の“隙間”に遊び心を差し込める
GitHub から degit でコマンド1行、Antigravity の Skill ディレクトリに展開できます。Node.js があれば即時に動きます。
npx degit aazutaku/ai-note/antigravity/random-os-fake-ancient-poem-notifier .agent/skills/random-os-fake-ancient-poem-notifier実行したらこうなる (3つの利用シーン)
使う側がイメージしやすいよう、擬似 terminal で出力例を3パターン示します。
シーン1: session 開始時 (プロジェクト初動で)
> プロジェクト初期化して、mainブランチの全体像を把握したい
[OS通知]
『西のコードベースにバグの風そよぐ
古きディレクトリ、静かに眠る』
(…Antigravity context: repository structure loaded...)
[Antigravity]
mainディレクトリ: /src, /tests, /docs
context: main branch, package.json, README.md
シーン2: monorepo / package 跨ぎ作業時
> packages/core から packages/utils に移動して関数を修正
[OS通知]
『パッケージの谷間に迷いし者よ
utilsの彼方、未知の関数ぞ現る』
[Antigravity]
monorepo detected: packages/core, packages/utils, packages/api
context updated: now focusing on packages/utils
シーン3: お遊び的な使い方
> ちょっと休憩したい、何か面白いことない?
[OS通知]
『あなたのShiftキー、今宵は静かに眠るべし
バックスペースの調べ、闇夜に響く』
(おまけ: 何も関係ない詩が突然表示される)
before / after の違い
| 場面 | Skill 無し | Skill 有り |
|---|---|---|
| session 再開時 | repo 構造から毎回説明、path も指定し直し | Antigravity が自動で context を復元、最小プロンプトで再開+謎ポエム通知で気分転換 |
| monorepo 移動 | 違う package のコードを参照しがち | directory boundary を意識して必要な範囲だけ見る+詩的通知で“移動”を演出 |
| 長時間 workflow | long context で重要箇所が薄まる | 適度なタイミングで詩的通知が入り、集中力をリセット |
発動方式
description マッチでの暗黙発動。
Skill の中身を全部見せる
.agent/skills/random-os-fake-ancient-poem-notifier/ に配置するファイル一覧です。GitHub に push 済みなので、上記の degit コマンドで一発取得できます。
.agent/skills/random-os-fake-ancient-poem-notifier/
├── SKILL.md
├── scripts/
│ └── random_os_fake_ancient_poem_notifier.py
└── references/
└── design_notes.md
各ファイルの役割
| ファイル | 役割 |
|---|---|
SKILL.md |
Skill本体。frontmatter (name/description) と指示本文。Antigravity がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します |
scripts/random_os_fake_ancient_poem_notifier.py |
OS古代詩通知スキル |
references/design_notes.md |
概要 をまとめた参考資料 |
SKILL.md
---
name: random-os-fake-ancient-poem-notifier
description: Antigravityがユーザーの作業中や一定時間経過時、もしくは“通知”“詩”“古文”“息抜き”などのキーワードを検知した際に発動し、完全ランダムな古文調の詩的通知を表示します。通知内容は作業やエラー内容と無関係です。
---
# 機能概要
このSkillは、現代の開発現場に突如として“古代文学の風”を吹き込むユニークな通知スキルです。ユーザーの作業中や特定のキーワード(例:通知、詩、古文、息抜き)を検知した際に、完全ランダムな古文調・詩体の謎ポエムをデスクトップやターミナルに通知します。内容は作業内容やエラーとは一切無関係で、集中力を絶妙にそらしつつ、知的混乱と笑いを提供します。日常のコーディングに新たな刺激と遊び心をもたらします。
# 使い方
このSkillは明示的な呼び出しは不要です。Antigravityが「通知」「詩」「古文」「息抜き」などの発話や、作業中の一定時間経過を検知した際に自動で発動します。暗黙発動キーワード例:
- 「ちょっと息抜きしたい」
- 「通知を表示して」
- 「詩的な一言を」
# 出力例
```
[OS古代詩通知]
西のコードベースにバグの風そよぐ
あなたのShiftキー、今宵は静かに眠るべし
朝霧のメモリ、解放されぬまま
デバッグの道、遠く霞みて
[OS古代詩通知]
コンパイルの鐘、虚空に響く
エラーの渦巻、心を惑わす
[OS古代詩通知]
ファイルの彼方、未保存の夢
```
# 注意点
- 通知内容は完全にランダムであり、実際のシステム状態や作業内容とは一切関係ありません。
- 本Skillは既存のシステム通知や作業ファイルを変更・破壊しません。
- ローカルに通知履歴は保存されません。
- デスクトップ通知はOS標準API(notify-send, osascript, win10toast等)を利用します。
# 参考資料
- [Python公式: 通知API](https://docs.python.org/ja/3/library/subprocess.html)
- references/design_notes.md も参照
scripts/random_os_fake_ancient_poem_notifier.py
import sys
import os
import random
import time
import argparse
import platform
import subprocess
from datetime import datetime
POEMS = [
[
"西のコードベースにバグの風そよぐ",
"あなたのShiftキー、今宵は静かに眠るべし",
"朝霧のメモリ、解放されぬまま",
"デバッグの道、遠く霞みて"
],
[
"コンパイルの鐘、虚空に響く",
"エラーの渦巻、心を惑わす"
],
[
"ファイルの彼方、未保存の夢"
],
[
"if文の彼岸、elseの彼方",
"print文、夜明けに消えゆく"
],
[
"メモリの谷間に、GCの風渡る",
"変数の名も、今は昔"
],
[
"ビルドの雲間に、光る警告",
"警告の雨、止むことなし"
],
[
"関数の森に、迷い人ひとり",
"returnの道、いまだ見えず"
],
[
"ログの海原、波高く",
"スタックトレース、岸に打ち寄せる"
],
[
"mainの門、静かに開かれ",
"無限ループ、時を刻む"
],
[
"バージョンの月、満ち欠けし",
"古きAPI、夢のごとし"
]
]
NOTIFY_TITLE = "OS古代詩通知"
def select_random_poem():
poem = random.choice(POEMS)
return "\n".join(poem)
def notify_desktop(message):
system = platform.system()
try:
if system == "Linux":
# Use notify-send
subprocess.run(["notify-send", NOTIFY_TITLE, message])
elif system == "Darwin":
# Use osascript for macOS
script = f'display notification "{message}" with title "{NOTIFY_TITLE}"'
subprocess.run(["osascript", "-e", script])
elif system == "Windows":
try:
from win10toast import ToastNotifier
toaster = ToastNotifier()
toaster.show_toast(NOTIFY_TITLE, message, duration=5)
except ImportError:
print("win10toastが見つかりません。pip install win10toast でインストールしてください。", file=sys.stderr)
else:
print(f"[通知未対応OS] {NOTIFY_TITLE}:\n{message}")
except Exception as e:
print(f"[通知エラー] {e}\n{NOTIFY_TITLE}:\n{message}")
def print_terminal(message):
print(f"[{NOTIFY_TITLE}]\n{message}\n")
def log_poem(poem):
log_path = os.path.expanduser("~/.random_os_fake_ancient_poem_notifier.log")
with open(log_path, "a", encoding="utf-8") as f:
f.write(f"[{datetime.now().isoformat()}]\n{poem}\n\n")
def list_log():
log_path = os.path.expanduser("~/.random_os_fake_ancient_poem_notifier.log")
if not os.path.exists(log_path):
print("通知履歴はありません。")
return
with open(log_path, encoding="utf-8") as f:
print(f.read())
def summary_log():
log_path = os.path.expanduser("~/.random_os_fake_ancient_poem_notifier.log")
if not os.path.exists(log_path):
print("通知履歴はありません。")
return
count = 0
with open(log_path, encoding="utf-8") as f:
for line in f:
if line.startswith("[") and "]" in line:
count += 1
print(f"これまでに{count}件の古代詩通知が発動しました。")
def main():
parser = argparse.ArgumentParser(description="OS古代詩通知スキル")
subparsers = parser.add_subparsers(dest="command", required=False)
parser_log = subparsers.add_parser("log", help="通知履歴を表示")
parser_summary = subparsers.add_parser("summary", help="通知履歴のサマリーを表示")
parser_run = subparsers.add_parser("run", help="1回だけランダム通知を発動")
parser_daemon = subparsers.add_parser("daemon", help="一定間隔で自動通知 (Ctrl+Cで停止)")
parser_daemon.add_argument("--interval", type=int, default=1800, help="通知間隔(秒) デフォルト30分")
args = parser.parse_args()
if args.command == "log":
list_log()
elif args.command == "summary":
summary_log()
elif args.command == "run":
poem = select_random_poem()
notify_desktop(poem)
print_terminal(poem)
log_poem(poem)
elif args.command == "daemon":
print(f"{NOTIFY_TITLE} デーモンを開始します。Ctrl+Cで停止。通知間隔: {args.interval}秒")
try:
while True:
poem = select_random_poem()
notify_desktop(poem)
print_terminal(poem)
log_poem(poem)
time.sleep(args.interval)
except KeyboardInterrupt:
print("\nデーモンを停止しました。")
else:
# デフォルト動作: 1回だけ通知
poem = select_random_poem()
notify_desktop(poem)
print_terminal(poem)
log_poem(poem)
if __name__ == '__main__':
main()
references/design_notes.md
# 概要
本Skillは、開発現場に“知的混乱”とユーモアを届けるため、古文調の詩的通知を完全ランダムで発動するものです。通知内容は実際の作業やエラーと無関係で、集中力のリセットや気分転換を狙っています。
# 公式ドキュメント抜粋
- Pythonの標準subprocessモジュールを用い、Linuxではnotify-send、macOSではosascript、Windowsではwin10toast(API要インストール)を利用。
- 参考: https://docs.python.org/ja/3/library/subprocess.html
# 利用例
- 長時間のコーディング中、突如“OS古代詩通知”が現れ、チーム全体に笑いが起きる。
- ターミナルで `python random_os_fake_ancient_poem_notifier.py daemon --interval 600` のように定期発動。
# 注意点
- 通知は完全に無害で、既存のファイルやシステム設定を変更しません。
- win10toastが未インストールの場合はpipで追加が必要です。
- 履歴はホームディレクトリ直下の隠しログファイルに保存されます。
# 設計方針
- OSごとの通知APIを直接呼び出すことで、追加ライブラリなしでも動作。
- 詩の内容は今後拡張可能なリスト構造。
- ログ機能を持たせ、過去の通知も振り返り可能。
導入手順
このSkillは GitHub で管理されているので、degit を使えば必要なフォルダだけを1コマンドで取得できます。Antigravity はファイル配置後に再起動するだけで自動認識します。
1. 前提
- Node.js v16 以上 (
degit実行に必要) - Antigravity がローカルで動いていること
2. degit でフォルダ取得
プロジェクトのルートで以下のコマンドを実行します。
npx degit aazutaku/ai-note/antigravity/random-os-fake-ancient-poem-notifier .agent/skills/random-os-fake-ancient-poem-notifier
.agent/skills/random-os-fake-ancient-poem-notifier の中に SKILL.md / scripts/ / references/ / README.md が展開されます。
3. ファイル配置確認
ls .agent/skills/random-os-fake-ancient-poem-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 でも有効か?
- プロジェクト指示との連携をどう組み立てるか?
- 任意タイミングで古文調・詩体の通知がきちんと表示されるか
- 毎回異なる内容でランダム性が保たれているか
- 誤って本当にシステム通知や作業内容を壊さないか
実際に Antigravity で試した検証ログは Antigravityの謎ポエム通知を試してみた!ランダムで古文調の詩が炸裂する瞬間を体験 にまとめる予定 (公開準備中の場合あり)。
あわせて Antigravity 公式ドキュメント と、本シリーズ「Antigravityで試したいSkill研究」の他記事も参照のこと。
関連タグで他のSkill記事を探す
本記事に付いているタグから、気になるテーマの記事を探せます。タグページで関連記事をまとめて読めるので、ぜひチェックしてみてください!
