feat(process): 하이브리드 구조 보완 5건 일괄 구현 (PD님 직접 지시)

1. P22·P19·P20 역할 분리 명확화 (SKILL.md)
2. git_fetch_throttle.sh: 소통 허브 inbox 스캔 추가 — 부서별 수신함 변경 감지
3. hold_watch.sh: 소통 허브 inbox의 HOLD·긴급 파일도 감지 — 양방향 전파
4. P23 기획 결정 재량 범위 신설 (SKILL.md)
5. context_brief.sh: 부서 CONTEXT_BRIEF.md 자동 갱신 — Agent 호출 시 컨텍스트 단절 최소화

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
깃 관리자 2026-04-16 12:19:04 +09:00
parent d63c7f5a0e
commit c14348b370
4 changed files with 120 additions and 1 deletions

View File

@ -876,6 +876,24 @@ PD님이 **"세션 갱신"**이라고 지시하면, 해당 세션의 에이전
### 수신
SessionStart hook의 `change_digest.sh`가 자동 표시. 별도 pull 불필요.
### P22·P19·P20 역할 분리 (2026-04-16 통합안 확정)
| 규칙 | 역할 | 기록 내용 | 중복 금지 |
|------|------|----------|----------|
| **P19 (PD 지시 로그)** | "무엇을 하고 있는가" | 지시 진행 상태 트래킹 (활성/아카이브) | — |
| **P22 (결정로그)** | "무엇이 결정되었는가" | 의사결정 팩트만 (결정 + 근거 + 영향) | P19 내용 복제 금지 |
| **P20 (일일보고)** | "왜 그렇게 결정했는가 + 맥락" | 배경·이슈 포함 활동 요약 | P22를 **참조**하되 복제 금지 (C14-4) |
## P23. 기획 결정 재량 범위 (2026-04-16 PD님 직접 지시)
기획실이 독립 세션에서 빠르게 작업할 때의 결정 권한 경계를 명확화한다.
| 재량 수준 | 범위 | 예시 |
|----------|------|------|
| **기획팀장 재량** | 기존 확정 방향 내 세부 수치 조정, 문서 보완, 분석 작업 | 기존 스테이지 난이도 곡선 미세 조정, 오탈자 수정 |
| **PM 확인 필요** | 신규 시스템 제안, 기존 방향 변경, 타 부서 영향 결정 | 새 메커니즘 도입, 기존 조건 체계 재편 |
| **PD님 확인 필요** | 핵심 밸런싱 방향 전환, 유저 경험 직접 영향, 데이터 자산 변경(C6) | 전투 공식 변경, 과금 밸런스 조정 |
---
## 교훈 및 노하우

50
scripts/context_brief.sh Normal file
View File

@ -0,0 +1,50 @@
#!/bin/bash
# 부서 CONTEXT_BRIEF.md 자동 갱신
# PM 허브에서 Agent로 부서 서브에이전트 호출 시 컨텍스트 단절 최소화
# 사용: 각 부서 세션에서 push 전 또는 P21 세션 갱신 시 실행
REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
[ -z "$REPO_ROOT" ] && exit 0
# 현재 부서 판별
CURRENT_DIR=$(pwd)
DEPT=""
BRIEF_PATH=""
LOG_PATH=""
case "$CURRENT_DIR" in
*개발실*) DEPT="개발실"; BRIEF_PATH="$REPO_ROOT/개발실/CONTEXT_BRIEF.md"; LOG_PATH="$REPO_ROOT/공유/PD_지시_트래킹/개발실_PD_지시_로그.md" ;;
*기획실*) DEPT="기획실"; BRIEF_PATH="$REPO_ROOT/기획실/CONTEXT_BRIEF.md"; LOG_PATH="$REPO_ROOT/공유/PD_지시_트래킹/기획실_PD_지시_로그.md" ;;
*) exit 0 ;; # PM 세션은 대상 아님
esac
echo "# ${DEPT} 컨텍스트 브리프 (자동 갱신)" > "$BRIEF_PATH"
echo "> 최종 갱신: $(date +%Y-%m-%d\ %H:%M)" >> "$BRIEF_PATH"
echo "" >> "$BRIEF_PATH"
# 활성 지시 요약
echo "## 활성 지시" >> "$BRIEF_PATH"
if [ -f "$LOG_PATH" ]; then
ACTIVE=$(sed -n '/## 활성 지시/,/## 완료 아카이브/p' "$LOG_PATH" 2>/dev/null | grep -E '^\|.*\|(진행중|보류|대기)\|' | head -10)
if [ -n "$ACTIVE" ]; then
echo "$ACTIVE" >> "$BRIEF_PATH"
else
echo "활성 항목 없음" >> "$BRIEF_PATH"
fi
fi
echo "" >> "$BRIEF_PATH"
# HOLD·차단 요인
echo "## HOLD·차단 요인" >> "$BRIEF_PATH"
HOLDS=$(find "$REPO_ROOT/${DEPT}" -maxdepth 1 \( -name '🛑_*' -o -name '⚠_*' -o -name '🚨_*' \) 2>/dev/null)
if [ -n "$HOLDS" ]; then
echo "$HOLDS" | while read -r f; do echo "- $(basename "$f")" ; done >> "$BRIEF_PATH"
else
echo "없음" >> "$BRIEF_PATH"
fi
echo "" >> "$BRIEF_PATH"
# 최근 커밋
echo "## 최근 커밋 5건" >> "$BRIEF_PATH"
git log --oneline -5 >> "$BRIEF_PATH"
exit 0

View File

@ -35,4 +35,36 @@ if [ -n "$CHANGES" ]; then
echo "⚠️ 자동 merge 불가 — 세션 갱신으로 수동 해결 필요"
fi
fi
# 소통 허브 inbox 스캔 — 자기 부서 수신 채널에 신규 파일 감지
REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
if [ -n "$REPO_ROOT" ]; then
INBOX_HASH_FILE="$THROTTLE_DIR/inbox_hash_$REPO_HASH"
# 현재 부서 판별 (PWD 기준)
CURRENT_DIR=$(pwd)
INBOX_DIRS=""
case "$CURRENT_DIR" in
*개발실*) INBOX_DIRS="$REPO_ROOT/공유/소통/PM→개발실 $REPO_ROOT/공유/소통/기획실→개발실" ;;
*기획실*) INBOX_DIRS="$REPO_ROOT/공유/소통/PM→기획실 $REPO_ROOT/공유/소통/개발실→기획실" ;;
*) INBOX_DIRS="$REPO_ROOT/공유/소통/개발실→PM $REPO_ROOT/공유/소통/기획실→PM" ;;
esac
INBOX_FILES=""
for DIR in $INBOX_DIRS; do
if [ -d "$DIR" ]; then
FILES=$(find "$DIR" -maxdepth 1 -name '*.md' -not -name 'README.md' 2>/dev/null | sort)
INBOX_FILES="$INBOX_FILES$FILES"
fi
done
if [ -n "$INBOX_FILES" ]; then
CURRENT_INBOX_HASH=$(echo "$INBOX_FILES" | sha1sum 2>/dev/null | cut -d' ' -f1)
PREV_INBOX_HASH=$(cat "$INBOX_HASH_FILE" 2>/dev/null)
if [ "$CURRENT_INBOX_HASH" != "$PREV_INBOX_HASH" ]; then
COUNT=$(echo "$INBOX_FILES" | grep -c '.md$')
echo "📬 [inbox] 소통 허브 수신함에 파일 ${COUNT}건 — 확인 필요"
echo "$CURRENT_INBOX_HASH" > "$INBOX_HASH_FILE"
fi
fi
fi
exit 0

View File

@ -10,9 +10,28 @@ THROTTLE_DIR="$HOME/.claude/.nerdnavis_throttle"
mkdir -p "$THROTTLE_DIR" 2>/dev/null
HOLD_HASH_FILE="$THROTTLE_DIR/hold_files_hash"
# 현재 HOLD·긴급 파일 목록 수집
# 현재 HOLD·긴급 파일 목록 수집 (자기 부서 + 소통 허브 inbox)
HOLD_FILES=$(find "$REPO_ROOT" -maxdepth 2 \( -name '🛑_*' -o -name '⚠_*' -o -name '🚨_*' \) 2>/dev/null | sort)
# 소통 허브 inbox의 HOLD·긴급 파일도 스캔 (타 부서 HOLD 양방향 전파)
CURRENT_DIR=$(pwd)
INBOX_DIRS=""
case "$CURRENT_DIR" in
*개발실*) INBOX_DIRS="$REPO_ROOT/공유/소통/PM→개발실 $REPO_ROOT/공유/소통/기획실→개발실" ;;
*기획실*) INBOX_DIRS="$REPO_ROOT/공유/소통/PM→기획실 $REPO_ROOT/공유/소통/개발실→기획실" ;;
*) INBOX_DIRS="$REPO_ROOT/공유/소통/개발실→PM $REPO_ROOT/공유/소통/기획실→PM" ;;
esac
for DIR in $INBOX_DIRS; do
if [ -d "$DIR" ]; then
INBOX_HOLD=$(find "$DIR" -maxdepth 1 \( -name '*HOLD*' -o -name '*긴급*' -o -name '*차단*' -o -name '*블로커*' \) 2>/dev/null | sort)
if [ -n "$INBOX_HOLD" ]; then
HOLD_FILES="$HOLD_FILES
$INBOX_HOLD"
fi
fi
done
HOLD_FILES=$(echo "$HOLD_FILES" | grep -v '^$' | sort)
if [ -z "$HOLD_FILES" ]; then
# HOLD 파일 없음 — 해시 초기화
echo "" > "$HOLD_HASH_FILE"