Claude Codeで開発運勢を自動アナウンスするSkillの構築手順

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

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

日々Claude Codeでリポジトリを扱っていると、単調なコミット作業や長時間のAI coding workflowに飽きが来ることは少なくありません。特に真面目な開発現場では、ちょっとした遊び心や“謎のカオス”を挟む余地がなく、気がつけば淡々とした作業の繰り返しになりがちです。

  • コミット時に何か面白いことが起きてほしいが、現状は淡々とメッセージが流れるだけで気分転換がない
  • monorepo構成で複数のpackageをまたぐ作業中、作業の切れ目や進捗の節目が感じられず、モチベーションが続きにくい
  • 長時間のAI coding workflowで、long contextが溜まるほど作業が単調化し、集中力が途切れやすい
  • session再開時やonboarding時、Claude Codeが自動で面白い反応や遊び心を返してくれる仕掛けが欲しい
  • 「今日は何か特別な日か?」といった意味不明な運勢や、謎コメントでチームの空気を和ませたい

特に「コミット」という日常的なタイミングに、ちょっとした非日常感を差し込めるSkillが求められています。

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

一言サマリ: このスキルは、コミットごとに神話的カオスをターミナルに呼び出し、開発現場に遊び心と無責任な運勢コメントをもたらします。

もう少し具体化すると、このSkillを入れることで以下のような状態になる:

  • コミット時に毎回“架空の神獣・幻獣”が現れ、理不尽かつ笑える運勢コメントがターミナルに表示される
  • 長時間のAI coding workflowやmonorepo作業でも、気分転換やチームの和みポイントが自動で挟まる
  • Claude Codeのcontextやpath managementに直接関与せず、開発のリズムを崩さずに“謎の非日常”を演出できる
  • 運勢コメントや神獣キャラクターが毎回ランダムに変化し、飽きずに使い続けられる
  • onboardingやsession再開時にも、ちょっとした話題や笑いを提供し、コミュニケーションのきっかけになる
QUICK INSTALL
このSkillをすぐ試す

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

npx degit aazutaku/ai-note/claude-code/commit-mythical-creature-announcer .claude/skills/commit-mythical-creature-announcer

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

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

シーン1: session 開始時 (CLAUDE.md と組み合わせて)


# /commit-mythical-creature-announcer

🦄 ユニコーンが首をかしげている…
本日の開発運勢: 「慎重に進めよ。今日はコードレビューで摩擦が生じやすい日。」

repository: /Users/sample/project
directory: src/components

(Claude Code: context, path management ready)

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


# git commit -m "fix: update utils"

🐉 ドラゴンが静かに眠っている…
本日の開発運勢: 「進捗は静かに。大きな変更は控えめに。」

repository: /Users/sample/monorepo
directory: packages/api

(Claude Code: repository understanding updated)

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


# /commit-mythical-creature-announcer

🔥 フェニックスが蘇る…
本日の開発運勢: 「バグ退散の吉日!全てのテストが一発で通るかも?」

repository: /Users/sample/fun-repo
directory: src/utils

(AI coding workflow: memory boosted)

before / after の違い

場面 Skill 無し Skill 有り
session 再開時 repo 構造から毎回説明、path も指定し直し Claude Code が自動で context を復元、最小プロンプトで再開+神獣が出現
monorepo 移動 違う package のコードを参照しがち directory boundary を意識+神話的な運勢コメントで気分転換
長時間 workflow long context で重要箇所が薄まる コミットごとに神獣が現れ、単調な流れにカオスを注入

発動方式

明示呼び出し (/commit-mythical-creature-announcer) と暗黙発動 (コミットや特定の説明文にマッチ) の両方に対応。

Skill の中身を全部見せる

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

.claude/skills/commit-mythical-creature-announcer/
├── SKILL.md
├── scripts/
│   └── mythical_announcer.py
└── references/
    └── design_notes.md

各ファイルの役割

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

SKILL.md

---
name: commit-mythical-creature-announcer
description: このSkillは、Gitのコミット時や /commit-mythical-creature-announcer コマンド実行時に発動し、ターミナルに架空の神獣と理不尽な開発運勢コメントをランダム表示します。コミット・運勢・神獣などのキーワード検知時も自動発動します。
---

# 機能概要
commit-mythical-creature-announcerは、Gitコミット時や明示的な呼び出しで、毎回異なる“架空の神獣”と“理不尽な開発運勢”をターミナルに表示するジョーク系Skillです。開発現場にカオスと笑いをもたらし、日々のコミット作業を少しだけ楽しくします。神話生物のイラスト風アスキーアートと、意味不明な運勢コメントがセットで出現し、飽きずに楽しめます。

# 使い方
- 明示呼び出し: `/commit-mythical-creature-announcer` をターミナルで実行
- 暗黙発動: Gitコミット時、または「コミット」「運勢」「神獣」などのキーワードを含む操作時に自動発動

# 出力例
```
🐉 ドラゴンが眠りについた…今日は進捗が静かに進むでしょう。
─────────────────────────────
          __====-_  _-====__
        _--^^^#####//      \\
       -^##########// (zzz) \\
      _/############//       \\
     /#############((     .   ))
    -###############\\     //
   -#################\\_ //
  _#/|##########/\######( )
 |/ |#/#\#/\#/\#/\#/\#|\|
─────────────────────────────
本日の開発運勢: コードレビューは神話級の難易度。バグはそっとしておこう。
```

# 注意点
- 表示内容は完全ランダムで、実際の運勢や進捗とは一切関係ありません。
- ローカル環境でのみ動作します。履歴や神獣の記録は自動保存されません。
- 除外パス: .git, .claude/skills/配下以外には影響しません。

# 参考資料
- references/design_notes.md に設計方針や神獣リストを記載
- 公式: https://git-scm.com/ を参照

scripts/mythical_announcer.py

import sys
import random
import argparse
import datetime

MYTHICAL_CREATURES = [
    {
        'name': 'フェニックス',
        'ascii_art': r'''
           (  )   (   )  )
            ) (   )  (  (
            ( )  (    ) )
           _____________
          <_____________> ___
          |             |/ _ \
          |               | | |
          |               |_| |
       ___|             |\___/
      /    \___________/    \
      \_____________________/
        ___\_/___\__/__\_/
''',
        'fortunes': [
            'フェニックスが蘇る…本日はバグ退散の吉日。',
            '炎のごとくリファクタリングせよ。',
            '燃え尽き注意。休憩も大事。'
        ]
    },
    {
        'name': 'ユニコーン',
        'ascii_art': r'''
           \\
            \\
             \\
              \\
                \\
                 (\\
                 ( \\
                 (  \\
                 (   \\
                 (    \\
                /|     \\
               / |      \\
              *  |       \\
                 |        \\
                 |         \\
                 |          \\
''',
        'fortunes': [
            'ユニコーンが首をかしげている…今日は慎重に。',
            '幻想的なバグが現れる予感。',
            '理想を追いすぎると沼にハマるかも。'
        ]
    },
    {
        'name': 'ドラゴン',
        'ascii_art': r'''
          __====-_  _-====__
        _--^^^#####//      \\
       -^##########// (zzz) \\
      _/############//       \\
     /#############((     .   ))
    -###############\\     //
   -#################\\_ //
  _#/|##########/\######( )
 |/ |#/#\#/\#/\#/\#/\#|\|
''',
        'fortunes': [
            'ドラゴンが眠る…進捗は静かに。',
            '火の玉レビューが飛んでくるかも。',
            'バグは焼き払え。'
        ]
    },
    {
        'name': 'ケルベロス',
        'ascii_art': r'''
          __      _
         o'')}____//
          `_/      )
          (_(_/-(_/
''',
        'fortunes': [
            'ケルベロスが吠えている…マージ競合にご用心。',
            '三つの頭で三倍デバッグ。',
            'コミットメッセージは慎重に。'
        ]
    },
    {
        'name': 'グリフォン',
        'ascii_art': r'''
        ,_     _
        |\\_,-~/
        / _  _ |    ,--.
       (  @  @ )   / ,-'
        \  _T_/-._( (
        /         `. \\
        |         _  \\
         \ \ ,  /      |
          || |-_\__   /
         ((_/`(____,-'
''',
        'fortunes': [
            'グリフォンが空を舞う…今日の開発は羽ばたく。',
            '高みを目指しすぎて落下注意。',
            'コードの見通しは良好。'
        ]
    },
    {
        'name': 'バジリスク',
        'ascii_art': r'''
        /^\/^\
      _|__|  O|
 \/     /~     \\
  \____|__________/  \\
         \_______      \\
                 `\     \                 \\
                   |     |                  \\
                  /      /                    \\
                 /     /                       \\
               /      /                         \ \
              /     /                            \  \
            /     /             _----_            \   \
           /     /           _-~      ~-_         |   |
          (      (        _-~    _--_    ~-_     _/   |
           \      ~-____-~    _-~    ~-_    ~-_-~    /
             ~-_           _-~          ~-_       _-~
                ~--______-~                ~-___-~
''',
        'fortunes': [
            'バジリスクの視線…今日はコードレビュー厳しめ。',
            '目が合うとバグが増える。',
            '静かに作業すると吉。'
        ]
    }
]

GENERIC_FORTUNES = [
    '本日の開発運勢: コードレビューは神話級の難易度。バグはそっとしておこう。',
    '本日の開発運勢: コミット数よりも品質を重視せよ。',
    '本日の開発運勢: 今日は進捗が霧の彼方に消えるかも。',
    '本日の開発運勢: レビュー依頼は慎重に。',
    '本日の開発運勢: 神獣の加護でバグ退散!…かもしれない。',
    '本日の開発運勢: 理不尽なバグが降臨する予感。',
    '本日の開発運勢: 仕様変更に注意。',
    '本日の開発運勢: チームメイトに感謝を伝えると吉。',
    '本日の開発運勢: 今日は何も起きない(たぶん)。'
]

def pick_creature():
    creature = random.choice(MYTHICAL_CREATURES)
    fortune = random.choice(creature['fortunes'])
    generic = random.choice(GENERIC_FORTUNES)
    return creature, fortune, generic

def print_announcement():
    creature, fortune, generic = pick_creature()
    border = '─' * 41
    now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M')
    print(f"{border}")
    print(f"{now}")
    print(f"{creature['name']}が現れた… {fortune}")
    print(f"{border}")
    print(creature['ascii_art'])
    print(f"{border}")
    print(generic)
    print(f"{border}")

def list_creatures():
    print("利用可能な神話生物:")
    for c in MYTHICAL_CREATURES:
        print(f"- {c['name']}")

def summary():
    print("commit-mythical-creature-announcerは、コミット時や明示呼び出しで神獣と運勢をランダム表示します。神獣は以下の通り:")
    for c in MYTHICAL_CREATURES:
        print(f"・{c['name']}: {len(c['fortunes'])}種の運勢コメント")
    print(f"汎用運勢コメント: {len(GENERIC_FORTUNES)}種")

def main():
    parser = argparse.ArgumentParser(description='Mythical Creature Announcer: コミット時に神獣と運勢を表示')
    subparsers = parser.add_subparsers(dest='command')

    parser_announce = subparsers.add_parser('announce', help='神獣と運勢を表示')
    parser_list = subparsers.add_parser('list', help='神獣リストを表示')
    parser_summary = subparsers.add_parser('summary', help='概要を表示')

    args = parser.parse_args()
    if args.command == 'announce' or args.command is None:
        print_announcement()
    elif args.command == 'list':
        list_creatures()
    elif args.command == 'summary':
        summary()
    else:
        parser.print_help()

if __name__ == '__main__':
    main()

references/design_notes.md

# 概要
このSkillは、コミット作業や明示コマンド実行時に、神話生物(フェニックス・ユニコーン・ドラゴン等)のアスキーアートと理不尽な運勢コメントをランダム表示することで、開発現場にユーモアとカオスをもたらします。

# 公式ドキュメント抜粋
Git公式: https://git-scm.com/
Python argparse: https://docs.python.org/ja/3/library/argparse.html

# 利用例
- `python mythical_announcer.py` で神獣と運勢を表示
- `python mythical_announcer.py list` で神獣リストを参照
- Gitフック(pre-commit)に組み込むことで、毎回コミット時に発動

# 注意点
運勢や神獣は完全ランダムで、実際の開発状況や成果には一切影響しません。履歴保存や外部連携は行いません。

# 設計方針
アスキーアートと運勢コメントは拡張容易な構造で管理。CLIサブコマンドで柔軟に利用可能。Skill本体から直接呼び出される設計です。

導入手順

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

1. 前提

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

2. degit でフォルダ取得

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

npx degit aazutaku/ai-note/claude-code/commit-mythical-creature-announcer .claude/skills/commit-mythical-creature-announcer

.claude/skills/commit-mythical-creature-announcer の中に SKILL.md / scripts/ / references/ / README.md が展開されます。

3. ファイル配置確認

ls .claude/skills/commit-mythical-creature-announcer
# SKILL.md, scripts/, references/, README.md があればOK

4. Claude Code を再起動 (or Skill 自動検出を待つ)

新しいSkillが自動で認識されます。リスト確認したい場合は /commit-mythical-creature-announcer で呼び出します。

5. 動作確認

/commit-mythical-creature-announcer で呼び出すか、コミット時に自動発動します。期待される出力イメージは「実行したらこうなる」セクションを参照してください。

こんな瞬間に便利

  • session 開始時: 前回までの repo 把握を Claude Code に一発で復元させたい
  • monorepo 移動時: packages を跨いだ瞬間に context を切り替えたい
  • onboarding 時: 新しい repo を Claude Code に把握させ、こちらが 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 コードを拾ってしまう可能性
  • Claude Code 固有の引っかかり: paths フロントマターでの絞り込みを使わないと意図しないタイミングで発動する
  • 発動しないケース: description が漠然 / 他の Skill が優先 / git管理外 directory

試す前に確かめたいこと

この Skill を実運用に投入する前に確かめたい問いを並べる:

  • 実 repo での token 消費は許容範囲か?
  • monorepo (packages 多数) で安定して動くか?
  • stale context にならず、長時間 workflow でも有効か?
  • CLAUDE.md との連携設計はどうあるべきか?
  • コミット時に必ずターミナルに神獣と運勢コメントがランダム表示されるか?
  • 神獣・コメントが毎回変化し、飽きが来ないか?
  • 運勢の内容が理不尽かつ笑えるものであるか?

実際に Claude Code で試した検証ログは Claude Codeで神獣が現れるコミット運勢を試してみた! にまとめる予定 (公開準備中の場合あり)。
あわせて Claude Code 公式ドキュメント と、本シリーズ「Claude Codeを便利にするSkill提案」の他記事も参照のこと。

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

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

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

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