diff --git a/.claude/settings.json b/.claude/settings.json index 0aa939b..dbe866e 100644 --- a/.claude/settings.json +++ b/.claude/settings.json @@ -100,6 +100,10 @@ { "type": "command", "command": "bash scripts/verify_log_paths.sh 2>/dev/null || true" + }, + { + "type": "command", + "command": "git config core.hooksPath scripts/git-hooks 2>/dev/null || true" } ] } diff --git a/.claude/skills/너드나비스-코어룰/SKILL.md b/.claude/skills/너드나비스-코어룰/SKILL.md index 14a99c1..8218174 100644 --- a/.claude/skills/너드나비스-코어룰/SKILL.md +++ b/.claude/skills/너드나비스-코어룰/SKILL.md @@ -325,28 +325,44 @@ PD·스태프와의 회의·리뷰·검증이 실제로 일정상 의존성을 - 자기 작업 브랜치에 대한 일반 커밋 - 일일보고·PD 지시 로그·메모리 등 운영 산출물 갱신 커밋 -### C20-1-A. push 시점 규칙 (2026-04-17 PD님 재지시로 방침 전환) -**업무 완료 시 자동 push (기본)**. 2026-04-16 "PD님 지시 시에만 push" 방침은 2026-04-17 PD님 직접 지시 **"작업이 완료되면 내가 말하지 않아도 항상 업무 내용 공유 및 동기화를 진행해서 어떤 세션에서든 현재 상태가 일관성 있게 유지되어야 해"**로 **자동 동기화 기본**으로 전환됨. 세션 간 상태 불일치가 조직 운영 신뢰에 직결되므로 기본값을 "자동 push"로 바꾼다. +### C20-1-A. 공유·push 시점 규칙 (2026-04-17 PM 재개정 — PD님 직접 지시 재반영) -**자동 push 적용 기준 (업무 완료 판정 3요소 충족 시)**: -1. **PD 지시 로그 갱신** (완료 아카이브 이동·상태 전환 완료) -2. **대화로그 엔트리 기록** (결정·설계 엔트리는 기각안 필드 포함, P24) -3. **산출물 확정** (파일 실존, verify_log_paths 통과) +**작업 완료 시 공유 문서 + Live 더미 + 시그널 즉시 갱신. push는 필요 시에만**. -위 3요소 충족 시 PM은 **별도 PD 지시 없이 즉시** `git push origin main` 수행. +2026-04-17 PM의 "자동 push 기본" 안은 **PD님 직접 반려** — 원안: "어느 세션에 있든 작업이 완료되어 공유할 사항이 생길 경우 해당 사항을 공유 문서에 즉시 반영하고(실시간 체크가 어려울 경우 Live 더미에 기록), 다른 세션에서 프롬프트가 발생할 때 공유 시그널을 읽어서 갱신. push를 매번 하는 비효율은 필요할 때만". -**push 억제 예외** (자동 push 하지 않는 경우): -- PD님 명시적 억제 지시 ("push 보류"·"세션 공유 대기" 등) -- C19-2 해당 액션 (force push·영구 삭제·외부 공개·프로덕션 영향) -- C8 프로덕션 보호 대상 변경 (롤백 경로 확보 전) +#### 공유 3층 구조 (PD님 지시 그대로) +1. **공유 문서 즉시 반영** — 업무 완료 시 `공유/` 하위 md(PD 지시 로그·대화로그·소통 채널·조직공지 등) 원본 갱신 +2. **Live 더미 기록** — `.live/` 하위에 변경 요지 기록 (P25, 같은 세션·다른 세션 UserPromptSubmit hook이 즉시 주입) +3. **시그널 갱신** — **commit 시점에 git post-commit hook(`scripts/git-hooks/post-commit`)이 자동으로 `sync_signal.sh update` 호출**. 같은 PC 내 다른 세션이 다음 프롬프트에서 `sync_signal.sh check`로 감지 (네트워크 비용 0) -**작업 중간 커밋**: 로컬 커밋은 자유. 단 한 업무 사이클 완료 시 일괄 push가 기본이며, **세션 종료 전 미푸시 상태 유지 금지** (SessionEnd hook `session_end_audit.sh`가 감지). +#### push는 필요 시에만 +다음에 해당할 때만 push (다른 경우는 로컬 commit + 시그널로 충분): +- PD님이 "세션 공유"·"push" 명시 지시한 경우 +- 다른 PC로 작업 이관 필요 (새 PC 세션 시작 대비) +- 조직 공식 공유 완료 선언(C18)이 필요한 변경 +- 외부 개발자·QA·협력사 공유 대상 변경 -**Live 더미**: 현 세션 즉시 반영 목적으로 유지 (P25). 원본이 이미 커밋·push되어도 .live/ 더미는 세션 중 별도 관리. +#### push 수행 시 표준 절차 +- `bash scripts/sync_push.sh main` 실행: `git push` + 시그널 재갱신 일괄 +- 또는 `git push origin main` 단독 허용 (post-commit hook이 이미 시그널 갱신했으므로 중복 무해) -**연관 재정의**: -- P21-2 "세션 공유" 트리거는 여전히 유효 — **부분 완료 중간 공유** 시점 명시 용도로 남김 (자동 push와 충돌 없음) -- C29-4 "업무 완료 후 동기화"와 정합 — 동기화 범위에 원격 push 포함으로 명시화 +#### 자동 push 억제 예외 (과거 방침 계승) +- PD님 명시적 억제 지시 +- C19-2 대상 (force push·영구 삭제·외부 공개·프로덕션 영향) +- C8 프로덕션 보호 대상 + +#### git-hooks 자동 활성화 +- `scripts/git-hooks/` 하위는 git 추적 대상 +- SessionStart hook이 `git config core.hooksPath scripts/git-hooks` 자동 설정 +- 신 PC clone 시에도 첫 세션 즉시 post-commit hook 활성화 + +#### 연관 재정의 +- **P21-2 "세션 공유" 트리거**: 명시적 push 시점. 본 C20-1-A와 모순 없음 +- **C29-4 "업무 완료 후 동기화"**: 동기화 = 공유 문서 갱신 + Live 더미 + 시그널. push는 선택 +- **P25 Live 증분 동기화**: 같은 PC 내 다른 세션에 변경 즉시 주입 (주 수단) +- **`scripts/sync_signal.sh`**: 시그널 update/check +- **`scripts/git-hooks/post-commit`**: commit 시 자동 시그널 갱신 ### C20-2. PD님 사전 확인 필수 (우려 이슈) 다음에 해당하는 우려 이슈가 있으면 커밋·push 전 PD님 사전 확인: diff --git a/.live/SKILL.md b/.live/SKILL.md new file mode 100644 index 0000000..4711180 --- /dev/null +++ b/.live/SKILL.md @@ -0,0 +1,22 @@ +## 2026-04-17 PM — C20-1-A 재개정 (PD님 직접 반려 반영) + +### PD님 원문 +"업무 완료 즉시 원격 반영하라고 지시한게 아니야. 작업 완료 시 공유 문서에 즉시 반영하고 +(실시간 체크가 어려울 경우 Live 더미), 다른 세션 프롬프트 발생 시 공유 시그널 읽어서 갱신. +push를 매번 하는 비효율은 필요할 때만." + +### 재개정 요지 +- **자동 push 기본** → **"공유 문서 + Live 더미 + 시그널 즉시. push는 필요 시"** +- commit 시점에 git post-commit hook이 자동 시그널 갱신 (push 불요) +- 같은 PC 세션 간 공유는 로컬 파일 + Live 더미 + 시그널로 완결 +- push는 PD 지시·다른 PC 이관·조직 공식 공유 선언 시에만 + +### 구현 +- `scripts/git-hooks/post-commit` 신설 — commit 자동 시그널 갱신 +- `.claude/settings.json` SessionStart hook에 `core.hooksPath` 자동 설정 추가 +- `sync_push.sh`는 "push 필요 시 표준 절차"로 재정의 + +### 네트워크 비용 +- commit: 로컬 파일 I/O만, 네트워크 0 +- push: PD 지시·필요 시에만 수행 +- 수신: 시그널 미변경 시 네트워크 0 diff --git a/scripts/git-hooks/post-commit b/scripts/git-hooks/post-commit new file mode 100644 index 0000000..af4e899 --- /dev/null +++ b/scripts/git-hooks/post-commit @@ -0,0 +1,21 @@ +#!/bin/bash +# post-commit — commit 직후 sync_signal.sh update 자동 호출 +# +# 목적 (2026-04-17 PD님 직접 지시 반영): +# "작업 완료 시 공유 문서 즉시 반영 + 시그널로 알림. push는 필요 시만." +# commit = "의미 있는 작업 완료" 단위이므로 commit 시점에 시그널 갱신하여 +# 같은 PC 내 다른 세션이 다음 프롬프트에서 즉시 감지할 수 있도록 함. +# +# 설치 (자동): SessionStart hook이 `git config core.hooksPath scripts/git-hooks` +# 설정하므로 레포 clone 즉시 활성화. +# +# push와 무관 — commit만 해도 시그널 갱신됨. push는 PD님 지시·필요 시에만. + +REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null) +[ -z "$REPO_ROOT" ] && exit 0 + +SCRIPT="$REPO_ROOT/scripts/sync_signal.sh" +[ -x "$SCRIPT" ] || [ -f "$SCRIPT" ] || exit 0 + +bash "$SCRIPT" update +exit 0