#!/usr/bin/env bash # SessionStart hook (все источники): если заголовок сессии начинается с имени роли, напомнить вызвать /role. # Ничего не блокирует: любой сбой → тихий exit 0. Заголовок приходит в поле session_title (claude -n "<роль> …", /rename). set -uo pipefail input=$(cat 2>/dev/null || true) [ -n "$input" ] || exit 0 title=$(printf '%s' "$input" | python3 -c 'import sys,json try: print((json.load(sys.stdin) or {}).get("session_title") or "") except Exception: print("")' 2>/dev/null) || exit 0 [ -n "$title" ] || exit 0 # первое слово: нижний регистр, без ведущих пробелов и префикса алиаса cc-; только латинские буквы. # LC_ALL=C — чтобы BSD tr/sed работали побайтово и не спотыкались о кириллицу в заголовке. first=$(printf '%s' "$title" | LC_ALL=C tr '[:upper:]' '[:lower:]' | LC_ALL=C sed -E 's/^[[:space:]]*(cc-)?([a-z]*).*$/\2/') case "$first" in dev|admin|analyst|qa) echo "[claude-harness] Роль сессии: $first. Вызови /role $first до первого ответа." ;; esac exit 0