Refs #2 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MzkPQWjfA7RpqYWkjnqJwt
18 lines
1.3 KiB
Bash
Executable File
18 lines
1.3 KiB
Bash
Executable File
#!/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
|