知らなきゃ損!Antigravityでコミットメッセージを俳句に変換する活用法

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

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

Antigravity を日々使っていると、AI coding workflow の中で思わず「またか」と感じる瞬間が多々あります。特に repository understanding や path management をAIに任せていると、ちょっとしたストレスが積み重なりがちです。さらに、開発現場の雰囲気がピリつきがちな時や、長時間 session で集中力が途切れた瞬間には、ちょっとした遊び心や癒しが欲しくなるものです。そんな時、コミットメッセージの堅苦しさに「もう少し遊びがあってもいいのに」と感じることも多いはずです。

  • コミットメッセージが毎回「fix:」「refactor:」ばかりで、開発現場が無機質になりがち
  • Antigravity の context 管理や path 指定に追われて、ちょっとした息抜きや笑いが生まれにくい
  • 長時間の workflow で long context が膨らみ、重要な情報だけでなく心の余裕も薄まる
  • monorepo で package を跨ぐたびに repository の構造説明や directory 指定が繰り返され、気分転換する暇もない
  • session 再開時や onboarding のたびに、「また同じ説明か」と感じてしまい、気が重くなる

こうした日常の悩みに、ちょっとしたユーモアや文学的なエッセンスを加えられたら――そんな思いに応えるSkillの登場です。

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

一言サマリ: コミットメッセージを自動で俳句形式に変換するSkillですSkill。

このSkillを導入すると、Antigravity の AI coding workflow に日本ならではの和の心が加わり、コミットのたびにちょっとした癒しや笑いが生まれます。具体的には以下のようなメリットがあります。

  • コミットメッセージが五・七・五の俳句形式になり、開発現場に文学的なカオスと遊び心をもたらす
  • 普段の無機質な commit log に彩りが加わり、onboarding や session 再開時の空気が和らぐ
  • monorepo や複雑な directory 作業時にも、思わずクスッとできる一行が生まれ、気分転換になる
  • Antigravity の context 管理や repository understanding の合間に、ちょうど良い「ゆるさ」を補給できる
  • Skill の導入・発動がシンプルで、既存の path management や workflow を邪魔しない
QUICK INSTALL
このSkillをすぐ試す

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

npx degit aazutaku/ai-note/antigravity/commit-haiku-generator .agent/skills/commit-haiku-generator

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

使う側がイメージしやすいよう、擬似 terminal で出力例を3パターン示します。

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


# コミットメッセージ: fix: adjust user auth redirect
> コミットメッセージを俳句でお願いします

Antigravity Skill: commit-haiku-generator 発動

ユーザーの
リダイレクト直す
静かな夜

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


# コミットメッセージ: feat(packages/api): add endpoint for invoice export
> 俳句形式で commit したい

Antigravity Skill: commit-haiku-generator 発動

API 増す
請求書エクスポート
春の風

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


# コミットメッセージ: chore: update README and fix typo
> これも俳句にして

Antigravity Skill: commit-haiku-generator 発動

README 書き
小さな誤字を
直しました

before / after の違い

場面 Skill 無し Skill 有り
session 再開時 repo 構造から毎回説明、path も指定し直し Antigravity が自動で context を復元、最小プロンプトで再開
monorepo 移動 違う package のコードを参照しがち directory boundary を意識して必要な範囲だけ見る
長時間 workflow long context で重要箇所が薄まる コミットごとに俳句が挟まれ、気分転換や集中力のリセットに役立つ

発動方式

description マッチでの暗黙発動。

Skill の中身を全部見せる

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

.agent/skills/commit-haiku-generator/
├── SKILL.md
├── scripts/
│   └── commit_haiku_generator.py
└── references/
    └── design_notes.md

各ファイルの役割

ファイル 役割
SKILL.md Skill本体。frontmatter (name/description) と指示本文。Antigravity がこの内容をエージェント指示として読み込み、ユーザーのプロンプトに応じて発動します
scripts/commit_haiku_generator.py コミットメッセージを俳句に変換
references/design_notes.md 概要 をまとめた参考資料

SKILL.md

---
name: commit-haiku-generator
description: コミットメッセージ生成や編集時、または "haiku" "五七五" "俳句" などのキーワードを含むリクエスト時に発動。コミット文を自動で五・七・五の俳句形式に変換したい場合に利用されます。
---

# 機能概要
commit-haiku-generatorは、通常のコミットメッセージを自動で五・七・五の俳句形式に変換するジョーク系Skillです。開発現場の堅苦しい雰囲気を和らげ、エンジニアの心に文学的な癒しをもたらします。コミット内容の要約や説明も、日本語のリズムに乗せてユーモラスに表現されるため、思わず笑ってしまうような一句が生まれることも。普段のコミット作業をちょっと楽しくしたい方に最適です。

# 使い方
このSkillは、コミットメッセージ生成や編集時、または「haiku」「五七五」「俳句」などのキーワードを含むリクエストで自動発動します。明示的な呼び出しは不要です。例えば、コミットメッセージの自動生成や「この変更内容を俳句で説明して」といった指示がトリガーとなります。

# 出力例
```
[commit-haiku]
新しい関数
静かにバグ直す
春の夜
```
```
[commit-haiku]
README更新
ドキュメント整う
コード光る
```

# 注意点
- 意味的な正確さよりも五・七・五のリズムを優先します。
- 生成される俳句は必ずしも内容と一致しない場合があります。
- 英語や他言語のコミット文は日本語俳句に変換されます。
- ローカルにファイル等は保存しません。
- 重要な履歴管理には通常のコミット文も併用してください。

# 参考資料
詳細な設計や実装方針は references/design_notes.md を参照してください。俳句の自動生成に関する技術的背景や、日本語形態素解析の利用例も記載しています。
- [Git公式コミットガイド](https://git-scm.com/book/ja/v2/Git-%E3%81%AE%E5%9F%BA%E6%9C%AC-%E3%82%B3%E3%83%9F%E3%83%83%E3%83%88%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8)
- [MeCab公式](https://taku910.github.io/mecab/)

scripts/commit_haiku_generator.py

import sys
import argparse
import re
import random
from typing import List, Tuple

try:
    import MeCab
except ImportError:
    print('MeCabが必要です。pip install mecab-python3 でインストールしてください。')
    sys.exit(1)

SYLLABLES = [5, 7, 5]

# 日本語の音節数を推定(かな・カナ・漢字混在対応)
def count_on(text: str) -> int:
    # 長音記号や促音、小書き文字も1音とする
    text = re.sub(r'[ァィゥェォャュョッー]', 'あ', text)
    text = re.sub(r'[ぁぃぅぇぉゃゅょっー]', 'あ', text)
    text = re.sub(r'[a-zA-Z0-9]', '', text)
    return len(text)

def split_by_on(words: List[str], targets: List[int]) -> List[List[str]]:
    result = []
    idx = 0
    for t in targets:
        group = []
        count = 0
        while idx < len(words) and count < t:
            word = words[idx]
            on = count_on(word)
            if count + on > t:
                break
            group.append(word)
            count += on
            idx += 1
        if count != t:
            # 足りない場合はダミー挿入
            while count < t:
                group.append(random.choice(['空', '夢', '光', '風', '雲', '夜', '春', '秋', '花']))
                count += 1
        result.append(group)
    return result

def mecab_wakati(text: str) -> List[str]:
    tagger = MeCab.Tagger('-Owakati')
    wakati = tagger.parse(text)
    return wakati.strip().split()

def generate_haiku(text: str) -> str:
    words = mecab_wakati(text)
    if not words:
        return 'コミット内容
五七五で詠む
春の風'
    lines = split_by_on(words, SYLLABLES)
    lines_str = [''.join(line) for line in lines]
    return '\n'.join(lines_str)

def haiku_commit_message(original: str) -> str:
    haiku = generate_haiku(original)
    return f'[commit-haiku]\n{haiku}'

def main():
    parser = argparse.ArgumentParser(description='コミットメッセージを俳句に変換')
    subparsers = parser.add_subparsers(dest='command')

    parser_gen = subparsers.add_parser('generate', help='俳句形式でコミットメッセージを生成')
    parser_gen.add_argument('message', nargs='*', help='コミットメッセージ')

    parser_sample = subparsers.add_parser('sample', help='サンプル俳句を表示')

    args = parser.parse_args()

    if args.command == 'generate':
        if not args.message:
            print('コミットメッセージを指定してください。')
            sys.exit(1)
        original = ' '.join(args.message)
        haiku = haiku_commit_message(original)
        print(haiku)
    elif args.command == 'sample':
        samples = [
            '新機能追加しました',
            'バグ修正とテスト追加',
            'ドキュメントを更新',
            'コードをリファクタ',
            '設定ファイル修正',
            'README更新',
        ]
        for s in samples:
            print(haiku_commit_message(s))
            print()
    else:
        parser.print_help()

if __name__ == '__main__':
    main()

references/design_notes.md

# 概要
commit-haiku-generatorは、コミットメッセージを日本語の五・七・五俳句形式に自動変換する遊び心あるSkillです。日常の開発作業に文学的なスパイスを加え、エンジニア同士のコミュニケーションを和やかにします。

# 公式ドキュメント抜粋
- [MeCab公式](https://taku910.github.io/mecab/): 日本語形態素解析エンジン。分かち書きや品詞分解が可能。
- [Gitコミットメッセージガイド](https://git-scm.com/book/ja/v2/Git-%E3%81%AE%E5%9F%BA%E6%9C%AC-%E3%82%B3%E3%83%9F%E3%83%83%E3%83%88%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8)

# 利用例
- 通常のコミット文を「俳句で」と依頼された場合
- 開発チームのアイスブレイクやイベント用
- コードレビュー時のちょっとしたユーモア演出

# 注意点
- 完全な意味維持や自然な俳句生成は保証されません。
- 日本語以外のメッセージは強引に日本語俳句化されます。
- 重要な履歴管理には通常のコミット文も併用してください。

# 設計方針
- MeCabによる分かち書きで単語単位に分割し、音数推定で五・七・五に分配。
- 音数が足りない場合は季語や汎用単語を補充。
- コマンドラインからも手軽に利用できる構成。

導入手順

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

1. 前提

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

2. degit でフォルダ取得

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

npx degit aazutaku/ai-note/antigravity/commit-haiku-generator .agent/skills/commit-haiku-generator

.agent/skills/commit-haiku-generator の中に SKILL.md / scripts/ / references/ / README.md が展開されます。

3. ファイル配置確認

ls .agent/skills/commit-haiku-generator
# 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記事を探す

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

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

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