---
type: 점검보고
from: 클라이언트팀장
to: PM
date: 2026-04-17
status: 진행중
tags: [#자율작업, #개발, #진행중, #자동화설계, #업무공유체계]
---

# 업무공유체계 전수 점검 — 클라이언트팀장 (기술 자동화 관점)

## A. 현황 실측 (hook·script·settings.json schema)

### A-1. 실측 결과
1. **`.claude/hooks/` 디렉토리**: **부재**. hook은 `scripts/` 루트에 bash 스크립트로 배치 후 `.claude/settings.json`의 `hooks.*.command`에서 직접 참조하는 구조.
2. **현재 등록 hook 5종 (settings.json)**:
   - `PreToolUse`: `scripts/auto_approve.sh` (권한 자동 승인)
   - `SessionStart` × 5: `git fetch+merge`(인라인), `inbox_scan.sh`, `change_digest.sh`, `live_session_load.sh`, `pm_context_restore.sh`
   - `UserPromptSubmit` × 3: `git_fetch_throttle.sh`, `hold_watch.sh`, `live_inject.sh`
3. **미등록 hook 타입**: `PostToolUse`·`SessionEnd`·`SubagentStart`·`SubagentStop` 는 **현 settings.json에 전혀 등록되지 않음**. Claude Code 최신 schema 상 `PostToolUse`·`SessionEnd` 는 지원 확인됨 (등록만 하면 동작).
4. **`scripts/` 현존 14종**: `agent_sync.sh`·`auto_approve.sh(+py)`·`change_digest.sh`·`context_brief.sh`·`git_fetch_throttle.sh`·`hold_watch.sh`·`inbox_scan.sh`·`live_inject.sh`·`live_session_load.sh`·`nas_post_receive.sh`·`pm_context_restore.sh`·`stale_check.sh`·`verify_setup.ps1`.
5. **검증 스크립트 부재 항목**: `verify_log_paths.sh`(PD 지시 로그 산출물 경로 실존 검증) — **미구현** (pm-auditor I1 제안).

### A-2. 팀 관점 기록 누락 리스크 (실측 기반)
1. **#28 Unity MCP 전환 사례**: 커밋 `db64310` 제목에 "시뮬레이션 MCP 전환"이 1줄 포함되었으나, 대화로그 `2026-04-17.md`·`공유/소통/PM→개발팀/`에 기술 배경·대안 비교·의사결정 근거 문서가 **연결되지 않음**. 활성 지시 테이블 비고란에 "2026-04-17 Unity MCP 방향으로 전환"만 추가되어, 다른 세션에서 **"왜 전환됐는지" 복원 불가**.
2. **`공유/소통/개발팀→PM/2026-04-17_Unity_MCP_시뮬레이션_기술검토_개발팀.md`** 는 생성됨 — 단, 이 문서가 #28 로그의 산출물 경로 컬럼에 **추가 기재되었는지 교차 확인 필요**(PM 점검 권고).
3. **공용 모듈·인터페이스 변경 시 사전 공유(P13)** 자동 감지 메커니즘 **없음**. `코어코드/NerdNavis.Framework/Runtime/**` 변경은 클라이언트·차기 프로젝트에 직접 영향이나, 현재 **수동 공유에만 의존**.

---

## B. 기술 자동화 개선안 구체 설계 (최우선)

### B-1. `scripts/verify_log_paths.sh` 설계안 (pm-auditor I1 대응)

**목적**: PD 지시 로그 활성 테이블에 기재된 `산출물 경로` 컬럼의 모든 파일·디렉토리 경로가 실존하는지 자동 검증. 존재하지 않는 경로(유령 문서, 이동·삭제 후 갱신 누락) 즉시 감지.

**호출 시점**: `SessionStart` hook 말미 + `UserPromptSubmit` 주기 실행(예: `git_fetch_throttle.sh`와 같은 throttle 적용). 매 턴 실행은 과도 → 1시간 throttle 권장.

**의사코드** (bash):
```bash
#!/bin/bash
# scripts/verify_log_paths.sh — PD 지시 로그 산출물 경로 실존 검증
# 근거: pm-auditor I1, C13·P18·P19·C29-4
REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null) || exit 0
cd "$REPO_ROOT" || exit 0

THROTTLE_FILE="/tmp/verify_log_paths.last"
NOW=$(date +%s)
LAST=$(cat "$THROTTLE_FILE" 2>/dev/null || echo 0)
[ $((NOW - LAST)) -lt 3600 ] && exit 0   # 1시간 throttle
echo "$NOW" > "$THROTTLE_FILE"

MISSING=0
for LOG in 공유/PD_지시_트래킹/*_PD_지시_로그.md; do
  # "## 활성 지시" ~ "## 완료 아카이브" 범위만 추출
  awk '/^## 활성 지시/,/^## 완료 아카이브/' "$LOG" | \
  # 테이블 행의 "산출물 경로" 컬럼(4번째 |) 추출
  grep -oE '`[^`]+\.(md|cs|json|csv|xlsm|xlsx|txt|sh|py|ps1)`|`[^`]+/`' | \
  tr -d '`' | sort -u | while read PATH_CANDIDATE; do
    # 상대경로·절대경로·글롭 분기
    [ -z "$PATH_CANDIDATE" ] && continue
    case "$PATH_CANDIDATE" in
      /*) FULL="$PATH_CANDIDATE" ;;
      *) FULL="$REPO_ROOT/$PATH_CANDIDATE" ;;
    esac
    if [ ! -e "$FULL" ] && [ ! -d "$FULL" ]; then
      echo "⚠️ [verify_log_paths] MISSING: $LOG → $PATH_CANDIDATE"
      MISSING=$((MISSING+1))
    fi
  done
done

[ "$MISSING" -gt 0 ] && echo "🚨 PD 지시 로그 산출물 경로 ${MISSING}건 실존 확인 실패 (PM 확인 필요)"
exit 0
```

**리스크 및 비용**:
1. 한글 경로·글롭 패턴(예: `Runtime/Core/**`) 파싱이 bash에서 까다로움 — `**` 는 `ls -d` 로 별도 처리 필요.
2. 복합 산출물 비고란(예: "A 완료분 + B 완료분" 멀티 경로)의 파싱 품질이 핵심 — 정규식 튜닝 필요.
3. **구현 비용**: 스크립트 자체는 작으나 기존 로그 형식 편차 흡수에 테스트 라운드 필요.
4. **오탐 리스크**: 이동된 경로·일시 미생성 경로로 false positive 가능 → 상태 `완료`인 항목만 검증 대상으로 좁히는 것이 안전.

### B-2. 신규 hook 제안 2종

#### B-2-1. `PostToolUse` hook — md 대규모 변경 시 대화로그 엔트리 리마인더
**목적**: Edit/Write 로 `.md` 파일을 100줄 이상 수정한 직후, 당일 대화로그에 관련 엔트리가 있는지 감지하여 부재 시 리마인더. P24 누락을 **사후 즉시 감지**.

**settings.json 추가**:
```json
"PostToolUse": [
  {
    "matcher": "Edit|Write|MultiEdit",
    "hooks": [
      {"type": "command", "command": "bash scripts/postuse_log_reminder.sh 2>/dev/null || true"}
    ]
  }
]
```

**스크립트 초안** (`scripts/postuse_log_reminder.sh`):
```bash
#!/bin/bash
# PostToolUse: md 대규모 변경 감지 → 당일 대화로그 존재 여부 확인
REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null) || exit 0
cd "$REPO_ROOT" || exit 0

# 최근 5분 내 수정된 .md 중 100줄 이상 diff
RECENT_BIG=$(git diff --stat HEAD 2>/dev/null | \
  awk '$1 ~ /\.md$/ && ($3+0)>=100 {print $1}')
[ -z "$RECENT_BIG" ] && exit 0

TODAY=$(date +%Y-%m-%d)
HAS_LOG=0
for DIR in 공유/대화로그/*/; do
  [ -f "${DIR}${TODAY}.md" ] && HAS_LOG=1 && break
done
if [ "$HAS_LOG" -eq 0 ]; then
  echo "⚠️ [postuse] md 대규모 변경 감지되었으나 당일 대화로그 부재 — P24 작성 권고"
  echo "   변경 파일: $RECENT_BIG"
fi
exit 0
```

**리스크**:
1. Edit/Write 매 호출마다 `git diff --stat` 는 비용 있음 — throttle(10초) 권장.
2. 매우 큰 작업 중 과도 출력 → `stderr` 로 전환 또는 부재 최초 1회만 출력.

#### B-2-2. `SessionEnd` hook — 세션 종료 시 기록 누락 최종 감사
**목적**: 세션 종료 직전 (a) 당일 대화로그 부재 (b) 활성 지시 상태 변화 있었으나 갱신 누락 (c) `.live/` 더미 미반영분 감지 → 경고 출력.

**settings.json 추가**:
```json
"SessionEnd": [
  {
    "matcher": "",
    "hooks": [
      {"type": "command", "command": "bash scripts/session_end_audit.sh 2>/dev/null || true"}
    ]
  }
]
```

**스크립트 요지**:
1. 당일 `공유/대화로그/*/$(date +%Y-%m-%d).md` 존재 여부.
2. `.live/` 중 README.md 외 파일 존재 여부(미반영 의심).
3. 당일 커밋 건수 vs 대화로그 엔트리 건수 대략 비교.
4. **모드 B 감사 자동 트리거 신호**: pm-auditor 호출 권고 메시지 출력.

**리스크**: SessionEnd 는 사용자가 세션을 실제 종료한 시점에만 발화 — 앱 강제 종료·충돌 시 미발화 가능성. 100% 강제 메커니즘은 아니므로 SessionStart 의 복원 체크(`pm_context_restore.sh`)와 **쌍으로 운용** 필요.

### B-3. `SubagentStart`/`SubagentStop` hook 가능성 검토
1. **현 Claude Code schema**: 표준 hook 타입에 `SubagentStart`·`SubagentStop` 은 **공식 등록 항목 아님** (2026-04-17 기준 확인). `Task` 도구 호출·응답은 `PreToolUse`·`PostToolUse` 에서 `matcher: "Task"` 로 포착 가능.
2. **대체 설계**: `PostToolUse` matcher `"Task"` 로 Agent 호출 종료 감지 → 해당 Agent 가 응답에 "PD 지시 로그 #N → 완료 갱신" 문구 포함 여부 자동 스캔 → 부재 시 PM 경고. **C27 강제 메커니즘 구현 가능**.
3. **구현 비용**: Agent 응답 본문은 hook stdin 으로 들어오므로 jq 파싱 필요. Windows bash 환경에서 jq 설치 여부 선결 확인.

### B-4. 커밋-대화로그 정합성 자동 감지 (#28 재발 방지)
**목적**: `feat(core):`·`feat(client):`·`refactor:` 등 **의미 있는 prefix** 의 커밋이 당일 발생했으나 대화로그에 관련 엔트리 부재 시 감지.

**구현 위치**: `scripts/session_end_audit.sh` 내부 또는 별도 `scripts/commit_log_match.sh`.

**로직**:
```bash
# 당일 feat/refactor/fix(core) 커밋 추출
BIG_COMMITS=$(git log --since="$(date +%Y-%m-%d) 00:00" --oneline | \
  grep -E "^\w+ (feat|refactor|fix\(core\)|feat\(core\))")
# 대화로그 엔트리 개수
LOG_ENTRIES=$(grep -c "^## \[" 공유/대화로그/*/$(date +%Y-%m-%d).md 2>/dev/null | \
  awk -F: '{s+=$2} END{print s+0}')
# 커밋 2건 이상인데 엔트리 1건 이하면 경고
```

**리스크**: 커밋 1건이 여러 엔트리에 대응 또는 그 반대 — 정확한 1:1 매칭은 어려움. **비율 기반 경고**로 설계 (완벽 매칭 아님, 누락 의심 신호 수준).

---

## C. 비기술적 개선안 (코드 변경 기록 체계)

### C-1. 커밋 메시지·대화로그 연동 표준 (팀장 재량 수용 가능)
1. **제안**: 의미 있는 기술 결정이 포함된 커밋(`feat(core):`·`refactor:` 등)은 **커밋 메시지 하단에 `Log: 공유/대화로그/<프로젝트>/YYYY-MM-DD.md#HH:MM` 형식 참조 라인 필수**.
2. **권한**: 팀장 재량 (C20-1 일반 커밋 범위). PM 상의만 거치면 즉시 적용 가능.

### C-2. 공용 모듈 변경 사전 공유 자동화 (PM 조율 필요)
1. **제안**: `코어코드/NerdNavis.Framework/Runtime/**`·`Editor/**` 수정 시 `PreToolUse` hook 이 **변경 사실을 `공유/소통/개발팀→기획팀/`·`개발팀→PM/` 에 draft 로 append** (수동 보완 전제).
2. **권한**: PM 조율 필요 — 타 팀(기획팀·서버팀) 통보 자동화는 팀 간 합의 필요.

### C-3. 설계 문서화 누락 감지 (팀장 재량)
1. **제안**: 코어 프레임워크 디렉토리에 신규 `.cs` 파일 추가 시 `프로젝트/코어프레임워크/` 에 대응 설계 문서(`*_설계_*.md`) 존재 여부 자동 확인. 부재 시 P18 위반 경고.
2. **권한**: 팀장 재량, 개발팀 내부 규약 수준.

### C-4. PD님 결정 필요 사안 (본 보고 범위 아님)
- 본 점검은 기술 자동화 설계 중심. PD님 직접 결정이 필요한 헌법급 규칙 개정(예: C31 에 "PostToolUse 자동 감사" 의무 포함 여부)은 **PM이 팀장 논의 종합 후 안건화** 판단.

---

## D. 클라이언트팀 세션 맥락 유지 방안 (자체 관점)

1. **자기 세션 맥락**: 클라이언트팀장은 Agent 호출마다 새로 인스턴스화되며, 직전 호출 기억 없음 → **응답 시 반드시 실측 결과만 보고**(C23). 필요 시 PM 프롬프트에 "이전 호출 산출물 경로" 명시 요청.
2. **기술 스택 변경 이력**: `.mcp.json`·`Packages/manifest.json`·`코어코드/NerdNavis.Framework/Runtime/**` 변경은 **커밋 메시지 + 대화로그 + `공유/소통/개발팀→PM/` 보고 3중 기록** 원칙 제안 (팀장 재량).
3. **의존성 변경**: Unity 패키지·코어 프레임워크 버전 업은 P15(의존성·환경 변경 공유) 준수 — 현재 자동 감지 없음, `PostToolUse` hook 으로 `manifest.json` 수정 시 경고 추가 권장.

---

## E. 우선순위 권고 (기술 관점)

1. **즉시 착수 권장 (구현 비용 낮음·효과 큼)**:
   - B-1 `verify_log_paths.sh` (pm-auditor I1 대응, 본 팀 작성 가능)
   - B-2-1 `PostToolUse` md 대규모 변경 리마인더
2. **PM 조율 필요**:
   - B-2-2 `SessionEnd` hook + pm-auditor 자동 호출 연계
   - B-4 커밋-대화로그 정합성 감지
3. **타 팀 합의 필요**:
   - C-2 공용 모듈 변경 타 팀 자동 통보
4. **보류 (schema 확인 필요)**:
   - B-3 Subagent hook — Claude Code schema 추가 조사 후 재검토

---

## F. 차단 요인

1. **없음** — 본 점검은 실측 + 설계안 수준. 구현 착수는 PM 조율 후.
2. **주의**: B-1~B-2 실제 구현 시 Windows Git Bash 환경 테스트 필수 (한글 경로·jq 가용성 등).

---

## G. 산출물 경로
- 본 문서: `공유/소통/개발팀→PM/2026-04-17_업무공유체계_점검_클라이언트팀.md`

## H. 제약 준수 선언
- **C23**: 모든 실측은 Bash 도구 호출 결과 기반 (hook 부재·script 14종·settings.json 본문).
- **C29**: 단일 의사결정 요청 없음. 각 개선안에 팀장 재량/PM 조율/PD님 결정 구분 명시.
- **C30**: 본 점검은 조직 레포 내 문서 작성 — git 상태 영향 없음.
- **C31**: PD님 결정 떠넘기기 표현 부재. "어떻게 할까요?" 없음. 자체 설계안 제시형 작성.
