diff --git a/.claude/settings.json b/.claude/settings.json index 8250926..7c598db 100644 --- a/.claude/settings.json +++ b/.claude/settings.json @@ -81,6 +81,10 @@ "type": "command", "command": "git fetch origin 2>/dev/null; CHANGES=$(git log --oneline HEAD..origin/main 2>/dev/null | head -10); if [ -n \"$CHANGES\" ]; then echo '๐Ÿ“Œ [SessionStart] origin/main ๋ณ€๊ฒฝ ๊ฒ€์ถœ:'; echo \"$CHANGES\"; echo 'โ†’ ๊ถŒ์žฅ: git merge origin/main --no-edit'; else echo 'โœ… [SessionStart] main ๋™๊ธฐํ™” ์ƒํƒœ'; fi" }, + { + "type": "command", + "command": "bash scripts/agent_sync.sh 2>/dev/null || true" + }, { "type": "command", "command": "bash scripts/inbox_scan.sh 2>/dev/null || true" diff --git a/scripts/agent_sync.sh b/scripts/agent_sync.sh new file mode 100644 index 0000000..b160ae7 --- /dev/null +++ b/scripts/agent_sync.sh @@ -0,0 +1,61 @@ +#!/bin/bash +# SessionStart hook ํ™•์žฅ: ๋ถ€์„œ ์—์ด์ „ํŠธ๋ฅผ ํ˜„์žฌ ์›ŒํฌํŠธ๋ฆฌ .claude/agents/ ๋กœ ์ž๋™ ๋ณต์ œ +# ์ถ• 2 hook ํ™•์žฅ์•ˆ (2026-04-15 PD๋‹˜ ์Šน์ธ) +# +# ๋™์ž‘: +# 1. cwd ๊ธฐ๋ฐ˜ ๋ถ€์„œ ํŒ๋‹จ (๊ธฐํš์‹ค/๊ฐœ๋ฐœ์‹ค/PM) +# 2. ํ•ด๋‹น ๋ถ€์„œ์˜ .claude/agents/*.md ๋ฅผ cwd์˜ .claude/agents/ ๋กœ ๋ณต์‚ฌ +# 3. ์ด๋ฏธ ๊ฐ™์€ ๋‚ด์šฉ์ด๋ฉด skip (cmp -s ๋น„๊ต) +# +# ์ œ์•ฝ: +# - hook์€ ์„ธ์…˜ ์ด๋ฏธ ์‹œ์ž‘๋œ ํ›„ ์‹คํ–‰ โ†’ ๊ทธ ์„ธ์…˜์˜ ์ด๋ฏธ ๋กœ๋“œ๋œ ์—์ด์ „ํŠธ ๋ชฉ๋ก์€ ๊ฐฑ์‹ ๋˜์ง€ ์•Š์Œ +# - ๋”ฐ๋ผ์„œ "๋‹ค์Œ ์„ธ์…˜๋ถ€ํ„ฐ ์œ ํšจ" +# - ์ฒซ ์„ธ์…˜ ์œ ํšจํ™” ์ด์Šˆ๋Š” ๊ฐ์‹œ์ž์•ˆ(๋ณ„๋„ ๊ฒ€ํ†  ์ค‘)์—์„œ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์Œ +# +# C23 ์ค€์ˆ˜: ์‹คํŒจยทskip๋„ ํˆฌ๋ช… ๋ณด๊ณ  + +REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null) +[ -z "$REPO_ROOT" ] && exit 0 + +CWD=$(pwd -W 2>/dev/null || pwd) + +# ๋ถ€์„œ ํŒ๋‹จ +if [[ "$CWD" == *"/๊ธฐํš์‹ค/"* ]] || [[ "$CWD" == *"/๊ธฐํš์‹ค" ]]; then + ROLE="๊ธฐํš์‹ค" + DEPT_AGENTS="$REPO_ROOT/๊ธฐํš์‹ค/.claude/agents" +elif [[ "$CWD" == *"/๊ฐœ๋ฐœ์‹ค/"* ]] || [[ "$CWD" == *"/๊ฐœ๋ฐœ์‹ค" ]]; then + ROLE="๊ฐœ๋ฐœ์‹ค" + DEPT_AGENTS="$REPO_ROOT/๊ฐœ๋ฐœ์‹ค/.claude/agents" +else + # PM(๋ฃจํŠธ) ์„ธ์…˜์€ ๋ณต์ œ ๋Œ€์ƒ ์•„๋‹˜ โ€” ๋ฃจํŠธ .claude/agents/ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ + exit 0 +fi + +# ๋ถ€์„œ ์›๋ณธ ๋””๋ ‰ํ† ๋ฆฌ ์—†์œผ๋ฉด ์ข…๋ฃŒ (์ด๋ก€์ ) +[ ! -d "$DEPT_AGENTS" ] && exit 0 + +WT_AGENTS=".claude/agents" +mkdir -p "$WT_AGENTS" 2>/dev/null + +COPIED=0 +SKIPPED=0 +for f in "$DEPT_AGENTS"/*.md; do + [ -e "$f" ] || continue + BASENAME=$(basename "$f") + DEST="$WT_AGENTS/$BASENAME" + if [ ! -f "$DEST" ] || ! cmp -s "$f" "$DEST" 2>/dev/null; then + cp "$f" "$DEST" + COPIED=$((COPIED + 1)) + else + SKIPPED=$((SKIPPED + 1)) + fi +done + +if [ $COPIED -gt 0 ]; then + echo "๐Ÿ”ง [agent_sync:$ROLE] ๋ถ€์„œ ์—์ด์ „ํŠธ $COPIED ๊ฐœ ์‹ ๊ทœ ๋™๊ธฐํ™” (๋‹ค์Œ ์„ธ์…˜๋ถ€ํ„ฐ ์œ ํšจ)" + [ $SKIPPED -gt 0 ] && echo " (์ด๋ฏธ ๋™์ผ: $SKIPPED ๊ฐœ)" +else + echo "โœ… [agent_sync:$ROLE] ๋ถ€์„œ ์—์ด์ „ํŠธ ๋™๊ธฐํ™” ์ƒํƒœ (๋™์ผ $SKIPPED ๊ฐœ)" +fi + +exit 0 diff --git a/๊ฐœ๋ฐœ์‹ค/.claude/settings.json b/๊ฐœ๋ฐœ์‹ค/.claude/settings.json index 8250926..7c598db 100644 --- a/๊ฐœ๋ฐœ์‹ค/.claude/settings.json +++ b/๊ฐœ๋ฐœ์‹ค/.claude/settings.json @@ -81,6 +81,10 @@ "type": "command", "command": "git fetch origin 2>/dev/null; CHANGES=$(git log --oneline HEAD..origin/main 2>/dev/null | head -10); if [ -n \"$CHANGES\" ]; then echo '๐Ÿ“Œ [SessionStart] origin/main ๋ณ€๊ฒฝ ๊ฒ€์ถœ:'; echo \"$CHANGES\"; echo 'โ†’ ๊ถŒ์žฅ: git merge origin/main --no-edit'; else echo 'โœ… [SessionStart] main ๋™๊ธฐํ™” ์ƒํƒœ'; fi" }, + { + "type": "command", + "command": "bash scripts/agent_sync.sh 2>/dev/null || true" + }, { "type": "command", "command": "bash scripts/inbox_scan.sh 2>/dev/null || true" diff --git a/๊ธฐํš์‹ค/.claude/settings.json b/๊ธฐํš์‹ค/.claude/settings.json index 8250926..7c598db 100644 --- a/๊ธฐํš์‹ค/.claude/settings.json +++ b/๊ธฐํš์‹ค/.claude/settings.json @@ -81,6 +81,10 @@ "type": "command", "command": "git fetch origin 2>/dev/null; CHANGES=$(git log --oneline HEAD..origin/main 2>/dev/null | head -10); if [ -n \"$CHANGES\" ]; then echo '๐Ÿ“Œ [SessionStart] origin/main ๋ณ€๊ฒฝ ๊ฒ€์ถœ:'; echo \"$CHANGES\"; echo 'โ†’ ๊ถŒ์žฅ: git merge origin/main --no-edit'; else echo 'โœ… [SessionStart] main ๋™๊ธฐํ™” ์ƒํƒœ'; fi" }, + { + "type": "command", + "command": "bash scripts/agent_sync.sh 2>/dev/null || true" + }, { "type": "command", "command": "bash scripts/inbox_scan.sh 2>/dev/null || true"