🎉

Claude Code SKILL.md 肥大化対策パターン

に公開

TL;DR

  • 決定論的処理(日付計算、ファイル操作)はスクリプト化
  • SKILL.mdは「何を呼ぶか」だけ記述(42行に削減)
  • AIには創造性が必要な処理のみ任せる

実装パターン

SKILL.mdが肥大化する原因は、決定論的処理を自然言語で記述していること。以下のスクリプトで解決できます。

#!/bin/bash
# get_next_date.sh - 次の火曜or木曜を計算
# Usage: ./get_next_date.sh [base_date]
# Output: YYYY-MM-DD

set -euo pipefail

BASE_DATE="${1:-$(date +%Y-%m-%d)}"

# 曜日を取得(0=日, 1=月, ..., 6=土)
day_of_week=$(date -j -f "%Y-%m-%d" "$BASE_DATE" "+%w" 2>/dev/null || \
              date -d "$BASE_DATE" "+%w")

# 次の火曜(2)または木曜(4)までの日数を計算
case $day_of_week in
  0) days_to_tue=2; days_to_thu=4 ;;  # 日曜
  1) days_to_tue=1; days_to_thu=3 ;;  # 月曜
  2) days_to_tue=7; days_to_thu=2 ;;  # 火曜 → 次は木曜
  3) days_to_tue=6; days_to_thu=1 ;;  # 水曜
  4) days_to_tue=5; days_to_thu=7 ;;  # 木曜 → 次は火曜
  5) days_to_tue=4; days_to_thu=6 ;;  # 金曜
  6) days_to_tue=3; days_to_thu=5 ;;  # 土曜
esac

# 早いほうを選択
if [[ $days_to_tue -le $days_to_thu ]]; then
  days_to_add=$days_to_tue
else
  days_to_add=$days_to_thu
fi

# 日付を計算(macOS/Linux両対応)
if date -v +1d > /dev/null 2>&1; then
  date -j -v +${days_to_add}d -f "%Y-%m-%d" "$BASE_DATE" "+%Y-%m-%d"
else
  date -d "$BASE_DATE + $days_to_add days" "+%Y-%m-%d"
fi

解説

箇所 役割
set -euo pipefail エラー時即座に停止、未定義変数防止
case $day_of_week 曜日ごとの日数計算をルールベースで
date -v / date -d macOS/Linux両対応の日付計算

SKILL.mdはこれだけ

# blog-publish

## Usage
`/blog-publish <source> [--date next|YYYY-MM-DD]`

## Init
`bash scripts/orchestrate.sh <source> [--date DATE]`

Returns: `{mode, source, publish_date, seed_exists}`

## Phase Execution
| Phase | Condition | Skill |
|-------|-----------|-------|
| Seed | mode=repo | AskUser: reuse? |
| Blog | !--skip-blog | `seed-to-blog` |

42行。 AIが知るべきは「何を呼び出すか」だけ。

使いどころ

  • 日付計算、ファイル存在チェック、パス変換
  • 入力→出力が固定の処理すべて
  • 毎回AIが再解釈している処理

さらに深掘りしたい方へ

この記事ではSKILL.mdのスクリプト化パターンを紹介しました。

SKILL.mdの書き方|Claude Code Skills設計ベストプラクティス【肥大化防止】 ではさらに:

  • 🔄 orchestrate.sh、detect_mode.shの完全実装
  • ⚠️ macOS/Linux互換性、JSONエスケープの落とし穴
  • 📊 他Skill(generate-thumbnail等)への応用例

playpark について

playpark LLCは業務自動化・AI活用・Web開発を支援するテクノロジーパートナーです。

🔧 お問い合わせ | 📝 ブログ一覧

Discussion