Antigravity ユーザーが日常でぶつかる悩み
Antigravity を日常的に使っていると、便利さと引き換えにちょっとしたストレスや「もう少し何とかならないか」と感じる瞬間が少なくありません。特に、通知や演出、OSとの連携に関わる部分では、作業が単調になりがちで、集中力が切れたり、進捗が分かりづらくなることも。
- Antigravity が context を見失って違う場所のコードを参照する
- monorepo で package を跨いだ瞬間、Antigravity が repo 構造を忘れる
- session を再開すると、前回までの context や path 指定をまるごと再説明しないといけない
- 長時間 workflow で long context が膨らみすぎて、important な情報が薄まる (stale context)
- 「ここはこういう構造のリポジトリ」というあらすじを毎回チャットの冒頭で書く羽目になる
また、ターミナル作業が淡々と進むことで、集中力が続かず作業効率が落ちることや、メンバー同士で進捗を共有しにくいという悩みもあります。
この Skill が一言でいうと何を解決するか
一言サマリ: ターミナルでコマンドを打つたびにSkill。
このSkillを導入することで、ターミナル操作のたびに時代劇風の侍ナレーションが現れ、作業の進行や成功・失敗を勇ましく実況してくれます。具体的なメリットは以下の通りです。
- 単調なAI coding workflowの中にライブ感と演出を加え、集中力やモチベーションを維持しやすくなる
- コマンド実行のタイミングで context や directory、repo 構造に即したコメントが入ることで、repository understanding が促進される
- onboarding 時や session 再開時でも、侍ナレーションが path management や作業の流れを自然にリマインドしてくれる
- 毎回異なるセリフで飽きさせず、長時間の作業や長い context でもリフレッシュ効果が得られる
- 周囲のメンバーとのコミュニケーションやアイスブレイクにも活用できる
GitHub から degit でコマンド1行、Antigravity の Skill ディレクトリに展開できます。Node.js があれば即時に動きます。
npx degit aazutaku/ai-note/antigravity/terminal-samurai-announcer .agent/skills/terminal-samurai-announcer実行したらこうなる (3つの利用シーン)
このSkillを有効にすると、ターミナルでコマンドを打つたびに時代劇の侍風ナレーションが自動で表示されます。以下、具体的な利用シーンと出力例です。
シーン1: session 開始時 (プロジェクト初動で)
> antigravity start
拙者、ここに新たな戦(いくさ)の場を開く!
repository「samurai-monorepo」にて、主君の命に従い候。
まずは src/ 配下を見渡し、敵(バグ)の気配を探る所存。
この道、険しきも勇猛果敢に進み申す!
シーン2: monorepo / package 跨ぎ作業時
> cd packages/frontend && npm run build
おお、前線を packages/frontend へと移し申したか!
拙者、ここで新たな構造を見極め、context を整え候。
build の儀、見事成し遂げられれば、主君の誉れぞ!
敵はまだ奥に潜むやもしれぬ、油断召されるな。
シーン3: お遊び的な使い方
> git commit -am "Add samurai announcer skill"
このcommit、まこと見事なり!
拙者、時代の風を感じ申す。
repository の memory に新たな章が刻まれた。
次なる戦場へ、いざ参らん!
before / after の違い
| 場面 | Skill 無し | Skill 有り |
|---|---|---|
| session 再開時 | repo 構造から毎回説明、path も指定し直し | Antigravity が自動で context を復元、最小プロンプトで再開 |
| monorepo 移動 | 違う package のコードを参照しがち | directory boundary を意識して必要な範囲だけ見る |
| 長時間 workflow | long context で重要箇所が薄まる | 侍ナレーションで進捗が明確になり、重要な情報もリマインドされやすい |
発動方式
description マッチでの暗黙発動。
Skill の中身を全部見せる
.agent/skills/terminal-samurai-announcer/ に配置するファイル一覧です。GitHub に push 済みなので、上記の degit コマンドで一発取得できます。
.agent/skills/terminal-samurai-announcer/
├── SKILL.md
├── scripts/
│ └── samurai_announce.py
└── references/
└── design_notes.md
各ファイルの役割
| ファイル | 役割 |
|---|---|
SKILL.md |
Skill本体。frontmatter (name/description) と指示本文。Antigravity がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します |
scripts/samurai_announce.py |
ターミナル侍ナレーター: コマンド実行時に侍風実況を添えます。 |
references/design_notes.md |
概要 をまとめた参考資料 |
SKILL.md
---
name: terminal-samurai-announcer
description: ターミナルでコマンド実行時に、侍風の時代劇ナレーションをテキストで表示したい場合に発動します。コマンド実行・進捗・通知・演出・実況・侍・時代劇などのキーワードや、作業の雰囲気を盛り上げたい時に適しています。
---
# 機能概要
terminal-samurai-announcerは、ターミナルでコマンドを実行するたびに、侍が現れて時代劇風のナレーションを高らかに読み上げる(テキスト出力する)スキルです。lsやgit commitなど、どんなコマンドにも毎回異なる侍のセリフが添えられ、作業が一気にチャンバラ劇場に変貌します。コマンドの緊張感や単調さを和らげ、作業のモチベーションや周囲の注目度も向上します。
# 使い方
このSkillは、ターミナルでコマンドを実行する際に自動で発動します。明示的な呼び出しは不要です。暗黙発動キーワード例:ls、cd、git、make、python、npm、docker、vim、sudo、rm、cat など、一般的なコマンド全般。
ON/OFF切り替えは `samurai_announce.py toggle` で可能です。
# 出力例
```
$ ls
拙者、lsの術を披露仕る!
Desktop Documents Downloads
$ git commit -m "fix bug"
このcommit、まこと見事なり!
[main 1a2b3c4] fix bug
$ rm -rf temp/
おぬし、temp/を消し去る覚悟、しかと見届けた!
$ python script.py
拙者、script.pyを走らせ候!
```
# 注意点
- 本Skillは標準出力に侍風セリフを付加するのみで、コマンドの実行結果自体は変更しません。
- ローカル環境でのみ動作を保証します。
- ON/OFF切替は設定ファイル(~/.samurai_announcer_state)で管理されます。
- 除外パスや特定コマンドの除外設定も可能です。
# 参考資料
- [references/design_notes.md](references/design_notes.md)
- [Python subprocess公式](https://docs.python.org/3/library/subprocess.html)
- [shlex公式](https://docs.python.org/3/library/shlex.html)
- [os.path公式](https://docs.python.org/3/library/os.path.html)
scripts/samurai_announce.py
import os
import sys
import subprocess
import random
import shlex
import argparse
from pathlib import Path
SAMURAI_LINES = [
"拙者、{cmd}の術を披露仕る!",
"おぬし、{cmd}を使うとは、なかなかやりおる!",
"この{cmd}、まこと見事なり!",
"いざ、{cmd}、参る!",
"拙者、{cmd}を実行仕る!",
"{cmd}の極意、今ここに!",
"{cmd}、その覚悟、しかと見届けた!",
"{cmd}の構え、抜かりなし!",
"{cmd}を打つその手並み、見事!",
"{cmd}、拙者も手伝おうぞ!",
"{cmd}、これぞ侍の道!",
"{cmd}、これにて一件落着!",
"{cmd}、お見事でござる!",
"{cmd}、いざ尋常に勝負!",
"{cmd}、この一太刀、受けてみよ!",
"{cmd}、これぞ武士の誉れ!",
"{cmd}、見事なり!",
"{cmd}、拙者も感服仕った!",
"{cmd}、これぞ時代劇の真骨頂!",
"{cmd}、いざ参る!"
]
STATE_FILE = str(Path.home() / ".samurai_announcer_state")
EXCLUDE_COMMANDS = ["samurai_announce.py"]
def is_enabled():
if not os.path.exists(STATE_FILE):
return True
try:
with open(STATE_FILE, "r") as f:
state = f.read().strip()
return state == "on"
except Exception:
return True
def set_enabled(flag: bool):
with open(STATE_FILE, "w") as f:
f.write("on" if flag else "off")
def print_samurai_line(cmd):
line = random.choice(SAMURAI_LINES)
print(line.format(cmd=cmd))
def run_command(command):
if not command:
print("コマンドを指定してください。")
return 1
base_cmd = shlex.split(command)[0]
if base_cmd in EXCLUDE_COMMANDS:
# 自己呼び出し防止
return subprocess.call(command, shell=True)
if is_enabled():
print_samurai_line(base_cmd)
try:
result = subprocess.run(command, shell=True)
return result.returncode
except Exception as e:
print(f"実行中にエラー: {e}")
return 1
def toggle():
current = is_enabled()
set_enabled(not current)
print(f"侍ナレーション: {'有効' if not current else '無効'}になりました。")
def show_status():
print(f"侍ナレーションは {'有効' if is_enabled() else '無効'}です。")
def main():
parser = argparse.ArgumentParser(description="ターミナル侍ナレーター: コマンド実行時に侍風実況を添えます。")
subparsers = parser.add_subparsers(dest="subcmd", help="サブコマンド")
# run
parser_run = subparsers.add_parser("run", help="コマンドを侍実況付きで実行")
parser_run.add_argument("command", nargs=argparse.REMAINDER, help="実行するコマンド")
# toggle
parser_toggle = subparsers.add_parser("toggle", help="ON/OFF切替")
# status
parser_status = subparsers.add_parser("status", help="現在のON/OFF状態を表示")
# list-lines
parser_list = subparsers.add_parser("list-lines", help="侍セリフ一覧を表示")
args = parser.parse_args()
if args.subcmd == "run":
cmd = " ".join(args.command)
sys.exit(run_command(cmd))
elif args.subcmd == "toggle":
toggle()
elif args.subcmd == "status":
show_status()
elif args.subcmd == "list-lines":
for l in SAMURAI_LINES:
print(l.format(cmd="<コマンド>"))
else:
parser.print_help()
if __name__ == "__main__":
main()
references/design_notes.md
# 概要
terminal-samurai-announcerは、ターミナル作業の進行を時代劇風に演出することで、作業の緊張感や単調さを和らげることを目的としています。コマンド実行時に毎回異なる侍ナレーションを自動付与し、ユーザー体験を向上させます。
# 公式ドキュメント抜粋
- Python subprocess: コマンド実行と標準出力の取得に利用
- shlex: コマンドのパースに利用
- os/pathlib: 設定ファイルやホームディレクトリ管理
# 利用例
- `python samurai_announce.py run ls`
- `python samurai_announce.py toggle` でON/OFF切替
- `python samurai_announce.py status` で状態確認
# 注意点
- Skill本体はコマンドの実行結果自体は変更しません。
- 除外コマンドやパス設定も容易に拡張可能です。
- スクリプト自体をコマンドラッパーとして利用する設計です。
# 設計方針
- 既存の作業フローを壊さないこと
- シンプルなON/OFF切替と、拡張性のあるセリフ管理
- サブコマンド型CLI設計で柔軟な運用を実現
導入手順
このSkillは GitHub で管理されているので、degit を使えば必要なフォルダだけを1コマンドで取得できます。Antigravity はファイル配置後に再起動するだけで自動認識します。
1. 前提
- Node.js v16 以上 (
degit実行に必要) - Antigravity がローカルで動いていること
2. degit でフォルダ取得
プロジェクトのルートで以下のコマンドを実行します。
npx degit aazutaku/ai-note/antigravity/terminal-samurai-announcer .agent/skills/terminal-samurai-announcer
.agent/skills/terminal-samurai-announcer の中に SKILL.md / scripts/ / references/ / README.md が展開されます。
3. ファイル配置確認
ls .agent/skills/terminal-samurai-announcer
# 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 でも有効か?
- プロジェクト指示との連携をどう組み立てるか?
- コマンド実行時に侍風テキストが表示されるか?
- 毎回違うセリフがランダムで出るか?
- 既存の作業フローを壊さず手軽にON/OFFできるか?
実際に Antigravity で試した検証ログは Antigravityの侍がターミナルで大暴れ!時代劇風コメントを楽しんでみた にまとめる予定 (公開準備中の場合あり)。
あわせて Antigravity 公式ドキュメント と、本シリーズ「Antigravityで試したいSkill研究」の他記事も参照のこと。
関連タグで他のSkill記事を探す
本記事に付いているタグから、気になるテーマの記事を探せます。タグページで関連記事をまとめて読めるので、ぜひチェックしてみてください!
