Skip to content

原文(日本語に翻訳)

SessionStart フックが reloadSkills: true を返すことで、スキルディレクトリを再スキャンし、そのフックがインストールしたスキルを同一セッション内で利用可能にできるようになりました。

原文(英語)

SessionStart hooks can now return reloadSkills: true to re-scan skill directories, making skills installed by the hook available in the same session

概要

SessionStart フックが reloadSkills: true を含む JSON を返すことで、フックが動的にインストールしたスキルを同じセッション内で即座に利用できるようになりました。従来はフックでスキルをインストールしても、セッションを再起動しないと利用できませんでした。この改善により、フックによるスキルの動的プロビジョニングが完結します。

基本的な使い方

SessionStart フックのスクリプトで hookSpecificOutput.reloadSkills: true を含む JSON を標準出力に出力します。

bash
#!/bin/bash
# .claude/hooks/session-start.sh

# スキルをインストール
install_skills_if_needed() {
  mkdir -p ~/.claude/skills/my-dynamic-skill
  cat > ~/.claude/skills/my-dynamic-skill/SKILL.md <<'EOF'
---
name: my-dynamic-skill
description: 動的にインストールされたスキル
---
# 動的スキル
このスキルはセッション開始時にインストールされます。
EOF
}

install_skills_if_needed

# hookSpecificOutput 内に reloadSkills: true を返してスキルを即時反映
echo '{
  "hookSpecificOutput": {
    "hookEventName": "SessionStart",
    "reloadSkills": true
  }
}'

実践例

環境に応じたスキルの動的インストール

プロジェクトの種類を検出し、適切なスキルを自動インストールする例です。

bash
#!/bin/bash
# .claude/hooks/session-start.sh

SKILLS_INSTALLED=false

# Next.js プロジェクトなら専用スキルをインストール
if [ -f "next.config.js" ] || [ -f "next.config.ts" ]; then
  mkdir -p .claude/skills/nextjs-helper
  cat > .claude/skills/nextjs-helper/SKILL.md <<'EOF'
---
name: nextjs-helper
description: Next.js 開発支援スキル
---
# Next.js Helper
Next.js固有のパターンとベストプラクティスを提供します。
EOF
  SKILLS_INSTALLED=true
fi

if [ "$SKILLS_INSTALLED" = "true" ]; then
  echo '{
    "hookSpecificOutput": {
      "hookEventName": "SessionStart",
      "reloadSkills": true
    }
  }'
fi

バージョン管理されたスキルの自動更新

リモートからスキルを取得してインストールする例です。

bash
#!/bin/bash
# .claude/hooks/session-start.sh

SKILLS_DIR=~/.claude/skills
SKILLS_UPDATED=false

# リモートからスキル定義を取得(例)
if curl -sf "https://example.com/skills/team-skill.md" \
   -o "$SKILLS_DIR/team-skill/SKILL.md" 2>/dev/null; then
  SKILLS_UPDATED=true
fi

if [ "$SKILLS_UPDATED" = "true" ]; then
  echo '{"reloadSkills": true}'
fi

注意点

  • reloadSkills: trueSessionStart フックの標準出力として JSON 形式で返す必要があります
  • フックが reloadSkills: true を返した場合、~/.claude/skills および .claude/skills の両方が再スキャンされます
  • フックでエラーが発生した場合、reloadSkills は無視される場合があります
  • スキルファイルに構文エラーがある場合は、リロード時にエラーが通知されます
  • SessionStart フックは settings.json の hooks セクションに設定します
json
{
  "hooks": {
    "SessionStart": [
      {
        "hooks": [
          {
            "type": "command",
            "command": ".claude/hooks/session-start.sh"
          }
        ]
      }
    ]
  }
}

関連情報